{"version":3,"sources":["webpack:///src/modules/checkout-delivery-options/components/checkout-delivery-options.description.tsx?8620","webpack:///src/modules/checkout-delivery-options/components/checkout-delivery-options.error-message.tsx?8f25","webpack:///src/modules/checkout-delivery-options/components/checkout-delivery-options.error-title.tsx?e220","webpack:///src/modules/checkout-delivery-options/components/checkout-delivery-options.radio-button.tsx?f1bb","webpack:///src/modules/checkout-delivery-options/checkout-delivery-options.tsx?d83e","webpack:///src/actions/submit-helpfulness-vote.ts?be08","webpack:///src/modules/checkout/components/get-line-items.tsx?5207","webpack:///src/index.ts?c6ae","webpack:///src/modules/quick-order/components/quick-order-drawer.tsx?25f0","webpack:///src/modules/quick-order/components/quick-order-form.tsx?61bd","webpack:///src/modules/quick-order/components/quick-order-product.ts?af99","webpack:///src/modules/quick-order/components/quick-order-table/components/quick-order-table-header-component.tsx?d661","webpack:///src/modules/quick-order/components/quick-order-table/components/quick-order-table-row-component.tsx?cb68","webpack:///src/modules/quick-order/components/quick-order-table/quick-order-table-component.tsx?a7a8","webpack:///src/modules/quick-order/quick-order.tsx?7aab","webpack:///src/modules/fabrikam/views/components/promocode.component.tsx?7eef","webpack:///src/actions/inputs/submit-user-review-input.ts?921c","webpack:///src/modules/fabrikam/views/components/cartlineitem.component.tsx?4b07","webpack:///src/common/place-order.tsx?73b4","webpack:///./src/themes/gardner-theme/views/components/cartlineitem.component.tsx?e0b8","webpack:///src/modules/checkout/components/index.ts?5ba9","webpack:///src/modules/bulk-purchase/bulk-purchase.view.tsx?2550","webpack:///src/modules/write-review/index.ts?2b94","webpack:///src/common/rnrInterface.ts?25e5","webpack:///src/common/get-checkout-return-url.tsx?942d","webpack:///src/modules/reviews-list/components/review-card.tsx?2d16","webpack:///src/modules/reviews-list/components/components.tsx?c96f","webpack:///src/modules/quick-order/quick-order.view.tsx?2242","webpack:///./src/themes/gardner-theme/views/components/promocode.component.tsx?4e92","webpack:///./src/utils/cartAttributeManager.ts?f742","webpack:///src/modules/ratings-histogram/ratings-histogram.tsx?4c32","webpack:///src/modules/wishlist-items/components/wishlist-items-dimensions.tsx?671e","webpack:///src/modules/wishlist-items/components/wishlist-item.tsx?1fe2","webpack:///src/modules/wishlist-items/components/wishlist-items-status-message.tsx?7062","webpack:///src/modules/wishlist-items/wishlist-items.tsx?3721","webpack:///src/modules/reviews-list/reviews-list.tsx?b5d0","webpack:///src/order-summary-lineitem.tsx?86d9","webpack:///src/common/index.ts?ee63","webpack:///../../src/index.ts?0e3e","webpack:///src/modules/media-gallery/utils/helper.ts?6516","webpack:///src/modules/media-gallery/utils/get-valid-product-images.ts?4e26","webpack:///src/modules/media-gallery/media-gallery.tsx?3b46","webpack:///src/modules/adventureworks/views/components/product.component.tsx?f602","webpack:///src/modules/product-collection/product-collection.view.tsx?9eb3","webpack:///src/actions/inputs/submit-helpfulness-vote-input.ts?cfb5","webpack:///src/modules/adventureworks/views/search-result-container.view.tsx?18e4","webpack:///src/modules/carousel/carousel.view.tsx?b19a","webpack:///src/modules/active-image/active-image.view.tsx?b3e2","webpack:///src/actions/report-review-concern.ts?11eb","webpack:///./src/themes/gardner-theme-b2c/views/components/cartlineitem.component.tsx?cbaf","webpack:///src/modules/product-collection/product-collection.tsx?b9b8","webpack:///../../../src/module-state-manager/with-module-state.tsx?61ca","webpack:///src/modules/checkout-gift-card/components/get-form.tsx?9f59","webpack:///src/modules/checkout-gift-card/components/get-item.tsx?ec46","webpack:///src/modules/checkout-gift-card/components/get-list.tsx?9723","webpack:///src/modules/checkout-gift-card/components/title.tsx?6d07","webpack:///src/modules/checkout-gift-card/checkout-gift-card.tsx?e6b8","webpack:///./src/themes/gardner-theme/views/order-template-list.view.tsx?0f10","webpack:///../../src/checkout-state.ts?acd8","webpack:///src/modules/checkout/index.ts?1106","webpack:///src/modules/reviews-list/components/report-review-modal.tsx?22a9","webpack:///src/modules/checkout-loyalty/checkout-loyalty.view.tsx?876d","webpack:///src/modules/adventureworks/views/components/cartlineitem.component.tsx?c848","webpack:///src/modules/checkout/checkout.view.tsx?e9a7","webpack:///src/common/review-modal.tsx?7ef9","webpack:///src/modules/checkout/components/get-invoice-payment-summary.tsx?6271","webpack:///src/modules/checkout/checkout.tsx?baa3","webpack:///src/checkout-errors/checkout-errors.ts?687e","webpack:///src/common/error.tsx?f9f6","webpack:///src/modules/gift-card-balance-check/components/get-form.tsx?f122","webpack:///src/modules/gift-card-balance-check/components/get-item.tsx?d7f7","webpack:///src/modules/gift-card-balance-check/gift-card-balance-check.tsx?6bc9","webpack:///../../../src/module-state-manager/module-state.ts?7579","webpack:///src/common/checkout.tsx?9dad","webpack:///src/modules/reviews-list/index.ts?51cb","webpack:///./src/themes/gardner-theme/views/components/create-order-template.component.tsx?a75f","webpack:///src/modules/write-review/components/components.tsx?ead4","webpack:///src/modules/write-review/write-review.tsx?dea3","webpack:///src/common/iframe.tsx?89ab","webpack:///src/modules/media-gallery/media-gallery.view.tsx?6e14","webpack:///src/common/country-codes.tsx?5421","webpack:///src/modules/active-image-utilities/active-product.tsx?2e3c","webpack:///src/modules/active-image-utilities/additional-content.tsx?115e","webpack:///src/modules/active-image-utilities/image-mapper.tsx?3afb","webpack:///src/modules/active-image/active-image.tsx?f30d","webpack:///src/actions/inputs/report-review-concern-input.ts?c9d1","webpack:///src/common/with-visibility-observer.tsx?6bf2","webpack:///src/modules/ratings-histogram/component/components.tsx?2a0b","webpack:///src/common/payment-instrument-message.ts?208d","webpack:///src/modules/reviews-list/reviews-list.view.tsx?6dd9","webpack:///src/actions/index.ts?e12b","webpack:///src/modules/checkout/components/alert.tsx?5f0c","webpack:///src/modules/wishlist-items/wishlist-items.view.tsx?caf1","webpack:///src/modules/checkout-gift-card/checkout-gift-card.view.tsx?3424","webpack:///src/modules/bulk-purchase/bulk-purchase.tsx?d704","webpack:///src/modules/checkout/components/place-order-button.tsx?c8b4","webpack:///../../../src/module-state-manager/index.ts?8e3a","webpack:///src/modules/carousel/carousel.tsx?bfbb","webpack:///src/modules/ratings-histogram/ratings-histogram.view.tsx?4481","webpack:///src/common/waiting.tsx?8365","webpack:///./src/themes/gardner-theme-b2c/views/order-template-list.view.tsx?ee61","webpack:///src/modules/checkout/components/get-order-summary.tsx?6f62","webpack:///src/modules/checkout/methods/checkout.ts?3b66","webpack:///./src/themes/gardner-theme-b2c/views/components/create-order-template.component.tsx?d054","webpack:///./src/themes/gardner-theme-b2c/views/components/promocode.component.tsx?ce90","webpack:///src/modules/ratings-histogram/index.ts?834d","webpack:///src/common/add-payment-form.tsx?7e1f","webpack:///src/modules/gift-card-balance-check/gift-card-balance-check.view.tsx?ce1c","webpack:///src/modules/checkout-loyalty/components/checkout-loyalty-input.tsx?d04f","webpack:///src/modules/checkout-loyalty/components/checkout-loyalty-label.tsx?3110","webpack:///src/modules/checkout-loyalty/components/checkout-loyalty-text.tsx?0080","webpack:///src/modules/checkout-loyalty/checkout-loyalty.tsx?c94a","webpack:///../../src/checkout-utilities.data.ts?b2cc","webpack:///src/modules/checkout-delivery-options/checkout-delivery-options.view.tsx?d64d","webpack:///src/modules/checkout/components/guided-card.tsx?5a55","webpack:///src/modules/checkout/components/guided-form.tsx?7fad","webpack:///src/invoice-summary-lineitem.tsx?1b66","webpack:///../../src/checkout-state-data-action.ts?8344","webpack:///src/common/empty-active-cart.tsx?80fa","webpack:///src/actions/submit-user-review.ts?d4c7","webpack:///src/modules/checkout/methods/place-order.ts?6d11","webpack:///src/modules/write-review/write-review.view.tsx?9069"],"names":["CheckoutDeliveryOptionsDescription","_ref","description","React","className","CheckoutDeliveryOptionsErrorMessage","message","CheckoutDeliveryOptionsErrorTitle","title","CheckoutDeliveryOptionsRadioButton","isChecked","value","ariaSetSize","ariaPosInSet","ariaLabel","telemetryContent","onChange","payLoad","getPayloadObject","TelemetryConstant","DeliveryOptions","attributes","getTelemetryAttributes","Object","assign","checked","type","contentAction","etext","name","CheckoutDeliveryOptions","constructor","props","super","selectedItemId","deliveryOptions","isLoading","retailMultiplePickUpOptionEnabled","checkoutErrorRef","init","async","this","moduleState","onEdit","isSelectDefaultOptionEnabled","undefined","onCancel","onSubmit","status","config","useDefaultDeliveryOption","canShip","cartDeliveryMode","getSavedDeliveryOption","loadDeliveryOptions","_this$props$data$chec","data","checkout","result","checkoutCart","hasInvoiceLine","getCartLinesForShipping","length","isDeliveryModeExists","deliveryMode","find","deliveryOption","Code","getDeliveryOptionSelected","selectedItem","context","telemetry","error","id","typeName","priceFree","resources","price","get","channelConfig","request","channel","DeliveryOption","DescriptionComponent","Description","PriceComponent","CustomerContextualPrice","freePriceText","currencyCode","Currency","getErrorMessage","errorMessageTitle","CheckoutDeliveryOptionsError","tag","role","ErrorTitleComponent","ErrorMessageComponent","errorMessage","getDeliveryOptionList","count","map","index","code","radioButton","RadioButtonComponent","onDeliveryOptionChange","getSaveButton","saveBtnLabel","Button","color","disabled","onClick","onSave","getEditButton","editBtnLabel","getCancelButton","cancelBtnLabel","setError","setHasError","onUpdating","clearError","_this$props$data$chec2","information","updateShouldCollapsePaymentSection","newShouldCollapsePaymentSection","_this$props$data$chec3","updateCartDeliverySpecification","savedDeliveryOption","_this$props$data$chec4","onReady","cartLinesForShipping","DeliveryMode","deliveryModeId","trim","checkoutState","updateCartDeliverySpecificationInput","shippingAddress","channelDeliveryOptionConfig","onPending","then","response","_response$errorDetail","errorDetails","LocalizedMessage","StringExtensions","isNullOrEmpty","genericErrorMessage","setIsCancellable","catch","pickupDeliveryModeCode","PickupDeliveryModeCode","emailDeliveryModeCode","EmailDeliveryModeCode","cart","CartLines","filter","cartLine","_this$channelDelivery","PickupDeliveryModeCodes","getDeliveryOptions","_this$props$data$chec5","cartState","cartId","Id","originalDeliveryMode","shippingCartLines","hasShippingDeliveryLines","clearCartLinesDeliveryInformation","channelDeliveryOptionConfiguration","deliveryOptionFilter","filterDeliveryModeOption","FilterDeliveryModeOption","None","FilterOutNonCarrierDeliveryMode","getDeliveryOptionsAsync","callerContext","actionContext","queryResultSettings","QueryResultSettingsProxy","getPagingFromInputDataOrDefaultValue","_unused","deliveryOptionsNotFound","_this$props$data$chec6","_this$props$data$chec7","updateHasCartDeliveryMode","newHasCartDeliveryMode","isPaymentVerificationRedirection","_this$props$data$chec8","getStoredDeliveryOptions","_this$props$data$chec9","_this$props$data$chec10","_this$props$data$chec11","_this$props$data$chec12","_this$props$data$chec13","_this$props$data$chec14","isExpressCheckoutApplied","isExpressPaymentAppliedInCartPage","event","currentTarget","getTelemetryObject","telemetryPageName","friendlyName","_this$props$data$cart","_this$props$data$cart2","properties","ExtensionProperties","property","Key","Value","StringValue","JSON","parse","_this$expressPaymentD","_this$expressPaymentD2","expressPaymentDetailsFromCartPage","isExpressCheckoutAppliedInCartPage","_this$props$data$chec19","when","isDataReady","reaction","_this$props$data$chec15","_this$props$data$chec16","_this$props$data$chec17","_this$props$data$chec18","shouldEnableCheckoutErrorDisplayMessaging","_this$props$data$chec20","checkoutError","errorLocation","ErrorLocation","_this$props$data$chec21","checkoutErrorFocus","CheckoutModule","focusOnCheckoutError","shouldComponentUpdate","nextProps","nextState","state","render","_this$props$data$chan","_this$props$data$feat","featureState","feature","Name","IsEnabled","isReady","isUpdating","hasError","isError","isShowList","isShowSelected","deliveryOptionAriaLabel","viewProps","_objectSpread","deliveryOptionsData","alert","ErrorComponent","errorMessageData","viewState","isShowSaveButton","hasExternalSubmitGroup","isShowEditButton","isShowCancelButton","moduleProps","classname","DeliveryOptionsList","list","deliveryOptionSelected","waiting","Waiting","saveButton","editButton","cancelButton","renderView","__decorate","observable","computed","action","withModuleState","observer","submitHelpfulnessVoteDataAction","createObservableDataAction","input","ctx","reviewId","tenantId","locale","authToken","inputIsValid","Error","requestUrl","serviceEndpoint","requestBody","isHelpful","requestHeader","headers","Authorization","sendRequest","trace","exception","debug","getLineItems","_featureState$result","_getDeliveryLocation","orgUnitLocations","FulfillmentStoreId","locationMatch","location","OrgUnitNumber","OrgUnitName","_getLineItemComponent","_input$data$catalogs","product","ProductId","productId","_product","RecordId","imageSettings","showShippingChargesForLineItems","quantityDisplayString","productDimensionTypeColor","productDimensionTypeSize","productDimensionTypeStyle","productDimensionTypeAmount","configString","inputQuantityAriaLabel","discountStringText","shippingCharges","gridSettings","catalogs","productUrl","getProductUrlSync","MsDyn365","isBrowser","isChannelTypeB2B","requestContext","_cartLine$CatalogId","fullUrl","URL","window","href","searchParams","set","CatalogId","CartLineItemComponent","sizeString","colorString","styleString","amountString","originalPriceText","currentPriceText","shippingChargesText","salesAgreementPricePrompt","isQuantityEditable","primaryImageUrl","PrimaryImageUrl","priceCurrency","_getPickUpAtStoreComponents","pickupDeliveryLocation","pickUpAtStoreWithLocationText","PickUpAtStore","label","_getEmailDeliveryComponents","emailDeliveryText","EmailDelivery","_getLineItemsComponents","items","isPickUp","_getCartPickDeliveryMode","isEmailDelivery","LineId","LineItem","item","pickUpAtStore","emailDelivery","cartLineItem","_channelDeliveryOptio","isNullOrWhitespace","_countItems","reduce","Quantity","_filterItemsByDiliveryType","_channelDeliveryOptio2","_getLineItemsByDeliveryType","_getGroupTitleComponent","_input$data$deliveryO","itemLabel","itemsLabel","inStorePickUpLabel","shippingCountCheckoutLineItem","emailDeliveryModeDesc","productDeliveryOptions","_productDeliveryOptio","suffix","replace","toString","LineItemDeliveryGroup","classnames","LineItemList","heading","lineItems","handleLineItemHeadingChange","lineItemsHeading","text","target","_getLineItemsByDeliveryTypeWithMulitplePickupMode","multiplePickUpLabel","shippingLable","_filterItemsByMultiplePickupMode","getGroupByStorePickup","groupBy","groupDelivery","cartLinesGroup","cartLinesGrp","entries","forEach","groupByDeliveryType","push","keys","key","cartLines","lineItemDeliveryGroup","_getGroupTitleComponentWithMultiplePickUp","fulFillmentStoreId","_input$data$deliveryO2","_input$data$deliveryO3","pickupDeliveryModeDesc","_productDeliveryOptio2","_productDeliveryOptio3","groupTitle","iconClass","lineItemWraperIcon","lineItemWraper","_getLineItems","products","editCartText","EditCart","attribute","groupClass","LineItems","Header","Msdyn365","editProps","editLink","itemsForPickup","itemsForShip","itemsForEmail","itemsGroupWithMulitplePickupMode","QuickOrderDrawer","_toggle","bind","isManuallyToggled","isOpen","collapseProps","drawerGlyphClass","toggleGlyphClassName","animateGlyph","drawerOpenGlyph","openGlyph","closeGlyph","drawerCloseGlyph","children","drawerClass","toggleButtonProps","block","_generateDrawerButtonInnerMarkup","Collapse","collapseState","drawerButtonTextClass","toggleButtonClassName","moduleHeadingText","moduleDescriptionText","_generateGlyphMarkup","glyphClass","e","preventDefault","setState","onToggle","QuickOrderFormComponent","productTextInput","quantityTextInput","quickOrderState","maxChars","maxQuantity","disableAddtoCart","ariaLabelQuantity","ariaLabelProduct","ariaLabelAddtoCart","addQuantityPlaceholderText","handleQuantityChange","handleInputChange","handleAddToCartClick","onInputChange","onInputChangeFunction","onQuantityInputChange","onQuantityChangeFunction","productNode","ref","quantityNode","pattern","maxLength","quantity","placeholder","addToCartBtn","userMessage","stateMessage","Alert","statusCssString","messageGlyph","messageText","QuickOrderProduct","simpleProduct","isSelected","QuickOrderDesktopHeaderCellsComponent","columnWithNumberClassName","createElement","Fragment","quickOrderProductNumberText","quickOrderProductText","quickOrderUnitPriceText","quickOrderUnitOfMeasureText","quickOrderQuantityText","quickOrderTotalText","quickOrderActionsText","QuickOrderMobileHeaderCellsComponent","QuickOrderTableHeaderComponent","rowClassName","headerCells","isMobile","defaultImageSettings","viewports","xs","q","w","h","lg","lazyload","cropFocalRegion","QuickOrderTableRowProductImageComponent","_props$context$reques","_props$data$product$P","_props$imageSettings","fallbackImageUrl","getFallbackImageUrl","ItemId","apiSettings","app","OmniChannelMedia","containerClassName","Image","altText","src","fallBackSrc","loadFailureBehavior","QuickOrderExtraActionsPopupComponent","ObjectExtensions","isNullOrUndefined","getProductPageUrlSync","QuickOrderDesktopTableRowCellComponent","_product$Dimensions","_cartLine$LineId","Dimensions","dimension","_dimension$DimensionV","DimensionValue","dimensionValue","join","quickOrderProductDimensionsSeparator","Price","UnitOfMeasureSymbol","IncrementalQuantity","max","currentCount","quickOrderInputQuantityAriaLabel","decrementButtonAriaLabel","quickOrderDecrementButtonAriaLabel","incrementButtonAriaLabel","quickOrderIncrementButtonAriaLabel","isGiftCard","IsGiftCard","TotalAmount","quickOrderRemoveItemButtonAriaLabel","QuickOrderMobileTableRowCellComponent","format","quickOrderQuantityMobileText","QuickOrderTableRowComponent","QuickOrderTableComponent","setIsMobile","useState","isMobileView","quickOrderProducts","updateViewport","addEventListener","headerClassName","quickOrderProduct","QuickOrder","waitTime","dimensionUpdateQueue","FinitePromiseQueue","dimensions","cssClassNameConfigure","quickOrderCallbacks","dimensionSelectedAsync","selectedDimensionId","selectedDimensionValueId","enqueue","_updateDimensions","FinitePromiseQueueError","ProcessWasDiscardedFromTheQueue","getDropdownName","dimensionType","_getDropdownName","changeUpdatingDimension","isUpdatingDimension","_handleInputChange","query","productText","productResponse","productDimensions","inputQuantityText","quantityInput","current","HTMLInputElement","cancellabelDebounce","cancel","isQuickOrderFormExpanded","_debounce","getScanResult","GetScanResultInput","channelId","results","Product","ProductDimensionFull","setTimeout","_addItemToCart","quickOrderAddedToCartSuccessMessage","quickOrderAddedToCartFailureMessage","_validateCart","_this$props$data$feat2","_this$props$context$r","_this$props$context$a","isOrderQuantityLimitsFeatureEnabledInHq","isChannelQuantityLimitsFeatureEnabledInHq","defaultOrderQuantityLimitsFeatureConfig","platform","enableDefaultOrderQuantityLimits","customerInfo","customerInformation","isOrderQuantityLimitsFeatureEnabledInSiteSettings","IsB2b","defaultDeliveryOption","ArrayExtensions","hasElements","isQuantityLimitsFeatureEnabled","productAvailableQuantity","_updateAvailablity","addProductToCartInput","enableStockCheck","availableQuantity","ProductAvailableQuantity","AvailableQuantity","additionalProperties","orderQuantityLimitsFeatureIsEnabled","isAddEmailDeliveryItemToCart","addProductToCart","inputProductText","substatus","maxQtyLimitReachedMessage","_getMaxQtyMessage","_result$errorDetails","warning","_getConcatenatedMaxQtyMessage","currentQuantity","quickOrderMaxQuantityLimitText","quickOrderAlreadyItemQuantityText","_handleQuantityChange","currentValue","Number","parseInt","inputElement","isNaN","setAttribute","_updateDimensionValue","productDimensionFull","newValueId","DimensionValues","_this$state$productRe","productDimensionTypeConfiguration","dimensionsToUpdate","productDimensionErrorState","otherError","clearOtherErrorState","configureErrors","errorState","mappedDimensions","DimensionTypeValue","selectedProduct","Promise","resolve","reject","newProduct","getSelectedVariant","SelectedVariantInput","MasterProductId","getDimensionsForSelectedVariant","GetDimensionsForSelectedVariantInput","variantProduct","newAvailableQuantity","getProductAvailabilitiesForSelectedVariant","ProductAvailabilitiesForSelectedVariantInput","productAvailable","_getDimensionErrorString","dimensionTypeValue","quickOrderproductDimensionTypeColorErrorMessage","quickOrderproductDimensionTypeConfigurationErrorMessage","quickOrderproductDimensionTypeSizeErrorMessage","quickOrderproductDimensionTypeAmountErrorMessage","quickOrderproductDimensionTypeStyleErrorMessage","_updateProductAvailablity","_productResponse$Dime","missingDimensions","_getConfigureErrors","quickOrderWrongQuantityErrorMsg","quickOrderOutofStockErrorMsg","viewport","device","Type","quickOrderFormClass","quickOrderFormProductContent","quickOrderFormMsgContent","quickOrderModuleHeading","quickOrderModuleDescription","quickOrderAddtobag","quickOrderProductQuantityInputLabel","quickOrderProductInputLabel","quickOrderProductDimensionTypeColor","quickOrderProductDimensionTypeConfiguration","quickOrderSelectDimensionFormatString","quickOrderProductDimensionTypeSize","quickOrderProductDimensionTypeStyle","quickOrderProductDimensionTypeAmount","quickAddQuantityPlaceholderText","productConfigureResources","selectDimensionFormatString","quickOrderProps","contentProps","isB2B","drawer","quickOrderForm","quickOrderList","_renderQuickOrderTable","form","configure","getProductConfigure","_initQuickOrderProducts","_cart$cart$CartLines","validValues","tableClassName","productInventoryInfo","_cart$result","maxQuantityForLineItem","updateMaxQuantityForCartLineItem","maxQuantityForCartLineItem","addedQuantity","_item$ItemId","_this$state$productRe2","minInventory","Math","min","PromoCode","_onInputChangeHandler","promoCodeInputValue","canApply","_applyPromotion","appliedPromo","addPromoCode","promoCode","duplicatePromoCodeErrorText","invalidPromoCodeErrorText","failedToAddPromoCodeErrorText","_onSubmitHandler","_applyPromotionHandler","_renderForm","promoPlaceholderText","promoCodeApplyButtonText","_removePromotion","getAttribute","removePromoCodes","promoCodes","failedToRemovePromoCodeErrorText","_calculateDiscount","discountAmount","line","DiscountLines","discountLine","DiscountCode","DiscountCost","_renderAppliedPromoCode","Coupons","removePromotionHandler","promoCodTotalDiscount","coupon","appliedPromoCodeHeadingText","removePromoAriaLabelFormat","removePromoText","ApplyPromoCode","isCollapseOpen","promoCodeHeadingText","SubmitUserReviewInput","userReviewData","authorization","getCacheKey","getCacheObjectType","dataCacheType","CatalogLabelComponent","catalogId","validateCatalogId","user","isB2b","catalog","CartLineItemFunctions","renderProductDimensions","DimensionStrings","productDimension","OfferId","OfferName","isSalesLine","PeriodicDiscount","EffectiveAmount","BasePrice","EffectivePercentage","inventoryInformationLabel","inventoryCssName","inventoryLabelClassName","IsInvoiceLine","unitOfMeasureDisplayType","DefaultUnitOfMeasure","cartline","hasShippingMethod","some","shippingChargeLines","ChargeLines","chargeLine","IsShipping","freightFee","chargeTotal","CalculatedAmount","priceComponent","_cartline$ChargeLines","otherCharges","chargeline","otherCharge","SalesAgreementLineRecordId","CartLine","_props$context$reques2","_props$primaryImageUr","destructDimensionStrings","renderDisountLines","renderInventoryLabel","renderUnitOfMeasure","renderShippingLabel","renderOtherCharges","renderSalesAgreementPrompt","productAttribute","productName","imgeClassName","newValue","quantityOnChange","lineIndex","NetAmountWithAllInclusiveTax","GrossAmount","ExtendedPrice","NetPrice","salesAgreementLineId","_generateQuantityandPrice","nodes","isOutOfStock","isCartStateReady","classNames","DiscountAmount","priceEditorResources","CartLinePriceEditor","PlaceOrder","orderedProducts","redirect","updatedCartVersion","salesOrder","CartCheckout","EmptyActiveCart","orderConfirmationUrl","getUrlSync","separator","includes","url","updateSalesOrder","newSalesOrder","newOrderedProducts","cartLineItemFunctions","dimensionStrings","_productDimension$Dim","_productDimension$Dim2","_productDimension$Dim3","_productDimension$Dim4","ProductDimensionType","Color","Configuration","Size","Style","_discountLine$OfferId","Percentage","discountPercent","_discountLine$Percent","updatedPercent","DiscountLineTypeValue","DiscountLineType","TenderTypeDiscount","_discountLine$Effecti","effectiveAmount","toFixed","_chargeLine$Calculate","_cartline$ChargeLines2","_otherCharges$map","itemIndex","String","_product$Name","renderProductUnitPrice","renderDiscountLines","cartLineContentClassName","generateErrorMessage","NetAmount","NetAmountWithoutTax","generateQuantityAndPrice","unitOfMeasure","courseId","getExtensionPropertyValueByKey","valueType","_properties$find","p","CommercePropertyValueEnum","string","_props$maxQuantity","_props$data$product$I","BulkPurchaseViewComponent","Module","container","content","TOGGLE_REVIEW_MODAL_BUTTON_ID","TOGGLE_EDIT_MODAL_BUTTON_CARD_ID","GetCheckoutReturnUrl","returnUrl","isAbsoluteUrl","RegExp","test","origin","ReviewCard","cardProps","isUserReview","review","userName","rating","date","renderDate","submittedDateTime","reviewTitle","reviewText","ratingHelpfulLabel","wasReviewHelpfulText","like","voteHelpfulButton","dislike","edit","report","reportToggle","responseName","userResponse","responderName","responseText","responseDate","cardBodyProps","responseProps","reviewProps","controlsProps","headerProps","RatingComponent","readOnly","avgRating","reviewRatingNarratorText","parentId","parentType","isVoted","isVotedFor","i","votedReviews","approved","isDisabled","isOboRequest","yesButtonText","noButtonText","voteCount","helpfulPositive","helpfulNegative","onClickMethod","updateReviewHelpfulness","isAuthenticated","signInUrl","toggleWriteReviewModal","editReviewCardText","Intl","DateTimeFormat","month","day","year","Date","toggleReportReviewModal","reportConcernText","reportedReviews","reportedText","reportedReviewId","returnRef","innerRef","ReviewCount","currentPage","reviewsCount","reviewsShownOnEachPage","pageReviewCountText","_getReviewStartNumber","_getReviewEndNumber","PageControls","previousPageClick","_getPreviousPageData","nextPageClick","_getNextPageData","Next","nextAttribute","Previous","previousAttribute","_hasPreviousPage","_paginationAriaLabel","pageReviewAriaLabel","previousButtonText","_hasNextPage","nextButtonText","_getPagesCount","_getReviewsShown","ceil","isNextPage","page","pageModifier","pageReviewCount","updateReviews","selectedSortByOption","selectedFilterByOption","renderConfigure","containerProps","dropdowns","Node","renderConfigureDropdown","dropdown","labelContainerProps","errors","select","quickOrderView","renderForm","quickOrderProductContent","quickOrderMsgContent","COUPON_ATTRIBUTE_KEY","_onInputChange","_cart","addAttributeToCart","attrKey","attrValue","attributeArray","AttributeValues","attributeObj","TextValue","TextValueTranslations","attrIdx","findIndex","a","_a$Name","toUpperCase","updateCart","newCartObject","removeAttributeFromCart","_a$Name2","totalCouponDiscountAmount","_coupon$Code","PromoCodeComponent","msdyn365Commerce","createComponentOverride","component","RatingsHistogram","handleHeadingChange","selectFilterBy","ratingsSummary","ratingCount","totalRatingsCount","completeClass","callbacks","histogramItems","HistogramItems","averageRating","averageRatingAriaLabel","hideCount","averageNumber","AverageRatingNumber","summary","totalReviews","TotalReviews","ratingsSummaryProps","histogramProps","stars","filterKey","update","createRatingsReviewsStateInput","WishlistItemDimension","WishListItemActions","itemKey","handlers","onAddToCart","onRemoveItem","_renderAriaLabel","formattedPrice","cultureFormatter","formatCurrency","CurrencyCode","renderProductLink","recordId","productAttributes","productPageUrlWithSwatch","renderInventoryInformationLabel","WishlistItemAddToCartButtonComponent","isInStock","addToCartText","outOfStockText","isServiceItem","ItemTypeValue","ReleasedProductType","Service","addItemAction","WishlistItemRemoveFromWishlistButtonComponent","removeFromWishlistText","removeItemAction","WishlistItem","wishlistState","enableImageProductLink","_context$request$app","fallbackImage","_props$product$Dimens","dimensionName","convertProductDimensionTypeToDimensionTypes","_getFullProductLink","productImage","_renderProductImage","productLink","_renderProductDimensions","productPrice","_renderPrice","productUnitOfMeasure","entireProductLink","productAriaLabel","addToCartButton","inventoryInformation","removeButton","productStatusMessage","toggle","onDismiss","image","xl","moduleId","moduleTypeName","WishlistItemsStatusMessage","errorType","WishlistItems","_onDismiss","_renderHeading","productAvailability","addedToCartSuccessMessage","addedToCartFailureMessage","invoiceInCartErrorMessage","productInventoryInformation","_getProductInventory","ProductDetails","_this$props$context","_await$cart$cart","curQuantity","_getInventoryValueMessage","_result$errorDetails2","_removeItemFromWishlist","wishlists","noLongerLineExist","userToken","token","wishlistLineId","_getWishlistLineIdFromProductId","removeLinesAsync","commerceList","castCommerceList","_getProductsNoLongerExists","_removeNoLongerExistsLines","createGetByCustomerInput","getItemsInWishlists","ActiveWishlistInput","castSimpleProducts","_inventoryLabel","StockLevelLabel","_inventoryClassName","StockLevelCode","toLowerCase","_isProductInStock","productResult","IsProductAvailable","CommerceListLines","foundWishlistItem","commerceListLine","_castCommerceList$Com","noLongerExist","emptyWishlistText","wishlistErrorGettingWishlist","noLongerExitsWishlistItemText","errorProps","statusMessage","productsList","emptyViewProps","Products","ProductDimensions","_renderProductList","statusNotExistsMessage","_getProductNotExists","emptytext","noLongerExisttext","addToCartButtonText","removeButtonText","currentProductProps","ProductPrice","maxQuantityLimitText","productInventoryCollection","ReviewsList","sortByDropdownOptions","mostHelpfulSortOptionText","mostRecentSortOptionText","highestRatedSortOptionText","lowestRatedSortOptionText","filterByDropdownOptions","allRatinsFilterByOptionText","fiveStarFilterByOptionText","fourStarFilterByOptionText","threeStarFilterByOptionText","twoStarFilterByOptionText","oneStarFilterByOptionText","reviewsListCallbacks","updateReviewTitle","userReviewTitle","updateReviewText","userReviewText","updateRating","userReviewRating","onReviewSubmitted","isSuccessful","isReviewModalOpen","hasReviewError","submitReview","toggleModal","_toggleReviewModal","updateReviewHelpfulnessVote","toggleReportModal","isReportModalOpen","_onReportModalOpen","_onReportModalClose","reportReview","_reportReviewCallback","updateFilterByDropdown","updateSortByDropdown","componentDidMount","reviewsList","pagingInfo","totalItems","listOfReviews","isFilterApplied","ratingsReviewsState","filterKeyValue","dropdownItemsCount","filterByOption","option","selectedIndex","_userReview","userReview","_reviewCard","_reviewCards","reviewList","reviewElements","isTakenDown","isPublished","_userReportModalToggle","reportingReviewId","_userReviewModal","ReviewModal","onModalToggle","onTitleChange","_onTitleChange","onTextChange","_onTextChange","onRatingChange","_onRatingChange","onReviewComplete","_onReviewComplete","renderContextId","_userReviewModalToggle","modalCSS","isSuccess","_reportReviewModal","ReportReviewModal","reportedKey","onRadioChange","_onRadioChange","_reportReview","hasReportError","reported","ReviewConcernCategory","SpamAdvertising","reportReviewConcern","ReportReviewConcernInput","getRnrPartnerId","getUserToken","getRnrAuthEndpointId","_value","reportedReview","notification","selectedOption","skipItems","getSelectedProductIdFromActionInput","getReviewsForGivenProduct","GetProductReviewsInput","getRnrEndpointId","_updateVoteUi","alreadyExists","concat","submitHelpfulnessVote","SubmitHelpfulnessVoteInput","showSpinner","reviewModal","reportReviewModal","filterByDropdown","LabeledDropdown","labelText","filterByDropdownText","dropdownId","dropdownOptions","onSelectOption","controlledByParent","sortByDropdown","sortByDropdownText","reviewCount","refineReviewsProps","reviewsListProps","reviewCards","pageControls","noReviewsMessage","noReviewsWithFilterMessage","noReviewsWithSelectedFilterMessage","sortByOptions","filterByOptions","OrderSummaryLine","toBeCalculatedText","freeText","cssLabel","_buildOrderSummarySection","arguments","channelConfiguration","_computedLoyaltyAmount","loyaltyAmount","getDeliveryMode","featureSate","pickupDeliveryMode","dM","OrderSummary","SubtotalAmount","SubtotalAmountWithoutTax","TaxAmount","TaxOnNonShippingCharges","OtherChargeAmount","hasDeliveryMethod","getDeliveryConfiguration","isTaxIncludedInPrice","isShowTaxBreakup","deliveryModes","taxOnShippingCharge","TaxOnShippingCharge","shippingChargeAmount","ShippingChargeAmount","reactNodes","subtotal","subTotalLabel","tax","taxLabel","orderTotal","orderTotalLabel","otherChargeLabel","otherChargeAmount","taxOnNonShippingCharges","isTaxGreaterThanZero","otherChargeAmountTotal","subtotalAmountActual","shipping","shippingLabel","giftCardAmount","_computeGiftCardAmount","giftCardTotalValue","giftCardExtends","giftCardCounter","giftCard","Balance","amount","customerAccountAmount","totalAmountAfterGiftCard","loyalty","loyaltyLabel","giftcardLabel","customerAccount","customerAccountLabel","totalDiscounts","totalDiscountsLabel","getAltText","shouldUseCmsAltText","imageAltText","_context$app","validateMediaLocationAsync","mediaLocation","imageData","Uri","AltText","IsApplicableForChildEntities","isApplicableForChildEntities","http","XMLHttpRequest","open","send","getValidProductImages","getCatalogId","actionInput","MediaLocationsForSelectedVariantInput","getMediaLocationsForSelectedVariant","mediaLocations","all","pairs","pair","validateProductImages","MediaGallery","_this","_props$config$zoomedI","_inlineZoomDivRef","Map","fullScreenOverlayButtonRef","mediaGalleryImages","defaultGalleryImageSettings","sm","md","defaultThumbnailImageSettings","onExiting","animating","onExited","next","removeInlineZoomStyle","isLastItem","nextIndex","activeIndex","goToIndex","updateZoomedInImage","previous","images","mediaGalleryItems","isFirstItem","_getCarouselItem","isInPopup","shouldSkipToMainImage","bypassHideOnFailure","_getThumbnailItem","modifiedActiveIndex","ThumbnailItemContainerProps","tabIndex","_generateOnThumbnailClick","onKeyDown","_generateOnThumbnailKeyDown","Picture","imageFallbackOptimize","shouldUseOptimizedImage","_refHandler","divRef","which","KeyCodes","Enter","Space","openModalDialog","_toggleModal","imageModalSlider","ZoomView","_mapProductToImageData","carouselprops","Carousel","_renderCarouselItemImageView","_zoomedImageSettings","interval","directionTextPrev","previousScreenshotFlipperText","directionTextNext","nextScreenshotFlipperText","onIndicatorsClickHandler","showPaginationTooltip","hideIndicator","keyboard","handleOnExited","handleOnExiting","isDisabledFunctionality","isMobileImageZoomed","carousel","imageModalSliderProps","modalIsOpen","ontoggle","galleryCarousel","ImagefullView","altTextSource","isImageZoomed","isInitialLoad","skipImageValidation","zoomedImageSettings","galleryImageSettings","_onImageMouseOut","_inlineZoomImageOnHover","_onInlineImageClick","_onContainerZoomImageClick","_onMouseOutLensContainer","variant","VariantType","Viewport","_this$props$config$im","source","imageSource","shouldUpdateOnPartialDimensionSelection","_setRenderType","mediaLocationsForSelectedVariant","_this$props$config$th","thumbnailImageSettings","_setImages","_this$props$config$th2","productVariant","_product$productVaria","_this$props$config$th3","_actionContext$reques","params","isPreview","commerceApiRequest","previewImageData","_mediaLocation$Uri","_mediaLocation$Uri2","getProductImages","fireImmediately","_this$props$config$th4","_this$props$config$im2","_this$props$context$a2","isVertical","thumbnailsOrientation","isFullscreenAllowed","allowFullScreen","zoomViewMode","imageZoom","emptyPlaceHolderImage","placeholderImageName","_this$props$context$r2","_this$props$config$im3","_this$props$data$prod","curatedImages","_filterMasterImageFromVariant","mediaGalleryCarouselItems","_getMediaGalleryItems","mediaGalleryThumbnailCarouselItems","_getMediaGalleryThumbnailItems","Modal","callbackToggle","callbackThumbnailClick","callbackThumbnailKeyDown","CarouselProps","indicatorAriaText","ariaLabelForSlide","Thumbnails","ThumbnailsContainerProps","SingleSlideCarouselComponentProps","SingleSlideCarousel","vertical","flipperPrevLabel","flipperNextLabel","useTabList","stringify","_this$state$mediaGall","lastUpdate","defaultKey","_getEmptyThumbnailItem","_this$state$mediaGall2","zoomView","_renderEmptyImage","curatedImage","imagesToSet","now","_renderImageInContainerOnZoom","_renderImageFullScreenOnZoom","_renderImageInlineOnZoom","_this$props$config$sh","_this$props$data$prod2","_this$props$data$prod3","_this$props$data$prod4","shouldHidePrimaryImages","shouldHideMasterProductImagesForVariant","variantImages","isVariantProduct","itemId","_item$additionalPrope","_this$props$config$da","dataScale","defaultDataScale","onMouseOver","onMouseMove","inlineZoomImageOnMouseMove","_this$props$config$da2","inlineZoomImageOnHover","_handleMobileViewZoomedImageClick","style","transform","classList","remove","parentElement","overflow","_this$props$config$da3","bounds","getBoundingClientRect","positionX","clientX","left","positionY","clientY","top","scaledPositionX","scaledPositionY","add","scrollTo","_this$props$config$da4","innerWidth","inlineZoomInitClick","inlineZoomImageOnMouseOut","onContainerZoomInit","onMouseOutLensContainer","_this$props$config$da5","onMouseOut","onMouseMoveLensContainer","onMouseOverImageContainer","fullScreenTitleText","_product$PrimaryImage","_this$fullScreenOverl","focus","parentDiv","querySelector","removeAttribute","removeContainerZoomStyle","getDefaultSwatchSelected","coreContext","productData","_productData$Attribut","_attributeSwatches$fi","dimensionToPreSelectInProductCard","attributeSwatches","attributeValue","_attributeValue$KeyNa","KeyName","toLocaleLowerCase","Swatches","IsDefault","updateProductUrl","productDetailsPageUrl","queryString","sourceUrl","baseUrl","search","pathname","renderProductUnitOfMeasure","renderLabel","ratingAriaLabelText","ratingCountAriaLabelText","reviewCountArialableText","getReviewAriaLabel","getRatingAriaLabel","ratingAriaLabel","roundedRating","renderPrice","basePrice","adjustedPrice","savingsText","isPriceMinMaxEnabled","priceResources","AdjustedPrice","renderProductPlacementImage","imageUrl","_context$app$config","contextConfig","fallbackImageSource","img","imageProps","ProductComponent","_product$RecordId","_getProductImageUrlFr","_getProductPageUrlFro","ratingCountAriaLabel","allowBack","quickViewButton","productComparisonButton","isEnabledProductDescription","inventoryLabel","dimensionAvailabilities","swatchItemAriaLabel","MIN_VALUE","productImageUrlFromSwatch","defaultSwatch","swatchProductImageUrls","ProductImageUrls","generateImageUrl","getProductImageUrlFromDefaultSwatch","productPageUrlFromSwatch","SwatchValue","encodeURIComponent","getProductPageUrlFromDefaultSwatch","productPageUrl","setProductPageUrl","productImageUrl","setProductImageUrl","useEffect","selectedSwatchItems","Dictionary","updatePageAndImageUrl","useCallback","swatchItem","setValue","newUrl","delete","swatchProductImageUrl","productImageUrls","newImageUrl","isUnitOfMeasureEnabled","onTelemetryClick","AverageRating","TotalRatings","attributeValues","_item$KeyName$toLocal","_item$KeyName","_item$Swatches$map","_item$Swatches","dimensionsToDisplayOnProductCard","dimensionsInProductCard","DimensionTypes","none","shouldDisplayDimension","swatches","_item$RecordId","_swatchItem$SwatchVal","_swatchItem$SwatchVal2","_dimensionAvailabilit","colorHexCode","SwatchColorHexCode","SwatchImageUrl","isDefault","dimensionAvailability","_swatchItem$SwatchVal3","swatch","ProductComponentSwatchComponent","onSelectDimension","hideRating","totalRatings","numberRatings","renderRating","inventoryAvailabilityLabel","quickview","selectedDimensions","getValues","convertDimensionTypeToProductDimensionType","cloneElement","selectedProductId","renderQuickView","renderProductComparisonButton","_renderCarousel","carouselContainer","_renderProduct","_renderGrid","gridContainer","ProductContainer","productComponent","ProductCollectionView","ProductCollectionContainer","GridComponentProps","isCarousel","seeAllButton","DescriptionInterval","renderProductCards","ProductsContainer","getInventoryLabel","channelInventoryConfigurationId","inventoryAttribute","renderProductCardsDescription","_props$data$products$","_props$data$featureSt","productsDimensionAvailabilities","breadCrumbType","breadcrumbType","isAllowBack","allowBackNavigation","quickviewslot","slots","isPriceMinMaxFeatureState","priceRangeSeparator","masterProductId","renderProducts","_props$data$listPageS","listPageState","activeProducts","productDescriptionInterval","productDescriptionIntervalRemainder0","productDescriptionIntervalRemainder9","renderTitleCount","TitleContainer","titleCount","renderCategoryHierarchy","CategoryHierarchyContainer","categoryHierarchyList","categoryHierarchySeparator","category","configureStickyFilter","isStickyHeader","headerContainer","document","headerHeight","offsetHeight","bannerHeights","headerElement","defaultContainer","refinerElement","documentElement","scrollTop","clientHeight","createSearchResultModal","modalProps","refineMenu","sortByDropDown","isRecoSearchPage","modal","modalHeader","createModalBody","modalFooter","modalBody","renderSort","refiners","RefineMenuContainer","RefinerSectionContainer","submenu","renderRefinerMobile","renderRefiner","renderRefinerFooter","handler","doneAriaLabel","doneText","SortingContainer","renderTitle","titlePrefix","titleText","SearchResultContainerView","_props$context$action","SearchResultContainer","pagination","ProductSectionContainer","choiceSummary","modalToggle","searchResultModal","TitleViewProps","categoryHierarchy","CategoryNavContainer","RefineAndProductSectionContainer","FeatureSearchContainer","similarLookProduct","useStickyFilter","stickyFilterSetup","enableStickyHeader","isExpanded","setIsExpanded","wrapperRefiner","useRef","refinerRefernce","handleClickOutside","element","contains","removeEventListener","useOutsideClick","recommendation","enableProdutDescription","filterText","retrieveItems","CarouselView","renderModuleAttributes","closeAnimation","pause","pauseOnHover","ride","autoplay","transitionType","hideFlipper","dismissEnabled","handleDismissCarousel","dismissCarouselAriaText","ariaLabelForDismissButton","flipperPrevious","flipperNext","activeImageView","activePointContainer","activePointDetailsContainer","imageMapper","detailsContainer","additionalContent","additionalContentNode","additionalContentContainer","additionalContentItemLinks","links","detailsContainerCta","productCardtopPosition","productCardleftPosition","overlay","productCard","reportReviewConcernDataAction","concernCategory","ProductCollection","_getProductsDimensionsAvailabilities","dimensionsToDisplayAsSwatch","dimensionsAsSwatchType","validProducts","getDimensionAvailabilitiesForProductSearchResultAction","DimensionAvailabilitiesForProductSearchResultInput","DimensionSwatchDisplayTypes","initProductState","productCollectionProducts","productCollection","equals","_getProduct","_this$state$productsD","breaCrumbType","quickviewSlot","productComparisonButtonSlot","reviewCountAriaLabelValue","ratingCountAriaLabelSingleUser","_product$MasterProduc","_getActivePrice","getPriceForProductSearchResult","PriceForProductSearchResultInput","_getSeeAllButton","headingLabel","searchPageLink","seeAllButtonText","productPrices","enableAffiliationBasedPricing","shouldDisplaySeeAllButton","recommendationListId","layout","headingComponent","updatedProducts","getProductData","productCollectionViewProps","WrappedComponent","_super","ModuleState","call","initializeState","_b","states","getModuleStates","updateModuleStates","__assign","_a","hasInitialized","isRequired","isCancellable","isSubmitContainer","childIds","getModuleStateManager","validate","isPending","isSkipped","isCancelAllowed","shouldSubmitContainer","hasModuleState","setIsRequired","setIsSubmitContainer","onSkip","onDisable","getModule","getModuleByTypeName","getModuleStateManagerByTypeName","options","moduleStates","values","_moduleState","modules","_validateLeaf","module","isMatch","_validateContainer","allMatched","skipSkippableItem","shouldEnableSinglePaymentAuthorizationCheckout","childId","_isPaymentSectionContainer","enableControl","__extends","prototype","onApplyHandler","onApplyGiftCard","onChangeNumberHandler","onEnterGiftCardNumber","onChangePinHandler","onEnterGiftCardPin","onChangeExpHandler","onEnterGiftCardExp","getForm","inputRef","inputPinRef","inputExpRef","giftCardNumber","giftCardPin","giftCardExp","supportExternalGiftCard","additionalFields","disableAddGiftCard","applyGiftCardButton","giftCardFormLabel","giftCardNumberLabel","giftCardPinLabel","giftCardExpLabel","giftCardAlertLabel","giftCardPinPlaceholderText","giftCardExpPlaceholderText","formProps","inputPinLabel","inputExpLabel","alertFieldLabel","assertive","fade","includeAlertClass","inputNumber","inputPin","inputExp","applyButton","showGiftCardPinInput","showGiftCardExpInput","inputProps","inputNumProps","inputPinProps","inputExpProps","onRemoveHandler","onRemoveGiftCard","_giftCard$Id","getItem","getFormattedPrice","canRemove","enteredGiftCardLabel","giftCardAvailableBalanceLabel","removeGiftCardButton","balance","CardCurrencyCode","giftCardLast4Digit","substr","selectedGiftCard","itemProps","getList","giftCards","listProps","GiftCardTitle","SupportedGiftCardType","CheckoutGiftCard","isFetchingGiftCard","isEnabled","couldPaidByGiftCard","giftCardSupported","External","shouldBeEnabledForGuest","handleCancelOrSubmit","hasSelectedItem","enterGiftCardNumber","enterGiftCardPin","enterGiftCardExp","removeGiftCard","applyGiftCard","giftCardTypes","getGiftCardTypes","giftCardType","isPinRequired","IsPinRequired","isExpRequired","IsExpirationDateRequired","tenderTypeId","PaymentMethodId","getGiftCard","addGiftCard","Pin","ExpirationDate","TenderTypeId","findGiftcardTenderTypes","tenderTypes","operationId","giftcardType","matchedTenderTypes","Internal","tenderType","OperationId","ConnectorId","noBalanceError","invalidCardInfoError","invalidCardTypeError","noCardPinError","noCardExpError","supportedGiftCardType","getTenderTypesAsync","internalGiftcardTenderTypes","OPERATIONS","PayGiftCertificate","externalGiftcardTenderTypes","Both","split","getGiftCardAsync","activeGiftCard","emptyInputError","duplicatedCodeError","invalidCodeError","card","resolveCardTypesAsync","CardType","GiftCard","getLoyaltyAmount","getGiftCardTotalAmount","getCustomerAccountAmount","showAdditionalFields","shouldPayGiftCard","isOBORequest","EnabledPaymentsForOBO","moduleClassName","checkoutGiftCardProps","showGiftCard","TitleCompoent","_reloadPage","reload","OrderTemplateListViewComponent","OrderTemplateList","OrderTemplates","OrderTemplate","orderTemplates","createOrderTemplateButton","templateHeaderStatusMessage","console","log","CreateNewTemplateButtonComponent","createOrderTemplateText","createNewTemplateButtonText","onOrderTemplateCreated","createOrderTemplateDialogResources","orderTemplateHeaderLabel","createOrderTemplateHeader","orderTemplateTitleLabel","orderTemplateTitle","orderTemplateNameAriaLabel","orderTemplateDescription","createOrderTemplateDescription","defaultOrderTemplateName","orderTemplateButtonLabel","createOrderTemplateButtonText","orderTemplateCancelButtonLabel","cancelNewOrderTemplateCreationButtonText","headingForEmptyOrderTemplateList","textForEmptyOrderTemplateList","orderTemplate","renderOrderTemplate","orderTemplateNodeProps","orderTemplateImage","orderTemplateStatusMessage","orderTemplateName","orderTemplateImageElement","currentImageListLength","CheckoutState","_giftCards","_giftCardExtends","_loyaltyAmount","_guestCheckoutEmail","_isTermsAndConditionAccepted","_customerAccountAmount","defineProperty","_tokenizedPaymentCard","_tenderLine","_billingAddress","_shippingAddress","_cardPrefix","_loyaltyCardNumber","updateTokenizedPaymentCard","newTokenizedPaymentCard","updateTenderLine","newTenderLine","updateShippingAddress","newShippingAddress","updateBillingAddress","newBillingAddress","updateCardPrefix","newCardPrefix","removeGiftCardExtend","__spreadArrays","addGiftCardExtend","updateLoyaltyCardNumber","newLoyaltyCardNumber","updateLoyaltyAmount","newAmount","updateGuestCheckoutEmail","newGuestCheckoutEmail","updateTermsAndConditionsAcceptance","newIsTermsAndConditionAccepted","updateCustomerAccountAmount","AsyncResultStatusCode","reportConcernDropdownOptions","SubmitReview","submitReviewAttribute","SuccessButton","successAttribute","Cancel","cancelAttribute","reportSpamText","OffensiveContent","offensiveContentText","Profanity","profanityContentText","applicationNode","returnFocusRef","ModalHeader","ModalFooter","ModalBody","header","headerSubmitted","feedbackThankYouText","cancelReportReviewText","submitButton","reportReviewButtonText","succesfulButton","okReportReviewText","reportMessage","reportModalMessage","reportSubmittedMessage","radioButtons","radioPairs","errorMessageText","inputId","htmlFor","AddCheckoutLoyalty","cardNumber","rewardPoints","loyaltyAmountContainer","appliedLoyaltyAmountContainer","loyaltyAmountLabel","loyaltyAmountInput","loyaltyAmountApplyButton","showAppliedAmount","loyaltyAmountAppliedText","loyaltyAmountAppliedPrice","loyaltyAmountRemoveButton","rewardPoint","checkoutLoyaltyRewardPoint","availablePointsText","activePoints","expiringPointsText","expiringPoints","ShowCheckoutLoyalty","_ref2","coveredAmountText","CheckoutLoyaltyView","checkoutLoyalty","showLoyalty","addLoyalty","isShowLoyalty","isShowAddLoyalty","renderSaving","deliveryLocation","PickUpAtStoreComponent","EmailDeliveryComponent","LineItemComponent","_ref3","LineItemGroupComponent","_ref4","lineItem","LineItemGroupComponentWithMultiplePickUp","_ref5","LineItemComponentWithMultiplePickUp","_ref6","PickUpAtStoreComponentWithMultiplePickUp","_ref7","LineItemsComponent","_ref8","OrderSummaryComponent","_ref9","lines","PaymentSummaryComponent","_ref10","invoices","CheckoutView","canShow","checkoutProps","hasSalesOrder","bodyProps","mainProps","mainControlProps","sideProps","sideControlFirstProps","sideControlSecondProps","termsAndConditionsProps","orderConfirmation","loading","guidedForm","orderSummary","invoicePaymentSummary","placeOrderButton","termsAndConditions","keepShoppingButton","checkoutExpressPaymentContainer","onClickSubmit","submitButtonAttribute","cancelButtonAttribute","modalHeaderNode","discardReviewButtonText","submitDisabled","submitReviewButtonText","ratingsInput","ratingLabel","ratingsLabel","titleInput","titleLabel","textInput","textLabel","privacyPolicyUrl","privacyPolicyLink","autoComplete","inputRow","editReviewModalTitle","writeReviewModalTitle","stripWhiteSpacesFromString","selectRatingAriaLabel","initialRating","selectRatingLabel","reviewTitleMaxLength","reviewTitleAriaLabel","reviewTitleLabel","reviewTextMaxLength","rows","reviewAriaLabel","reviewTextLabel","policyTextBlocks","privacyPolicyTextFormat","isSeparatorAtStart","startsWith","isSeparatorAtEnd","endsWith","PrivacyPolicy","privacyPolicyAttribute","rel","privacyPolicyTitle","onReviewSubmission","userEmail","emailAddress","submitUserReview","firstName","getReviewInput","GetUserReviewInput","getInvoicePaymentSummary","totalAmountLabel","invoiceLabel","invoiceSummaryTitle","InvoiceSummary","Checkout","isValidationPassed","isPlaceOrderLoading","isPlaceOrderClicked","handleCheckoutHeadingChange","checkoutHeading","cartStatus","isEmptyCart","getSlotItems","triggerPaymentWithPlaceOrder","updateShouldTriggerPaymentWithPlaceOrder","newShouldTriggerPaymentWithPlaceOrder","shouldTriggerPaymentWithPlaceOrder","onPlaceOrder","checkoutOutOfStockErrorMessage","isOverMaxQuantity","_checkout$result","hasOrderConfirmation","updateCartLineEmailAddress","guestCheckoutEmail","placeOrder","handleCheckoutError","updateIsPaymentSectionContainerReady","newIsPaymentSectionContainerReady","emailDeliveryCartLines","lineDeliverySpecifications","DeliverySpecification","DeliveryModeId","DeliveryPreferenceTypeValue","DeliveryPreferenceType","ElectronicDelivery","ElectronicDeliveryEmailAddress","updateLineDeliverySpecificationsAsync","updatedCart","Version","getAvailabilitiesForCartLineItems","ProductAvailabilitiesForCartLineItems","_cart$CartLines","_cart$CartLines2","productsThatShouldValidateInventory","_cartlineProduct$Beha","cartlineProduct","isStockedItem","Behavior","IsStockedProduct","foundProductAvailability","productInventory","_productInventory$Pro","cartLinesInventoryValidation","validateCartLinesInventory","isValid","getActiveChildModuleStates","onContainerReady","redirectToCartPage","notFoundEditCartLinkMessage","editCartLink","validateForCheckout","retry","isEcommerceQuantityLimitsFeatureEnabledInHq","isB2BSite","validateForCheckoutAsync","bypassCache","_result$ValidationFai","ValidationFailuresByCartLines","refreshCart","refreshError","_setErrorMessage","_saveShippingAndBillingAddress","tokenizedPaymentCard","Zip","address","_getAddressFromTokenizedPaymentCard","updateBillingAddressFromExpressCheckout","newBillingAddressFromExpressCheckout","updateShippingAddressFromExpressCheckout","newShippingAddressFromExpressCheckout","TwoLetterISORegionName","Country","NameOnCard","Street","Address1","StreetNumber","Address2","City","State","ZipCode","Phone","invalidCartVersionErrorMessage","missingRequiredCartTenderLinesErrorMessage","timeoutErrorMessage","checkoutResult","apiError","statusCode","errorCode","setCheckoutErrors","_error$data","AdditionalContext","isEditorialMode","isEmpty","isEditor","isTermsAndConditionAccepted","disableForOBO","isPaidOffByCustomerAccount","amountDue","_this$props$data$chec22","_this$props$data$chec23","asyncResultStatus","LOADING","_this$props$data$chec24","_this$props$data$chec27","email","tenderLine","paymentTenderType","paymentTenderTypeFromCartPage","isExpressAddressAppliedInCartPage","cardPaymentAcceptResult","_this$props$data$chec25","_this$props$data$chec26","updateExpressCheckoutDetails","newEmailAddressFromExpressCheckout","newPaymentTenderType","newIsExpressCheckoutApplied","newIsExpressAddressApplied","newCardPaymentAcceptResult","updateExtensionProperties","newExtensionProperties","isCartReady","_this$props$data$chec28","isPaymentSectionContainerReady","_this$props$data$chec29","_this$props$data$chec30","_this$props$data$chec31","_this$props$data$chec32","redirectAdditionalContext","isPaymentVerificationRequired","_this$props$data$chec33","isPaymentSectionContainerHasError","_this$props$data$chec34","_this$props$data$chec35","isBillingAddressHasError","_this$props$data$chec36","_this$props$data$chec37","updateIsBillingAddressHasError","newIsBillingAddressHasError","canPlaceOrder","_this$props$data$chec38","_this$props$data$chec39","updateIsPlaceOrderEnabledInRedirection","newIsPlaceOrderEnabledInRedirection","_this$props$data$chec40","_this$props$data$chec41","checkoutErrorLocation","checkoutPaymentErrorLocation","ErrorCode","Microsoft_Dynamics_Commerce_Runtime_UnableToAuthorizePayment","CheckoutPaymentInstrument","componentDidUpdate","_this$props$data$chec42","_this$props$data$chec43","shouldFocusOnCheckoutError","_this$props$data$chec44","_this$props$data$chec45","_this$props$data$chec46","_this$props$data$chec47","_this$props$data$chec48","_this$props$data$chec49","_this$props$data$chec50","_this$props$data$chec51","_this$props$data$chec52","_this$props$data$chec53","_this$props$data$chec54","_this$props$data$chec55","_this$props$data$chec56","_this$props$data$chec57","_document","_this$props$data$chec58","disableGuidedCheckoutFlow","backToShopping","placeOrderText","confirmPaymentText","cookieConsentRequiredMessage","checkoutClass","allCheckoutInformation","checkoutInformation","info","isConsentGiven","cookies","backToShoppingUrl","BackToShopping","backToShoppingAttributes","checkoutBtnText","hasShippingAddress","hasCartDeliveryMode","hasGuestCheckoutEmail","hasExpressPaymentContainer","getElementsByClassName","display","renderMsdyn365Text","AlertComponent","_this$props$data$chec59","_this$props$data$chec60","GuidedFormComponent","resource","getOrderSummary","PlaceOrderButtonComponent","every","SUCCESS","FAILED","CheckoutErrors","clientCheckoutError","consoleCheckoutErrors","getCheckoutState","checkoutErrorsList","Console","consoleCheckoutError","errorMessageResource","getCheckoutErrorMessage","updateCheckoutError","newCheckoutError","updateShouldFocusOnCheckoutError","newShouldFocusOnCheckoutError","genericError","scrollIntoView","updateCheckoutErrorFocus","newCheckoutErrorFocus","setCheckoutErrorFocus","checkoutModuleId","checkoutModule","errorMessageFromAPI","errorResource","ActionError","ErrorMessageResource","checkoutTimeoutErrorMessage","Microsoft_Dynamics_Commerce_Runtime_BlockedLoyaltyCard","blockedLoyaltyCardErrorMessage","CheckoutLoyalty","Microsoft_Dynamics_Commerce_Runtime_CustomerAccountLimitSignDifferentFromAmountDue","customerAccountLimitSignDifferentFromAmountDueErrorMessage","CheckoutCustomerAccountPayment","Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentExceedsAvailableCreditLimit","customerAccountPaymentExceedsAvailableCreditLimitErrorMessage","Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentExceedsCustomerAccountFloorLimit","customerAccountPaymentExceedsCustomerAccountFloorLimitErrorMessage","Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentExceedsTotalAmountForCarryOutAndReturnItems","customerAccountPaymentExceedsTotalAmountForCarryOutAndReturnItemsErrorMessage","Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentForCustomerWithoutAllowOnAccount","customerAccountPaymentForCustomerWithoutAllowOnAccountErrorMessage","Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentNotAllowedForOpenInvoices","customerAccountPaymentNotAllowedForOpenInvoicesErrorMessage","Microsoft_Dynamics_Commerce_Runtime_FraudRisk","fraudRiskErrorMessage","Microsoft_Dynamics_Commerce_Runtime_GiftCardBalanceInquiryFailed","giftCardBalanceInquiryFailedErrorMessage","Microsoft_Dynamics_Commerce_Runtime_GiftCardCurrencyMismatch","giftCardCurrencyMismatchErrorMessage","Microsoft_Dynamics_Commerce_Runtime_InvalidCartVersion","Microsoft_Dynamics_Commerce_Runtime_InvalidLoyaltyCardNumber","invalidLoyaltyCardNumberErrorMessage","Microsoft_Dynamics_Commerce_Runtime_InvalidPaymentRequest","invalidPaymentRequestErrorMessage","Microsoft_Dynamics_Commerce_Runtime_InvalidPaymentRequest_Console","invalidPaymentRequestConsoleErrorMessage","Microsoft_Dynamics_Commerce_Runtime_MissingRequiredCartTenderLines","Microsoft_Dynamics_Commerce_Runtime_MultipleCustomerAccountPaymentsNotAllowed","multipleCustomerAccountPaymentsNotAllowedErrorMessage","Microsoft_Dynamics_Commerce_Runtime_NoMoreThanOneLoyaltyTender","noMoreThanOneLoyaltyTenderErrorMessage","Microsoft_Dynamics_Commerce_Runtime_NoResponseFromGatewayForGiftCardBalanceInquiry","noResponseFromGatewayForGiftCardBalanceInquiryErrorMessage","Microsoft_Dynamics_Commerce_Runtime_NoTenderLoyaltyCard","noTenderLoyaltyCardErrorMessage","Microsoft_Dynamics_Commerce_Runtime_NotEnoughRewardPoints","notEnoughRewardPointsErrorMessage","Microsoft_Dynamics_Commerce_Runtime_PaymentAlreadyVoided","paymentAlreadyVoidedErrorMessage","Microsoft_Dynamics_Commerce_Runtime_PaymentAmountExceedsGiftBalance","paymentAmountExceedsGiftBalanceErrorMessage","Microsoft_Dynamics_Commerce_Runtime_PaymentRequiresMerchantProperties","paymentRequiresMerchantPropertiesErrorMessage","Microsoft_Dynamics_Commerce_Runtime_PaymentRequiresMerchantProperties_Console","paymentRequiresMerchantPropertiesConsoleErrorMessage","Microsoft_Dynamics_Commerce_Runtime_PaymentUsingUnauthorizedAccount","paymentUsingUnauthorizedAccountErrorMessage","Microsoft_Dynamics_Commerce_Runtime_RefundAmountMoreThanAllowed","refundAmountMoreThanAllowedErrorMessage","unableToAuthorizePaymentErrorMessage","Microsoft_Dynamics_Commerce_Runtime_UnableToAuthorizePaymentCardAdditionalContextRequired","unableToAuthorizePaymentCardAdditionalContextRequiredErrorMessage","Microsoft_Dynamics_Commerce_Runtime_UnableToAuthorizePaymentCardTypeMissingOrNotSupported","unableToAuthorizePaymentCardTypeMissingOrNotSupportedErrorMessage","Microsoft_Dynamics_Commerce_Runtime_UnableToCancelPayment","unableToCancelPaymentErrorMessage","Microsoft_Dynamics_Commerce_Runtime_UnableToReadCardTokenInfo","unableToReadCardTokenInfoErrorMessage","Microsoft_Dynamics_Commerce_Runtime_UnableToRetrieveCardPaymentAcceptResult","unableToRetrieveCardPaymentAcceptResultErrorMessage","balanceCheckButton","GiftCardBalanceCheck","_isEnabled","_getFormattedPrice","_enterGiftCardNumber","_clearError","_enterGiftCardPin","_enterGiftCardExp","_setError","_applyGiftCard","_getGiftCardTypes","_getGiftCard","_findGiftcardTenderTypes","giftCardBalanceCheckProps","ModuleStatesCacheKey","cacheKey","getCardTypeId","cardPrefix","Unknown","TypeId","findTenderIdTypeByOperationId","matchedTenderType","roundNumber","billingAddress","isExpressAddressApplied","cartTenderLines","AmountDue","getTenderLinePromises","loyaltyCardNumber","LoyaltyCardId","chargedAmount","loyaltyTenderLinePromise","Amount","getLoyaltyTenderLine","customerAccountTenderLinePromise","CustomerId","createCustomerAccountTenderLine","giftCardExtend","_giftCardExtend$Expir","_giftCardExtend$Expir2","giftCardExpirationYear","giftCardExpirationMonth","creditCardTenderLinePromise","GiftCardId","GiftCardPin","GiftCardExpirationYear","GiftCardExpirationMonth","getGiftCardTenderLine","currency","TokenizedPaymentCard","House","ThreeLetterISORegionName","cardTenderLine","CardPaymentAcceptResult","getCreditCardTenderLineForSinglePaymentAuth","cartTypeId","CardTypeId","TenderType","CardTokenInfo","getCreditCardTenderLine","cartVersion","checkoutAsync","_error$data2","_cardPaymentAcceptRes","_cardPaymentAcceptRes2","updateRedirectAdditionalContext","newRedirectAdditionalContext","updateRedirectPaymentConnectorId","newRedirectPaymentConnectorId","Settings","PaymentConnectorId","updateIsCheckoutCallFailed","newIsCheckoutCallFailed","updateCheckoutErrorPaymentConnectorId","newCheckoutErrorPaymentConnectorId","updateIsExpressCheckoutApplied","modalCloseButtonReference","createRef","CreateOrderTemplateButton","onCancelHandler","isCreateOrderTemplateDialogOpen","setOrderTemplateNameDialogOpen","onCreateButtonClick","OrderTemplateNameDialog","modalOpen","isUpdateDialog","setModalOpen","dialogStrings","onSuccess","parentElementRef","SignInMessage","SignInButton","SignIn","ModalToggle","WriteReview","PureComponent","writeReviewCallbacks","_modalToggleRef","userInfo","signInMessage","signInButton","signInLabel","signInAriaLabel","editReviewButtonText","reviewButtonLabel","_buildUserReviewModal","getHostName","Iframe","postMessage","parameters","_this$iframeRef$curre","iframeRef","contentWindow","targetOrigin","onEvent","onIFrameMessage","requestUrlOrigin","messageOrigin","sourceHost","eventHost","requestHost","messageHost","updateContentDocument","displayContent","css","innerDocument","contentDocument","write","cssNote","createTextNode","appendChild","head","close","previousProps","componentWillUnmount","iframeAriaLabel","height","moduleName","sandbox","_renderThumbnails","thumbnails","_renderThumbnailItem","thumbnail","MediaGalleryView","countryISOMapping","AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BA","BW","BV","BR","VG","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","HK","MO","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","AN","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VI","WF","EH","YE","ZM","ZW","XK","getThreeLetterCountryCode","countryCode","ratingId","_totalRatings$toStrin","ActiveProductComponent","imgData","assembleNode","_item$links","renderHeading","additionalContentHeading","handleAdditionalTextChange","subtext","renderParagraph","additionalContentParagraphText","ctaLink","renderLinks","linkIndex","editableLink","linkText","linkUrl","destinationUrl","openInNewTab","isOpenInNewTab","link","handleAdditionalLinkTextChange","activeImageAdditionalContent","CanvasCalculations","CanvasStyles","ImageMapper","Component","_isDesktopViewPort","_context","getActiveImageWidth","activeImageReferenceValue","activeImageRefs","clientWidth","getActiveImageHeight","convertHexToRgb","hexColor","exec","rValue","gValue","bValue","applyFadingTransition","coords","rgbColor","alpha","_this$_canvas$current","_this$_canvas$current2","halfDivisor","_canvas","getContext","buttonPadding","paddingAdjustment","buttonWidth","measureText","width","fillStyle","body","fillText","drawButton","_this$_canvas$current3","_this$_canvas$current4","buttonTextClor","buttonHeight","buttonPositionX","buttonPositionY","arcsize","beginPath","moveTo","lineTo","arcTo","stroke","closePath","fill","expandAnimation","_this$props$imageMapp","buttonText","imageMapperResources","animationStartWidth","expandAnimationStartWidth","pointPositionX","pointPositionY","animationEndWidth","expandAnimationEndWidth","radius","expandRadius","rotation","startAngle","endAngle","textFadeInValue","textFadeInStartValue","buttonTextClorInRgb","animate","_this$_canvas$current5","_this$_canvas$current6","ellipse","requestAnimationFrame","textFadeInterval","collapseAnimation","_this$props$imageMapp2","collapseAnimationStartWidth","collapseAnimationEndWidth","clearMargin","clearHeight","clearWidth","collapseRadius","textFadeOutValue","textFadeOutStartValue","_this$_canvas$current7","_this$_canvas$current8","clearRect","drawCircle","_this$_canvas$current9","_this$_canvas$current10","viewPort","doubleMultiplier","strokeStyle","arc","PI","scaleCoords","imgWidth","defaultWidth","defaultScale","scale","coord","renderPrefilledAreas","areaMap","areas","area","computeCenter","scaledCoords","handleHoverOn","center","handleHoverOff","_this$_canvas$current11","canvasPositionX","defaultPositionX","canvasPositionY","defaultPositionY","click","hoverOn","onMouseEnter","hoverOff","onMouseLeave","renderAreas","_this$props$imageMapp3","_this$props$imageMapp4","_area$productSearchRe","xsRadius","extendedArea","areaKey","altTextWithProductName","productSearchResult","shape","onFocus","onBlur","alt","initCanvas","_this$getActiveImageW","_this$getActiveImageH","_this$_canvas$current12","_backgroundImage","_container","onLoad","defaultHeight","canvasWidth","canvasHeight","shouldRender","_requestContext$gridS","useMap","ActiveImageConstants","ActiveImage","_defaultProductCardWidth","_defaultProdutCardHight","_activePoints","addActivePoints","areaId","updateClientWidth","Browser","renderImageMapper","_this$props$config$ac","productResults","configProduct","_configProduct$xPosit","_configProduct$yPosit","_configProduct$radius","xPosition","yPosition","activePoint","mappedArea","_activeImageClass","enterArea","leaveArea","activeImage","_activeImageRefs","altTextForSeeMoreButtonWithProductName","seeMoreButtonText","overlayClass","resetState","renderProductComponent","_this$state$area","_this$state$area$prim","_product$ItemId","baseImageUrl","productImageSettings","renderProductCard","_productCardDivRef","renderOverlay","getProductCardPositionX","_this$props$config$pr","_this$props$config$pr2","_defaultImageSettings","_area$center$","_area$center","getDefaultImageSettings","productImageSettingsWidth","productCardWidth","leftAllignPosition","position","getProductCardPositionY","_this$props$config$pr3","_this$props$config$pr4","_defaultImageSettings2","productImageSettingsHeight","produtCardHight","_area$center$2","_area$center2","keyDown","enterKey","nodeName","escKey","handleTextChange","handleParagraphChange","paragraph","renderActiveImageDetailsLinks","_telemetryContent","linkData","linkId","willOpenInNewTab","handleLinkTextChange","renderActiveImageDetailsHeading","_heading$tag","renderActiveImageDetailsParagraph","getActiveImageId","activeImageId","_activeImageIdPart$","activeImageSource","decrementOne","_handleOutsideClick","_this$_productCardDiv","timeoutInterval","Array","from","handleAdditionalParagraphChange","handleAdditionalText","handleAdditionalParagraph","handleAdditionalLinkText","_this$props$config$ad","withVisibilityObserver","VisibilityObserver","isVisible","selfRef","initMutationObserver","targetNode","getElementsByTagName","MutationObserver","mutationObserver","handleVisibilityChange","observe","childList","subtree","stopMutationObserver","_this$state$observer","disconnect","offsetWidth","visibilityObserver","renderItem","star5Count","star4Count","star3Count","star2Count","star1Count","totalCount","percentage","formattedPercent","NumberFormat","barItemAriaLabel","starLabel","bar","Progress","buttonProps","PaymentConnectorPostMessageType","paymentConnectorMessage","messageType","paymentConnectorExtraContextMessage","ExtraContext","paymentConnectorSubmitMessage","Submit","buildReviewCard","createReviewModal","createReportModal","ReviewsListview","CheckoutAlert","_renderItem","WishlistItemsView","From","SelectedGiftCard","GiftCardList","_objectWithoutProperties","_excluded","AddResource","ShowResource","CheckoutGiftCardView","BulkPurchase","collapseRef","_dimensionDropDownChange","_this$collapseRef$cur","reEvaluateHeight","_toggleCollapse","hasDimensionsInProps","hasDimensionsInData","_renderCollapseContent","_renderCollapseButton","_renderCollapse","bulkPurchaseHeaderTitle","_renderMainContent","isMobileDevice","RichTextComponent","bulkPurchaseDescriptionText","_renderMatrix","_this$props$data$orde","_this$props$data$cust","isMultipleCatalogsFeatureEnabled","ProductDimensionsMatrix","dimensionOnChange","isMultipleCatalogFeatureEnabledInHq","buttonsStates","onPlaceOrderHandler","isBusy","buttonSetState","CheckoutPlaceOrderButton","setIsBusy","payload","TelemetryEvent","Purchase","CarouselModule","_handleDismissCarousel","dismissCarousel","_next","closeNow","_previous","_onExiting","_onExited","_goToIndex","newIndex","histogramItem","RatingsHistogramView","WaitingComponent","orderSummaryHeading","showLineItems","isShowOrHideTaxEnabled","isEnableShowOrHideSalesTaxECommerceEnabled","orderSummaryProps","IsTaxIncludedInPrice","PayCard","PayLoyalty","PayCustomerAccount","applyPromotionHandler","_event$currentTarget$","AddPaymentFormComponent","acceptPageUrl","acceptPageContent","canSubmit","canCancel","iFrameHeightOverride","isFetchingPaymentConnector","paymentStyleOverride","cancelButtonText","submitButtonText","defaultPaymentConnectorStyle","Form","Item","GiftCardBalanceCheckView","AdressInput","step","ariaValueMax","ariaValueMin","ariaValueNow","CheckoutLoyaltyLabel","CheckoutLoyaltyText","_defaultLoyaltyPoints","loyaltyCard","CardNumber","updateLoyaltyCardId","shouldPayLoyalty","_dialogToggleRef","_applyLoyaltyPoints","_removeLoyaltyPoints","_onBlur","dollarsApplied","maxDollars","isFetchingLoyaltyCard","loyaltyTransactionEstimation","MaxCurrencyValueOfLoyaltyPoints","_updateEstimate","_updateLoyalty","Loyalty","Heading","headingTag","loyaltyHeadingText","TextComponent","loyaltyCoveredAmountText","Drawer","toggleButtonText","_drawerHeader","glyphPlacement","RewardPoints","points","_renderPointSection","availablePointsLabel","expiringLoyaltyPointsLabel","LabelComponent","payWithLoyaltyAmountLabel","InputComponent","applyCheckoutLoyaltyPaymentText","removeCheckoutLoyaltyPaymentText","point","RewardPointId","ActivePoints","PointsExpiringSoon","parseFloat","num","getElementById","loyalPointsRequest","createGetMaxLoyaltyPointsToRedeemForTransactionBalanceInput","_query","callActionOrExecute","_points$MaxCurrencyVa","GetLoyaltyTransactionEstimationInput","newMaxPoints","DeliveryOptionList","DeliveryOptionSelected","CheckoutDeliveryOptionsView","CheckoutGuidedCard","editButtonRef","formCardRef","renderFooder","isVisted","isSubmitting","hasControlGroup","saveAndContinueBtnLabel","Save","SaveContinue","saveBtnAttributes","cancelBtnAttributes","focusOnFirstFocusableElement","node","child","focusOnEditButton","scrollToTitle","formCard","getTitle","Tag","_getModules","_getId","prevProps","isActive","onNext","shouldFocus","childrenModules","childModule","childState","changeBtnLabel","CheckoutChange","changeBtnAttributes","canEdit","active","expanded","closed","visted","hidden","initialized","ready","pending","updating","CheckoutGuidedForm","currentStep","getEnabledModules","_enableAfterModule","Boolean","nextChildId","_sectionState$childId","sectionState","currentId","getStep","indexOf","getId","getHeading","moduleChildId","_state$childIds","shouldCollapseAfterRedirect","hasMissingInfo","hasOrderError","previousModuleHasError","_this$props$requestCo","GuidedCard","InvoiceSummaryLine","_buildPaymentSummarySection","invoiceLines","invoiceLine","InvoiceAmount","InvoiceId","CheckoutStateInput","buildCacheKey","inputData","lineItemIdsToRemove","getCartState","activeCart","activeCartLine","checkoutCartLine","removeCartLines","cartLineIds","removeAllPromoCodes","removeCheckoutCartId","submitReviewDataAction","WriteReviewView"],"mappings":"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AI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI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","file":"static/js/9.67b58581d967d45ea74b.chunk.js","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface ICheckoutDeliveryOptionsDescriptionProps {\n description?: string;\n}\n\n/**\n * AddPaymentForm SFC.\n * @param root0\n * @param root0.description\n * @extends {React.FC}\n */\nconst CheckoutDeliveryOptionsDescription: React.FC = ({ description }) => {\n if (!description) {\n return null;\n }\n\n return {description};\n};\n\nexport default CheckoutDeliveryOptionsDescription;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface ICheckoutDeliveryOptionsErrorMessageProps {\n message?: string;\n}\n\n/**\n * AddPaymentForm SFC.\n * @param root0\n * @param root0.message\n * @extends {React.FC}\n */\nconst CheckoutDeliveryOptionsErrorMessage: React.FC = ({ message }) => {\n if (!message) {\n return null;\n }\n\n return

{message}

;\n};\n\nexport default CheckoutDeliveryOptionsErrorMessage;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface ICheckoutDeliveryOptionsErrorTitleProps {\n title?: string;\n}\n\n/**\n * AddPaymentForm SFC.\n * @param root0\n * @param root0.title\n * @extends {React.FC}\n */\nconst CheckoutDeliveryOptionsErrorTitle: React.FC = ({ title }) => {\n if (!title) {\n return null;\n }\n\n return

{title}

;\n};\n\nexport default CheckoutDeliveryOptionsErrorTitle;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ICheckoutDeliveryOptionsRadioButtonProps {\n isChecked: boolean;\n value?: string;\n ariaSetSize: number;\n ariaPosInSet: number;\n ariaLabel?: string;\n telemetryContent?: ITelemetryContent;\n onChange(event: React.ChangeEvent): void;\n}\n\n/**\n * AddPaymentForm SFC.\n * @param root0\n * @param root0.isChecked\n * @param root0.value\n * @param root0.ariaSetSize\n * @param root0.ariaPosInSet\n * @param root0.ariaLabel\n * @param root0.telemetryContent\n * @param root0.onChange\n * @extends {React.FC}\n */\nconst CheckoutDeliveryOptionsRadioButton: React.FC = ({\n isChecked,\n value,\n ariaSetSize,\n ariaPosInSet,\n ariaLabel,\n telemetryContent,\n onChange\n}) => {\n if (!value) {\n return null;\n }\n\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.DeliveryOptions);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n \n );\n};\n\nexport default CheckoutDeliveryOptionsRadioButton;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { PriceComponent } from '@msdyn365-commerce/components';\nimport { CheckoutModule, ErrorLocation, ICheckoutState } from '@msdyn365-commerce/global-state';\nimport { Cart, ChannelDeliveryOptionConfiguration, FilterDeliveryModeOption } from '@msdyn365-commerce/retail-proxy';\nimport { getDeliveryOptionsAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CartsDataActions.g';\nimport { Address, CartLine, DeliveryOption } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\nimport { QueryResultSettingsProxy, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent, Waiting } from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport get from 'lodash/get';\nimport { action, computed, observable, reaction, when } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { ErrorComponent } from '../../common/error';\nimport { ICheckoutDeliveryOptionsData } from './checkout-delivery-options.data';\nimport {\n filterDeliveryModeOption,\n ICheckoutDeliveryOptionsProps,\n useDefaultDeliveryOption\n} from './checkout-delivery-options.props.autogenerated';\nimport DescriptionComponent from './components/checkout-delivery-options.description';\nimport ErrorMessageComponent from './components/checkout-delivery-options.error-message';\nimport ErrorTitleComponent from './components/checkout-delivery-options.error-title';\nimport RadioButtonComponent from './components/checkout-delivery-options.radio-button';\nimport { focusOnCheckoutError } from '../../checkout-errors';\n\nexport interface ICheckoutDeliveryOptionsModuleProps\n extends ICheckoutDeliveryOptionsProps,\n IModuleStateProps {}\n\nexport interface ICheckoutDeliveryOption {\n DeliveryOption: INodeProps;\n description?: React.ReactNode;\n price?: React.ReactNode;\n}\n\nexport interface ICheckoutDeliveryOptionEdit extends ICheckoutDeliveryOption {\n code: string;\n radioButton?: React.ReactNode;\n}\n\nexport interface ICheckoutDeliveryOptionsList {\n DeliveryOptionsList: INodeProps;\n list: ICheckoutDeliveryOptionEdit[];\n}\n\nexport interface ICheckoutDeliveryOptionsError {\n Error: INodeProps;\n title: React.ReactNode;\n message: React.ReactNode;\n}\n\nexport interface ICheckoutDeliveryOptionsViewState {\n isLoading: boolean;\n isError: boolean;\n isShowList: boolean;\n isShowSelected: boolean;\n isShowSaveButton: boolean;\n isShowEditButton: boolean;\n isShowCancelButton: boolean;\n}\n\nexport interface ICheckoutDeliveryOptionsViewProps extends ICheckoutDeliveryOptionsProps<{}> {\n CheckoutDeliveryOptions: IModuleProps;\n selectedItemId: string;\n deliveryOptionsData: DeliveryOption[];\n isLoading: boolean;\n errorMessageData: string;\n viewState: ICheckoutDeliveryOptionsViewState;\n deliveryOptions?: ICheckoutDeliveryOptionsList;\n deliveryOptionSelected?: ICheckoutDeliveryOption;\n errorMessage?: ICheckoutDeliveryOptionsError;\n waiting?: React.ReactNode;\n saveButton?: React.ReactNode;\n editButton?: React.ReactNode;\n cancelButton?: React.ReactNode;\n alert?: React.ReactNode;\n checkoutErrorRef?: React.RefObject;\n onDeliveryOptionChange(event: React.ChangeEvent): void;\n onSave(): void;\n onEdit(): void;\n onCancel(): void;\n}\n\n/**\n *\n * CheckoutDeliveryOptions component.\n * @extends {React.Component>}\n */\n// @ts-expect-error\n@withModuleState\n@observer\nclass CheckoutDeliveryOptions extends React.Component {\n @observable private selectedItemId: string = '';\n\n @observable private deliveryOptions: DeliveryOption[] = [];\n\n @observable private isLoading: boolean = false;\n\n @observable private errorMessage?: string;\n\n @computed private get isDataReady(): boolean {\n return (this.props.data.checkout.result && this.props.data.checkout.status) === 'SUCCESS';\n }\n\n public get expressPaymentDetailsFromCartPage() {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\n const properties =\n this.props.data.cart?.result?.cart?.ExtensionProperties?.find(property => property.Key === 'expressPaymentDetails')?.Value\n ?.StringValue ?? '';\n\n return properties ? JSON.parse(properties) : null;\n }\n\n public get isExpressPaymentAppliedInCartPage(): boolean {\n return this.expressPaymentDetailsFromCartPage?.isExpressCheckoutAppliedInCartPage ?? false;\n }\n\n private cartDeliveryMode?: string;\n\n private retailMultiplePickUpOptionEnabled?: boolean = false;\n\n private channelDeliveryOptionConfig?: ChannelDeliveryOptionConfiguration;\n\n private readonly telemetryContent?: ITelemetryContent;\n\n private readonly isSelectDefaultOptionEnabled?: boolean;\n\n private readonly checkoutErrorRef: React.RefObject = React.createRef();\n\n public constructor(props: ICheckoutDeliveryOptionsModuleProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this.isSelectDefaultOptionEnabled =\n this.props.config.useDefaultDeliveryOption && this.props.config.useDefaultDeliveryOption !== useDefaultDeliveryOption.none;\n }\n\n public async componentDidMount(): Promise {\n when(\n () => this.isDataReady,\n async () => {\n await this.init();\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.shippingAddress,\n async () => {\n await this.loadDeliveryOptions();\n this.props.moduleState.setIsCancellable(false);\n\n await this.props.data.checkout.result?.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: true });\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.isExpressCheckoutApplied,\n async isExpressCheckoutApplied => {\n if (isExpressCheckoutApplied && this.canShip() && !this.isExpressPaymentAppliedInCartPage) {\n await this.loadDeliveryOptions();\n this.props.moduleState.setIsCancellable(false);\n\n await this.props.data.checkout.result?.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: true });\n }\n }\n );\n\n if (this.props.data.checkout.result?.shouldEnableCheckoutErrorDisplayMessaging) {\n reaction(\n () => this.props.data.checkout.result?.checkoutError,\n checkoutError => {\n if (\n checkoutError &&\n checkoutError.errorLocation === ErrorLocation.CheckoutDeliveryOptions &&\n checkoutError.errorMessage\n ) {\n this.setError(checkoutError.errorMessage);\n }\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.checkoutErrorFocus,\n checkoutErrorFocus => {\n if (checkoutErrorFocus === CheckoutModule.CheckoutDeliveryOptions) {\n focusOnCheckoutError(this.checkoutErrorRef, this.props.context.actionContext);\n }\n }\n );\n }\n }\n\n public shouldComponentUpdate(nextProps: ICheckoutDeliveryOptionsModuleProps, nextState: ICheckoutDeliveryOptionsViewState): 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 const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\n this.channelDeliveryOptionConfig = this.props.data.channelDeliveryOptionConfig?.result;\n this.retailMultiplePickUpOptionEnabled = this.props.data.featureState?.result?.find(\n feature => feature.Name === multiplePickupStoreSwitchName\n )?.IsEnabled;\n\n if (!this.canShip()) {\n this.props.context.telemetry.error('Checkout delivery options content is empty, module wont render');\n return null;\n }\n\n const {\n moduleState: { isReady, isUpdating, hasError }\n } = this.props;\n const isError = !this.isLoading && hasError;\n const isShowList = !this.isLoading && !hasError && isUpdating && !this.isSelectDefaultOptionEnabled;\n const isShowSelected = !this.isLoading && !hasError && isReady;\n const { errorMessageTitle, deliveryOptionAriaLabel } = this.props.resources;\n\n const viewProps = {\n ...this.props,\n onDeliveryOptionChange: this.onDeliveryOptionChange,\n selectedItemId: this.selectedItemId,\n deliveryOptionsData: this.deliveryOptions,\n isLoading: this.isLoading,\n alert: this.errorMessage && ,\n errorMessageData: this.errorMessage,\n viewState: {\n isLoading: this.isLoading,\n isError,\n isShowList,\n isShowSelected,\n isShowSaveButton: isShowList && !this.props.moduleState.hasExternalSubmitGroup,\n isShowEditButton: isShowSelected && !this.props.moduleState.hasExternalSubmitGroup,\n isShowCancelButton: isShowList && !this.props.moduleState.hasExternalSubmitGroup && !!this.getSavedDeliveryOption()\n },\n CheckoutDeliveryOptions: {\n moduleProps: this.props,\n className: classname('ms-checkout-delivery-options', this.props.config.className)\n },\n deliveryOptions: {\n DeliveryOptionsList: {\n className: 'ms-checkout-delivery-options__list',\n role: 'list',\n 'aria-label': deliveryOptionAriaLabel\n },\n list: this.getDeliveryOptionList()\n },\n deliveryOptionSelected: this.getDeliveryOptionSelected(),\n errorMessage: this.getErrorMessage(),\n waiting: ,\n checkoutErrorRef: this.checkoutErrorRef,\n saveButton: this.getSaveButton(),\n editButton: this.getEditButton(),\n cancelButton: this.getCancelButton(),\n onSave: this.onSave,\n onEdit: this.onEdit,\n onCancel: this.onCancel\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n @action\n private readonly init = async (): Promise => {\n this.props.moduleState.init({\n onEdit: this.isSelectDefaultOptionEnabled ? undefined : this.onEdit,\n onCancel: this.isSelectDefaultOptionEnabled ? undefined : this.onCancel,\n onSubmit: this.isSelectDefaultOptionEnabled ? undefined : this.onSubmit,\n status:\n !(this.props.config.useDefaultDeliveryOption === useDefaultDeliveryOption.notDisplaySelectedDeliveryOption) &&\n this.canShip()\n ? 'updating'\n : 'disabled'\n });\n\n this.cartDeliveryMode = this.getSavedDeliveryOption();\n await this.loadDeliveryOptions();\n };\n\n private readonly canShip = (): boolean => {\n const hasInvoice = this.props.data.checkout.result?.checkoutCart.hasInvoiceLine;\n return !hasInvoice && this.getCartLinesForShipping().length > 0;\n };\n\n private readonly isDeliveryModeExists = (deliveryMode: string | undefined): boolean => {\n if (deliveryMode) {\n if (this.deliveryOptions.find(deliveryOption => deliveryOption.Code === deliveryMode)) {\n return true;\n }\n }\n return false;\n };\n\n private readonly getDeliveryOptionSelected = (): ICheckoutDeliveryOption | null => {\n const selectedItem = this.deliveryOptions.find(deliveryOption => deliveryOption.Code === this.selectedItemId);\n if (!selectedItem) {\n this.props.context.telemetry.error('Checkout delivery options content is empty, module wont render');\n return null;\n }\n\n const { id, typeName, context } = this.props;\n const { priceFree } = this.props.resources;\n const price = get(selectedItem, 'ShippingChargeAmount', 0);\n const channelConfig = this.props.context.request.channel;\n return {\n DeliveryOption: { className: 'ms-checkout-delivery-options__option-selected' },\n description: ,\n price: (\n \n )\n };\n };\n\n private readonly getErrorMessage = (): ICheckoutDeliveryOptionsError => {\n const { errorMessageTitle } = this.props.resources;\n return {\n // @ts-expect-error\n CheckoutDeliveryOptionsError: { tag: 'span', className: 'ms-address-form__error', role: 'alert', 'aria-live': 'assertive' },\n title: ,\n message: \n };\n };\n\n private readonly getDeliveryOptionList = (): ICheckoutDeliveryOptionEdit[] => {\n const count = this.deliveryOptions.length;\n const { priceFree } = this.props.resources;\n const { id, typeName, context } = this.props;\n const channelConfig = this.props.context.request.channel;\n\n return this.deliveryOptions.map((deliveryOption: DeliveryOption, index: number) => {\n return {\n DeliveryOption: { className: 'ms-checkout-delivery-options__option', role: 'listitem' },\n code: deliveryOption.Code || '',\n radioButton: (\n \n ),\n description: (\n \n ),\n price: (\n \n )\n };\n });\n };\n\n private readonly getSaveButton = (): React.ReactNode => {\n const { saveBtnLabel = 'Save' } = this.props.resources;\n return (\n \n {saveBtnLabel}\n \n );\n };\n\n private readonly getEditButton = (): React.ReactNode => {\n const { editBtnLabel = 'Change' } = this.props.resources;\n return (\n \n );\n };\n\n private readonly getCancelButton = (): React.ReactNode => {\n const { cancelBtnLabel = 'Cancel' } = this.props.resources;\n return (\n \n );\n };\n\n private readonly setError = (errorMessage: string): void => {\n this.props.telemetry.error(errorMessage);\n this.props.moduleState.setHasError(true);\n this.props.moduleState.onUpdating();\n this.errorMessage = errorMessage;\n };\n\n private readonly clearError = (): void => {\n this.props.moduleState.setHasError(false);\n this.errorMessage = undefined;\n };\n\n private readonly onSave = async (): Promise => {\n await this.onSubmit();\n };\n\n private readonly onEdit = async (): Promise => {\n this.props.telemetry.information('Delivery options onEdit is called.');\n\n this.clearError();\n this.onUpdating();\n await this.props.data.checkout.result?.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: true });\n };\n\n private readonly onSubmit = async (): Promise => {\n this.props.telemetry.information('Delivery options onSubmit is called.');\n\n await this.updateCartDeliverySpecification(this.selectedItemId);\n await this.props.data.checkout.result?.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: false });\n };\n\n private readonly onCancel = async (): Promise => {\n this.props.telemetry.information('Delivery options onCancel is called.');\n\n // Reset to the saved value\n const savedDeliveryOption = this.getSavedDeliveryOption();\n if (savedDeliveryOption) {\n this.selectedItemId = savedDeliveryOption;\n this.onReady();\n\n await this.props.data.checkout.result?.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: false });\n } else {\n this.onUpdating();\n }\n };\n\n private readonly getSavedDeliveryOption = (): string | undefined => {\n const cartLinesForShipping = this.getCartLinesForShipping();\n return cartLinesForShipping[0] && cartLinesForShipping[0].DeliveryMode;\n };\n\n private readonly updateCartDeliverySpecification = async (deliveryModeId: string): Promise => {\n if (deliveryModeId.trim() === '') {\n return;\n }\n\n const { resources } = this.props;\n const checkoutState = this.props.data.checkout.result as ICheckoutState;\n const updateCartDeliverySpecificationInput = {\n deliveryModeId,\n shippingAddress: checkoutState.shippingAddress,\n channelDeliveryOptionConfig: this.retailMultiplePickUpOptionEnabled ? this.channelDeliveryOptionConfig : undefined\n };\n\n this.clearError();\n this.onPending();\n\n await checkoutState.checkoutCart\n .updateCartDeliverySpecification(updateCartDeliverySpecificationInput)\n .then(response => {\n if (response.status === 'FAILED') {\n const errorMessage = `${response.errorDetails?.LocalizedMessage}`;\n this.setError(StringExtensions.isNullOrEmpty(errorMessage) ? resources.genericErrorMessage : errorMessage);\n }\n\n this.onReady();\n this.props.moduleState.setIsCancellable(true);\n })\n .catch(() => {\n this.setError(resources.genericErrorMessage);\n });\n };\n\n private readonly getCartLinesForShipping = (): CartLine[] => {\n const { request } = this.props.context;\n const pickupDeliveryModeCode = request && request.channel && request.channel.PickupDeliveryModeCode;\n const emailDeliveryModeCode = request && request.channel && request.channel.EmailDeliveryModeCode;\n\n return this.retailMultiplePickUpOptionEnabled\n ? ((this.props.data.checkout.result && this.props.data.checkout.result.checkoutCart.cart.CartLines) || []).filter(cartLine =>\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\n ? cartLine.DeliveryMode !==\n this.channelDeliveryOptionConfig?.PickupDeliveryModeCodes?.find(\n deliveryMode => deliveryMode === cartLine.DeliveryMode\n ) && cartLine.DeliveryMode !== emailDeliveryModeCode\n : cartLine\n )\n : ((this.props.data.checkout.result && this.props.data.checkout.result.checkoutCart.cart.CartLines) || []).filter(cartLine =>\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\n ? cartLine.DeliveryMode !== pickupDeliveryModeCode && cartLine.DeliveryMode !== emailDeliveryModeCode\n : cartLine\n );\n };\n\n private readonly getDeliveryOptions = async (shippingAddress: Address): Promise => {\n if (!this.props.data.checkout.result) {\n return;\n }\n\n const { context, resources, config } = this.props;\n const cartState = this.props.data.checkout.result?.checkoutCart;\n const cartId = (cartState.cart as Cart).Id;\n\n if (context) {\n this.isLoading = true;\n this.deliveryOptions = [];\n this.selectedItemId = '';\n this.clearError();\n\n try {\n let originalDeliveryMode: string = '';\n const shippingCartLines = this.getCartLinesForShipping();\n const hasShippingDeliveryLines = shippingCartLines && shippingCartLines.length > 0 && shippingCartLines[0].DeliveryMode;\n if (hasShippingDeliveryLines) {\n // First store the delivery mode, so that we can restore the shipping information.\n originalDeliveryMode = shippingCartLines[0].DeliveryMode || '';\n\n // Clear the delivery information on retail server, so GetDeliveryOptions charge calculation works correctly\n const cart = cartState.cart;\n await cartState.clearCartLinesDeliveryInformation({\n cart,\n channelDeliveryOptionConfiguration: this.channelDeliveryOptionConfig\n });\n }\n\n // TODO: Check if we can move this getDeliveryOptions to checkout state\n let deliveryOptionFilter: FilterDeliveryModeOption;\n switch (config.filterDeliveryModeOption) {\n case filterDeliveryModeOption.none:\n deliveryOptionFilter = FilterDeliveryModeOption.None;\n break;\n case filterDeliveryModeOption.filterOutNonCarrierDeliveryMode:\n deliveryOptionFilter = FilterDeliveryModeOption.FilterOutNonCarrierDeliveryMode;\n break;\n default:\n deliveryOptionFilter = FilterDeliveryModeOption.FilterOutNonCarrierDeliveryMode;\n }\n const response = await getDeliveryOptionsAsync(\n {\n callerContext: context.actionContext,\n queryResultSettings: QueryResultSettingsProxy.getPagingFromInputDataOrDefaultValue(context.actionContext)\n },\n cartId,\n shippingAddress,\n [],\n deliveryOptionFilter,\n true\n );\n\n if (hasShippingDeliveryLines) {\n await this.updateCartDeliverySpecification(originalDeliveryMode);\n }\n\n if (response && response.length > 0) {\n this.deliveryOptions = response;\n }\n } catch {\n this.setError(resources.genericErrorMessage);\n }\n\n if (this.deliveryOptions.length === 0) {\n this.setError(resources.deliveryOptionsNotFound);\n } else if (this.cartDeliveryMode && this.isDeliveryModeExists(this.cartDeliveryMode)) {\n this.selectedItemId = this.cartDeliveryMode;\n this.cartDeliveryMode = undefined;\n this.onReady();\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\n this.props.data.checkout.result?.updateHasCartDeliveryMode({ newHasCartDeliveryMode: true });\n\n if (!this.props.data.checkout.result?.isPaymentVerificationRedirection) {\n await this.props.data.checkout.result.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: false });\n }\n } else {\n this.onUpdating();\n this.selectedItemId = this.deliveryOptions.length > 0 ? this.deliveryOptions[0].Code || '' : ''; // By default, select first delivery\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\n this.props.data.checkout.result?.updateHasCartDeliveryMode({ newHasCartDeliveryMode: !!this.isSelectDefaultOptionEnabled });\n }\n\n this.isLoading = false;\n }\n };\n\n private readonly getStoredDeliveryOptions = async (): Promise => {\n if (!this.props.data.checkout.result) {\n return;\n }\n\n const { context } = this.props;\n const cartState = this.props.data.checkout.result.checkoutCart;\n\n if (context) {\n this.isLoading = true;\n this.deliveryOptions = [];\n this.selectedItemId = '';\n this.clearError();\n\n let originalDeliveryMode: string = '';\n const shippingCartLines = this.getCartLinesForShipping();\n const hasShippingDeliveryLines = shippingCartLines && shippingCartLines.length > 0 && shippingCartLines[0].DeliveryMode;\n if (hasShippingDeliveryLines) {\n // First store the delivery mode, so that we can restore the shipping information.\n originalDeliveryMode = shippingCartLines[0].DeliveryMode || '';\n\n // Clear the delivery information on retail server, so GetDeliveryOptions charge calculation works correctly\n const cart = cartState.cart;\n await cartState.clearCartLinesDeliveryInformation({\n cart,\n channelDeliveryOptionConfiguration: this.channelDeliveryOptionConfig\n });\n if (hasShippingDeliveryLines) {\n await this.updateCartDeliverySpecification(originalDeliveryMode);\n }\n }\n\n if (this.cartDeliveryMode) {\n this.selectedItemId = this.cartDeliveryMode;\n this.cartDeliveryMode = undefined;\n this.onReady();\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\n this.props.data.checkout.result?.updateHasCartDeliveryMode({ newHasCartDeliveryMode: true });\n\n if (!this.props.data.checkout.result.isPaymentVerificationRedirection) {\n await this.props.data.checkout.result.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: false });\n }\n }\n\n this.isLoading = false;\n }\n };\n\n private readonly loadDeliveryOptions = async (): Promise => {\n const shippingAddress = this.props.data.checkout.result?.shippingAddress;\n\n if (this.canShip() && shippingAddress) {\n if (\n !this.props.data.checkout.result?.isPaymentVerificationRedirection ||\n this.isSelectDefaultOptionEnabled ||\n this.props.data.checkout.result?.isExpressCheckoutApplied\n ) {\n await this.getDeliveryOptions(shippingAddress);\n }\n\n if (this.props.data.checkout.result?.isPaymentVerificationRedirection) {\n await this.getStoredDeliveryOptions();\n }\n\n if (\n this.isSelectDefaultOptionEnabled ||\n this.props.data.checkout.result?.isExpressCheckoutApplied ||\n this.isExpressPaymentAppliedInCartPage\n ) {\n this.onSubmit();\n }\n }\n };\n\n private readonly onDeliveryOptionChange = (event: React.ChangeEvent) => {\n const deliveryModeId = event.currentTarget.value;\n this.selectedItemId = deliveryModeId;\n };\n\n private readonly onReady = () => {\n if (!(this.props.config.useDefaultDeliveryOption === useDefaultDeliveryOption.notDisplaySelectedDeliveryOption)) {\n this.props.moduleState.onReady();\n }\n };\n\n private readonly onUpdating = () => {\n if (!(this.props.config.useDefaultDeliveryOption === useDefaultDeliveryOption.notDisplaySelectedDeliveryOption)) {\n this.props.moduleState.onUpdating();\n }\n };\n\n private readonly onPending = () => {\n if (!this.isSelectDefaultOptionEnabled) {\n this.props.moduleState.onPending();\n }\n };\n}\n\nexport default CheckoutDeliveryOptions;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { createObservableDataAction, IAction, IActionContext, sendRequest } from '@msdyn365-commerce/core';\n\nimport { SubmitHelpfulnessVoteInput } from './inputs/submit-helpfulness-vote-input';\n\nasync function submitHelpfulnessVote(input: SubmitHelpfulnessVoteInput, ctx: IActionContext): Promise {\n if (!inputIsValid(input)) {\n throw new Error(\n `[SubmitHelpfulnessVote] Invalid input. ReviewId=${input.reviewId},tenantId=${input.tenantId}, locale= ${input.locale},`\n );\n }\n\n const requestUrl =\n `${input.serviceEndpoint}/v2.0/votes/review/${input.reviewId}` + `?tenantId=${input.tenantId}` + `&locale=${input.locale}`;\n\n const requestBody = {\n isHelpful: !!input.isHelpful\n };\n\n const requestHeader = {\n headers: {\n Authorization: `id_token ${input.authToken}`\n }\n };\n\n return sendRequest(requestUrl, 'post', requestBody, requestHeader)\n .then(response => {\n return response.status === 200 || response.status === 201;\n })\n .catch(error => {\n ctx.trace('[SubmitHelpfulnessVote] Failed to vote on a review');\n ctx.telemetry.exception(error);\n ctx.telemetry.debug('[SubmitHelpfulnessVote] Failed to vote on a review');\n return false;\n });\n}\n\nfunction inputIsValid(input: SubmitHelpfulnessVoteInput): boolean {\n return input && input.reviewId.length > 0 && input.tenantId.length > 0 && input.locale.length > 0 && input.authToken.length > 0;\n}\n\nexport const submitHelpfulnessVoteDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/ratings-reviews/submit-helpfulness-vote',\n action: >submitHelpfulnessVote\n});\n\nexport default submitHelpfulnessVoteDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CartLineItemComponent } from '@msdyn365-commerce/components';\nimport MsDyn365, * as Msdyn365 from '@msdyn365-commerce/core';\nimport { isChannelTypeB2B } from '@msdyn365-commerce/core';\nimport { CartLine, OrgUnitLocation, SimpleProduct } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { getProductUrlSync, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n INodeProps,\n ITelemetryContent,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport get from 'lodash/get';\nimport groupBy from 'lodash/groupBy';\nimport * as React from 'react';\n\nimport { ICheckoutData } from '../checkout.data';\nimport { ICheckoutProps } from '../checkout.props.autogenerated';\n\ntype deliveryType = 'pickup' | 'ship' | 'email';\n\nexport interface IPickUpAtStore {\n PickUpAtStore: INodeProps;\n label: React.ReactNode;\n location: React.ReactNode;\n}\n\nexport interface IEmailDelivery {\n EmailDelivery: INodeProps;\n label: React.ReactNode;\n}\n\nexport interface ILineItem {\n LineId: string;\n LineItem: INodeProps;\n item?: React.ReactNode;\n pickUpAtStore?: IPickUpAtStore;\n emailDelivery?: IEmailDelivery;\n}\n\nexport interface ILineItemDeliveryGroup {\n LineItemDeliveryGroup: INodeProps;\n LineItemList: INodeProps;\n heading: React.ReactNode;\n lineItemWraper?: React.ReactNode;\n lineItemWraperIcon?: React.ReactNode;\n lineItems: ILineItem[];\n}\n\nexport interface ILineItems {\n LineItems: INodeProps;\n Header: INodeProps;\n heading: React.ReactNode;\n editLink: React.ReactNode;\n itemsForPickup?: ILineItemDeliveryGroup;\n itemsForShip?: ILineItemDeliveryGroup;\n itemsForEmail?: ILineItemDeliveryGroup;\n itemsGroupWithMulitplePickupMode?: ILineItemDeliveryGroup[];\n}\n\nexport const getLineItems = (input: ICheckoutProps, telemetryContent?: ITelemetryContent): ILineItems | undefined => {\n const pickupDeliveryModeCode = get(input, 'context.request.channel.PickupDeliveryModeCode');\n const emailDeliveryModeCode = get(input, 'context.request.channel.EmailDeliveryModeCode');\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\n const { channelDeliveryOptionConfig, featureState } = input.data;\n const retailMultiplePickUpOptionEnabled = featureState?.result?.find(feature => feature.Name === multiplePickupStoreSwitchName)\n ?.IsEnabled;\n\n const _getDeliveryLocation = (cartLine: CartLine): string => {\n const orgUnitLocations = get(input, 'data.orgUnitLocations.result');\n if (!cartLine.FulfillmentStoreId || !orgUnitLocations) {\n return '';\n }\n\n const locationMatch = (orgUnitLocations || []).find((location: OrgUnitLocation): boolean => {\n return location.OrgUnitNumber === cartLine.FulfillmentStoreId;\n });\n\n return locationMatch && locationMatch.OrgUnitName;\n };\n\n const _getProduct = (productId: number): SimpleProduct | undefined => {\n const products = get(input, 'data.products.result') || [];\n return products.find((_product: SimpleProduct) => {\n return productId === _product.RecordId;\n });\n };\n\n const _getLineItemComponent = (cartLine: CartLine): JSX.Element | undefined => {\n const product = cartLine.ProductId && _getProduct(cartLine.ProductId);\n const {\n id,\n typeName,\n context,\n config: { imageSettings, showShippingChargesForLineItems },\n resources: {\n quantityDisplayString,\n productDimensionTypeColor,\n productDimensionTypeSize,\n productDimensionTypeStyle,\n productDimensionTypeAmount,\n configString,\n inputQuantityAriaLabel,\n discountStringText,\n shippingCharges\n },\n context: {\n request: { gridSettings }\n }\n } = input;\n const catalogs = input.data.catalogs?.result;\n if (!product) {\n return;\n }\n\n let productUrl = getProductUrlSync(product, context.actionContext, undefined);\n if (MsDyn365.isBrowser && isChannelTypeB2B(context.actionContext.requestContext)) {\n const fullUrl = new URL(productUrl, window.location.href);\n fullUrl.searchParams.set('catalogid', `${cartLine.CatalogId ?? 0}`);\n productUrl = fullUrl.href;\n }\n const currencyCode = get(input, 'context.request.channel.Currency');\n return (\n \n );\n };\n\n const _getPickUpAtStoreComponents = (pickupDeliveryLocation: string): IPickUpAtStore => {\n const {\n resources: { pickUpAtStoreWithLocationText }\n } = input;\n\n return {\n PickUpAtStore: { className: 'ms-checkout__pick-up-at-store' },\n label: {pickUpAtStoreWithLocationText},\n location:
{pickupDeliveryLocation}
\n };\n };\n\n const _getEmailDeliveryComponents = (): IEmailDelivery => {\n const {\n resources: { emailDeliveryText }\n } = input;\n\n return {\n EmailDelivery: { className: 'ms-checkout__email-delivery' },\n label: {emailDeliveryText}\n };\n };\n\n const _getLineItemsComponents = (items: CartLine[]): ILineItem[] => {\n return items.map(cartLine => {\n const pickupDeliveryLocation = _getDeliveryLocation(cartLine);\n const isPickUp = _getCartPickDeliveryMode(cartLine);\n const isEmailDelivery =\n cartLine.DeliveryMode && cartLine.DeliveryMode !== '' ? cartLine.DeliveryMode === emailDeliveryModeCode : false;\n return {\n LineId: cartLine.LineId || '',\n LineItem: { className: 'ms-checkout__line-item' },\n item: _getLineItemComponent(cartLine),\n pickUpAtStore: isPickUp ? _getPickUpAtStoreComponents(pickupDeliveryLocation) : undefined,\n emailDelivery: isEmailDelivery ? _getEmailDeliveryComponents() : undefined\n };\n });\n };\n\n const _getCartPickDeliveryMode = (cartLineItem: CartLine): boolean => {\n return !StringExtensions.isNullOrWhitespace(cartLineItem.DeliveryMode)\n ? retailMultiplePickUpOptionEnabled\n ? cartLineItem.DeliveryMode ===\n channelDeliveryOptionConfig?.result?.PickupDeliveryModeCodes?.find(\n deliveryMode => deliveryMode === cartLineItem.DeliveryMode\n )\n : cartLineItem.DeliveryMode === pickupDeliveryModeCode\n : false;\n };\n\n const _getCartShipDeliveryMode = (cartLineItem: CartLine): boolean => {\n return !StringExtensions.isNullOrWhitespace(cartLineItem.DeliveryMode)\n ? retailMultiplePickUpOptionEnabled\n ? cartLineItem.DeliveryMode !==\n channelDeliveryOptionConfig?.result?.PickupDeliveryModeCodes?.find(\n deliveryMode => deliveryMode === cartLineItem.DeliveryMode\n )\n : cartLineItem.DeliveryMode !== pickupDeliveryModeCode\n : false;\n };\n\n const _getGroupTitleComponent = (count: number, type: deliveryType): string => {\n const {\n resources: { itemLabel, itemsLabel, inStorePickUpLabel, shippingCountCheckoutLineItem }\n } = input;\n\n let emailDeliveryModeDesc: string = '';\n\n input.data.deliveryOptions.result?.find(productDeliveryOptions => {\n emailDeliveryModeDesc = emailDeliveryModeDesc\n ? emailDeliveryModeDesc\n : productDeliveryOptions.DeliveryOptions?.find(deliveryOption => deliveryOption.Code === emailDeliveryModeCode)\n ?.Description!;\n });\n\n const suffix = count > 1 ? itemsLabel : itemLabel;\n const title =\n type === 'ship'\n ? shippingCountCheckoutLineItem\n : type === 'pickup'\n ? inStorePickUpLabel\n : `${emailDeliveryModeDesc} (${count} ${suffix})`;\n return title.replace('{count}', count.toString()).replace('{suffix}', suffix);\n };\n\n const _countItems = (items: CartLine[]): number => {\n return items.reduce((count, item) => {\n return count + (item.Quantity || 0);\n }, 0);\n };\n\n const _filterItemsByDiliveryType = (type: deliveryType): CartLine[] => {\n const cart = get(input, 'data.checkout.result.checkoutCart.cart');\n if (type === 'ship') {\n return cart.CartLines.filter((cartLine: CartLine) =>\n cartLine.DeliveryMode && cartLine.DeliveryMode !== ''\n ? _getCartShipDeliveryMode(cartLine) && cartLine.DeliveryMode !== emailDeliveryModeCode\n : cartLine\n );\n } else if (type === 'pickup') {\n return cart.CartLines.filter((cartLine: CartLine) =>\n cartLine.DeliveryMode && cartLine.DeliveryMode !== '' ? _getCartPickDeliveryMode(cartLine) : null\n );\n }\n return cart.CartLines.filter((cartLine: CartLine) => cartLine.DeliveryMode === emailDeliveryModeCode);\n };\n\n const _getLineItemsByDeliveryType = (type: deliveryType): ILineItemDeliveryGroup | undefined => {\n if ((pickupDeliveryModeCode === '' || pickupDeliveryModeCode === undefined) && (type === 'pickup' || type === 'email')) {\n return;\n }\n\n const items = _filterItemsByDiliveryType(type);\n\n if (items.length === 0) {\n return undefined;\n }\n\n const count = _countItems(items);\n const title = _getGroupTitleComponent(count, type);\n\n return {\n LineItemDeliveryGroup: { className: classnames('ms-checkout__line-items-delivery-group', type) },\n LineItemList: { className: 'ms-checkout__line-items-list' },\n heading:
{title}
,\n lineItems: _getLineItemsComponents(items)\n };\n };\n\n const _getLineItems = (): ILineItems | undefined => {\n const {\n context,\n config: { lineItemsHeading },\n data: { products },\n resources: { editCartText }\n } = input;\n\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.EditCart);\n const attribute = getTelemetryAttributes(telemetryContent!, payLoad);\n const cart = get(input, 'data.checkout.result.checkoutCart.cart');\n const groupClass = retailMultiplePickUpOptionEnabled ? ' multiple-pickup-enabled' : '';\n if (!cart || !cart.CartLines || cart.CartLines.length === 0 || !products) {\n return undefined;\n }\n\n return {\n LineItems: { className: `ms-checkout__line-items${groupClass}` },\n Header: { className: 'ms-checkout__line-items-header' },\n heading: lineItemsHeading && lineItemsHeading.text && (\n \n ),\n editLink: (\n \n {editCartText}\n \n ),\n itemsForPickup: _getLineItemsByDeliveryType('pickup'),\n itemsForShip: _getLineItemsByDeliveryType('ship'),\n itemsForEmail: _getLineItemsByDeliveryType('email'),\n itemsGroupWithMulitplePickupMode: retailMultiplePickUpOptionEnabled\n ? _getLineItemsByDeliveryTypeWithMulitplePickupMode()\n : undefined\n };\n };\n\n const handleLineItemHeadingChange = (event: Msdyn365.ContentEditableEvent) => {\n const {\n config: { lineItemsHeading }\n } = input;\n if (lineItemsHeading) {\n lineItemsHeading.text = event.target.value;\n }\n };\n\n const _getGroupTitleComponentWithMultiplePickUp = (\n count: number,\n type: deliveryType,\n deliveryMode?: string,\n fulFillmentStoreId?: string\n ): string => {\n const {\n resources: { itemLabel, itemsLabel }\n } = input;\n\n let emailDeliveryModeDesc: string = '';\n let pickupDeliveryModeDesc: string = '';\n\n input.data.deliveryOptions.result?.find(productDeliveryOptions => {\n emailDeliveryModeDesc = emailDeliveryModeDesc\n ? emailDeliveryModeDesc\n : productDeliveryOptions.DeliveryOptions?.find(deliveryOption => deliveryOption.Code === emailDeliveryModeCode)\n ?.Description!;\n });\n\n input.data.deliveryOptions.result?.find(productDeliveryOptions => {\n pickupDeliveryModeDesc = pickupDeliveryModeDesc\n ? pickupDeliveryModeDesc\n : productDeliveryOptions.DeliveryOptions?.find(deliveryOption => deliveryOption.Code === deliveryMode)?.Description!;\n });\n\n const pickupTitle: string = `${pickupDeliveryModeDesc}, ${fulFillmentStoreId}`;\n const suffix = count > 1 ? itemsLabel : itemLabel;\n const title =\n type === 'ship'\n ? `(${count} ${suffix})`\n : type === 'pickup'\n ? `${pickupTitle} (${count} ${suffix})`\n : `${emailDeliveryModeDesc} (${count} ${suffix})`;\n return title.replace('{count}', count.toString()).replace('{suffix}', suffix);\n };\n\n const _filterItemsByMultiplePickupMode = (): CartLine[][] => {\n const cart = get(input, 'data.checkout.result.checkoutCart.cart');\n const getGroupByStorePickup = (items: CartLine[]) => groupBy(items, item => item.FulfillmentStoreId);\n const getGroupByDelivery = (items: CartLine[]) => groupBy(items, item => item.DeliveryMode);\n const groupDelivery = getGroupByDelivery(cart.CartLines);\n const cartLinesGroup: CartLine[] = [];\n const cartLinesGrp: CartLine[][] = [];\n\n // 1) Group by store and pick up mode\n Object.entries(groupDelivery).forEach(([deliveryMode, groupByDeliveryType]) => {\n // @ts-expect-error\n groupDelivery[deliveryMode] = getGroupByStorePickup(groupByDeliveryType);\n cartLinesGroup.push(getGroupByStorePickup(groupByDeliveryType));\n });\n\n Object.keys(cartLinesGroup).forEach(key => {\n const cartLines = cartLinesGroup[key];\n Object.keys(cartLines).forEach(index => {\n const cartLine = cartLines[index];\n cartLinesGrp.push(cartLine);\n });\n });\n\n return cartLinesGrp;\n };\n\n const _getLineItemsByDeliveryTypeWithMulitplePickupMode = (): ILineItemDeliveryGroup[] | undefined => {\n if (pickupDeliveryModeCode === '' || pickupDeliveryModeCode === undefined) {\n return;\n }\n\n const {\n resources: { multiplePickUpLabel, shippingLable }\n } = input;\n\n const items = _filterItemsByMultiplePickupMode();\n\n if (items.length === 0) {\n return undefined;\n }\n\n const lineItemDeliveryGroup: ILineItemDeliveryGroup[] = [];\n items.map(item => {\n const count = _countItems(item);\n const cartLine = item[0];\n const pickupDeliveryLocation = _getDeliveryLocation(cartLine);\n const type: deliveryType =\n cartLine.FulfillmentStoreId && cartLine.DeliveryMode\n ? 'pickup'\n : cartLine.FulfillmentStoreId === '' &&\n cartLine.DeliveryMode === emailDeliveryModeCode &&\n !StringExtensions.isNullOrEmpty(emailDeliveryModeCode)\n ? 'email'\n : 'ship';\n const title = _getGroupTitleComponentWithMultiplePickUp(count, type, cartLine.DeliveryMode, pickupDeliveryLocation);\n const groupTitle = type === 'pickup' ? multiplePickUpLabel : type === 'ship' ? shippingLable : 'email';\n const iconClass = `ms-checkout__line-items-group-title-multiple-pickup-${type}icon`;\n lineItemDeliveryGroup.push({\n LineItemDeliveryGroup: { className: classnames('ms-checkout__line-items-delivery-group multiple-pickup', type) },\n LineItemList: { className: 'ms-checkout__line-items-list' },\n lineItemWraperIcon:
,\n lineItemWraper:
{groupTitle}
,\n heading:
{title}
,\n lineItems: _getLineItemsComponents(item)\n });\n });\n\n return lineItemDeliveryGroup;\n };\n\n return _getLineItems();\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nexport * from './invoice-summary-lineitem';\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Button, Collapse, ICollapseProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IQuickOrderDrawerProps } from './quick-order-drawer-props';\n\nexport interface IQuickOrderDrawerState {\n isOpen: boolean;\n}\n\nexport type GlyphPlacement = 'start' | 'end';\n\n/**\n * Quick Order Drawer - This is a full width uncontrolled collapse where the button glyph changes\n * when the drawer is open and closed.\n */\n\nexport default class QuickOrderDrawer extends React.Component {\n public state: IQuickOrderDrawerState;\n\n private readonly drawerOpenGlyph: string;\n\n private readonly drawerCloseGlyph: string;\n\n private readonly drawerGlyphClass: string;\n\n private isManuallyToggled: boolean;\n\n constructor(props: IQuickOrderDrawerProps) {\n super(props);\n this._toggle = this._toggle.bind(this);\n this.isManuallyToggled = false;\n this.state = { isOpen: (props.collapseProps && props.collapseProps.isOpen) || false };\n this.drawerGlyphClass = classnames('drawer__glyph', this.props.toggleGlyphClassName ? this.props.toggleGlyphClassName : '');\n\n if (this.props.animateGlyph) {\n this.drawerOpenGlyph = classnames(\n this.drawerGlyphClass,\n this.props.openGlyph ? this.props.openGlyph : this.props.closeGlyph ? this.props.closeGlyph : ''\n );\n this.drawerCloseGlyph = this.drawerOpenGlyph;\n } else {\n this.drawerOpenGlyph = classnames(this.drawerGlyphClass, this.props.openGlyph ? this.props.openGlyph : '');\n this.drawerCloseGlyph = classnames(this.drawerGlyphClass, this.props.closeGlyph ? this.props.closeGlyph : '');\n }\n }\n\n public shouldComponentUpdate(nextProps: IQuickOrderDrawerProps, nextState: IQuickOrderDrawerState): boolean {\n if (this.state === nextState && this.props === nextProps) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element {\n const collapseProps = { ...this.props.collapseProps } as ICollapseProps;\n\n // If the drawer is manually toggled by pressing the button, then we use the internal state\n if (collapseProps.isOpen === undefined || this.isManuallyToggled) {\n collapseProps.isOpen = this.state.isOpen;\n } else {\n // eslint-disable-next-line react/no-direct-mutation-state\n this.state.isOpen = collapseProps.isOpen;\n }\n collapseProps.children = this.props.children;\n const drawerClass = classnames('drawer', this.props.className ? this.props.className : '');\n this.isManuallyToggled = false;\n return (\n
\n \n {this._generateDrawerButtonInnerMarkup(collapseProps.isOpen)}\n \n \n
\n );\n }\n\n private _generateDrawerButtonInnerMarkup(collapseState: boolean): JSX.Element {\n const drawerButtonTextClass = classnames(\n 'drawer__buttontext',\n this.props.toggleButtonClassName ? this.props.toggleButtonClassName : ''\n );\n return (\n <>\n

{this.props.moduleHeadingText}

\n \n {this.props.moduleDescriptionText}\n \n {this._generateGlyphMarkup('drawer__glyph__end', collapseState)}\n \n );\n }\n\n private _generateGlyphMarkup(location: string, collapseState: boolean): JSX.Element {\n let glyphClass = collapseState ? this.drawerOpenGlyph : this.drawerCloseGlyph;\n glyphClass = `${glyphClass} ${location}`;\n return ;\n }\n\n private _toggle(e: React.MouseEvent | React.KeyboardEvent): void {\n e.preventDefault();\n this.setState({ isOpen: !this.state.isOpen });\n this.isManuallyToggled = true;\n if (this.props.onToggle) {\n this.props.onToggle(this.state);\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 { Alert, Button } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IQuickOrderState } from '../quick-order';\n\nexport interface IQuickOrderFormProps {\n disableAddtoCart: boolean | undefined;\n productTextInput: React.RefObject;\n quantityTextInput: React.RefObject;\n maxChars: number;\n maxQuantity?: number;\n ariaLabelQuantity: string;\n ariaLabelProduct: string;\n ariaLabelAddtoCart: string;\n addQuantityPlaceholderText: string;\n quickOrderState: IQuickOrderState;\n handleInputChange(query: string): void;\n handleQuantityChange(query: string): void;\n handleAddToCartClick(): Promise;\n}\n\nexport interface IQuickOrderFormViewProps {\n product: React.ReactNode;\n quantity: React.ReactNode;\n addToCartBtn: React.ReactNode;\n userMessage?: React.ReactNode;\n}\n\n/**\n * On Input Change functionality.\n * @param handleInputChange -Input change function.\n * @returns Input change value.\n */\nconst onInputChangeFunction = (handleInputChange: (query: string) => void) => (event: React.ChangeEvent) => {\n handleInputChange(event.target.value || '');\n};\n\n/**\n * On Quantity Change functionality.\n * @param handleQuantityChange -Quantity change function.\n * @returns Quantity change value.\n */\nconst onQuantityChangeFunction = (handleQuantityChange: (query: string) => void) => (event: React.ChangeEvent) => {\n handleQuantityChange(event.target.value || '');\n};\n\nexport const QuickOrderFormComponent = (props: IQuickOrderFormProps): IQuickOrderFormViewProps => {\n const {\n productTextInput,\n quantityTextInput,\n quickOrderState,\n maxChars,\n maxQuantity,\n disableAddtoCart,\n ariaLabelQuantity,\n ariaLabelProduct,\n ariaLabelAddtoCart,\n addQuantityPlaceholderText,\n handleQuantityChange,\n handleInputChange,\n handleAddToCartClick\n } = props;\n\n const onInputChange = onInputChangeFunction(handleInputChange);\n\n const onQuantityInputChange = onQuantityChangeFunction(handleQuantityChange);\n\n const productNode = (\n
\n

\n {ariaLabelProduct}\n

\n \n
\n );\n\n const quantityNode = (\n
\n

\n {ariaLabelQuantity}\n

\n \n
\n );\n\n const addtoCartNode = (\n
\n \n {ariaLabelAddtoCart}\n \n
\n );\n\n const userMessageNode =\n quickOrderState && quickOrderState.stateMessage ? (\n \n \n {quickOrderState.stateMessage.messageText}\n \n ) : (\n undefined\n );\n\n return {\n product: productNode,\n addToCartBtn: addtoCartNode,\n quantity: quantityNode,\n userMessage: userMessageNode\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CartLine, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { observable } from 'mobx';\n\n/**\n * Represents a product for quick order.\n */\nexport class QuickOrderProduct {\n @observable\n public isSelected: boolean;\n\n public readonly cartLine: CartLine;\n\n public readonly simpleProduct: SimpleProduct;\n\n public constructor(cartLine: CartLine, simpleProduct: SimpleProduct) {\n this.cartLine = cartLine;\n this.simpleProduct = simpleProduct;\n this.isSelected = false;\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponent, IComponentProps, ICoreContext } from '@msdyn365-commerce/core';\nimport classnames from 'classnames';\nimport React from 'react';\n\n/**\n * Interface for quick order table header resources.\n */\nexport interface IQuickOrderTableHeaderResources {\n quickOrderProductNumberText: string;\n quickOrderProductText: string;\n quickOrderUnitPriceText: string;\n quickOrderUnitOfMeasureText: string;\n quickOrderQuantityText: string;\n quickOrderTotalText: string;\n quickOrderActionsText: string;\n}\n\n/**\n * Interface for quick order table props.\n */\nexport interface IQuickOrderTableHeaderProps extends IComponentProps {\n context: ICoreContext;\n className: string;\n\n isMobile: boolean;\n resources: IQuickOrderTableHeaderResources;\n}\n\n/**\n * Interface for quick order table header component.\n */\nexport interface IQuickOrderTableHeaderComponent extends IComponent {}\n\n/**\n * Get the quick order header cells for desktop.\n * @param props -- The quick order table header props.\n * @returns The list of cells for quick order header component in desktop version.\n */\nconst QuickOrderDesktopHeaderCellsComponent: React.FC = (props: IQuickOrderTableHeaderProps) => {\n const { resources } = props;\n const columnWithNumberClassName = `${props.className}__row__column-with-number`;\n return (\n <>\n \n \n \n {resources.quickOrderProductNumberText}\n {resources.quickOrderProductText}\n {resources.quickOrderUnitPriceText}\n {resources.quickOrderUnitOfMeasureText}\n {resources.quickOrderQuantityText}\n {resources.quickOrderTotalText}\n {resources.quickOrderActionsText}\n \n );\n};\n\n/**\n * Get the quick order header cells for mobile.\n * @param props -- The quick order table header props.\n * @returns The quick order header component in desktop version.\n */\nconst QuickOrderMobileHeaderCellsComponent: React.FC = (props: IQuickOrderTableHeaderProps) => {\n const { resources } = props;\n return (\n <>\n \n {resources.quickOrderProductNumberText}\n \n \n );\n};\n\n/**\n * Quick order table header component.\n * @param props - Configuration of the component.\n * @returns React node with the header.\n */\nexport const QuickOrderTableHeaderComponent: React.FC = (props: IQuickOrderTableHeaderProps) => {\n const rowClassName = `${props.className}__row`;\n\n let headerCells: JSX.Element;\n if (props.isMobile) {\n headerCells = ;\n } else {\n headerCells = ;\n }\n\n return (\n \n {headerCells}\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 { IComponentProps, ICoreContext, IImageSettings, Image } from '@msdyn365-commerce/core';\nimport { CartLine, format, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { getFallbackImageUrl, getProductPageUrlSync, ObjectExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, IncrementalQuantity } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\n/**\n * Data required to render each quick order row.\n */\nexport interface IQuickOrderTableRowData {\n cartLine: CartLine;\n product: SimpleProduct;\n}\n\n/**\n * Resources for quick order table rows.\n */\nexport interface IQuickOrderTableRowResources {\n quickOrderQuantityMobileText: string;\n quickOrderProductDimensionsSeparator: string;\n quickOrderViewDetailsButtonText: string;\n quickOrderViewDetailsButtonAriaLabel: string;\n quickOrderRemoveItemButtonAriaLabel: string;\n quickOrderInputQuantityAriaLabel: string;\n quickOrderDecrementButtonAriaLabel: string;\n quickOrderIncrementButtonAriaLabel: string;\n}\n\n/**\n * Interface for quick order table props.\n */\nexport interface IQuickOrderTableRowProps extends IComponentProps {\n context: ICoreContext;\n className: string;\n\n imageSettings?: IImageSettings;\n isMobile: boolean;\n resources: IQuickOrderTableRowResources;\n}\n\n/**\n * The default image settings for quick order table row.\n */\nconst defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=80&h=80&m=6', w: 0, h: 0 },\n lg: { q: 'w=147&h=147&m=6', w: 0, h: 0 }\n },\n lazyload: true,\n cropFocalRegion: true\n};\n\n/**\n * Renders product image for quick order row.\n * @param props - Quick order table row props.\n * @returns React element.\n */\nconst QuickOrderTableRowProductImageComponent: React.FC = (props: IQuickOrderTableRowProps) => {\n const fallbackImageUrl = getFallbackImageUrl(\n props.data.product.ItemId,\n props.context.actionContext.requestContext.apiSettings,\n props.context.request.app?.config?.OmniChannelMedia\n );\n\n const containerClassName = `${props.className}__product-image-container`;\n\n return (\n
\n \n
\n );\n};\n\n/**\n * Renders actions popup for the mobile view.\n * @param props - Configuration for popup.\n * @returns A react node with actions..\n */\nconst QuickOrderExtraActionsPopupComponent: React.FC = (props: IQuickOrderTableRowProps): JSX.Element | null => {\n const product: SimpleProduct = props.data.product;\n\n let productUrl = '';\n if (!StringExtensions.isNullOrWhitespace(product.Name) && !ObjectExtensions.isNullOrUndefined(product.RecordId)) {\n productUrl = getProductPageUrlSync(product.Name!, product.RecordId, props.context.actionContext);\n }\n\n if (StringExtensions.isNullOrWhitespace(productUrl)) {\n return null;\n }\n\n const className = `${props.className}__extra-actions-cell`;\n\n return (\n
\n
\n );\n};\n\n/**\n * Renders quick order table rows for desktop view.\n * @param props - Configuration for the rows.\n * @returns A react node with a list of quick order rows for desktop view.\n */\nexport const QuickOrderDesktopTableRowCellComponent: React.FC = (props: IQuickOrderTableRowProps) => {\n const product: SimpleProduct = props.data.product;\n const cartLine: CartLine = props.data.cartLine;\n const columnWithNumberClassName = `${props.className}__column-with-number`;\n\n let productUrl = '';\n if (!StringExtensions.isNullOrWhitespace(product.Name) && !ObjectExtensions.isNullOrUndefined(product.RecordId)) {\n productUrl = getProductPageUrlSync(product.Name!, product.RecordId, props.context.actionContext);\n }\n\n return (\n <>\n \n \n \n {product.ItemId}\n \n
\n \n {product.Name}\n \n \n {product.Dimensions?.map(dimension => dimension.DimensionValue?.Value)\n .filter(dimensionValue => !StringExtensions.isNullOrWhitespace(dimensionValue))\n .join(props.resources.quickOrderProductDimensionsSeparator)}\n \n
\n \n {cartLine.Price}\n {cartLine.UnitOfMeasureSymbol}\n \n \n \n {cartLine.TotalAmount}\n \n \n
\n \n );\n };\n\n private readonly _removePromotion = (cartState: ICartState | undefined, event: React.MouseEvent) => {\n if (!cartState) {\n return;\n }\n const code = event.currentTarget.getAttribute('data-value') || '';\n cartState\n .removePromoCodes({\n promoCodes: [code]\n })\n .then(result => {\n if (result.status === 'SUCCESS') {\n this.setState({ error: '' });\n }\n })\n .catch(() => {\n this.setState({ error: this.props.failedToRemovePromoCodeErrorText });\n });\n };\n\n private readonly _calculateDiscount = (code: string, cartState: ICartState | undefined) => {\n if (!cartState || !cartState.cart || !cartState.cart.CartLines || cartState.cart.CartLines.length === 0 || !code) {\n return;\n }\n let discountAmount = 0;\n for (const line of cartState.cart.CartLines) {\n if (line.DiscountLines) {\n for (const discountLine of line.DiscountLines) {\n if (discountLine.DiscountCode === code) {\n discountAmount += discountLine.DiscountCost!;\n }\n }\n }\n }\n return discountAmount * -1;\n };\n\n private readonly _renderAppliedPromoCode = (props: IPromoCodeProps) => {\n if (!props.cart || !props.cart.cart || !props.cart.cart.Coupons || props.cart.cart.Coupons.length === 0) {\n return;\n }\n\n const removePromotionHandler = (event: React.MouseEvent) => {\n this._removePromotion(props.cart, event);\n };\n\n const promoCodTotalDiscount = props.cart.cart.Coupons.reduce((count: number, coupon: Coupon) => {\n return count + (this._calculateDiscount(coupon.Code || '', props.cart) || 0);\n }, 0);\n\n return (\n <>\n
\n
{this.props.appliedPromoCodeHeadingText}
\n \n
\n {props.cart.cart.Coupons.map((coupon: Coupon) => {\n const ariaLabel = props.removePromoAriaLabelFormat\n ? format(props.removePromoAriaLabelFormat, props.removePromoText, coupon.Code)\n : '';\n\n return (\n
\n
\n {coupon.Code}{' '}\n \n
\n \n {props.removePromoText}\n \n
\n );\n })}\n \n );\n };\n}\n\nexport default PromoCode;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CacheType, IActionInput } from '@msdyn365-commerce/core';\n\nimport { IUserReviewData } from './submit-user-review-input-data';\n\n/**\n * SubmitUserReview Input Action.\n */\nexport class SubmitUserReviewInput implements IActionInput {\n /**\n * The Id representing the product to get the ratings for.\n */\n public productId?: string;\n\n /**\n * The ID representing the tenant.\n */\n public tenantId: string;\n\n /**\n * The calling organization's channel id.\n */\n public channelId: string;\n\n /**\n * The locale for which to get the ratings from.\n */\n public locale: string;\n\n /**\n * The user's review data.\n */\n public userReviewData: IUserReviewData;\n\n /**\n * The user's authorization token.\n */\n public authorization: string;\n\n /**\n * The ratings and reviews service endpoint.\n */\n public serviceEndpoint: string;\n\n constructor(\n productId: string | undefined,\n tenantId: string,\n channelId: string,\n locale: string,\n userReviewData: IUserReviewData,\n authorization: string,\n serviceEndpoint: string\n ) {\n this.productId = productId;\n this.tenantId = tenantId;\n this.channelId = channelId;\n this.locale = locale;\n this.userReviewData = userReviewData;\n this.authorization = authorization;\n this.serviceEndpoint = serviceEndpoint;\n }\n\n public getCacheKey = () => 'SubmitUserReview';\n\n public getCacheObjectType = () => 'SubmitUserReview';\n\n public dataCacheType = (): CacheType => 'none';\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CartLinePriceEditor, ICartLinePriceEditorResources, PriceComponent } from '@msdyn365-commerce/components';\nimport MsDyn365, { IComponentProps, IGridSettings, IImageSettings, Image } from '@msdyn365-commerce/core';\nimport { ICartState } from '@msdyn365-commerce/global-state';\nimport { ChannelDeliveryOptionConfiguration, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { CartLine, ProductCatalog, SalesLine } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { ArrayExtensions, getFallbackImageUrl, validateCatalogId } from '@msdyn365-commerce-modules/retail-actions';\nimport { getPayloadObject, getTelemetryAttributes, IncrementalQuantity, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classNames from 'classnames';\nimport * as React from 'react';\n\n/**\n * ICartlineResourceString: Interface for specifying the\n * resource strings that the component needs.\n */\nexport interface ICartlineResourceString {\n /**\n * Display string for discount label\n */\n discountStringText: string;\n\n /**\n * String for size key\n */\n sizeString: string;\n\n /**\n * String for color key\n */\n colorString: string;\n\n /**\n * String associated with the configuration product dimension\n */\n configString: string;\n\n /**\n * String for style key\n */\n styleString: string;\n\n /**\n * String for amount key\n */\n amountString?: string;\n\n /**\n * Display string for quantity label\n */\n quantityDisplayString: string;\n\n /**\n * Display string for quantity label\n */\n inputQuantityAriaLabel: string;\n\n /**\n * Aria label for the decrement button in quantity component\n */\n decrementButtonAriaLabel: string;\n\n /**\n * Aria label for the increment button in quantity component\n */\n incrementButtonAriaLabel: string;\n\n /**\n * Original text screenreader\n */\n originalPriceText: string;\n\n /**\n * Current text screenreader\n */\n currentPriceText: string;\n\n /**\n * Shipping Charges Text\n */\n shippingChargesText: string;\n\n priceEditorResources?: ICartLinePriceEditorResources;\n salesAgreementPricePrompt?: string;\n}\n\ninterface ICartLineData {\n cartLine: CartLine | SalesLine;\n cartState?: ICartState;\n product?: SimpleProduct;\n catalogs?: ProductCatalog[];\n}\n\n/**\n * ICartLineProps: The props required to render cartLineitem.\n */\nexport interface ICartLineProps extends IComponentProps {\n /**\n * The flag to change the quantity component from intractable to static.\n */\n disableQuantityInteractivity?: boolean;\n\n /**\n * The primary image url.\n */\n primaryImageUrl?: string;\n\n /**\n * The product url.\n */\n productUrl?: string;\n\n /**\n * GridSettings for the product image in cartLine.\n */\n gridSettings: IGridSettings;\n\n /**\n * ImageSettings for the product image in cartLine.\n */\n imageSettings: IImageSettings;\n\n /**\n * Boolean flag to indicate if the item is out of stock.\n */\n isOutOfStock?: boolean;\n\n /**\n * Flag to make quantity section editable.\n */\n isQuantityEditable?: boolean;\n\n /**\n * Max quantity for line item.\n */\n maxQuantity?: number;\n\n /**\n * Current quantity for line item.\n */\n currentQuantity?: number;\n\n /**\n * Resource string for the component.\n */\n resources: ICartlineResourceString;\n\n /**\n * SalesLine flag.\n */\n isSalesLine?: boolean;\n\n /**\n * Error message to show in place of quantity.\n */\n errorMessage?: string;\n\n /**\n * Inventory information label.\n */\n inventoryInformationLabel?: string;\n\n /**\n * Inventory information class name.\n */\n inventoryLabelClassName?: string;\n\n /**\n * Flag to show/hide shipping charges for line items.\n */\n showShippingChargesForLineItems?: boolean;\n\n /**\n * Boolean flag to indicate if cart state status is ready.\n */\n isCartStateReady?: boolean;\n\n /**\n * Chanel Delivery Option configuration is from api.\n */\n channelDeliveryOptionConfig?: ChannelDeliveryOptionConfiguration;\n\n /**\n * The telemetry content.\n */\n telemetryContent?: ITelemetryContent;\n\n /**\n * The cart line index.\n */\n lineIndex?: number;\n\n /**\n * Quantity onChange callback.\n */\n quantityOnChange?(cartLine: CartLine, newQuantity: number, lineIndex?: number): boolean;\n priceCurrency?: string;\n}\n\ninterface IDimensionStrings {\n /**\n * String for size key.\n */\n sizeString: string;\n\n /**\n * String for color key.\n */\n colorString: string;\n\n /**\n * String associated with the configuration product dimension.\n */\n configString: string;\n\n /**\n * String for style key.\n */\n styleString: string;\n\n /**\n * String for amount key.\n */\n amountString?: string;\n}\n\n/**\n * Renders catalog label for the cart line.\n * @param props - Cart line props.\n * @returns Catalog label.\n */\nconst CatalogLabelComponent: React.FC = (props: ICartLineProps) => {\n const catalogId = props.data.cartLine.CatalogId;\n validateCatalogId(catalogId);\n\n if (!props.context.request.user.isB2b || !catalogId || !ArrayExtensions.hasElements(props.data.catalogs)) {\n return null;\n }\n\n const catalog = props.data.catalogs.find(item => item.RecordId === catalogId);\n\n if (!catalog || !catalog.Name) {\n return null;\n }\n\n return
{catalog.Name}
;\n};\n\nconst CartLineItemFunctions = {\n renderProductDimensions: (Product: SimpleProduct, DimensionStrings: IDimensionStrings) => {\n if (!Product || !Product.Dimensions) {\n return [];\n }\n\n return Product.Dimensions.map(productDimension => {\n if (productDimension.DimensionTypeValue === 1) {\n return (\n
\n \n {DimensionStrings.colorString}:\n {productDimension.DimensionValue && productDimension.DimensionValue.Value}\n \n
\n );\n }\n\n if (productDimension.DimensionTypeValue === 2) {\n return (\n
\n \n {DimensionStrings.configString}:\n {productDimension.DimensionValue && productDimension.DimensionValue.Value}\n \n
\n );\n }\n\n if (productDimension.DimensionTypeValue === 3) {\n return (\n
\n \n {DimensionStrings.sizeString}:\n {productDimension.DimensionValue && productDimension.DimensionValue.Value}\n \n
\n );\n }\n\n if (productDimension.DimensionTypeValue === 4) {\n return (\n
\n \n {Product.IsGiftCard ? DimensionStrings.amountString : DimensionStrings.styleString}:\n {productDimension.DimensionValue && productDimension.DimensionValue.Value}\n \n
\n );\n }\n return null;\n });\n },\n\n renderDiscountLines: (props: ICartLineProps) => {\n if (!props.data.cartLine.DiscountLines || props.data.cartLine.DiscountLines.length === 0) {\n return null;\n }\n\n return props.data.cartLine.DiscountLines.map((discountLine, index) => {\n return (\n
\n \n {discountLine.OfferName ? discountLine.OfferName : ''}:{` ${props.resources.discountStringText || 'Discount'} `}\n \n \n \n \n {` (${discountLine.EffectivePercentage !== undefined ? discountLine.EffectivePercentage : ''}%)`}\n
\n );\n });\n },\n renderInventoryLabel: (props: ICartLineProps) => {\n if (!props.inventoryInformationLabel) {\n return null;\n }\n const inventoryCssName = props.inventoryLabelClassName\n ? `msc-cart-line__product-inventory-label ${props.inventoryLabelClassName}`\n : 'msc-cart-line__product-inventory-label';\n return {props.inventoryInformationLabel};\n },\n\n /**\n * Gets the react node for product unit of measure display.\n * @param props - Icartline props.\n * @returns The node representing markup for unit of measure component.\n */\n renderUnitOfMeasure: (props: ICartLineProps) => {\n if (props.data.cartLine.IsInvoiceLine) {\n return null;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- Do not need type check for appsettings\n if (!props.context.app.config.unitOfMeasureDisplayType || props.context.app.config.unitOfMeasureDisplayType === 'none') {\n return undefined;\n }\n\n const product = props.data.product;\n if (!product || !product.DefaultUnitOfMeasure) {\n return undefined;\n }\n\n return (\n
\n {product.DefaultUnitOfMeasure}\n
\n );\n },\n renderShippingLabel: (props: ICartLineProps) => {\n const pickupDeliveryModeCode = props.context.request.channel?.PickupDeliveryModeCode;\n const channelDeliveryOptionConfig = props.channelDeliveryOptionConfig;\n const cartline = props.data.cartLine;\n let hasShippingMethod = false;\n if (channelDeliveryOptionConfig !== undefined) {\n hasShippingMethod = !!(\n cartline.DeliveryMode &&\n channelDeliveryOptionConfig.PickupDeliveryModeCodes?.some(deliveryMode => deliveryMode !== cartline.DeliveryMode)\n );\n } else {\n hasShippingMethod = !!(cartline.DeliveryMode && cartline.DeliveryMode !== pickupDeliveryModeCode);\n }\n if (!hasShippingMethod) {\n return undefined;\n }\n\n const shippingChargeLines = (cartline.ChargeLines || []).filter(chargeLine => chargeLine.IsShipping);\n\n if (shippingChargeLines.length === 0) {\n return undefined;\n }\n\n const freightFee = shippingChargeLines.reduce((chargeTotal, chargeLine) => {\n return chargeTotal + (chargeLine.CalculatedAmount || 0);\n }, 0);\n\n const priceComponent = (\n \n );\n return (\n <>\n \n {priceComponent}\n \n );\n },\n renderOtherCharges: (props: ICartLineProps) => {\n const cartline = props.data.cartLine;\n const otherCharges = cartline.ChargeLines?.filter(chargeline => !chargeline.IsShipping);\n\n return (\n (otherCharges &&\n otherCharges.map((otherCharge, key) => {\n return otherCharge && otherCharge.CalculatedAmount ? (\n
\n \n \n \n \n
\n ) : (\n ''\n );\n })) ||\n undefined\n );\n },\n\n /**\n * Render the sales agreement prompt.\n * @param props - The ICartLineProps.\n * @returns The JSX.Element.\n */\n renderSalesAgreementPrompt: (props: ICartLineProps): JSX.Element | null => {\n if (props.data.cartLine.SalesAgreementLineRecordId === 0) {\n return null;\n }\n return
{props.resources.salesAgreementPricePrompt}
;\n }\n};\n\n// eslint-disable-next-line no-redeclare\nconst CartLine: React.FC = (props: ICartLineProps) => {\n const { isSalesLine, productUrl, resources } = props;\n const { product, cartLine } = props.data;\n\n const destructDimensionStrings = {\n sizeString: resources.sizeString,\n colorString: resources.colorString,\n styleString: resources.styleString,\n configString: resources.configString,\n amountString: resources.amountString\n };\n\n const fallbackImageUrl =\n product &&\n getFallbackImageUrl(\n product.ItemId,\n props.context.actionContext.requestContext.apiSettings,\n props.context.request.app?.config?.OmniChannelMedia\n );\n const productDimensions = product && CartLineItemFunctions.renderProductDimensions(product, destructDimensionStrings);\n const imageSettings = props.imageSettings;\n if (imageSettings) {\n imageSettings.cropFocalRegion = true;\n }\n const renderDisountLines = CartLineItemFunctions.renderDiscountLines(props);\n const renderInventoryLabel = CartLineItemFunctions.renderInventoryLabel(props);\n const renderUnitOfMeasure = CartLineItemFunctions.renderUnitOfMeasure(props);\n const renderShippingLabel = CartLineItemFunctions.renderShippingLabel(props);\n const renderOtherCharges = CartLineItemFunctions.renderOtherCharges(props);\n const renderSalesAgreementPrompt = CartLineItemFunctions.renderSalesAgreementPrompt(props);\n const payLoad = getPayloadObject('click', props.telemetryContent!, '', product?.RecordId.toString());\n const productAttribute = getTelemetryAttributes(props.telemetryContent!, payLoad);\n const productName = product?.Name || cartLine.Description;\n const imgeClassName = props.data.cartLine.IsInvoiceLine ? 'msc-cart-line__invoice-image' : 'msc-cart-line__product-image';\n\n const onChange = (newValue: number): boolean => {\n if (props.quantityOnChange) {\n return props.quantityOnChange(props.data.cartLine, newValue, props.lineIndex);\n }\n return true;\n };\n\n const _generateErrorMessage = (): JSX.Element | null => {\n if (props.errorMessage) {\n return (\n
\n \n {props.errorMessage}\n
\n );\n }\n\n return null;\n };\n\n const _generateQuantityandPrice = (): JSX.Element[] | null => {\n const nodes = [];\n if (props.isOutOfStock) {\n return null;\n }\n\n // No quantity selector for invoice line\n if (!props.data.cartLine.IsInvoiceLine) {\n if (props.data.product && props.isQuantityEditable) {\n nodes.push(\n
\n
{resources.quantityDisplayString}
\n \n
\n );\n } else {\n nodes.push(\n
\n \n {props.data.cartLine.Quantity}\n
\n );\n }\n }\n\n nodes.push(\n
\n \n {(props.data.cartLine.DiscountAmount && props.data.cartLine.DiscountAmount > 0 && (\n <>\n \n {` ${props.resources.discountStringText || 'Discount'} `}\n \n \n \n )) ||\n null}\n
\n );\n\n return nodes;\n };\n\n return (\n <>\n
\n
\n \n
\n
\n
\n \n {MsDyn365.isBrowser ? (\n \n {productName}\n \n ) : null}\n {ArrayExtensions.hasElements(productDimensions) ? (\n
{productDimensions}
\n ) : (\n ''\n )}\n {renderUnitOfMeasure}\n
\n \n
\n {renderDisountLines}\n {renderInventoryLabel}\n {props.showShippingChargesForLineItems &&
{renderShippingLabel}
}\n {renderOtherCharges}\n {renderSalesAgreementPrompt}\n
\n {_generateQuantityandPrice()}\n {props.data.cartLine.IsInvoiceLine && props.data.cartState && props.resources.priceEditorResources && (\n \n )}\n
\n
\n {_generateErrorMessage()}\n \n );\n};\n\nexport default CartLine;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getUrlSync, IActionContext } from '@msdyn365-commerce/core';\nimport { ICheckoutState } from '@msdyn365-commerce/global-state';\nimport { SalesOrder, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { CartCheckout } from './checkout';\nimport { EmptyActiveCart } from './empty-active-cart';\n\nexport const PlaceOrder = async (\n ctx: IActionContext,\n checkoutState: ICheckoutState | undefined,\n orderedProducts: SimpleProduct[] | undefined,\n redirect: boolean,\n updatedCartVersion?: number,\n isPaymentVerificationRedirection?: boolean\n) => {\n return new Promise(async (resolve: () => void, reject: (reason?: Error) => void) => {\n ctx.telemetry.information('Checkout place-order method is triggered.');\n\n let salesOrder: SalesOrder;\n\n // Proceed checkout\n try {\n salesOrder = await CartCheckout(ctx, updatedCartVersion, isPaymentVerificationRedirection);\n } catch (error) {\n reject(error);\n return;\n }\n\n // Remove purchased items from the active cart\n try {\n ctx.telemetry.information('Checkout emptyActiveCart is called.');\n await EmptyActiveCart(ctx);\n } catch (error) {\n reject(error);\n return;\n }\n\n if (redirect) {\n ctx.telemetry.information('Redirect to order confirmation page.');\n\n // Redirect to the order confirmation page\n const orderConfirmationUrl = getUrlSync('orderConfirmation', ctx) || '';\n if (!orderConfirmationUrl) {\n reject(new Error('Error: No orderConfirmationUrl'));\n return;\n }\n\n const separator = orderConfirmationUrl.includes('?') ? '&' : '?';\n const url = `${orderConfirmationUrl}${separator}transactionId=${salesOrder.Id}`;\n window.location.assign(url);\n } else {\n ctx.telemetry.information('Not redirect to order confirmation page.');\n\n if (checkoutState) {\n const result = await checkoutState.updateSalesOrder({\n newSalesOrder: salesOrder,\n newOrderedProducts: orderedProducts || []\n });\n\n if (result.status === 'FAILED') {\n reject(new Error('Error: Updating error state failed'));\n return;\n }\n } else {\n reject(new Error('Error: No checkout state'));\n return;\n }\n resolve();\n }\n });\n};\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 { CartLinePriceEditor, ICartLinePriceEditorResources, PriceComponent } from '@msdyn365-commerce/components';\r\nimport { IComponentProps, IGridSettings, IImageSettings, Image } from '@msdyn365-commerce/core';\r\nimport { ICartState } from '@msdyn365-commerce/global-state';\r\nimport { ChannelDeliveryOptionConfiguration, ProductDimensionType, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\r\nimport { CartLine, CommerceProperty, DiscountLine, DiscountLineType, SalesLine } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport { ArrayExtensions, getFallbackImageUrl } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { getPayloadObject, getTelemetryAttributes, IncrementalQuantity, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport classNames from 'classnames';\r\nimport * as React from 'react';\r\nimport { CommercePropertyValueEnum } from '../../../../modules/allowable-freight/utils/CommercePropertyValueEnum';\r\n\r\n/**\r\n * ICartlineResourceString: Interface for specifying the\r\n * resource strings that the component needs.\r\n */\r\nexport interface ICartlineResourceString {\r\n\r\n /** Display string for discount label. */\r\n discountStringText: string;\r\n\r\n /** String for size key. */\r\n sizeString: string;\r\n\r\n /** String for color key. */\r\n colorString: string;\r\n\r\n /** String associated with the configuration product dimension. */\r\n configString: string;\r\n\r\n /** String for style key. */\r\n styleString: string;\r\n\r\n /** String for amount key. */\r\n amountString?: string;\r\n\r\n /** Display string for quantity label. */\r\n quantityDisplayString: string;\r\n\r\n /** Display string for quantity label. */\r\n inputQuantityAriaLabel: string;\r\n\r\n /** Aria label for the decrement button in quantity component. */\r\n decrementButtonAriaLabel: string;\r\n\r\n /** Aria label for the increment button in quantity component. */\r\n incrementButtonAriaLabel: string;\r\n\r\n /** Original text screenreader. */\r\n originalPriceText: string;\r\n\r\n /** Current text screenreader. */\r\n currentPriceText: string;\r\n\r\n /** Shipping Charges Text. */\r\n shippingChargesText: string;\r\n\r\n /** Price Editor Charges Text. */\r\n priceEditorResources?: ICartLinePriceEditorResources;\r\n}\r\n\r\n/**\r\n * Represents cart line data interface.\r\n */\r\ninterface ICartLineData {\r\n cartLine: CartLine | SalesLine;\r\n cartState?: ICartState;\r\n product?: SimpleProduct;\r\n}\r\n\r\n/**\r\n * ICartLineProps: The props required to render cartLineitem.\r\n */\r\nexport interface ICartLineProps extends IComponentProps {\r\n\r\n /** The flag to change the quantity component from interactible to static. */\r\n disableQuantityInteractivity?: boolean;\r\n\r\n /** The primary image url. */\r\n primaryImageUrl?: string;\r\n\r\n /** The product url. */\r\n productUrl?: string;\r\n\r\n /** GridSettings for the product image in cartLine. */\r\n gridSettings: IGridSettings;\r\n\r\n /** ImageSettings for the product image in cartLine. */\r\n imageSettings: IImageSettings;\r\n\r\n /** Boolean flag to indicate if the item is out of stock. */\r\n isOutOfStock?: boolean;\r\n\r\n /** Flag to make quantity section editable. */\r\n isQuantityEditable?: boolean;\r\n\r\n /** Max quantity for line item. */\r\n maxQuantity?: number;\r\n\r\n /** Current quantity for line item. */\r\n currentQuantity?: number;\r\n\r\n /** Resource string for the component. */\r\n resources: ICartlineResourceString;\r\n\r\n /** SalesLine flag. */\r\n isSalesLine?: boolean;\r\n\r\n /** Error message to show in place of quantity. */\r\n errorMessage?: string;\r\n\r\n /** Inventory information label. */\r\n inventoryInformationLabel?: string;\r\n\r\n /** Inventory information class name. */\r\n inventoryLabelClassName?: string;\r\n\r\n /** Flag to show/hide shipping charges for line items. */\r\n showShippingChargesForLineItems?: boolean;\r\n\r\n /** Boolean flag to indicate if cart state status is ready. */\r\n isCartStateReady?: boolean;\r\n\r\n /** Chanel Delivery Option configuration is from api. */\r\n channelDeliveryOptionConfig?: ChannelDeliveryOptionConfiguration;\r\n\r\n /** The telemetry content. */\r\n telemetryContent?: ITelemetryContent;\r\n\r\n /** Quantity onChange callback. */\r\n quantityOnChange?(cartLine: CartLine, newQuantity: number): boolean;\r\n}\r\n\r\n/**\r\n * Represents dimensions strings.\r\n */\r\ninterface IDimensionStrings {\r\n\r\n /** String for size key. */\r\n sizeString: string;\r\n\r\n /** String for color key. */\r\n colorString: string;\r\n\r\n /** String associated with the configuration product dimension. */\r\n configString: string;\r\n\r\n /** String for style key. */\r\n styleString: string;\r\n\r\n /** String for amount key. */\r\n amountString?: string;\r\n}\r\n\r\nconst cartLineItemFunctions = {\r\n\r\n /**\r\n * Render product dimensions.\r\n * @param product - Product data.\r\n * @param dimensionStrings - Dimension strings interface.\r\n * @returns JSX Element.\r\n */\r\n renderProductDimensions: (product: SimpleProduct, dimensionStrings: IDimensionStrings) => {\r\n if (!product.Dimensions) {\r\n return [];\r\n }\r\n\r\n return product.Dimensions.map(productDimension => {\r\n\r\n if (productDimension.DimensionTypeValue === ProductDimensionType.Color) {\r\n return (\r\n
\r\n \r\n {dimensionStrings.colorString}\r\n {': '}\r\n \r\n {productDimension.DimensionValue?.Value}\r\n \r\n \r\n
\r\n );\r\n }\r\n\r\n if (productDimension.DimensionTypeValue === ProductDimensionType.Configuration) {\r\n return (\r\n
\r\n \r\n {dimensionStrings.configString}\r\n {': '}\r\n \r\n {productDimension.DimensionValue?.Value}\r\n \r\n \r\n
\r\n );\r\n }\r\n\r\n if (productDimension.DimensionTypeValue === ProductDimensionType.Size) {\r\n return (\r\n
\r\n \r\n {dimensionStrings.sizeString}\r\n {': '}\r\n \r\n {productDimension.DimensionValue?.Value}\r\n \r\n \r\n
\r\n );\r\n }\r\n\r\n if (productDimension.DimensionTypeValue === ProductDimensionType.Style) {\r\n return (\r\n
\r\n \r\n {product.IsGiftCard ? dimensionStrings.amountString : dimensionStrings.styleString}\r\n {': '}\r\n \r\n {productDimension.DimensionValue?.Value}\r\n \r\n \r\n
\r\n );\r\n }\r\n return null;\r\n });\r\n },\r\n//\r\n /**\r\n * Gets the react node for product unit of price display.\r\n * @param props - The cart line props.\r\n * @returns The node representing markup for unit of measure component.\r\n */\r\n renderProductUnitPrice: (props: ICartLineProps) => {\r\n if (!props.data.cartLine.Price) {\r\n return null;\r\n }\r\n const zeroQuantity: number = 0;\r\n return (\r\n
\r\n \r\n zeroQuantity ? {\r\n price: {\r\n CustomerContextualPrice: props.data.cartLine.Price\r\n }\r\n } : {\r\n price: {\r\n CustomerContextualPrice: props.data.cartLine.Price\r\n }\r\n }}\r\n context={props.context}\r\n id={props.id}\r\n typeName={props.typeName}\r\n />\r\n \r\n
\r\n );\r\n },\r\n\r\n /**\r\n * Render discount lines.\r\n * @param props - The cart line props.\r\n * @returns JSX element.\r\n */\r\n renderDiscountLines: (props: ICartLineProps) => {\r\n\r\n if (!props.data.cartLine.DiscountLines || !ArrayExtensions.hasElements(props.data.cartLine.DiscountLines)) {\r\n return null;\r\n }\r\n\r\n /**\r\n * Get the updated discount percentage.\r\n * @param discountLine - The discount line.\r\n * @param cartLine - The cart line.\r\n * @returns The updated discount percentage.\r\n */\r\n const discountPercent = (discountLine: DiscountLine, cartLine: CartLine): number => {\r\n const numberZero = 0;\r\n const decimalPrecision = 2;\r\n const fullPercentage = 100;\r\n let updatedPercent: number = discountLine.Percentage ?? numberZero;\r\n\r\n if ((discountLine.Percentage === numberZero ||\r\n (discountLine.DiscountLineTypeValue && discountLine.DiscountLineTypeValue === DiscountLineType.TenderTypeDiscount)) &&\r\n cartLine.Price && cartLine.Price > numberZero && cartLine.Quantity && cartLine.Quantity !== numberZero) {\r\n const effectiveAmount = discountLine.EffectiveAmount ?? numberZero;\r\n updatedPercent = Number(((effectiveAmount / (cartLine.Price * cartLine.Quantity)) * fullPercentage).toFixed(decimalPrecision));\r\n }\r\n\r\n return updatedPercent;\r\n };\r\n\r\n return props.data.cartLine.DiscountLines.map((discountLine, index) => {\r\n return (\r\n
\r\n \r\n {discountLine.OfferName ? discountLine.OfferName : ''}\r\n \r\n \r\n \r\n \r\n \r\n {` (${discountLine.Percentage !== undefined ? discountPercent(discountLine, props.data.cartLine) : ''}%)`}\r\n \r\n
\r\n );\r\n });\r\n },\r\n\r\n /**\r\n * Render inventory label.\r\n * @param props - The cart line props.\r\n * @returns JSX element.\r\n */\r\n renderInventoryLabel: (props: ICartLineProps) => {\r\n const inventoryCssName = props.inventoryLabelClassName ? (\r\n `msc-cart-line__product-inventory-label ${props.inventoryLabelClassName}`) : 'msc-cart-line__product-inventory-label';\r\n\r\n return (\r\n

\r\n {props.inventoryInformationLabel}\r\n

\r\n );\r\n },\r\n\r\n /**\r\n * Render shipping label.\r\n * @param props - The cart line props.\r\n * @returns JSX element.\r\n */\r\n renderShippingLabel: (props: ICartLineProps) => {\r\n const pickupDeliveryModeCode = props.context.request.channel?.PickupDeliveryModeCode;\r\n const channelDeliveryOptionConfig = props.channelDeliveryOptionConfig;\r\n const cartline = props.data.cartLine;\r\n let hasShippingMethod = false;\r\n if (channelDeliveryOptionConfig !== undefined) {\r\n hasShippingMethod = !!(cartline.DeliveryMode && channelDeliveryOptionConfig.PickupDeliveryModeCodes?.some(\r\n deliveryMode => deliveryMode !== cartline.DeliveryMode));\r\n } else {\r\n hasShippingMethod = !!(cartline.DeliveryMode && cartline.DeliveryMode !== pickupDeliveryModeCode);\r\n }\r\n if (!hasShippingMethod) {\r\n return undefined;\r\n }\r\n\r\n const shippingChargeLines = (cartline.ChargeLines ?? []).filter(chargeLine => chargeLine.IsShipping);\r\n\r\n if (!ArrayExtensions.hasElements(shippingChargeLines)) {\r\n return undefined;\r\n }\r\n\r\n const defaultCharge: number = 0;\r\n const freightFee = shippingChargeLines.reduce((chargeTotal, chargeLine) => {\r\n return chargeTotal + (chargeLine.CalculatedAmount ?? defaultCharge);\r\n }, defaultCharge);\r\n\r\n const priceComponent = (\r\n \r\n );\r\n return (\r\n <>\r\n \r\n \r\n {priceComponent}\r\n \r\n \r\n );\r\n },\r\n\r\n /**\r\n * Render other charges.\r\n * @param props - The cart line props.\r\n * @returns JSX element.\r\n */\r\n renderOtherCharges: (props: ICartLineProps) => {\r\n const cartline = props.data.cartLine;\r\n const otherCharges = cartline.ChargeLines?.filter((chargeline) => !chargeline.IsShipping);\r\n\r\n return otherCharges?.map((otherCharge, index) => {\r\n const itemIndex = index;\r\n return otherCharge.CalculatedAmount ? (\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n ) : '';\r\n }) ?? undefined;\r\n }\r\n};\r\n\r\n/**\r\n * Render cartline component.\r\n * @param props - The cart line props.\r\n * @returns JSX element.\r\n */\r\nconst CartLine: React.FC = (props: ICartLineProps) => {\r\n const { isSalesLine, productUrl, resources } = props;\r\n const { product, cartLine } = props.data;\r\n const destructDimensionStrings = {\r\n sizeString: resources.sizeString,\r\n colorString: resources.colorString,\r\n styleString: resources.styleString,\r\n configString: resources.configString,\r\n amountString: resources.amountString\r\n };\r\n\r\n const fallbackImageUrl = product && getFallbackImageUrl(product.ItemId, props.context.actionContext.requestContext.apiSettings);\r\n const productDimensions = product && cartLineItemFunctions.renderProductDimensions(product, destructDimensionStrings);\r\n const renderProductUnitPrice = cartLineItemFunctions.renderProductUnitPrice(props);\r\n const imageSettings = props.imageSettings;\r\n if (imageSettings) {\r\n imageSettings.cropFocalRegion = true;\r\n }\r\n const renderDiscountLines = cartLineItemFunctions.renderDiscountLines(props);\r\n const renderInventoryLabel = cartLineItemFunctions.renderInventoryLabel(props);\r\n const renderShippingLabel = cartLineItemFunctions.renderShippingLabel(props);\r\n const renderOtherCharges = cartLineItemFunctions.renderOtherCharges(props);\r\n const payLoad = getPayloadObject('click', props.telemetryContent!, '', product?.RecordId.toString());\r\n const productAttribute = getTelemetryAttributes(props.telemetryContent!, payLoad);\r\n const productName = product?.Name ?? cartLine.Description;\r\n const imgeClassName = props.data.cartLine.IsInvoiceLine ? 'msc-cart-line__invoice-image' : 'msc-cart-line__product-image';\r\n const cartLineContentClassName = props.data.cartLine.IsInvoiceLine ? 'msc-cart-line__invoice-content' : 'msc-cart-line__content';\r\n\r\n /**\r\n * Render other charges.\r\n * @param newValue - The cart line props.\r\n * @returns Boolean.\r\n */\r\n const onChange = (newValue: number): boolean => {\r\n if (props.quantityOnChange) {\r\n return props.quantityOnChange(props.data.cartLine, newValue);\r\n }\r\n return true;\r\n };\r\n\r\n /**\r\n * Generate error message.\r\n * @returns JSX element.\r\n */\r\n const generateErrorMessage = (): JSX.Element | null => {\r\n if (props.errorMessage) {\r\n return (\r\n
\r\n \r\n \r\n {props.errorMessage}\r\n \r\n
\r\n );\r\n }\r\n\r\n return null;\r\n };\r\n\r\n /**\r\n * Gets the react node for product unit of measure display.\r\n * @returns The node representing markup for unit of measure component.\r\n */\r\n const renderUnitOfMeasure = () => {\r\n\r\n if (props.data.cartLine.IsInvoiceLine) {\r\n return null;\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- Do not need type check for appsettings\r\n if (!props.context.app.config.unitOfMeasureDisplayType || props.context.app.config.unitOfMeasureDisplayType === 'none') {\r\n return undefined;\r\n }\r\n\r\n if (!product || !product.DefaultUnitOfMeasure) {\r\n return undefined;\r\n }\r\n\r\n return (\r\n
\r\n \r\n {product.DefaultUnitOfMeasure}\r\n \r\n
\r\n );\r\n };\r\n\r\n\r\n const getExtensionPropertyValueByKey = (\r\n properties: CommerceProperty[] | undefined,\r\n key: string,\r\n valueType: CommercePropertyValueEnum\r\n ) => {\r\n const property = properties?.find(p => p.Key === key)?.Value;\r\n\r\n // eslint-disable-next-line security/detect-object-injection\r\n const val = property ? property[valueType] : null;\r\n return val;\r\n };\r\n\r\n /**\r\n * Generate quantity and price component.\r\n * @returns JSX element.\r\n */\r\n const generateQuantityAndPrice = (): JSX.Element[] | null => {\r\n const nodes = [];\r\n const defaultMaxQuantity: number = 10;\r\n const singleQuantity: number = 1;\r\n const unitOfMeasure = renderUnitOfMeasure();\r\n const courseId = getExtensionPropertyValueByKey(props.data.cartLine.ExtensionProperties, \"CourseId\", CommercePropertyValueEnum.string);\r\n // No quantity selector for invoice line or for courseId\r\n if (!props.data.cartLine.IsInvoiceLine\r\n && !courseId // hide for courses\r\n ) {\r\n if (props.data.product && props.isQuantityEditable) {\r\n nodes.push(\r\n
\r\n
\r\n {resources.quantityDisplayString}\r\n
\r\n\r\n {generateErrorMessage()}\r\n\r\n \r\n {unitOfMeasure}\r\n
\r\n );\r\n } else {\r\n nodes.push(\r\n
\r\n {unitOfMeasure}\r\n \r\n\r\n {generateErrorMessage()}\r\n\r\n \r\n {props.data.cartLine.Quantity}\r\n \r\n
\r\n );\r\n }\r\n }\r\n\r\n nodes.push(\r\n
\r\n \r\n {props.isOutOfStock ? renderInventoryLabel : null}\r\n
\r\n );\r\n\r\n return nodes;\r\n };\r\n\r\n return (\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n {product?.ItemId || null} - {productName}\r\n \r\n {ArrayExtensions.hasElements(productDimensions) ?
\r\n {productDimensions}\r\n
: ''}\r\n
\r\n \r\n {renderUnitOfMeasure()}\r\n
\r\n {renderProductUnitPrice}\r\n {renderInventoryLabel}\r\n {renderDiscountLines}\r\n {props.showShippingChargesForLineItems &&
\r\n {renderShippingLabel}\r\n
}\r\n {renderOtherCharges}\r\n
\r\n {\r\n generateQuantityAndPrice()\r\n }\r\n {\r\n props.data.cartLine.IsInvoiceLine && props.data.cartState && props.resources.priceEditorResources && \r\n }\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default CartLine;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nexport * from './alert';\nexport * from './get-line-items';\nexport * from './get-order-summary';\nexport * from './guided-card';\nexport * from './guided-form';\nexport * from './place-order-button';\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 { IBulkPurchaseViewProps } from './bulk-purchase';\n\n/**\n * Bulk purchase view.\n * @param props - Bulk purchase view props.\n * @returns React node with a module.\n */\nexport const BulkPurchaseViewComponent: React.FC = props => {\n return {props.content};\n};\n\nexport default BulkPurchaseViewComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport WriteReview from './write-review';\nimport WriteReviewView from './write-review.view';\n\nexport * from './write-review';\nexport * from './write-review.data';\nexport { IWriteReviewConfig, IWriteReviewProps, IWriteReviewResources } from './write-review.props.autogenerated';\nexport * from './write-review.view';\n\nexport { WriteReview, WriteReviewView };\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { OrderBy } from '../actions/inputs/get-product-reviews-input';\n\nexport interface IRnrKeyValuePair {\n key: string;\n value: string;\n}\n\nexport interface IRnrOrderByKeyValuePair {\n key: OrderBy;\n value: string;\n}\n\nexport function setFocusOnElement(id: string): void {\n const element = document.getElementById(id);\n if (element) {\n element.focus();\n }\n}\n\nexport const TOGGLE_REVIEW_MODAL_BUTTON_ID: string = 'reviewproductid';\nexport const TOGGLE_EDIT_MODAL_BUTTON_ID: string = 'ms-write-review__edit';\nexport const TOGGLE_EDIT_MODAL_BUTTON_CARD_ID: string = 'ms-reviews-list__edit';\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IActionContext, getUrlSync } from '@msdyn365-commerce/core';\n\nexport const GetCheckoutReturnUrl = (actionContext: IActionContext): string => {\n let returnUrl = getUrlSync('checkout', actionContext) || '';\n const absoluteUrlRegExp = new RegExp('^(?:[a-z]+:)?//', 'i');\n const isAbsoluteUrl = absoluteUrlRegExp.test(returnUrl);\n if (window && !isAbsoluteUrl) {\n returnUrl = `${window.location.origin}${returnUrl}`;\n }\n\n return `${returnUrl}${!returnUrl.includes('?') ? '?' : '&'}pv=1`;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Review } from '@msdyn365-commerce/commerce-entities';\nimport { RatingComponent } from '@msdyn365-commerce/components';\nimport { IAny, ICoreContext, IGeneric, isOboRequest } from '@msdyn365-commerce/core';\nimport { Button, format, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { TOGGLE_EDIT_MODAL_BUTTON_CARD_ID } from '../../../common/rnrInterface';\n\nexport interface IReviewCardResources {\n wasReviewHelpfulText: string;\n yesButtonText: string;\n noButtonText: string;\n editReviewCardText: string;\n reportedText: string;\n reportConcernText: string;\n reviewRatingNarratorText: string;\n}\n\nexport interface IReviewCardProps {\n review: Review;\n resources: IReviewCardResources;\n context: ICoreContext>;\n isUserReview?: boolean;\n parentId: string;\n parentType: string;\n reportedReviews: string[];\n returnRef: React.RefObject | undefined;\n reportedReviewId: string;\n votedReviews: { reviewId: string; approved: boolean }[];\n toggleWriteReviewModal?(): void;\n toggleReportReviewModal(reviewId: string): void;\n updateReviewHelpfulness(reviewId: string, isHelpful: boolean): void;\n}\n\nexport interface IReviewCardViewProps {\n cardProps: INodeProps;\n name: React.ReactElement;\n rating: React.ReactElement;\n date: React.ReactElement;\n reviewTitle: React.ReactElement;\n reviewText: React.ReactElement;\n ratingHelpfulLabel?: React.ReactElement;\n like?: React.ReactElement;\n dislike?: React.ReactElement;\n edit: React.ReactNode;\n report: React.ReactNode;\n responseName: React.ReactNode;\n responseDate: React.ReactNode;\n responseText: React.ReactNode;\n cardBodyProps: INodeProps;\n responseProps: INodeProps;\n reviewProps: INodeProps;\n controlsProps: INodeProps;\n headerProps: INodeProps;\n}\n\n/**\n * Review card component.\n */\n\nexport const ReviewCard = (props: IReviewCardProps): IReviewCardViewProps => {\n const className = props.isUserReview ? 'ms-reviews-list__card ms-reviews-list__user-review' : 'ms-reviews-list__card';\n return {\n cardProps: { className, key: props.review.reviewId },\n name:

{props.review.userName}

,\n rating: rating(props),\n date:

{renderDate(props, props.review.submittedDateTime)}

,\n reviewTitle:

{props.review.title}

,\n reviewText:

{props.review.reviewText}

,\n ratingHelpfulLabel: props.isUserReview ? (\n undefined\n ) : (\n

{props.resources.wasReviewHelpfulText}

\n ),\n like: props.isUserReview ? undefined : voteHelpfulButton(props, true),\n dislike: props.isUserReview ? undefined : voteHelpfulButton(props, false),\n edit: editButton(props),\n report: reportToggle(props),\n responseName: props.review.userResponse ? (\n

{props.review.userResponse.responderName}

\n ) : (\n undefined\n ),\n responseText: props.review.userResponse ? (\n

{props.review.userResponse.responseText}

\n ) : (\n undefined\n ),\n responseDate: props.review.userResponse ? (\n

{renderDate(props, props.review.userResponse.submittedDateTime)}

\n ) : (\n undefined\n ),\n cardBodyProps: { className: 'ms-reviews-list__card-body' },\n responseProps: { className: 'ms-reviews-list__response' },\n reviewProps: { className: 'ms-reviews-list__review' },\n controlsProps: { className: 'ms-reviews-list__card-controls' },\n headerProps: { className: 'ms-reviews-list__card-header' }\n };\n};\n\nconst rating = (props: IReviewCardProps) => {\n return (\n \n );\n};\n\nconst isVotedFor = (props: IReviewCardProps, isHelpful: boolean): boolean => {\n for (let i = 0; i < props.votedReviews.length; i++) {\n if (props.votedReviews[i].reviewId === props.review.reviewId) {\n return props.votedReviews[i].approved === isHelpful;\n }\n }\n\n return false;\n};\n\nconst voteHelpfulButton = (props: IReviewCardProps, isHelpful: boolean) => {\n const isVoted = isVotedFor(props, isHelpful);\n const isDisabled = props.isUserReview || isVoted || isOboRequest(props.context.request) ? 'disabled' : '';\n let className = isHelpful ? 'ms-reviews-list__like' : 'ms-reviews-list__dislike';\n className = `${className} ${isDisabled}`;\n const label = isHelpful ? props.resources.yesButtonText : props.resources.noButtonText;\n let voteCount = (isHelpful ? props.review.helpfulPositive : props.review.helpfulNegative) || 0;\n voteCount = isVoted ? voteCount + 1 : voteCount;\n const title = `(${voteCount})`;\n const user = props.context.request.user;\n const onClickMethod = () => {\n props.updateReviewHelpfulness(props.review.reviewId!, isHelpful);\n };\n const onClick = isDisabled ? undefined : onClickMethod;\n\n if (user.isAuthenticated) {\n return (\n \n );\n }\n return (\n \n );\n};\n\nconst editButton = (props: IReviewCardProps) => {\n if (props.isUserReview && !isOboRequest(props.context.request)) {\n return (\n \n );\n }\n\n return undefined;\n};\n\nconst renderDate = (props: IReviewCardProps, date?: Date): string | Date => {\n if (!date) {\n return '';\n }\n\n try {\n return new Intl.DateTimeFormat(props.context.request.locale, { month: 'long', day: 'numeric', year: 'numeric' }).format(\n new Date(date)\n );\n } catch {\n return date;\n }\n};\n\n/**\n * On Click Handler.\n * @param props -Review card props.\n * @returns Report review modal.\n */\nconst onClick = (props: IReviewCardProps) => () => {\n props.toggleReportReviewModal(props.review.reviewId!);\n};\n\nconst reportToggle = (props: IReviewCardProps) => {\n const user = props.context.request.user;\n if (props.isUserReview || isOboRequest(props.context.request)) {\n return undefined;\n } else if (!user.isAuthenticated) {\n return (\n \n );\n }\n\n if (props.reportedReviews.includes(props.review.reviewId!)) {\n return

{props.resources.reportedText}

;\n }\n\n const ref = props.review.reviewId === props.reportedReviewId ? props.returnRef : undefined;\n\n return (\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 {\n format,\n getPayloadObject,\n getTelemetryAttributes,\n ILabeledDropdownOption,\n ITelemetryContent,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IReviewCountResources {\n pageReviewCountText: string;\n}\n\nexport interface IReviewCountProps {\n resources: IReviewCountResources;\n currentPage: number;\n reviewsCount: number;\n reviewsShownOnEachPage: number;\n}\n\nexport const ReviewCount: React.FC = (props: IReviewCountProps) => {\n const { currentPage, resources, reviewsCount, reviewsShownOnEachPage } = props;\n\n return (\n \n {format(\n resources.pageReviewCountText,\n _getReviewStartNumber(currentPage, reviewsShownOnEachPage),\n _getReviewEndNumber(currentPage, reviewsCount, reviewsShownOnEachPage),\n reviewsCount\n )}\n \n );\n};\n\nexport interface IPageControlResources {\n previousButtonText: string;\n nextButtonText: string;\n pageReviewAriaLabel: string;\n}\n\nexport interface IPageControlsProps {\n resources: IPageControlResources;\n currentPage: number;\n reviewsCount: number;\n reviewsShownOnEachPage: number;\n selectedSortByOption: ILabeledDropdownOption;\n selectedFilterByOption: ILabeledDropdownOption;\n telemetryContent?: ITelemetryContent;\n updateReviews(\n skipItems: number,\n selectedSortByOption: ILabeledDropdownOption,\n selectedFilterByOption: ILabeledDropdownOption,\n currentPage: number,\n isFilterApplied: boolean\n ): Promise;\n}\n\nexport const PageControls: React.FC = (props: IPageControlsProps) => {\n const { currentPage, resources, reviewsCount, reviewsShownOnEachPage } = props;\n const previousPageClick = React.useCallback(() => {\n return _getPreviousPageData(props);\n }, [props]);\n const nextPageClick = React.useCallback(() => {\n return _getNextPageData(props);\n }, [props]);\n const payLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.Next);\n const nextAttribute = getTelemetryAttributes(props.telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.Previous;\n const previousAttribute = getTelemetryAttributes(props.telemetryContent!, payLoad);\n\n return (\n
\n {_hasPreviousPage(currentPage) && (\n \n {resources.previousButtonText}\n \n )}\n {_hasNextPage(currentPage, reviewsCount, reviewsShownOnEachPage) && (\n \n {resources.nextButtonText}\n \n )}\n
\n );\n};\n\nconst _hasPreviousPage = (currentPage: number): boolean => {\n return currentPage > 1;\n};\n\nconst _hasNextPage = (currentPage: number, reviewsCount: number, reviewsShownOnEachPage: number): boolean => {\n return _getPagesCount(reviewsCount, reviewsShownOnEachPage) > currentPage;\n};\n\nconst _getReviewsShown = (reviewsShownOnEachPage: number) => {\n return Math.min(25, reviewsShownOnEachPage);\n};\n\nconst _getPagesCount = (reviewsCount: number, reviewsShownOnEachPage: number): number => {\n return Math.ceil(reviewsCount / _getReviewsShown(reviewsShownOnEachPage));\n};\n\nconst _paginationAriaLabel = (\n pageReviewAriaLabel: string,\n currentPage: number,\n reviewsCount: number,\n reviewsShownOnEachPage: number,\n isNextPage: boolean,\n page?: number\n): string => {\n const pageModifier = isNextPage ? 1 : -1;\n return format(\n pageReviewAriaLabel,\n _getReviewStartNumber(currentPage, reviewsShownOnEachPage, currentPage + pageModifier),\n _getReviewEndNumber(currentPage, reviewsCount, reviewsShownOnEachPage, currentPage + pageModifier),\n reviewsCount\n );\n};\n\nconst _getReviewStartNumber = (currentPage: number, reviewsShownOnEachPage: number, page?: number): number => {\n return ((page || currentPage) - 1) * _getReviewsShown(reviewsShownOnEachPage) + 1;\n};\n\nconst _getReviewEndNumber = (currentPage: number, reviewsCount: number, reviewsShownOnEachPage: number, page?: number): number => {\n const pageUsed = page || currentPage;\n const pageReviewCount = pageUsed * _getReviewsShown(reviewsShownOnEachPage);\n return pageReviewCount < reviewsCount ? pageReviewCount : reviewsCount;\n};\n\nconst _getPreviousPageData = async (props: IPageControlsProps) => {\n await props.updateReviews(\n _getReviewStartNumber(props.currentPage, props.reviewsShownOnEachPage) - 1 - _getReviewsShown(props.reviewsShownOnEachPage),\n props.selectedSortByOption,\n props.selectedFilterByOption,\n props.currentPage - 1,\n false\n );\n};\n\nconst _getNextPageData = async (props: IPageControlsProps) => {\n await props.updateReviews(\n _getReviewEndNumber(props.currentPage, props.reviewsCount, props.reviewsShownOnEachPage),\n props.selectedSortByOption,\n props.selectedFilterByOption,\n props.currentPage + 1,\n false\n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IProductDimensionConfigureDropdownViewProps, IProductDimensionConfigureViewProps } from '@msdyn365-commerce/components';\nimport { INodeProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IQuickOrderFormViewProps } from './components';\nimport { IQuickOrderViewProps } from './quick-order';\n\n/**\n * Render product dimension/configure container.\n * @param configure -- Product dimension configuration.\n * @returns Container to have dimension dropdown.\n */\nconst renderConfigure = (configure?: IProductDimensionConfigureViewProps): JSX.Element | null => {\n if (configure !== undefined) {\n const { containerProps, dropdowns } = configure;\n\n return {dropdowns.map(renderConfigureDropdown)};\n }\n return null;\n};\n\n/**\n * Render product dimension/configure dropdown.\n * @param dropdown -- Product dimension drop down.\n * @returns Dropdown.\n */\nconst renderConfigureDropdown = (dropdown: IProductDimensionConfigureDropdownViewProps): JSX.Element => {\n const { containerProps, labelContainerProps, heading, errors, select } = dropdown;\n\n return (\n \n {heading}\n {errors}\n {select}\n \n );\n};\n\nconst renderForm = (\n form: IQuickOrderFormViewProps,\n isMobileView: boolean,\n quickOrderForm: INodeProps,\n quickOrderProductContent: INodeProps,\n quickOrderMsgContent: INodeProps,\n configure?: IProductDimensionConfigureViewProps\n) => {\n return isMobileView ? (\n \n \n {form.product}\n {renderConfigure(configure)}\n {form.quantity}\n {form.userMessage}\n {form.addToCartBtn}\n \n \n ) : (\n \n {form.userMessage}\n \n {form.product}\n {renderConfigure(configure)}\n {form.quantity}\n {form.addToCartBtn}\n \n \n );\n};\n\nconst quickOrderView: React.FC = props => {\n const {\n quickOrderProps,\n contentProps,\n form,\n quickOrderForm,\n drawer,\n configure,\n quickOrderFormProductContent,\n quickOrderFormMsgContent,\n quickOrderList,\n isMobileView\n } = props;\n\n return (\n \n \n \n {renderForm(\n form as IQuickOrderFormViewProps,\n isMobileView,\n quickOrderForm,\n quickOrderFormProductContent,\n quickOrderFormMsgContent,\n configure\n )}\n \n \n\n {quickOrderList}\n \n );\n};\nexport default quickOrderView;\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { IComponent, IComponentProps, msdyn365Commerce } from '@msdyn365-commerce/core';\r\nimport { ICartState } from '@msdyn365-commerce/global-state';\r\nimport { Coupon } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport { Button, format, getPayloadObject, getTelemetryAttributes, IPayLoad, ITelemetryContent, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { PriceComponent } from '@msdyn365-commerce/components';\r\nimport { addAttributeToCart, removeAttributeFromCart } from \"../../../../utils/cartAttributeManager\";\r\n\r\nexport interface IPromoCodeProps extends IComponentProps<{}> {\r\n cart: ICartState | undefined;\r\n promoCodeHeadingText: string;\r\n appliedPromoCodeHeadingText: string;\r\n removePromoAriaLabelFormat: string;\r\n promoPlaceholderText: string;\r\n promoCodeApplyButtonText: string;\r\n collapseTimeOut: number;\r\n removePromoText: string;\r\n invalidPromoCodeErrorText: string;\r\n failedToAddPromoCodeErrorText: string;\r\n duplicatePromoCodeErrorText: string;\r\n failedToRemovePromoCodeErrorText: string;\r\n\r\n /**\r\n * The telemetry content\r\n */\r\n telemetryContent?: ITelemetryContent;\r\n promoCodeApplyCallback?(): void;\r\n}\r\n\r\nexport interface IPromoCodeComponent extends IComponent { }\r\n\r\nconst PromoCodeComponentActions = {};\r\n\r\ninterface IPromoCodeState {\r\n isCollapseOpen: boolean;\r\n promoCodeInputValue: string;\r\n error: string;\r\n canApply: boolean;\r\n}\r\n\r\n/**\r\n *\r\n * The PromoCode component renders the promocode section.\r\n * @extends {React.PureComponent}\r\n */\r\nclass PromoCode extends React.Component {\r\n private readonly COUPON_ATTRIBUTE_KEY = 'coupon-code';\r\n private readonly payLoad: IPayLoad;\r\n\r\n constructor(props: IPromoCodeProps, state: IPromoCodeState) {\r\n super(props);\r\n this.payLoad = getPayloadObject('click', this.props.telemetryContent!, TelemetryConstant.ApplyPromoCode);\r\n this.state = {\r\n isCollapseOpen: false,\r\n promoCodeInputValue: '',\r\n error: '',\r\n canApply: false\r\n };\r\n }\r\n\r\n public shouldComponentUpdate(nextProps: IPromoCodeProps): boolean {\r\n if (this.props.appliedPromoCodeHeadingText !== nextProps.appliedPromoCodeHeadingText) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n public render(): JSX.Element {\r\n return (\r\n
\r\n
\r\n {this.props.promoCodeHeadingText}\r\n
\r\n {this._renderForm(this.props.promoPlaceholderText, this.props.promoCodeApplyButtonText, this.props.cart)}\r\n

\r\n {this.state.error}\r\n

\r\n {this._renderAppliedPromoCode(this.props)}\r\n
\r\n );\r\n }\r\n\r\n private readonly _onInputChange = (e: React.ChangeEvent) => {\r\n const error = e.target.value === '' ? '' : this.state.error;\r\n this.setState({\r\n promoCodeInputValue: e.target.value, error,\r\n canApply: !!e.target.value\r\n });\r\n };\r\n\r\n private readonly _applyPromotion = (cartState: ICartState | undefined) => {\r\n if (!cartState || !cartState.cart) {\r\n return;\r\n }\r\n const appliedPromo = this.state.promoCodeInputValue;\r\n\r\n cartState.addPromoCode({ promoCode: appliedPromo })\r\n .then(result => {\r\n if (result.status === 'SUCCESS') {\r\n // Show success text\r\n this.setState({ promoCodeInputValue: '', error: '', canApply: false });\r\n const _cart = addAttributeToCart(this.COUPON_ATTRIBUTE_KEY, appliedPromo, cartState.cart);\r\n void cartState.updateCart({newCartObject: _cart})\r\n } else if (result.substatus === 'ALREADYADDED') {\r\n this.setState({ error: this.props.duplicatePromoCodeErrorText });\r\n } else {\r\n this.setState({ error: this.props.invalidPromoCodeErrorText });\r\n }\r\n })\r\n .catch(error => {\r\n this.setState({ error: this.props.failedToAddPromoCodeErrorText });\r\n });\r\n };\r\n\r\n private readonly _renderForm = (promoPlaceholderText: string, promoCodeApplyButtonText: string, cartState: ICartState | undefined) => {\r\n const _onSubmit = (event: React.FormEvent) => {\r\n event.preventDefault(); this._applyPromotion(cartState);\r\n };\r\n const _applyPromotion = (event: React.MouseEvent) => {\r\n this._applyPromotion(cartState);\r\n };\r\n const attributes = getTelemetryAttributes(this.props.telemetryContent!, this.payLoad);\r\n\r\n return (\r\n
\r\n
\r\n \r\n \r\n {promoCodeApplyButtonText}\r\n \r\n
\r\n
\r\n );\r\n };\r\n\r\n private readonly _removePromotion = (cartState: ICartState | undefined, event: React.MouseEvent) => {\r\n if (!cartState) {\r\n return;\r\n }\r\n const code = event.currentTarget.getAttribute('data-value') || '';\r\n cartState.removePromoCodes({\r\n promoCodes: [code]\r\n })\r\n .then(result => {\r\n if (result.status === 'SUCCESS') {\r\n const _cart = removeAttributeFromCart(this.COUPON_ATTRIBUTE_KEY, cartState.cart);\r\n void cartState.updateCart({newCartObject: _cart, additionalProperties: { AttributeValues: _cart.AttributeValues || [] }});\r\n this.setState({ error: '' });\r\n\r\n }\r\n })\r\n .catch(() => {\r\n this.setState({ error: this.props.failedToRemovePromoCodeErrorText });\r\n });\r\n\r\n };\r\n\r\n private readonly _calculateDiscount = (code: string, cartState: ICartState | undefined) => {\r\n if (!cartState || !cartState.cart || !cartState.cart.CartLines || cartState.cart.CartLines.length === 0 || !code) {\r\n return;\r\n }\r\n let discountAmount = 0;\r\n for (const line of cartState.cart.CartLines) {\r\n if (line.DiscountLines) {\r\n for (const discountLine of line.DiscountLines) {\r\n if (discountLine.DiscountCode === code) {\r\n discountAmount += discountLine.DiscountCost!;\r\n }\r\n }\r\n }\r\n }\r\n return discountAmount * -1;\r\n };\r\n\r\n private readonly _renderAppliedPromoCode = (props: IPromoCodeProps) => {\r\n if (!props.cart || !props.cart.cart || !props.cart.cart.Coupons || !(props.cart.cart.Coupons.length > 0)) {\r\n return;\r\n }\r\n\r\n const _removePromotion = (event: React.MouseEvent) => {\r\n this._removePromotion(props.cart, event);\r\n };\r\n let totalCouponDiscountAmount = 0;\r\n for (const coupon of props.cart.cart.Coupons) {\r\n const discountAmount = this._calculateDiscount(coupon.Code ?? '', props.cart);\r\n if (discountAmount) {\r\n totalCouponDiscountAmount += discountAmount;\r\n }\r\n }\r\n\r\n return (\r\n <>\r\n
\r\n
\r\n {this.props.appliedPromoCodeHeadingText}\r\n
\r\n \r\n
\r\n {\r\n props.cart.cart.Coupons.map((coupon: Coupon) => {\r\n const ariaLabel = props.removePromoAriaLabelFormat ? format(props.removePromoAriaLabelFormat, props.removePromoText, coupon.Code) : '';\r\n\r\n return (\r\n
\r\n
\r\n {coupon.Code}\r\n {' '}\r\n (\r\n \r\n )\r\n
\r\n \r\n {props.removePromoText}\r\n \r\n
\r\n );\r\n })\r\n }\r\n \r\n );\r\n };\r\n}\r\n\r\n// @ts-expect-error\r\nexport const PromoCodeComponent: React.FunctionComponent = msdyn365Commerce.createComponentOverride(\r\n 'PromoCode',\r\n { component: PromoCode, ...PromoCodeComponentActions }\r\n);\r\n\r\n\r\nexport default PromoCodeComponent;\r\n","import { Cart } from '@msdyn365-commerce/retail-proxy';\r\nimport { AttributeTextValueClass } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceModels.g';\r\n\r\nconst addAttributeToCart = (attrKey: string, attrValue: string, cart: Cart): Cart => {\r\n const _cart = { ...cart };\r\n const attributeArray = _cart.AttributeValues || [];\r\n const attributeObj = {\r\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.AttributeTextValue',\r\n Name: attrKey,\r\n ExtensionProperties: [],\r\n TextValue: attrValue,\r\n TextValueTranslations: []\r\n };\r\n const attrIdx = attributeArray.findIndex(a => a.Name?.toUpperCase() === attrKey.toUpperCase());\r\n\r\n //Update existing attribute if there.\r\n if (attrIdx > -1) {\r\n (attributeArray[attrIdx] as AttributeTextValueClass).TextValue = attrValue;\r\n } else {\r\n attributeArray.push(attributeObj);\r\n }\r\n\r\n _cart.AttributeValues = attributeArray;\r\n\r\n return _cart;\r\n};\r\n\r\nconst removeAttributeFromCart = (attrKey: string, cart: Cart): Cart => {\r\n const _cart = { ...cart };\r\n const attributeArray = _cart.AttributeValues || [];\r\n const attrIdx = attributeArray.findIndex(a => a.Name?.toUpperCase() === attrKey.toUpperCase());\r\n\r\n //We can't remove attribute values for some reason, so we'll just set the value to ''\r\n if (attrIdx > -1) {\r\n (attributeArray[attrIdx] as AttributeTextValueClass).TextValue = '';\r\n }\r\n _cart.AttributeValues = attributeArray;\r\n return _cart;\r\n};\r\n\r\nexport { addAttributeToCart, removeAttributeFromCart };\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { RatingComponent } from '@msdyn365-commerce/components';\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { format, IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { createRatingsReviewsStateInput } from '../../actions/ratings-reviews-state-data-action';\nimport { AverageRatingNumber, HistogramItems, IHistogramItemViewProps, TotalReviews } from './component/components';\nimport { IRatingsHistogramData } from './ratings-histogram.data';\nimport { IRatingsHistogramProps } from './ratings-histogram.props.autogenerated';\n\nexport interface IRatingsHistogramViewProps extends IRatingsHistogramProps {\n className: string;\n histogramItems: IHistogramItemViewProps[];\n moduleProps: IModuleProps;\n heading: React.ReactNode;\n averageRating: React.ReactNode;\n averageNumber: React.ReactNode;\n totalReviews: React.ReactNode;\n histogramProps: INodeProps;\n ratingsSummaryProps: INodeProps;\n callbacks: IRatingsHistogramCallbacks;\n}\n\nexport interface IRatingsHistogramCallbacks {\n selectFilterBy(stars: number): void;\n}\n\n/**\n * RatingsHistogram component.\n * @extends {React.Component>}\n */\n@observer\nclass RatingsHistogram extends React.PureComponent> {\n constructor(props: IRatingsHistogramProps) {\n super(props);\n this.selectFilterBy = this.selectFilterBy.bind(this);\n }\n\n public render(): JSX.Element | null {\n const { resources } = this.props;\n const { className, heading } = this.props.config;\n const {\n ratingsSummary: { result: ratingsSummary }\n } = this.props.data;\n const ratingCount = ratingsSummary && ratingsSummary.totalRatingsCount ? `${ratingsSummary.totalRatingsCount}` : '0';\n\n const completeClass = classname('ms-ratings-histogram', className);\n const viewProps: IRatingsHistogramViewProps = {\n ...this.props,\n className: completeClass,\n callbacks: {\n selectFilterBy: this.selectFilterBy\n },\n moduleProps: {\n moduleProps: this.props,\n className: completeClass\n },\n histogramItems: ratingsSummary\n ? HistogramItems({\n ratingsSummary,\n resources: { ...resources },\n locale: this.props.context.request.locale,\n onClick: this.selectFilterBy\n })\n : [],\n averageRating: ratingsSummary && (\n \n ),\n averageNumber: ratingsSummary && ,\n totalReviews: ratingsSummary && ,\n ratingsSummaryProps: { className: 'ms-ratings-histogram__summary' },\n heading: heading && (\n \n ),\n histogramProps: { className: 'ms-ratings-histogram__histogram' }\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading!.text = event.target.value);\n\n public selectFilterBy(stars: number): void {\n const filterKey = `${stars}`;\n this.props.context.actionContext.update(createRatingsReviewsStateInput({ filterKey }), { filterKey });\n }\n}\n\nexport default RatingsHistogram;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IWishlistItemDimension {\n key: string;\n className?: string;\n dimensionType: string;\n dimensionValue: string;\n}\n\nexport const WishlistItemDimension: React.FC = ({ key, className, dimensionType, dimensionValue }) => (\n
\n {dimensionType}:\n {dimensionValue}\n
\n);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { PriceComponent } from '@msdyn365-commerce/components';\nimport { IAny, ICoreContext, IGeneric, IImageSettings, Image, ITelemetry, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport {\n CommerceListLine,\n ProductPrice,\n ReleasedProductType,\n SimpleProduct\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport {\n convertProductDimensionTypeToDimensionTypes,\n getFallbackImageUrl,\n StringExtensions\n} from '@msdyn365-commerce-modules/retail-actions';\nimport { Alert, Button, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IWishlistItemActionMessageState } from '../wishlist-items';\nimport { WishlistItemDimension } from './wishlist-items-dimensions';\n\nexport interface IWishlistItemProps extends CommerceListLine {\n product: SimpleProduct;\n wishlistState: IWishlistItemActionMessageState;\n price?: ProductPrice;\n context: ICoreContext>;\n productUrl: string;\n imageSettings?: IImageSettings;\n removeFromWishlistText: string;\n isInStock: boolean;\n addToCartText: string;\n outOfStockText: string;\n index: number;\n itemKey: string;\n telemetry: ITelemetry;\n moduleId: string;\n moduleTypeName: string;\n enableImageProductLink?: boolean;\n inventoryInformationLabel?: string;\n inventoryLabelClassName?: string;\n telemetryContent?: ITelemetryContent;\n handlers: {\n onAddToCart(product: SimpleProduct, itemKey: string): void;\n onRemoveItem(productId: number): void | undefined;\n onDismiss(): void;\n };\n resources: {\n productDimensionTypeColor: string;\n productDimensionTypeSize: string;\n productDimensionTypeStyle: string;\n originalPriceText: string;\n currentPriceText: string;\n freePriceText: string;\n };\n}\n\nexport interface IWishlistItemViewProps {\n key: string;\n productImage: React.ReactNode;\n productLink: React.ReactNode;\n productDimensions?: React.ReactNode[];\n productPrice?: React.ReactNode;\n addToCartButton?: React.ReactNode;\n removeButton?: React.ReactNode;\n productStatusMessage?: React.ReactNode;\n productName?: React.ReactNode;\n productAriaLabel?: string;\n entireProductLink?: string;\n inventoryInformation?: React.ReactNode;\n productUnitOfMeasure?: React.ReactNode;\n}\n\nconst _addItemToCart = (props: IWishlistItemProps): void => {\n const { product, itemKey, handlers } = props;\n const { onAddToCart } = handlers;\n\n onAddToCart && product && itemKey && onAddToCart(product, itemKey);\n};\n\nconst _removeItemFromWishlist = (props: IWishlistItemProps): void => {\n const { onRemoveItem } = props.handlers;\n const { RecordId } = props.product;\n\n onRemoveItem && RecordId && onRemoveItem(RecordId);\n};\n\nconst WishListItemActions = {\n addToCart: _addItemToCart,\n removeItem: _removeItemFromWishlist\n};\n\nconst _getFullProductLink = (props: IWishlistItemProps): string => {\n if (!msdyn365Commerce.isBrowser) {\n return '';\n }\n\n const fullUrl = new URL(props.productUrl, window.location.href);\n for (const dimension of props.product.Dimensions ?? []) {\n const dimensionValue = dimension.DimensionValue?.Value;\n if (!StringExtensions.isNullOrWhitespace(dimensionValue)) {\n const dimensionName = convertProductDimensionTypeToDimensionTypes(dimension.DimensionTypeValue);\n fullUrl.searchParams.set(dimensionName, dimensionValue!);\n }\n }\n return fullUrl.href;\n // return updateProductUrl(productUrl, context, swatch);\n};\n\nconst _renderAriaLabel = (props: IWishlistItemProps): string => {\n const { product, price, context, resources } = props;\n\n const { Name, Dimensions } = product;\n const { productDimensionTypeColor, productDimensionTypeSize, productDimensionTypeStyle } = resources;\n\n let formattedPrice = 'Free';\n let dimensions = null;\n\n if (price) {\n formattedPrice =\n price.BasePrice === 0 ? resources.freePriceText : context.cultureFormatter.formatCurrency(price.BasePrice!, price.CurrencyCode);\n }\n\n if (Dimensions) {\n dimensions = Dimensions.map(productDimension => {\n switch (productDimension.DimensionTypeValue) {\n case 1:\n return `${productDimensionTypeColor}${productDimension.DimensionValue && productDimension.DimensionValue.Value}`;\n case 3:\n return `${productDimensionTypeSize}${productDimension.DimensionValue && productDimension.DimensionValue.Value}`;\n case 4:\n return `${productDimensionTypeStyle}${productDimension.DimensionValue && productDimension.DimensionValue.Value}`;\n default:\n return '';\n }\n });\n }\n\n return `${Name} ${formattedPrice} ${(dimensions && dimensions.join('')) || ''}`;\n};\n\n/**\n * Renders a link to a product based on the given props.\n * @param input - Wishlist item props with the info about the product.\n * @param productUrl - The url to the product.\n * @returns React component with a link to a product.\n */\nconst renderProductLink = (input: IWishlistItemProps, productUrl: string) => {\n const { telemetryContent } = input;\n const { RecordId: recordId, Name: productName } = input.product;\n const payLoad = getPayloadObject('click', telemetryContent!, '', recordId.toString());\n const productAttributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const productPageUrlWithSwatch = productUrl;\n return (\n !StringExtensions.isNullOrWhitespace(productPageUrlWithSwatch) && (\n \n {productName}\n \n )\n );\n};\n\n/**\n * Renders a product name box.\n * @param productName - The text to display.\n * @returns React component with a name of a product.\n */\nconst renderProductName = (productName: string) => {\n return
{productName}
;\n};\n\n/**\n * Renders inventory information.\n * @param inventoryInformationLabel - The text to display.\n * @param inventoryLabelClassName - The component class name.\n * @returns React component.\n */\nconst renderInventoryInformationLabel = (inventoryInformationLabel: string | undefined, inventoryLabelClassName: string | undefined) => {\n const inventoryCssName = inventoryLabelClassName\n ? `ms-wishlist-items__inventory-label ${inventoryLabelClassName}`\n : 'ms-wishlist-items__inventory-label';\n return (\n !StringExtensions.isNullOrWhitespace(inventoryInformationLabel) && (\n {inventoryInformationLabel}\n )\n );\n};\n\n/**\n * Renders add to cart button.\n * @param input - Wishlist item props with the configuration.\n * @returns React component.\n */\nconst WishlistItemAddToCartButtonComponent = (input: IWishlistItemProps) => {\n const { isInStock, addToCartText, outOfStockText } = input;\n\n // Check if the product is service or not by product type.\n const isServiceItem = input.product.ItemTypeValue === ReleasedProductType.Service;\n\n const addItemAction = React.useCallback(() => {\n WishListItemActions.addToCart(input);\n }, [input]);\n\n return (\n \n {((isServiceItem || isInStock) && addToCartText) || outOfStockText}\n \n );\n};\n\n/**\n * Renders remove from wishlist button.\n * @param input - Wishlist item props with the configuration.\n * @returns React component.\n */\nconst WishlistItemRemoveFromWishlistButtonComponent = (input: IWishlistItemProps) => {\n const { removeFromWishlistText } = input;\n\n const removeItemAction = React.useCallback(() => {\n WishListItemActions.removeItem(input);\n }, [input]);\n\n return \n
{choiceSummary}
\n
\n {sortByOptions && !isRecoSearchPage && renderSort(sortByOptions)}\n
\n \n {refineMenu && isExpanded && renderRefiner(refineMenu)}\n \n {refineMenu && isExpanded && renderRefinerFooter(refineMenu, toggle, resources)}\n \n \n\n \n {errorMessage}\n {props.config.enableProdutDescription ? renderProducts(props) : renderProductCards(props)}\n {pagination}\n \n \n \n );\n};\n\n/**\n * Render Search result Modal.\n * @param modalProps - The Search Result Modal view props.\n * @param refineMenu - The Refine Menu view props.\n * @param sortByDropDown - The Sort by view props.\n * @param isRecoSearchPage - The recomandation search page flag.\n * @returns The JSX Element.\n */\nconst createSearchResultModal = (\n modalProps: ISearchResultModalViewProps,\n refineMenu: IRefineMenuViewProps,\n sortByDropDown: ISortByViewProps,\n isRecoSearchPage?: string\n): JSX.Element => {\n return React.cloneElement(\n modalProps.modal,\n {},\n modalProps.modalHeader,\n createModalBody(modalProps, refineMenu, sortByDropDown, isRecoSearchPage),\n modalProps.modalFooter\n );\n};\n\n/**\n * Render Refiner Mobile.\n * @param props - The Refine Menu view props.\n * @returns The JSX Element.\n */\nconst renderRefinerMobile = (props: IRefineMenuViewProps): JSX.Element | null => {\n const { refiners, RefineMenuContainer, RefinerSectionContainer } = props;\n if (refiners) {\n return (\n \n \n {refiners.map((submenu, index) => (\n {submenu}\n ))}\n \n \n );\n }\n return null;\n};\n\n/**\n * Render Search result Body.\n * @param props - The Search Result Modal view props.\n * @param refineMenu - The Refine Menu view props.\n * @param sortByDropDown - The Sort by view props.\n * @param isRecoSearchPage - The recomandation search page flag.\n * @returns The JSX Element.\n */\nconst createModalBody = (\n props: ISearchResultModalViewProps,\n refineMenu: IRefineMenuViewProps,\n sortByDropDown: ISortByViewProps,\n isRecoSearchPage?: string\n): JSX.Element | null => {\n if (sortByDropDown) {\n return React.cloneElement(props.modalBody, {}, renderSort(sortByDropDown, isRecoSearchPage), renderRefinerMobile(refineMenu));\n }\n return null;\n};\n\n/**\n * Render Refiner.\n * @param props - The Refine Menu view props.\n * @returns The JSX Element.\n */\nconst renderRefiner = (props: IRefineMenuViewProps): JSX.Element | null => {\n const { refiners, RefineMenuContainer, RefinerSectionContainer } = props;\n if (refiners) {\n return (\n \n \n {refiners.map((submenu, index) => (\n {submenu}\n ))}\n \n \n );\n }\n return null;\n};\n\n/**\n * Render Refiner Footer.\n * @param props - The Refine Menu view props.\n * @param handler - The Refine menu toggle function.\n * @param resources - Resources to get the done text and aria label.\n * @returns The JSX Element.\n */\nconst renderRefinerFooter = (\n props: IRefineMenuViewProps,\n handler: MouseEventHandler,\n resources: ISearchResultContainerResources\n): JSX.Element | null => {\n const { refiners } = props;\n if (refiners) {\n return (\n \n \n {resources.doneText}\n \n \n );\n }\n return null;\n};\n\n/**\n * Render sort by drop down.\n * @param props - The sort by view props.\n * @param isRecoSearchPage - The recomandation search page flag.\n * @returns The JSX Element.\n */\nconst renderSort = (props: ISortByViewProps, isRecoSearchPage?: string): JSX.Element | null => {\n const { SortingContainer, sortByDropDown } = props;\n if (sortByDropDown && !isRecoSearchPage) {\n return {sortByDropDown};\n }\n return null;\n};\n\n/**\n * Render Title.\n * @param props - The title view props.\n * @returns The JSX Element.\n */\nconst renderTitle = (props: ITitleViewProps): JSX.Element | null => {\n const { title, TitleContainer } = props;\n if (title) {\n return (\n \n \n {title.titlePrefix}\n {title.titleText}\n \n \n );\n }\n return null;\n};\n\nexport default SearchResultContainerView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Carousel } from '@msdyn365-commerce/components';\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { ICarouselViewProps } from './carousel';\n\n/**\n * Returns item slots.\n * @returns Array of item slots.\n * @param props -Props.\n */\nconst retrieveItems = (props: ICarouselViewProps): React.ReactNode[] => {\n let items = [];\n items = props.slots && props.slots.content && props.slots.content.length > 0 ? props.slots.content : [];\n return items;\n};\nconst CarouselView: React.FC = props => (\n \n \n \n);\n\nexport default CarouselView;\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 { IActiveImageAdditionalContentViewProps } from '../active-image-utilities';\nimport { IActiveImageViewProps } from './active-image';\n\n/**\n * Render Additional Content.\n * @param additionalContent - Additional content view props.\n * @returns JSX Element.\n */\nconst renderAdditionalContent = (additionalContent: IActiveImageAdditionalContentViewProps) => {\n return (\n \n {additionalContent.heading}\n \n {additionalContent.text}\n {additionalContent.links}\n \n \n );\n};\n\n/**\n * Render View.\n * @param props - The view props.\n * @returns -The JSX Element.\n */\nexport const activeImageView: React.FC = props => {\n return (\n \n \n {props.imageMapper}\n \n {props.title}\n {props.text}\n {props.additionalContent && renderAdditionalContent(props.additionalContent)}\n \n {props.links}\n \n \n \n \n {props.overlay}\n {props.productCard}\n \n \n );\n};\n\nexport default activeImageView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { createObservableDataAction, IAction, IActionContext, sendRequest } from '@msdyn365-commerce/core';\n\nimport { ReportReviewConcernInput } from './inputs/report-review-concern-input';\n\nasync function reportReviewConcern(input: ReportReviewConcernInput, ctx: IActionContext): Promise {\n if (!inputIsValid(input)) {\n throw new Error(\n `[SubmitHelpfulnessVote] Invalid input. ReviewId=${input.reviewId},tenantId=${input.tenantId},locale= ${input.locale},`\n );\n }\n\n const requestUrl =\n `${input.serviceEndpoint}/v2.0/concerns/review/${input.reviewId}` + `?tenantId=${input.tenantId}` + `&locale=${input.locale}`;\n\n const requestBody = {\n concernCategory: input.concernCategory\n };\n\n const requestHeader = {\n headers: {\n Authorization: `id_token ${input.authToken}`\n }\n };\n\n return sendRequest(requestUrl, 'post', requestBody, requestHeader)\n .then(response => {\n return response.status === 200 || response.status === 201;\n })\n .catch(error => {\n ctx.trace('[ReportReviewConcernInput] Failed to report a concern');\n ctx.telemetry.exception(error);\n ctx.telemetry.debug('[ReportReviewConcernInput] Failed to report a concern');\n return false;\n });\n}\n\nfunction inputIsValid(input: ReportReviewConcernInput): boolean {\n return input && input.reviewId.length > 0 && input.tenantId.length > 0 && input.locale.length > 0 && input.authToken.length > 0;\n}\n\nexport const reportReviewConcernDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/ratings-reviews/report-review-concern',\n action: >reportReviewConcern\n});\n\nexport default reportReviewConcernDataAction;\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 { CartLinePriceEditor, ICartLinePriceEditorResources, PriceComponent } from '@msdyn365-commerce/components';\r\nimport { IComponentProps, IGridSettings, IImageSettings, Image } from '@msdyn365-commerce/core';\r\nimport { ICartState } from '@msdyn365-commerce/global-state';\r\nimport { ChannelDeliveryOptionConfiguration, ProductDimensionType, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\r\nimport { CartLine, DiscountLine, DiscountLineType, SalesLine } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport { ArrayExtensions, getFallbackImageUrl } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { getPayloadObject, getTelemetryAttributes, IncrementalQuantity, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport classNames from 'classnames';\r\nimport * as React from 'react';\r\n\r\n/**\r\n * ICartlineResourceString: Interface for specifying the\r\n * resource strings that the component needs.\r\n */\r\nexport interface ICartlineResourceString {\r\n\r\n /** Display string for discount label. */\r\n discountStringText: string;\r\n\r\n /** String for size key. */\r\n sizeString: string;\r\n\r\n /** String for color key. */\r\n colorString: string;\r\n\r\n /** String associated with the configuration product dimension. */\r\n configString: string;\r\n\r\n /** String for style key. */\r\n styleString: string;\r\n\r\n /** String for amount key. */\r\n amountString?: string;\r\n\r\n /** Display string for quantity label. */\r\n quantityDisplayString: string;\r\n\r\n /** Display string for quantity label. */\r\n inputQuantityAriaLabel: string;\r\n\r\n /** Aria label for the decrement button in quantity component. */\r\n decrementButtonAriaLabel: string;\r\n\r\n /** Aria label for the increment button in quantity component. */\r\n incrementButtonAriaLabel: string;\r\n\r\n /** Original text screenreader. */\r\n originalPriceText: string;\r\n\r\n /** Current text screenreader. */\r\n currentPriceText: string;\r\n\r\n /** Shipping Charges Text. */\r\n shippingChargesText: string;\r\n\r\n /** Price Editor Charges Text. */\r\n priceEditorResources?: ICartLinePriceEditorResources;\r\n}\r\n\r\n/**\r\n * Represents cart line data interface.\r\n */\r\ninterface ICartLineData {\r\n cartLine: CartLine | SalesLine;\r\n cartState?: ICartState;\r\n product?: SimpleProduct;\r\n}\r\n\r\n/**\r\n * ICartLineProps: The props required to render cartLineitem.\r\n */\r\nexport interface ICartLineProps extends IComponentProps {\r\n\r\n /** The flag to change the quantity component from interactible to static. */\r\n disableQuantityInteractivity?: boolean;\r\n\r\n /** The primary image url. */\r\n primaryImageUrl?: string;\r\n\r\n /** The product url. */\r\n productUrl?: string;\r\n\r\n /** GridSettings for the product image in cartLine. */\r\n gridSettings: IGridSettings;\r\n\r\n /** ImageSettings for the product image in cartLine. */\r\n imageSettings: IImageSettings;\r\n\r\n /** Boolean flag to indicate if the item is out of stock. */\r\n isOutOfStock?: boolean;\r\n\r\n /** Flag to make quantity section editable. */\r\n isQuantityEditable?: boolean;\r\n\r\n /** Max quantity for line item. */\r\n maxQuantity?: number;\r\n\r\n /** Current quantity for line item. */\r\n currentQuantity?: number;\r\n\r\n /** Resource string for the component. */\r\n resources: ICartlineResourceString;\r\n\r\n /** SalesLine flag. */\r\n isSalesLine?: boolean;\r\n\r\n /** Error message to show in place of quantity. */\r\n errorMessage?: string;\r\n\r\n /** Inventory information label. */\r\n inventoryInformationLabel?: string;\r\n\r\n /** Inventory information class name. */\r\n inventoryLabelClassName?: string;\r\n\r\n /** Flag to show/hide shipping charges for line items. */\r\n showShippingChargesForLineItems?: boolean;\r\n\r\n /** Boolean flag to indicate if cart state status is ready. */\r\n isCartStateReady?: boolean;\r\n\r\n /** Chanel Delivery Option configuration is from api. */\r\n channelDeliveryOptionConfig?: ChannelDeliveryOptionConfiguration;\r\n\r\n /** The telemetry content. */\r\n telemetryContent?: ITelemetryContent;\r\n\r\n /** Quantity onChange callback. */\r\n quantityOnChange?(cartLine: CartLine, newQuantity: number): boolean;\r\n}\r\n\r\n/**\r\n * Represents dimensions strings.\r\n */\r\ninterface IDimensionStrings {\r\n\r\n /** String for size key. */\r\n sizeString: string;\r\n\r\n /** String for color key. */\r\n colorString: string;\r\n\r\n /** String associated with the configuration product dimension. */\r\n configString: string;\r\n\r\n /** String for style key. */\r\n styleString: string;\r\n\r\n /** String for amount key. */\r\n amountString?: string;\r\n}\r\n\r\nconst cartLineItemFunctions = {\r\n\r\n /**\r\n * Render product dimensions.\r\n * @param product - Product data.\r\n * @param dimensionStrings - Dimension strings interface.\r\n * @returns JSX Element.\r\n */\r\n renderProductDimensions: (product: SimpleProduct, dimensionStrings: IDimensionStrings) => {\r\n if (!product.Dimensions) {\r\n return [];\r\n }\r\n\r\n return product.Dimensions.map(productDimension => {\r\n\r\n if (productDimension.DimensionTypeValue === ProductDimensionType.Color) {\r\n return (\r\n
\r\n \r\n {dimensionStrings.colorString}\r\n {': '}\r\n \r\n {productDimension.DimensionValue?.Value}\r\n \r\n \r\n
\r\n );\r\n }\r\n\r\n if (productDimension.DimensionTypeValue === ProductDimensionType.Configuration) {\r\n return (\r\n
\r\n \r\n {dimensionStrings.configString}\r\n {': '}\r\n \r\n {productDimension.DimensionValue?.Value}\r\n \r\n \r\n
\r\n );\r\n }\r\n\r\n if (productDimension.DimensionTypeValue === ProductDimensionType.Size) {\r\n return (\r\n
\r\n \r\n {dimensionStrings.sizeString}\r\n {': '}\r\n \r\n {productDimension.DimensionValue?.Value}\r\n \r\n \r\n
\r\n );\r\n }\r\n\r\n if (productDimension.DimensionTypeValue === ProductDimensionType.Style) {\r\n return (\r\n
\r\n \r\n {product.IsGiftCard ? dimensionStrings.amountString : dimensionStrings.styleString}\r\n {': '}\r\n \r\n {productDimension.DimensionValue?.Value}\r\n \r\n \r\n
\r\n );\r\n }\r\n return null;\r\n });\r\n },\r\n\r\n /**\r\n * Gets the react node for product unit of price display.\r\n * @param props - The cart line props.\r\n * @returns The node representing markup for unit of measure component.\r\n */\r\n renderProductUnitPrice: (props: ICartLineProps) => {\r\n if (!props.data.cartLine.Price) {\r\n return null;\r\n }\r\n const zeroQuantity: number = 0;\r\n return (\r\n
\r\n \r\n zeroQuantity ? {\r\n price: {\r\n CustomerContextualPrice: props.data.cartLine.Price\r\n }\r\n } : {\r\n price: {\r\n CustomerContextualPrice: props.data.cartLine.Price\r\n }\r\n }}\r\n context={props.context}\r\n id={props.id}\r\n typeName={props.typeName}\r\n />\r\n \r\n
\r\n );\r\n },\r\n\r\n /**\r\n * Render discount lines.\r\n * @param props - The cart line props.\r\n * @returns JSX element.\r\n */\r\n renderDiscountLines: (props: ICartLineProps) => {\r\n\r\n if (!props.data.cartLine.DiscountLines || !ArrayExtensions.hasElements(props.data.cartLine.DiscountLines)) {\r\n return null;\r\n }\r\n\r\n /**\r\n * Get the updated discount percentage.\r\n * @param discountLine - The discount line.\r\n * @param cartLine - The cart line.\r\n * @returns The updated discount percentage.\r\n */\r\n const discountPercent = (discountLine: DiscountLine, cartLine: CartLine): number => {\r\n const numberZero = 0;\r\n const decimalPrecision = 2;\r\n const fullPercentage = 100;\r\n let updatedPercent: number = discountLine.Percentage ?? numberZero;\r\n\r\n if ((discountLine.Percentage === numberZero ||\r\n (discountLine.DiscountLineTypeValue && discountLine.DiscountLineTypeValue === DiscountLineType.TenderTypeDiscount)) &&\r\n cartLine.Price && cartLine.Price > numberZero && cartLine.Quantity && cartLine.Quantity !== numberZero) {\r\n const effectiveAmount = discountLine.EffectiveAmount ?? numberZero;\r\n updatedPercent = Number(((effectiveAmount / (cartLine.Price * cartLine.Quantity)) * fullPercentage).toFixed(decimalPrecision));\r\n }\r\n\r\n return updatedPercent;\r\n };\r\n\r\n return props.data.cartLine.DiscountLines.map((discountLine, index) => {\r\n return (\r\n
\r\n \r\n {discountLine.OfferName ? discountLine.OfferName : ''}\r\n \r\n \r\n \r\n \r\n \r\n {` (${discountLine.Percentage !== undefined ? discountPercent(discountLine, props.data.cartLine) : ''}%)`}\r\n \r\n
\r\n );\r\n });\r\n },\r\n\r\n /**\r\n * Render inventory label.\r\n * @param props - The cart line props.\r\n * @returns JSX element.\r\n */\r\n renderInventoryLabel: (props: ICartLineProps) => {\r\n const inventoryCssName = props.inventoryLabelClassName ? (\r\n `msc-cart-line__product-inventory-label ${props.inventoryLabelClassName}`) : 'msc-cart-line__product-inventory-label';\r\n\r\n return (\r\n

\r\n {props.inventoryInformationLabel}\r\n

\r\n );\r\n },\r\n\r\n /**\r\n * Render shipping label.\r\n * @param props - The cart line props.\r\n * @returns JSX element.\r\n */\r\n renderShippingLabel: (props: ICartLineProps) => {\r\n const pickupDeliveryModeCode = props.context.request.channel?.PickupDeliveryModeCode;\r\n const channelDeliveryOptionConfig = props.channelDeliveryOptionConfig;\r\n const cartline = props.data.cartLine;\r\n let hasShippingMethod = false;\r\n if (channelDeliveryOptionConfig !== undefined) {\r\n hasShippingMethod = !!(cartline.DeliveryMode && channelDeliveryOptionConfig.PickupDeliveryModeCodes?.some(\r\n deliveryMode => deliveryMode !== cartline.DeliveryMode));\r\n } else {\r\n hasShippingMethod = !!(cartline.DeliveryMode && cartline.DeliveryMode !== pickupDeliveryModeCode);\r\n }\r\n if (!hasShippingMethod) {\r\n return undefined;\r\n }\r\n\r\n const shippingChargeLines = (cartline.ChargeLines ?? []).filter(chargeLine => chargeLine.IsShipping);\r\n\r\n if (!ArrayExtensions.hasElements(shippingChargeLines)) {\r\n return undefined;\r\n }\r\n\r\n const defaultCharge: number = 0;\r\n const freightFee = shippingChargeLines.reduce((chargeTotal, chargeLine) => {\r\n return chargeTotal + (chargeLine.CalculatedAmount ?? defaultCharge);\r\n }, defaultCharge);\r\n\r\n const priceComponent = (\r\n \r\n );\r\n return (\r\n <>\r\n \r\n \r\n {priceComponent}\r\n \r\n \r\n );\r\n },\r\n\r\n /**\r\n * Render other charges.\r\n * @param props - The cart line props.\r\n * @returns JSX element.\r\n */\r\n renderOtherCharges: (props: ICartLineProps) => {\r\n const cartline = props.data.cartLine;\r\n const otherCharges = cartline.ChargeLines?.filter((chargeline) => !chargeline.IsShipping);\r\n\r\n return otherCharges?.map((otherCharge, index) => {\r\n const itemIndex = index;\r\n return otherCharge.CalculatedAmount ? (\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n ) : '';\r\n }) ?? undefined;\r\n }\r\n};\r\n\r\n/**\r\n * Render cartline component.\r\n * @param props - The cart line props.\r\n * @returns JSX element.\r\n */\r\nconst CartLine: React.FC = (props: ICartLineProps) => {\r\n const { isSalesLine, productUrl, resources } = props;\r\n const { product, cartLine } = props.data;\r\n\r\n const destructDimensionStrings = {\r\n sizeString: resources.sizeString,\r\n colorString: resources.colorString,\r\n styleString: resources.styleString,\r\n configString: resources.configString,\r\n amountString: resources.amountString\r\n };\r\n\r\n const fallbackImageUrl = product && getFallbackImageUrl(product.ItemId, props.context.actionContext.requestContext.apiSettings);\r\n const productDimensions = product && cartLineItemFunctions.renderProductDimensions(product, destructDimensionStrings);\r\n const renderProductUnitPrice = cartLineItemFunctions.renderProductUnitPrice(props);\r\n const imageSettings = props.imageSettings;\r\n if (imageSettings) {\r\n imageSettings.cropFocalRegion = true;\r\n }\r\n const renderDiscountLines = cartLineItemFunctions.renderDiscountLines(props);\r\n const renderInventoryLabel = cartLineItemFunctions.renderInventoryLabel(props);\r\n const renderShippingLabel = cartLineItemFunctions.renderShippingLabel(props);\r\n const renderOtherCharges = cartLineItemFunctions.renderOtherCharges(props);\r\n const payLoad = getPayloadObject('click', props.telemetryContent!, '', product?.RecordId.toString());\r\n const productAttribute = getTelemetryAttributes(props.telemetryContent!, payLoad);\r\n const productName = product?.Name ?? cartLine.Description;\r\n const imgeClassName = props.data.cartLine.IsInvoiceLine ? 'msc-cart-line__invoice-image' : 'msc-cart-line__product-image';\r\n const cartLineContentClassName = props.data.cartLine.IsInvoiceLine ? 'msc-cart-line__invoice-content' : 'msc-cart-line__content';\r\n\r\n /**\r\n * Render other charges.\r\n * @param newValue - The cart line props.\r\n * @returns Boolean.\r\n */\r\n const onChange = (newValue: number): boolean => {\r\n if (props.quantityOnChange) {\r\n return props.quantityOnChange(props.data.cartLine, newValue);\r\n }\r\n return true;\r\n };\r\n\r\n /**\r\n * Generate error message.\r\n * @returns JSX element.\r\n */\r\n const generateErrorMessage = (): JSX.Element | null => {\r\n if (props.errorMessage) {\r\n return (\r\n
\r\n \r\n \r\n {props.errorMessage}\r\n \r\n
\r\n );\r\n }\r\n\r\n return null;\r\n };\r\n\r\n /**\r\n * Render Saving component.\r\n * @returns JSX element.\r\n */\r\n // const renderSaving = (): JSX.Element | null => {\r\n\r\n // if (!props.data.cartLine.DiscountAmount) {\r\n // return null;\r\n // }\r\n // const discountAmountZero: number = 0;\r\n\r\n // if (props.data.cartLine.DiscountAmount > discountAmountZero) {\r\n // return (\r\n // <>\r\n // \r\n // {`${props.resources.discountStringText || 'Discount'}`}\r\n // \r\n // \r\n // \r\n // );\r\n // }\r\n // return null;\r\n // };\r\n\r\n /**\r\n * Gets the react node for product unit of measure display.\r\n * @returns The node representing markup for unit of measure component.\r\n */\r\n const renderUnitOfMeasure = () => {\r\n\r\n if (props.data.cartLine.IsInvoiceLine) {\r\n return null;\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- Do not need type check for appsettings\r\n if (!props.context.app.config.unitOfMeasureDisplayType || props.context.app.config.unitOfMeasureDisplayType === 'none') {\r\n return undefined;\r\n }\r\n\r\n if (!product || !product.DefaultUnitOfMeasure) {\r\n return undefined;\r\n }\r\n\r\n return (\r\n
\r\n \r\n {product.DefaultUnitOfMeasure}\r\n \r\n
\r\n );\r\n };\r\n\r\n /**\r\n * Generate quantity and price component.\r\n * @returns JSX element.\r\n */\r\n const generateQuantityAndPrice = (): JSX.Element[] | null => {\r\n const nodes = [];\r\n const defaultMaxQuantity: number = 10;\r\n const singleQuantity: number = 1;\r\n const unitOfMeasure = renderUnitOfMeasure();\r\n // No quantity selector for invoice line\r\n if (!props.data.cartLine.IsInvoiceLine) {\r\n if (props.data.product && props.isQuantityEditable) {\r\n nodes.push(\r\n
\r\n
\r\n {resources.quantityDisplayString}\r\n
\r\n\r\n {generateErrorMessage()}\r\n\r\n \r\n {unitOfMeasure}\r\n
\r\n );\r\n } else {\r\n nodes.push(\r\n
\r\n {unitOfMeasure}\r\n \r\n\r\n {generateErrorMessage()}\r\n\r\n \r\n {props.data.cartLine.Quantity}\r\n \r\n
\r\n );\r\n }\r\n }\r\n\r\n nodes.push(\r\n
\r\n \r\n {/* {\r\n renderSaving()\r\n } */}\r\n {props.isOutOfStock ? renderInventoryLabel : null}\r\n
\r\n );\r\n\r\n return nodes;\r\n };\r\n\r\n return (\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n {productName}\r\n \r\n {ArrayExtensions.hasElements(productDimensions) ?
\r\n {productDimensions}\r\n
: ''}\r\n
\r\n \r\n {renderUnitOfMeasure()}\r\n
\r\n {renderProductUnitPrice}\r\n {renderInventoryLabel}\r\n {renderDiscountLines}\r\n {props.showShippingChargesForLineItems &&
\r\n {renderShippingLabel}\r\n
}\r\n {renderOtherCharges}\r\n
\r\n {\r\n generateQuantityAndPrice()\r\n }\r\n {\r\n props.data.cartLine.IsInvoiceLine && props.data.cartState && props.resources.priceEditorResources && \r\n }\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default CartLine;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IProductsDimensionsAvailabilities } from '@msdyn365-commerce/commerce-entities';\nimport { IPriceComponentResources, ProductComponent } from '@msdyn365-commerce/components';\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getCatalogId, getUrlSync, ICoreContext } from '@msdyn365-commerce/core';\nimport { ProductPrice, ProductSearchResult } from '@msdyn365-commerce/retail-proxy';\nimport {\n ArrayExtensions,\n DimensionAvailabilitiesForProductSearchResultInput,\n DimensionTypes,\n DimensionSwatchDisplayTypes,\n getDimensionAvailabilitiesForProductSearchResultAction,\n getPriceForProductSearchResult,\n IDimensionsApp,\n ObjectExtensions,\n PriceForProductSearchResultInput,\n validateCatalogId\n} from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getTelemetryObject,\n IComponentNodeProps,\n IModuleProps,\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 { IProductCollectionData } from './product-collection.data';\nimport { IProductCollectionProps, layout } from './product-collection.props.autogenerated';\n\nexport interface IProductCollectionViewProps extends IProductCollectionProps {\n heading?: React.ReactNode;\n ProductCollectionContainer: IModuleProps;\n SingleSlideCarouselComponentProps: INodeProps;\n GridComponentProps: INodeProps;\n products: IProductComponentViewProps[];\n isCarousel: boolean;\n productPrices?: ProductPrice[];\n seeAllButton?: React.ReactNode;\n}\n\nexport interface IProductComponentViewProps {\n ProductContainer: INodeProps;\n productComponent: React.ReactNode;\n}\nexport interface IProductComponentState {\n products: ProductSearchResult[];\n productsDimensionAvailabilities?: IProductsDimensionsAvailabilities[][];\n}\n\n/**\n * ProductCollection component.\n */\nclass ProductCollection extends React.PureComponent, IProductComponentState> {\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly productPrices: ProductPrice[];\n\n constructor(props: IProductCollectionProps) {\n super(props);\n this.productPrices = [];\n this.state = {\n products: this.props.config.productCollection.products || []\n };\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public async componentDidMount(): Promise {\n if (this.props.config.enableAffiliationBasedPricing && this.props.context.actionContext.requestContext.user.isAuthenticated) {\n await this._getActivePrice();\n }\n }\n\n public render(): JSX.Element | null {\n const { heading, className, shouldDisplaySeeAllButton } = this.props.config;\n const { resources } = this.props;\n const recommendation = this.props.config.productCollection.recommendationListId;\n\n // Initialize state in case if the products were not found during initial module render\n // eslint-disable-next-line @typescript-eslint/no-floating-promises -- Initialize data if not there.\n this.initProductState(this.props.config.productCollection);\n\n const products = this.state.products;\n const isCarousel = this.props.config.layout === layout.carousel;\n const headingLabel = heading ? heading.text : '';\n const headingComponent = heading && (\n \n );\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- product check for safety.\n const updatedProducts = products?.map((item: ProductSearchResult, index: number) => {\n const getProductData = this._getProduct(item, index);\n return !ObjectExtensions.isNullOrUndefined(getProductData) ? getProductData : undefined;\n });\n\n const productCollectionViewProps = {\n ...this.props,\n heading: headingComponent,\n SingleSlideCarouselComponentProps: {\n tag: SingleSlideCarousel,\n className: '',\n flipperPrevLabel: `${headingLabel} ${resources.flipperPrevious}`,\n flipperNextLabel: `${headingLabel} ${resources.flipperNext}`,\n parentId: this.props.id,\n telemetryContent: this.telemetryContent\n } as IComponentNodeProps,\n ProductCollectionContainer: {\n moduleProps: this.props,\n className: classnames('ms-product-collection', className)\n },\n GridComponentProps: {\n tag: 'ul' as NodeTag,\n className: 'ms-product-collection__items'\n },\n isCarousel,\n\n products:\n ArrayExtensions.hasElements(updatedProducts) &&\n updatedProducts.filter(item => {\n return item !== undefined;\n }),\n productPrices: this.productPrices,\n seeAllButton:\n recommendation && shouldDisplaySeeAllButton && ArrayExtensions.hasElements(updatedProducts)\n ? this._getSeeAllButton(recommendation, headingLabel)\n : undefined\n };\n return this.props.renderView(productCollectionViewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading!.text = event.target.value);\n\n /**\n * Get products dimension availabilities.\n * @param products - Products.\n * @returns Promise.\n */\n private readonly _getProductsDimensionsAvailabilities = async (products: ProductSearchResult[]): Promise => {\n const context = this.props.context as ICoreContext;\n const dimensionsToDisplayOnProductCard = context.app.config.dimensionsInProductCard;\n const dimensionsToDisplayAsSwatch = context.app.config.dimensionsAsSwatchType;\n const validProducts = ArrayExtensions.validValues(products);\n if (\n ArrayExtensions.hasElements(validProducts) &&\n ArrayExtensions.hasElements(dimensionsToDisplayOnProductCard) &&\n !dimensionsToDisplayOnProductCard.includes(DimensionTypes.none) &&\n ArrayExtensions.hasElements(dimensionsToDisplayAsSwatch) &&\n !dimensionsToDisplayAsSwatch.includes(DimensionTypes.none)\n ) {\n const productsDimensionAvailabilities = await getDimensionAvailabilitiesForProductSearchResultAction(\n new DimensionAvailabilitiesForProductSearchResultInput(\n validProducts,\n this.props.context as ICoreContext,\n DimensionSwatchDisplayTypes.productCard\n ),\n this.props.context.actionContext\n );\n\n if (ArrayExtensions.hasElements(productsDimensionAvailabilities)) {\n this.setState({ productsDimensionAvailabilities });\n }\n }\n };\n\n /**\n * Helper method to initialize products state.\n * @param productCollection - List of products.\n */\n private readonly initProductState = async (productCollection: Msdyn365.IProductList) => {\n let products = this.state.products;\n const productCollectionProducts = productCollection.products;\n if (!ArrayExtensions.hasElements(products) && ArrayExtensions.hasElements(productCollectionProducts)) {\n products = productCollectionProducts;\n this.setState({ products });\n } else if (\n ArrayExtensions.hasElements(products) &&\n ArrayExtensions.hasElements(productCollectionProducts) &&\n !ArrayExtensions.equals(products, productCollectionProducts)\n ) {\n products = productCollectionProducts;\n this.setState({ products });\n } else if (productCollectionProducts === undefined && ArrayExtensions.hasElements(this.state.products)) {\n products = [];\n this.setState({ products: products });\n }\n\n if (Msdyn365.msdyn365Commerce.isBrowser && !ArrayExtensions.hasElements(this.state.productsDimensionAvailabilities)) {\n await this._getProductsDimensionsAvailabilities(products);\n }\n };\n\n private readonly _getProduct = (product: ProductSearchResult, index: number): IProductComponentViewProps | null => {\n if (!product || !product.Name) {\n this.props.telemetry.trace('[product-collection] Product or product name is null');\n return null;\n }\n const telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n const { imageSettings, allowBackNavigation } = this.props.config;\n const resources = this.props.resources;\n const breaCrumbType = this.props.context.app.config.breadcrumbType;\n const allowBack = allowBackNavigation && (breaCrumbType === 'back' || breaCrumbType === 'categoryAndBack');\n const quickviewSlot =\n this.props.slots && this.props.slots.quickview && this.props.slots.quickview.length > 0 ? this.props.slots.quickview[0] : null;\n const productComparisonButtonSlot = ArrayExtensions.hasElements(this.props.slots.productComparisonButton)\n ? this.props.slots.productComparisonButton[0]\n : null;\n\n const reviewCount = 1;\n const reviewTotalRatings = Number(product.TotalRatings);\n const reviewCountAriaLabelValue =\n reviewTotalRatings > reviewCount ? resources.ratingCountAriaLabel : resources.ratingCountAriaLabelSingleUser;\n const isPriceMinMaxEnabled = this.props.data.featureState.result?.find(\n featureState => featureState.Name === 'Dynamics.AX.Application.RetailSearchPriceRangeFeature'\n );\n const priceResources: IPriceComponentResources = {\n priceRangeSeparator: resources.priceRangeSeparator\n };\n return {\n ProductContainer: {\n tag: 'li' as NodeTag,\n className: 'ms-product-collection__item',\n role: 'listitem',\n key: index\n },\n productComponent: (\n \n ArrayExtensions.hasElements(dimensionAvailability) &&\n dimensionAvailability[0].masterProductId === (product.MasterProductId ?? product.RecordId)\n )}\n />\n )\n };\n };\n\n /**\n * Get the active price for products.\n */\n private readonly _getActivePrice = async (): Promise => {\n const productsList = this.state.products;\n const products = await getPriceForProductSearchResult(\n new PriceForProductSearchResultInput(productsList),\n this.props.context.actionContext\n );\n if (Msdyn365.msdyn365Commerce.isBrowser) {\n await this._getProductsDimensionsAvailabilities(products);\n }\n\n this.setState({ products });\n };\n\n /**\n * Get the see all button.\n * @param recommendation - Recommendation.\n * @param headingLabel - Heading label.\n * @returns IProductComponentSeeAllViewProps - Product component see all view props.\n */\n private readonly _getSeeAllButton = (recommendation: string, headingLabel: string): React.ReactNode => {\n if (!Msdyn365.msdyn365Commerce.isBrowser) {\n return null;\n }\n\n const catalogId = getCatalogId(this.props.context.request);\n validateCatalogId(catalogId);\n const searchPageLink = getUrlSync('search', this.props.context.actionContext);\n if (!searchPageLink) {\n return null;\n }\n\n const url = new URL(searchPageLink, window.location.href);\n url.searchParams.set('recommendation', recommendation);\n url.searchParams.set('title', headingLabel);\n url.searchParams.set('catalogid', `${catalogId}`);\n\n return (\n \n {this.props.resources.seeAllButtonText}\n \n );\n };\n}\n\nexport default ProductCollection;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IModule } from '@msdyn365-commerce/core';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport isMatch from 'lodash/isMatch';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { getModuleStates, updateModuleStates } from './module-state';\nimport { IModuleState, IModuleStateManager, IModuleStateProps, IModuleStates } from './module-state.data';\n\nexport interface IProps extends IModule, IModuleStateProps {\n enableControl?: boolean;\n}\n\nconst sectionContainerModuleId = 'section-container';\nconst paymentInstrumentModuleId = 'payment-instrument';\n\nconst withModuleState =

(WrappedComponent: React.ComponentType

): React.ComponentType

=> {\n /**\n *\n * ModuleState component.\n * @extends {React.Component

}\n */\n @observer\n class ModuleState extends React.Component

{\n constructor(props: P) {\n super(props);\n this.initializeState();\n }\n\n public shouldComponentUpdate(nextProps: IModuleStateProps): boolean {\n if (this.props === nextProps) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n const { id } = this.props;\n return ;\n }\n\n private readonly initializeState = (): void => {\n const { id, typeName, context } = this.props;\n const states = getModuleStates(context.actionContext);\n if (!states) {\n this.props.telemetry.error('withModuleState initializeState() - states not found');\n return;\n }\n\n if (states[id]) {\n // State has been initialized\n return;\n }\n\n updateModuleStates(\n {\n ...states,\n [id]: {\n id,\n typeName,\n hasInitialized: false,\n hasError: false,\n isRequired: true,\n isCancellable: true,\n isSubmitContainer: false,\n status: undefined,\n childIds: []\n }\n },\n context.actionContext\n );\n };\n\n /**\n * GetModuleStateManager\n * Get module state manager by id.\n * @param id\n */\n private readonly getModuleStateManager = (id: string): IModuleStateManager => {\n const moduleState = this.get()[id];\n return {\n ...moduleState!,\n hasInitialized: this.validate(id, { hasInitialized: true }, true), // All has initialized is initialized\n hasError: this.validate(id, { hasError: true }), // Partial has error is error\n isReady: this.validate(id, { status: 'ready' }, true, true), // All ready is ready (exclued disabled and skipped)\n isUpdating: this.validate(id, { status: 'updating' }), // Partial updating is updating\n isPending: this.validate(id, { status: 'pending' }), // Partial pending is pending\n isSkipped: this.validate(id, { status: 'skipped' }, true, true), // All skipped is skipped (exclued disabled)\n isDisabled: this.validate(id, { status: 'disabled' }, true), // All disabled is disabled\n isCancelAllowed: this.validate(id, { isCancellable: true }, true, true), // Partial not allowed is not allowed\n shouldSubmitContainer: this.validate(id, { isSubmitContainer: true }), // Partial submit is submit.\n hasExternalSubmitGroup: this.hasExternalSubmitGroup(),\n hasModuleState: this.hasModuleState(id),\n setIsRequired: (value: boolean): void => {\n this.update(id, { isRequired: value });\n },\n setIsCancellable: (value: boolean): void => {\n this.update(id, { isCancellable: value });\n },\n setIsSubmitContainer: (value: boolean): void => {\n this.update(id, { isSubmitContainer: value });\n },\n setHasError: (value: boolean): void => {\n this.update(id, { hasError: value });\n },\n onReady: (): void => {\n this.update(id, { status: 'ready' });\n },\n onUpdating: (): void => {\n this.update(id, { status: 'updating' });\n },\n onPending: (): void => {\n this.update(id, { status: 'pending' });\n },\n onSkip: (): void => {\n this.update(id, { status: 'skipped' });\n },\n onDisable: (): void => {\n this.update(id, { status: 'disabled' });\n },\n getModule: (moduleId: string): IModuleStateManager => this.getModuleStateManager(moduleId),\n getModuleByTypeName: (typeName: string): IModuleStateManager => this.getModuleStateManagerByTypeName(typeName),\n init: (options?: Partial): void => {\n if (moduleState?.hasInitialized) {\n // State has been initialized\n return;\n }\n this.update(id, {\n hasInitialized: true,\n ...options\n });\n }\n };\n };\n\n /**\n * GetModuleStateManagerByTypeName\n * Get module state manager by type name.\n * @param typeName\n */\n private readonly getModuleStateManagerByTypeName = (typeName: string): IModuleStateManager => {\n const moduleStates = getModuleStates(this.props.context.actionContext);\n const moduleState = Object.values(moduleStates).find(_moduleState => _moduleState?.typeName === typeName);\n return this.getModuleStateManager((moduleState && moduleState.id) || '');\n };\n\n /**\n * Get\n * Get all module states.\n */\n private readonly get = (): IModuleStates => {\n return getModuleStates(this.props.context.actionContext);\n };\n\n /**\n * Update\n * Update module state.\n * @param id\n * @param value\n */\n private readonly update = (id: string, value: Partial): void => {\n // Console.log('withModuleState - update', id, value);\n const modules = this.get();\n if (!modules[id]) {\n this.props.telemetry.error(`withModuleState update() - Module state with id ${id} is not found.`);\n return;\n }\n modules[id] = {\n ...modules[id]!,\n ...value\n };\n };\n\n private readonly _validateLeaf = (id: string, source: Partial): boolean => {\n const modules = this.get();\n const module = modules[id];\n if (!module) {\n return false;\n }\n return isMatch(module, source);\n };\n\n private readonly _validateContainer = (\n id: string,\n source: Partial,\n allMatched?: boolean,\n skipSkippableItem?: boolean\n ): boolean => {\n const modules = this.get();\n const module = modules[id];\n if (!module) {\n // Module doesn't has module state\n return !!allMatched;\n }\n\n if (skipSkippableItem && (module.status === 'disabled' || module.status === 'skipped')) {\n // Skip disabled or skipped modules\n return !!allMatched;\n }\n\n // It is leaf module\n if (!module.childIds || module.childIds.length === 0) {\n return this._validateLeaf(id, source);\n }\n\n let childIds = module.childIds;\n\n if (this.props.context.app.config.shouldEnableSinglePaymentAuthorizationCheckout) {\n // For new checkout flow, we bypass the isReady check for payment section container to enable the place order button.\n childIds = childIds.filter(childId => !this._isPaymentSectionContainer(childId));\n }\n\n // It is container module\n const method = allMatched ? 'every' : 'some';\n return childIds[method](childId => this._validateContainer(childId, source, allMatched, skipSkippableItem));\n };\n\n /**\n * Check if it is a section container with payment module.\n * @param moduleId -- The id of the module.\n * @returns If it is a section container with payment module.\n */\n private readonly _isPaymentSectionContainer = (moduleId: string): boolean => {\n if (!moduleId.includes(sectionContainerModuleId)) {\n return false;\n }\n\n const modules = this.get();\n const module = modules[moduleId];\n\n if (module && ArrayExtensions.hasElements(module.childIds.filter(childId => childId.includes(paymentInstrumentModuleId)))) {\n return true;\n }\n\n return false;\n };\n\n /**\n * Validate\n * Validate current module and all its child module match the provided condition.\n * @param id\n * @param source\n * @param allMatched\n * @param skipSkippableItem\n */\n private readonly validate = (\n id: string,\n source: Partial,\n allMatched?: boolean,\n skipSkippableItem?: boolean\n ): boolean => {\n const modules = this.get();\n const module = modules[id];\n if (!module) {\n return false;\n }\n\n // It is leaf module\n if (!module.childIds || module.childIds.length === 0) {\n return this._validateLeaf(id, source);\n }\n\n // It is container module\n return this._validateContainer(id, source, allMatched, skipSkippableItem);\n };\n\n /**\n * HasExternalSubmitGroup\n * Module will use external submit group.\n */\n private readonly hasExternalSubmitGroup = (): boolean => {\n return !!this.props.enableControl;\n };\n\n /**\n * HasModuleState\n * Module is using module state manager.\n * @param id\n */\n private readonly hasModuleState = (id: string): boolean => {\n const modules = this.get();\n const module = modules[id];\n return !!module;\n };\n }\n\n return ModuleState;\n};\n\nexport default withModuleState;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Alert, Button, INodeProps, NodeTag } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { showAdditionalFields } from '../checkout-gift-card.props.autogenerated';\n\nexport interface IGetFormInput {\n errorMessage: string;\n giftCardNumber: string;\n giftCardPin: string;\n giftCardExp: string;\n inputRef?: React.RefObject;\n inputPinRef?: React.RefObject;\n inputExpRef?: React.RefObject;\n supportExternalGiftCard?: boolean;\n additionalFields?: showAdditionalFields;\n disableAddGiftCard?: boolean;\n resources: {\n applyGiftCardButton: string;\n giftCardFormLabel: string;\n giftCardNumberLabel: string;\n giftCardPinLabel: string;\n giftCardExpLabel: string;\n giftCardAlertLabel: string;\n giftCardPinPlaceholderText: string;\n giftCardExpPlaceholderText: string;\n };\n onEnterGiftCardNumber(giftCardNumber: string): void;\n onEnterGiftCardPin(giftCardPin: string): void;\n onEnterGiftCardExp(giftCardExp: string): void;\n onApplyGiftCard(): Promise;\n}\n\nexport interface IForm {\n formProps: INodeProps;\n label: React.ReactNode;\n inputPinLabel: React.ReactNode;\n inputExpLabel: React.ReactNode;\n alert: React.ReactNode;\n inputProps: INodeProps;\n inputNumProps: INodeProps;\n inputPinProps: INodeProps;\n inputExpProps: INodeProps;\n inputNumber: React.ReactNode;\n inputPin: React.ReactNode;\n inputExp: React.ReactNode;\n applyButton: React.ReactNode;\n supportExternalGiftCard: boolean | undefined;\n showGiftCardPinInput: boolean | undefined;\n showGiftCardExpInput: boolean | undefined;\n alertFieldLabel: React.ReactNode;\n}\n\n/**\n * On Apply Function.\n * @param onApplyGiftCard -On Apply Gift Card Function.\n * @returns Call of Apply Gift Card Function.\n */\nconst onApplyHandler = (onApplyGiftCard: () => Promise) => async (event: React.SyntheticEvent): Promise => {\n event.preventDefault();\n await onApplyGiftCard();\n};\n\n/**\n * On change number Function.\n * @param onEnterGiftCardNumber -On enter gift card number Function.\n * @returns Call of on enter gift card number Function.\n */\nconst onChangeNumberHandler = (onEnterGiftCardNumber: (giftCardNumber: string) => void) => (event: React.ChangeEvent) => {\n const value = (event.target.value || '').replace(new RegExp('[<>]', 'gi'), '');\n onEnterGiftCardNumber(value);\n};\n\n/**\n * On Change pin event.\n * @param onEnterGiftCardPin -On enter gift card pin Function.\n * @returns Call of on enter gift card pin Function.\n */\nconst onChangePinHandler = (onEnterGiftCardPin: (giftCardPin: string) => void) => (event: React.ChangeEvent) => {\n const value = (event.target.value || '').replace(new RegExp('[<>]', 'gi'), '');\n onEnterGiftCardPin(value);\n};\n\n/**\n * On Change Event.\n * @param onEnterGiftCardExp -On enter gift card function.\n * @returns Call of On enter gift card function.\n */\n// Need to filter out the month and year\nconst onChangeExpHandler = (onEnterGiftCardExp: (giftCardExp: string) => void) => (event: React.ChangeEvent) => {\n const value = (event.target.value || '').replace(new RegExp('[<>]', 'gi'), '');\n onEnterGiftCardExp(value);\n};\n\nexport const getForm = (options: IGetFormInput): IForm => {\n const {\n errorMessage,\n inputRef,\n inputPinRef,\n inputExpRef,\n giftCardNumber,\n giftCardPin,\n giftCardExp,\n onEnterGiftCardNumber,\n onEnterGiftCardPin,\n onEnterGiftCardExp,\n onApplyGiftCard,\n supportExternalGiftCard,\n additionalFields,\n disableAddGiftCard,\n resources: {\n applyGiftCardButton,\n giftCardFormLabel,\n giftCardNumberLabel,\n giftCardPinLabel,\n giftCardExpLabel,\n giftCardAlertLabel,\n giftCardPinPlaceholderText,\n giftCardExpPlaceholderText\n }\n } = options;\n\n const formProps = {\n className: classnames('ms-checkout-gift-card__form', { 'is-invalid': !!errorMessage }),\n onSubmit: onApplyHandler(onApplyGiftCard),\n tag: 'form' as NodeTag\n };\n\n const label = (\n \n );\n\n const inputPinLabel = (\n \n );\n\n const inputExpLabel = (\n \n );\n\n const alertFieldLabel = (\n \n );\n\n const alert = (\n \n {errorMessage}\n \n );\n\n const inputProps = {\n className: 'ms-checkout-gift-card__input-fields'\n };\n\n const inputNumProps = {\n className: 'ms-checkout-gift-card__input-num-fields'\n };\n\n const inputPinProps = {\n className: 'ms-checkout-gift-card__input-pin-fields'\n };\n\n const inputExpProps = {\n className: 'ms-checkout-gift-card__input-exp-fields'\n };\n\n const inputNumber = (\n \n );\n\n const inputPin = (\n \n );\n\n const inputExp = (\n \n );\n\n const applyButton = (\n \n {applyGiftCardButton}\n \n );\n\n let showGiftCardPinInput = false;\n let showGiftCardExpInput = false;\n\n switch (additionalFields) {\n case showAdditionalFields.pin:\n showGiftCardPinInput = true;\n break;\n case showAdditionalFields.expirationDate:\n showGiftCardExpInput = true;\n break;\n case showAdditionalFields.pinAndExpirationDate:\n showGiftCardPinInput = true;\n showGiftCardExpInput = true;\n break;\n default:\n }\n\n return {\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","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IGiftCardExtend } from '@msdyn365-commerce/global-state';\nimport { Button, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IGetItemInput {\n giftCard: IGiftCardExtend;\n canRemove: boolean;\n resources: {\n enteredGiftCardLabel: string;\n giftCardAvailableBalanceLabel: string;\n removeGiftCardButton: string;\n };\n getFormattedPrice(price?: number, currencyCode?: string): string;\n onRemoveGiftCard(giftCardNumber: string): void;\n}\n\nexport interface IItem {\n itemProps: INodeProps;\n id?: string;\n selectedGiftCard: React.ReactNode;\n removeButton?: React.ReactNode;\n}\n\n/**\n * On remove function.\n * @param onRemoveGiftCard -Gift card number function.\n * @param giftCard -Gift card values.\n * @returns Call of onRemoveGiftCard function.\n */\nconst onRemoveHandler = (onRemoveGiftCard: (giftCardNumber: string) => void, giftCard: IGiftCardExtend) => (): void => {\n onRemoveGiftCard(giftCard.Id ?? '');\n};\n\n/**\n * GiftCardItem component.\n * @param root0\n * @param root0.giftCard\n * @param root0.getFormattedPrice\n * @param root0.canRemove\n * @param root0.onRemoveGiftCard\n * @param root0.resources\n * @param root0.resources.enteredGiftCardLabel\n * @param root0.resources.giftCardAvailableBalanceLabel\n * @param root0.resources.removeGiftCardButton\n * @extends {React.PureComponent}\n */\nexport const getItem = ({\n giftCard,\n getFormattedPrice,\n canRemove,\n onRemoveGiftCard,\n resources: { enteredGiftCardLabel, giftCardAvailableBalanceLabel, removeGiftCardButton }\n}: IGetItemInput): IItem => {\n const balance = getFormattedPrice(giftCard.Balance, giftCard.CardCurrencyCode);\n const giftCardLast4Digit = (giftCard.Id || '').substr(-4);\n\n const itemProps = {\n className: 'ms-checkout-gift-card__item'\n };\n\n const selectedGiftCard = (\n \n {enteredGiftCardLabel}\n {` `}\n {giftCardLast4Digit}\n {' ('}\n {giftCardAvailableBalanceLabel}\n {` `}\n {balance}\n {')'}\n \n );\n\n const removeButton = canRemove && (\n \n );\n\n return {\n itemProps,\n id: giftCard.Id,\n selectedGiftCard,\n removeButton\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IGiftCardExtend } from '@msdyn365-commerce/global-state';\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\n\nimport { getItem, IItem } from './get-item';\n\ninterface IGetListInput {\n giftCards?: IGiftCardExtend[];\n canRemove: boolean;\n resources: {\n enteredGiftCardLabel: string;\n giftCardAvailableBalanceLabel: string;\n removeGiftCardButton: string;\n };\n getFormattedPrice(price?: number, currencyCode?: string): string;\n onRemoveGiftCard(giftCardNumber: string): void;\n}\n\nexport interface IList {\n listProps: INodeProps;\n list: IItem[];\n}\n\nexport const getList = ({ giftCards, canRemove, resources, getFormattedPrice, onRemoveGiftCard }: IGetListInput): IList | undefined => {\n if (!giftCards || giftCards.length === 0) {\n return undefined;\n }\n\n const listProps = {\n className: 'ms-checkout-gift-card__list'\n };\n\n const list = giftCards.map(giftCard =>\n getItem({\n canRemove,\n getFormattedPrice,\n giftCard,\n onRemoveGiftCard,\n resources\n })\n );\n\n return {\n listProps,\n list\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 React from 'react';\n\ninterface IGiftCardTitleProps {\n title: string;\n}\n\nconst GiftCardTitle: React.FC = ({ title }) => ;\n\nexport default GiftCardTitle;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CheckoutModule, ErrorLocation, IGiftCardExtend } from '@msdyn365-commerce/global-state';\nimport {\n getGiftCardAsync,\n getTenderTypesAsync,\n resolveCardTypesAsync\n} from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\nimport {\n CardType,\n CardTypeInfo,\n GiftCard,\n RetailOperation,\n TenderType\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { IModuleStateProps, withModuleState, EnabledPaymentsForOBO } from '@msdyn365-commerce-modules/checkout-utilities';\nimport { IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport { computed, reaction, when } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { OPERATIONS } from '../checkout';\nimport { ICheckoutGiftCardData } from './checkout-gift-card.data';\nimport { ICheckoutGiftCardProps } from './checkout-gift-card.props.autogenerated';\nimport { getForm, IForm } from './components/get-form';\nimport { getList, IList } from './components/get-list';\nimport TitleCompoent from './components/title';\nimport { focusOnCheckoutError } from '../../checkout-errors';\n\nexport * from './components/get-form';\nexport * from './components/get-item';\nexport * from './components/get-list';\n\ninterface ICheckoutGiftCardState {\n isFetchingGiftCard: boolean;\n errorMessage: string;\n giftCardNumber: string;\n giftCardPin: string;\n giftCardExp: string;\n}\n\nenum SupportedGiftCardType {\n Internal = 'internal',\n External = 'external',\n Both = 'both'\n}\n\nexport interface ICheckoutGiftCardModuleProps extends ICheckoutGiftCardProps, IModuleStateProps {}\n\nexport interface IShowResource {\n title: React.ReactNode;\n list?: IList;\n}\n\nexport interface IAddResource {\n form: IForm;\n list?: IList;\n}\n\nexport interface ICheckoutGiftCardViewProps extends ICheckoutGiftCardProps<{}>, ICheckoutGiftCardState {\n className?: string;\n\n showGiftCard?: IShowResource;\n addGiftCard?: IAddResource;\n\n checkoutGiftCardProps: IModuleProps;\n couldPaidByGiftCard?: boolean;\n isEnabled?: boolean;\n checkoutErrorRef?: React.RefObject;\n onEdit?(): void;\n onCancel?(): void;\n onSubmit?(): void;\n enterGiftCardNumber?(giftCardNumber: string): void;\n enterGiftCardPin?(giftCardNumber: string): void;\n enterGiftCardExp?(giftCardNumber: string): void;\n removeGiftCard?(giftCardNumber: string): void;\n applyGiftCard?(): void;\n}\n\n/**\n *\n * CheckoutGiftCard component.\n * @extends {React.Component, ICheckoutGiftCardState>}\n */\n@observer\nexport class CheckoutGiftCard extends React.Component {\n public state: ICheckoutGiftCardState = {\n isFetchingGiftCard: false,\n errorMessage: '',\n giftCardNumber: '',\n giftCardPin: '',\n giftCardExp: ''\n };\n\n private readonly inputRef: React.RefObject = React.createRef();\n\n private readonly inputPinRef: React.RefObject = React.createRef();\n\n private readonly inputExpRef: React.RefObject = React.createRef();\n\n private readonly checkoutErrorRef: React.RefObject = React.createRef();\n\n @computed get isDataReady(): boolean {\n return (this.props.data.checkout.result && this.props.data.checkout.status) === 'SUCCESS';\n }\n\n @computed get getLoyaltyAmount(): number {\n const checkoutState = this.props.data.checkout.result;\n if (!checkoutState || !checkoutState.loyaltyAmount) {\n return 0;\n }\n return checkoutState.loyaltyAmount;\n }\n\n @computed get getCustomerAccountAmount(): number {\n const checkoutState = this.props.data.checkout.result;\n return checkoutState && checkoutState.customerAccountAmount ? checkoutState.customerAccountAmount : 0;\n }\n\n @computed get getGiftCardTotalAmount(): number {\n const checkoutState = this.props.data.checkout.result;\n if (!checkoutState || !checkoutState.giftCardExtends) {\n return 0;\n }\n return checkoutState.giftCardExtends.reduce((count: number, giftCard: IGiftCardExtend) => {\n const balance: number = giftCard.Balance || 0;\n return count + balance;\n }, 0);\n }\n\n @computed get disableAddGiftCard(): boolean {\n const cart = this.props.data.checkout.result ? this.props.data.checkout.result.checkoutCart.cart : undefined;\n if (!cart) {\n return true;\n }\n return (cart.TotalAmount || 0) - this.getLoyaltyAmount - this.getGiftCardTotalAmount <= 0;\n }\n\n @computed get shouldPayGiftCard(): boolean {\n const cart = this.props.data.checkout.result ? this.props.data.checkout.result.checkoutCart.cart : undefined;\n if (!cart) {\n return false;\n }\n\n // Use gift card card when loyalty points do not cover the total amount\n const amountDue = (cart.TotalAmount || 0) - this.getLoyaltyAmount - this.getCustomerAccountAmount;\n return amountDue > 0;\n }\n\n @computed get hasSelectedItem(): boolean {\n const {\n data: { checkout }\n } = this.props;\n const giftCards = checkout.result && checkout.result.giftCardExtends;\n return !!giftCards && giftCards.length > 0;\n }\n\n public componentDidMount(): void {\n when(\n () => this.isDataReady,\n () => {\n this.init();\n }\n );\n\n if (this.props.data.checkout.result?.shouldEnableCheckoutErrorDisplayMessaging) {\n reaction(\n () => this.props.data.checkout.result?.checkoutError,\n checkoutError => {\n if (checkoutError && checkoutError.errorLocation === ErrorLocation.CheckoutGiftCard && checkoutError.errorMessage) {\n this.setError(checkoutError.errorMessage);\n }\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.checkoutErrorFocus,\n checkoutErrorFocus => {\n if (checkoutErrorFocus === CheckoutModule.CheckoutGiftCard) {\n focusOnCheckoutError(this.checkoutErrorRef, this.props.context.actionContext);\n }\n }\n );\n }\n }\n\n public shouldComponentUpdate(nextProps: ICheckoutGiftCardModuleProps, nextState: ICheckoutGiftCardState): 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 const {\n moduleState: { isReady },\n data: { checkout },\n config: { className, showAdditionalFields },\n resources\n } = this.props;\n const { errorMessage, giftCardNumber, giftCardPin, giftCardExp } = this.state;\n const giftCards = checkout.result && checkout.result.giftCardExtends;\n const additionalFields = showAdditionalFields;\n const supportedGiftCardType = this.props.context.app.config.giftCardSupported;\n\n if (!this.isEnabled() || (!this.shouldPayGiftCard && !isReady)) {\n this.props.context.telemetry.error('Checkout giftcard content is empty, module wont render');\n return null;\n }\n\n if (this.props.context.request.user.isOBORequest && EnabledPaymentsForOBO.GiftCard === 0) {\n this.props.context.telemetry.information('isOBORequest is enabled, Checkout gift card module wont render');\n return null;\n }\n\n const supportExternalGiftCard = supportedGiftCardType !== SupportedGiftCardType.Internal;\n\n const moduleClassName = classname('ms-checkout-gift-card', className, isReady ? 'show' : 'add');\n\n const viewProps: ICheckoutGiftCardViewProps = {\n ...this.props,\n ...this.state,\n className: moduleClassName,\n checkoutErrorRef: this.checkoutErrorRef,\n\n checkoutGiftCardProps: { moduleProps: this.props, className: moduleClassName },\n couldPaidByGiftCard: this.couldPaidByGiftCard(),\n isEnabled: this.isEnabled(),\n onEdit: this.onEdit,\n onCancel: this.onCancel,\n onSubmit: this.onSubmit,\n enterGiftCardNumber: this.enterGiftCardNumber,\n enterGiftCardPin: this.enterGiftCardPin,\n enterGiftCardExp: this.enterGiftCardExp,\n removeGiftCard: this.removeGiftCard,\n applyGiftCard: this.applyGiftCard,\n showGiftCard: isReady\n ? {\n title: ,\n list: getList({\n canRemove: false,\n getFormattedPrice: this.getFormattedPrice,\n giftCards: giftCards && [...giftCards], // Note: ReadOnly Checkout State GiftCard[] is not assignable to GiftCard[] type\n onRemoveGiftCard: this.removeGiftCard,\n resources\n })\n }\n : undefined,\n addGiftCard: !isReady\n ? {\n form: getForm({\n errorMessage,\n giftCardNumber,\n giftCardPin,\n giftCardExp,\n inputRef: this.inputRef,\n inputPinRef: this.inputPinRef,\n inputExpRef: this.inputExpRef,\n resources,\n onEnterGiftCardNumber: this.enterGiftCardNumber,\n onEnterGiftCardPin: this.enterGiftCardPin,\n onEnterGiftCardExp: this.enterGiftCardExp,\n onApplyGiftCard: this.applyGiftCard,\n supportExternalGiftCard,\n additionalFields,\n disableAddGiftCard: this.disableAddGiftCard\n }),\n list: getList({\n canRemove: true,\n getFormattedPrice: this.getFormattedPrice,\n giftCards: giftCards && [...giftCards], // Note: ReadOnly Checkout State GiftCard[] is not assignable to GiftCard[] type\n onRemoveGiftCard: this.removeGiftCard,\n resources\n })\n }\n : undefined\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private readonly init = (): void => {\n this.props.moduleState.init({\n onEdit: this.onEdit,\n onCancel: this.onCancel,\n onSubmit: this.onSubmit,\n isRequired: false,\n ...(!this.isEnabled() && { status: 'disabled' })\n });\n\n const giftCards = this.props.data.checkout.result?.giftCardExtends;\n if (giftCards && giftCards.length > 0) {\n this.props.moduleState.onReady();\n } else if (this.props.data.checkout.result?.isPaymentVerificationRedirection) {\n this.props.moduleState.onSkip();\n }\n };\n\n private readonly couldPaidByGiftCard = (): boolean => {\n const cart = this.props.data.checkout.result ? this.props.data.checkout.result.checkoutCart?.cart : undefined;\n if (!cart) {\n return false;\n }\n\n // Use gift card when it is not free\n return (cart.TotalAmount || 0) > 0;\n };\n\n private readonly isEnabled = (): boolean => {\n if (\n !this.props.context.request.user.isAuthenticated &&\n this.props.context.app.config.giftCardSupported !== SupportedGiftCardType.External &&\n !this.props.config.shouldBeEnabledForGuest\n ) {\n return false;\n }\n return this.couldPaidByGiftCard();\n };\n\n private readonly onEdit = (): void => {\n this.props.telemetry.information('Payment section gift card onEdit is called.');\n\n // Show add gift card form\n this.props.moduleState.onUpdating();\n };\n\n private readonly onCancel = (): void => {\n this.props.telemetry.information('Payment section gift card onCancel is called.');\n\n this.handleCancelOrSubmit();\n };\n\n private readonly onSubmit = (): void => {\n this.props.telemetry.information('Payment section gift card onSubmit is called.');\n\n this.handleCancelOrSubmit();\n };\n\n private readonly handleCancelOrSubmit = () => {\n if (this.hasSelectedItem) {\n // Show summary screen\n this.props.moduleState.onReady();\n } else {\n // Skip the module\n this.props.moduleState.onSkip();\n }\n };\n\n private readonly getFormattedPrice = (price: number = 0, currencyCode: string = 'USD'): string => {\n return this.props.context.cultureFormatter.formatCurrency(price, currencyCode);\n };\n\n private readonly enterGiftCardNumber = (giftCardNumber: string): void => {\n this.setState({\n giftCardNumber\n });\n this.clearError();\n };\n\n private readonly enterGiftCardPin = (giftCardPin: string): void => {\n this.setState({\n giftCardPin\n });\n this.clearError();\n };\n\n private readonly enterGiftCardExp = (giftCardExp: string): void => {\n this.setState({\n giftCardExp\n });\n this.clearError();\n };\n\n private readonly setError = (errorMessage: string): void => {\n this.props.telemetry.error('Error', errorMessage);\n this.props.telemetry.debug('Error', errorMessage);\n this.props.moduleState.setHasError(true);\n this.setState({\n errorMessage\n });\n };\n\n private readonly clearError = (): void => {\n this.props.moduleState.setHasError(false);\n this.setState({\n errorMessage: ''\n });\n };\n\n private readonly removeGiftCard = async (giftCardNumber: string): Promise => {\n this.props.telemetry.information('Payment section gift card remove is called.');\n\n const checkoutState = this.props.data.checkout.result;\n if (!checkoutState) {\n return;\n }\n\n await checkoutState.removeGiftCard({ giftCardNumber });\n };\n\n private readonly applyGiftCard = async (): Promise => {\n this.props.telemetry.information('Payment section gift card apply is called.');\n\n if (this.state.isFetchingGiftCard) {\n return;\n }\n this.setState({\n isFetchingGiftCard: true\n });\n\n const checkoutState = this.props.data.checkout.result;\n const giftCardNumber = this.state.giftCardNumber.trim();\n const giftCardPin = this.state.giftCardPin.trim();\n const giftCardExp = this.state.giftCardExp.trim();\n\n const giftCardTypes = await this.getGiftCardTypes(giftCardNumber);\n const giftCardType = giftCardTypes && giftCardTypes[0];\n const isPinRequired = giftCardType && giftCardType.IsPinRequired;\n const isExpRequired = giftCardType && giftCardType.IsExpirationDateRequired;\n const tenderTypeId = giftCardType && giftCardType.PaymentMethodId;\n const giftCard = await this.getGiftCard(giftCardNumber, giftCardPin, giftCardExp, isPinRequired, isExpRequired, tenderTypeId);\n\n if (checkoutState && giftCard) {\n await checkoutState.addGiftCard({\n giftCard,\n additionalProperties: { Pin: giftCardPin, ExpirationDate: giftCardExp, TenderTypeId: tenderTypeId }\n });\n this.clearError();\n this.setState({\n giftCardNumber: '',\n giftCardPin: '',\n giftCardExp: '',\n isFetchingGiftCard: false\n });\n return Promise.resolve();\n }\n const input = this.inputRef && this.inputRef.current && this.inputRef.current.focus && (this.inputRef.current as HTMLElement);\n input && input.focus();\n this.setState({\n isFetchingGiftCard: false\n });\n this.props.telemetry.information('Payment section fetching gift card is failed.');\n };\n\n private readonly findGiftcardTenderTypes = (\n tenderTypes: TenderType[],\n operationId: RetailOperation,\n giftcardType: string\n ): string[] | undefined => {\n let matchedTenderTypes: TenderType[] | undefined;\n\n switch (giftcardType) {\n case SupportedGiftCardType.Internal:\n matchedTenderTypes = tenderTypes.filter(\n tenderType => tenderType.OperationId === operationId && tenderType.ConnectorId === ''\n );\n break;\n case SupportedGiftCardType.External:\n matchedTenderTypes = tenderTypes.filter(\n tenderType => tenderType.OperationId === operationId && tenderType.ConnectorId !== ''\n );\n break;\n default:\n throw new Error('Invalid gift card type');\n }\n\n if (matchedTenderTypes) {\n return matchedTenderTypes.map(tenderType => tenderType.TenderTypeId || '');\n }\n return;\n };\n\n private readonly getGiftCard = async (\n giftCardNumber: string,\n giftCardPin: string,\n giftCardExp: string,\n isPinRequired: boolean | undefined,\n isExpRequired: boolean | undefined,\n tenderTypeId: string | undefined\n ): Promise => {\n const {\n resources: { noBalanceError, invalidCardInfoError, invalidCardTypeError, noCardPinError, noCardExpError }\n } = this.props;\n\n const supportedGiftCardType = this.props.context.app.config.giftCardSupported;\n\n if (!tenderTypeId) {\n return undefined;\n }\n\n const tenderTypes = await getTenderTypesAsync({ callerContext: this.props.context.actionContext, queryResultSettings: {} }).catch(\n error => {\n throw error;\n }\n );\n\n if (!tenderTypes) {\n throw new Error('Fail to get gift card tender line');\n }\n const internalGiftcardTenderTypes = this.findGiftcardTenderTypes(\n tenderTypes,\n OPERATIONS.PayGiftCertificate,\n SupportedGiftCardType.Internal\n );\n const externalGiftcardTenderTypes = this.findGiftcardTenderTypes(\n tenderTypes,\n OPERATIONS.PayGiftCertificate,\n SupportedGiftCardType.External\n );\n\n switch (supportedGiftCardType) {\n case undefined:\n case SupportedGiftCardType.Internal:\n if (!internalGiftcardTenderTypes?.includes(tenderTypeId)) {\n this.setError(invalidCardTypeError);\n return undefined;\n }\n break;\n case SupportedGiftCardType.External:\n if (!externalGiftcardTenderTypes?.includes(tenderTypeId)) {\n this.setError(invalidCardTypeError);\n return undefined;\n }\n break;\n case SupportedGiftCardType.Both:\n if (!internalGiftcardTenderTypes?.includes(tenderTypeId) && !externalGiftcardTenderTypes?.includes(tenderTypeId)) {\n this.setError(invalidCardTypeError);\n return undefined;\n }\n break;\n default:\n throw new Error('Unsupported gift card type');\n }\n\n if (isPinRequired && giftCardPin === '') {\n this.setError(noCardPinError);\n return undefined;\n }\n\n if (isExpRequired && giftCardExp === '') {\n this.setError(noCardExpError);\n return undefined;\n }\n\n const month = Number.parseInt(giftCardExp.split('/')[0], 10);\n const year = Number.parseInt(giftCardExp.split('/')[1], 10);\n\n return getGiftCardAsync({ callerContext: this.props.context.actionContext }, giftCardNumber, tenderTypeId, giftCardPin, month, year)\n .then(activeGiftCard => {\n if (!activeGiftCard.Balance || activeGiftCard.Balance === 0) {\n this.setError(noBalanceError);\n return;\n }\n return activeGiftCard;\n })\n .catch(error => {\n this.setError(invalidCardInfoError);\n return undefined;\n });\n };\n\n private readonly getGiftCardTypes = async (giftCardNumber: string): Promise => {\n const {\n resources: { emptyInputError, duplicatedCodeError, invalidCodeError },\n data: { checkout }\n } = this.props;\n\n if (!giftCardNumber) {\n this.setError(emptyInputError);\n return undefined;\n }\n\n const isDuplicated = checkout.result && checkout.result.giftCardExtends.some((card: GiftCard) => card.Id === giftCardNumber);\n if (isDuplicated) {\n this.setError(duplicatedCodeError);\n return undefined;\n }\n\n return resolveCardTypesAsync({ callerContext: this.props.context.actionContext }, giftCardNumber, CardType.GiftCard)\n .then(giftCardTypes => {\n if (!giftCardTypes || giftCardTypes.length === 0 || giftCardTypes[0] === undefined) {\n this.setError(invalidCodeError);\n return;\n }\n return giftCardTypes;\n })\n .catch(error => {\n this.setError(invalidCodeError);\n return undefined;\n });\n };\n}\n\nexport default withModuleState(CheckoutGiftCard);\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 { IOrderTemplateListViewProps, ISingleOrderTemplateViewProps } from '@msdyn365-commerce-modules/order-template';\r\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { INodeProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport CreateNewTemplateButtonComponent from './components/create-order-template.component';\r\nimport * as React from 'react';\r\n\r\nimport { IOrderTemplateListProps, IOrderTemplateListResources } from '../definition-extensions/order-template-list.ext.props.autogenerated';\r\nimport { IOrderTemplateNameDialogResources } from \"@msdyn365-commerce/components\";\r\n\r\n/**\r\n * Interface for OrderTemplateImage.\r\n */\r\ninterface IOrderTemplateImage {\r\n props: {\r\n children: React.ReactElement[];\r\n };\r\n}\r\n\r\n/**\r\n * To render order template.\r\n * @param orderTemplate - The order template view props.\r\n * @param orderTemplateNodeProps - The order template node props.\r\n * @returns The JSX Element.\r\n */\r\nconst renderOrderTemplate = (orderTemplate: ISingleOrderTemplateViewProps, orderTemplateNodeProps?: INodeProps): JSX.Element | null => {\r\n\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from module file\r\n const { key, addToCartButton, orderTemplateImage, orderTemplateStatusMessage, removeButton, orderTemplateName } = orderTemplate;\r\n\r\n const orderTemplateImageElement: IOrderTemplateImage = orderTemplateImage as React.ReactElement;\r\n const currentImageListLength = orderTemplateImageElement.props.children.length;\r\n const defaultNumberImagesInTile = 4;\r\n\r\n if (currentImageListLength < defaultNumberImagesInTile) {\r\n for (let index = 0; index < defaultNumberImagesInTile - currentImageListLength; index++) {\r\n orderTemplateImageElement.props.children.push();\r\n }\r\n }\r\n\r\n return (\r\n \r\n {orderTemplateName}\r\n {orderTemplateImage}\r\n {addToCartButton}\r\n {removeButton}\r\n {orderTemplateStatusMessage}\r\n \r\n );\r\n};\r\n\r\nconst _reloadPage = async () => {\r\n window.location.reload();\r\n};\r\n\r\nconst _generateOrderTemplateNameDialogResources = (resources: IOrderTemplateListResources): IOrderTemplateNameDialogResources => {\r\n return {\r\n orderTemplateHeaderLabel: resources.createOrderTemplateHeader,\r\n orderTemplateTitleLabel: resources.orderTemplateTitle,\r\n orderTemplateNameAriaLabel: resources.orderTemplateNameAriaLabel,\r\n orderTemplateDescription: resources.createOrderTemplateDescription,\r\n\r\n defaultOrderTemplateName: resources.defaultOrderTemplateName,\r\n\r\n orderTemplateButtonLabel: resources.createOrderTemplateButtonText,\r\n orderTemplateCancelButtonLabel: resources.cancelNewOrderTemplateCreationButtonText\r\n };\r\n}\r\n\r\n/**\r\n * Order Template List View.\r\n * @param props - The view props.\r\n * @returns The JSX Element.\r\n */\r\nexport const OrderTemplateListViewComponent: React.FC> = props => {\r\n const {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from module file\r\n OrderTemplateList, OrderTemplates, OrderTemplate,\r\n status,\r\n statusMessage,\r\n heading,\r\n orderTemplates,\r\n createOrderTemplateButton,\r\n templateHeaderStatusMessage\r\n } = props;\r\n console.log(createOrderTemplateButton)\r\n return (\r\n \r\n {heading}\r\n {status !== 'SUCCESS' && statusMessage}\r\n {status === 'EMPTY' && (\r\n \r\n )}\r\n \r\n {status === 'SUCCESS' &&\r\n (!OrderTemplates || !orderTemplates ||\r\n !ArrayExtensions.hasElements(orderTemplates)) ? (\r\n

\r\n

\r\n {props.resources.headingForEmptyOrderTemplateList}\r\n

\r\n

\r\n {props.resources.textForEmptyOrderTemplateList}\r\n

\r\n {createOrderTemplateButton}\r\n
\r\n ) : createOrderTemplateButton}\r\n {templateHeaderStatusMessage}\r\n \r\n { OrderTemplates && orderTemplates && ArrayExtensions.hasElements(orderTemplates) &&\r\n \r\n {orderTemplates.map((orderTemplate) => {\r\n return renderOrderTemplate(orderTemplate, OrderTemplate);\r\n })}\r\n }\r\n \r\n );\r\n};\r\n\r\nexport default OrderTemplateListViewComponent;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IGiftCardExtend } from '@msdyn365-commerce/global-state';\nimport { Address, GiftCard, TenderLine, TokenizedPaymentCard } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { action, computed, observable } from 'mobx';\n\n/**\n * State information related to what is needed to succesfully perform a checkout.\n */\nexport class CheckoutState {\n @observable private _tokenizedPaymentCard: TokenizedPaymentCard | undefined;\n\n @computed public get tokenizedPaymentCard(): Readonly | undefined {\n return this._tokenizedPaymentCard;\n }\n\n @observable private _tenderLine: TenderLine | undefined;\n\n @computed public get tenderLine(): Readonly | undefined {\n return this._tenderLine;\n }\n\n @observable private _billingAddress: Address | undefined;\n\n @computed public get billingAddress(): Readonly
| undefined {\n return this._billingAddress;\n }\n\n @observable private _shippingAddress: Address | undefined;\n\n @computed public get shippingAddress(): Readonly
| undefined {\n return this._shippingAddress;\n }\n\n @observable private _cardPrefix: string | undefined;\n\n @computed public get cardPrefix(): Readonly | undefined {\n return this._cardPrefix;\n }\n\n @observable private _giftCards: GiftCard[] = [];\n\n @computed public get giftCards(): readonly GiftCard[] {\n return this._giftCards;\n }\n\n @observable private _giftCardExtends: IGiftCardExtend[] = [];\n\n @computed public get giftCardExtends(): readonly IGiftCardExtend[] {\n return this._giftCardExtends;\n }\n\n @observable private _loyaltyCardNumber?: string;\n\n @computed public get loyaltyCardNumber(): Readonly | undefined {\n return this._loyaltyCardNumber;\n }\n\n @observable private _loyaltyAmount: number = 0;\n\n @computed public get loyaltyAmount(): Readonly | number {\n return this._loyaltyAmount;\n }\n\n @observable private _guestCheckoutEmail: string = '';\n\n @computed public get guestCheckoutEmail(): Readonly | string {\n return this._guestCheckoutEmail;\n }\n\n @observable private _isTermsAndConditionAccepted: boolean = false;\n\n @computed public get isTermsAndConditionAccepted(): Readonly | boolean {\n return this._isTermsAndConditionAccepted;\n }\n\n @observable private _customerAccountAmount: number = 0;\n\n @computed public get customerAccountAmount(): Readonly | number {\n return this._customerAccountAmount;\n }\n\n @action\n public updateTokenizedPaymentCard(newTokenizedPaymentCard: TokenizedPaymentCard): void {\n this._tokenizedPaymentCard = newTokenizedPaymentCard;\n }\n\n @action\n public updateTenderLine(newTenderLine: TenderLine | undefined): void {\n this._tenderLine = newTenderLine;\n }\n\n @action\n public updateShippingAddress(newShippingAddress: Address): void {\n this._shippingAddress = newShippingAddress;\n }\n\n @action\n public updateBillingAddress(newBillingAddress: Address): void {\n this._billingAddress = newBillingAddress;\n }\n\n @action\n public updateCardPrefix(newCardPrefix: string): void {\n this._cardPrefix = newCardPrefix;\n }\n\n @action\n public removeGiftCard(giftCardNumber: string): void {\n this._giftCards = this._giftCards.filter(giftCard => giftCard.Id !== giftCardNumber);\n }\n\n @action\n public removeGiftCardExtend(giftCardNumber: string): void {\n this._giftCardExtends = this._giftCardExtends.filter(giftCard => giftCard.Id !== giftCardNumber);\n }\n\n @action\n public addGiftCard(giftCard: GiftCard): void {\n this._giftCards = [giftCard, ...this._giftCards];\n }\n\n @action\n public addGiftCardExtend(giftCard: IGiftCardExtend): void {\n this._giftCardExtends = [giftCard, ...this._giftCards];\n }\n\n @action\n public updateLoyaltyCardNumber(newLoyaltyCardNumber: string): void {\n this._loyaltyCardNumber = newLoyaltyCardNumber;\n }\n\n @action\n public updateLoyaltyAmount(newAmount: number): void {\n this._loyaltyAmount = newAmount;\n }\n\n @action\n public updateGuestCheckoutEmail(newGuestCheckoutEmail: string): void {\n this._guestCheckoutEmail = newGuestCheckoutEmail;\n }\n\n @action\n public updateTermsAndConditionsAcceptance(newIsTermsAndConditionAccepted: boolean): void {\n this._isTermsAndConditionAccepted = newIsTermsAndConditionAccepted;\n }\n\n @action\n public updateCustomerAccountAmount(newAmount: number): void {\n this._customerAccountAmount = newAmount;\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport Checkout from './checkout';\nimport CheckoutView from './checkout.view';\n\nexport * from './actions/get-products-in-active-checkout-cart';\nexport * from './checkout';\nexport * from './checkout.data';\nexport * from './checkout.props.autogenerated';\nexport * from './checkout.view';\nexport * from './components';\nexport * from './methods';\n\nexport { Checkout, CheckoutView };\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IAny, ICoreContext, IGeneric } from '@msdyn365-commerce/core';\nimport {\n Alert,\n getPayloadObject,\n getTelemetryAttributes,\n INodeProps,\n ITelemetryContent,\n Modal,\n ModalBody,\n ModalFooter,\n ModalHeader,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { ReviewConcernCategory } from '../../../actions/inputs/report-review-concern-input';\nimport { IRnrKeyValuePair } from '../../../common/rnrInterface';\n\nexport interface IReportReviewModalProps {\n resources: IReportReviewModalResources;\n context: ICoreContext>;\n isOpen: boolean;\n returnRef: React.RefObject | undefined;\n reportedKey: string;\n hasError: boolean;\n telemetryContent?: ITelemetryContent;\n onModalToggle(): void;\n onRadioChange(event: React.ChangeEvent): void;\n reportReview(): void;\n}\n\nexport interface IReportReviewModalResources {\n reportConcernText: string;\n feedbackThankYouText: string;\n reportModalMessage: string;\n reportSubmittedMessage: string;\n reportSpamText: string;\n offensiveContentText: string;\n profanityContentText: string;\n okReportReviewText: string;\n cancelReportReviewText: string;\n reportReviewButtonText: string;\n errorMessageText: string;\n}\n\nexport interface IReportReviewModalViewProps {\n modal: INodeProps;\n modalHeader: INodeProps;\n modalFooter: INodeProps;\n modalBody: INodeProps;\n header: React.ReactElement;\n headerSubmitted: React.ReactElement;\n cancelButton: React.ReactElement;\n submitButton: React.ReactElement;\n succesfulButton: React.ReactElement;\n reportMessage: React.ReactElement;\n reportSubmittedMessage: React.ReactElement;\n radioButtons: React.ReactElement;\n error: React.ReactElement;\n}\n\nlet reportConcernDropdownOptions: IRnrKeyValuePair[];\n\n/**\n * CartLineItems component.\n */\n\nexport const ReportReviewModal = (props: IReportReviewModalProps): IReportReviewModalViewProps => {\n const payLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.SubmitReview);\n const submitReviewAttribute = getTelemetryAttributes(props.telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.SuccessButton;\n const successAttribute = getTelemetryAttributes(props.telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.Cancel;\n const cancelAttribute = getTelemetryAttributes(props.telemetryContent!, payLoad);\n\n reportConcernDropdownOptions = [\n { key: ReviewConcernCategory.SpamAdvertising, value: props.resources.reportSpamText },\n { key: ReviewConcernCategory.OffensiveContent, value: props.resources.offensiveContentText },\n { key: ReviewConcernCategory.Profanity, value: props.resources.profanityContentText }\n ];\n\n return {\n modal: {\n tag: Modal,\n className: 'ms-report-review-modal msc-modal-input-required',\n toggle: props.onModalToggle,\n applicationNode: 'renderPage',\n isOpen: props.isOpen,\n returnFocusRef: props.returnRef\n },\n modalHeader: { tag: ModalHeader, toggle: props.onModalToggle, className: 'ms-report-review-modal-header' },\n modalFooter: { tag: ModalFooter, className: 'ms-report-review-modal-footer' },\n modalBody: { tag: ModalBody, className: 'ms-report-review-modal-body' },\n header:

{props.resources.reportConcernText}

,\n headerSubmitted:

{props.resources.feedbackThankYouText}

,\n cancelButton: (\n \n ),\n submitButton: (\n \n ),\n succesfulButton: (\n \n ),\n reportMessage:

{props.resources.reportModalMessage}

,\n reportSubmittedMessage:

{props.resources.reportSubmittedMessage}

,\n radioButtons: radioPairs(props),\n error: (\n \n {props.resources.errorMessageText}\n \n )\n };\n};\n\nconst radioPairs = (props: IReportReviewModalProps) => {\n const pairs = [];\n for (const option of reportConcernDropdownOptions) {\n const inputId = `report-review-${option.key}`;\n const checked = option.key === props.reportedKey;\n pairs.push(\n
\n \n \n
\n );\n }\n\n return
{pairs}
;\n};\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 { CartLinePriceEditor, ICartLinePriceEditorResources, PriceComponent } from '@msdyn365-commerce/components';\nimport MsDyn365, {\n IComponentProps,\n IGridSettings,\n IImageSettings,\n Image,\n isChannelTypeB2B,\n msdyn365Commerce\n} from '@msdyn365-commerce/core';\nimport { ICartState } from '@msdyn365-commerce/global-state';\nimport {\n CartLine,\n ChannelDeliveryOptionConfiguration,\n DiscountLine,\n DiscountLineType,\n ProductCatalog,\n ProductDimensionType,\n SalesLine,\n SimpleProduct\n} from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, getFallbackImageUrl, validateCatalogId } from '@msdyn365-commerce-modules/retail-actions';\nimport { getPayloadObject, getTelemetryAttributes, IncrementalQuantity, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classNames from 'classnames';\nimport * as React from 'react';\n\n/**\n * ICartlineResourceString: Interface for specifying the\n * resource strings that the component needs.\n */\nexport interface ICartlineResourceString {\n /**\n * Display string for discount label.\n */\n discountStringText: string;\n\n /**\n * String for size key.\n */\n sizeString: string;\n\n /**\n * String for color key.\n */\n colorString: string;\n\n /**\n * String associated with the configuration product dimension.\n */\n configString: string;\n\n /**\n * String for style key.\n */\n styleString: string;\n\n /**\n * String for amount key.\n */\n amountString?: string;\n\n /**\n * Display string for quantity label.\n */\n quantityDisplayString: string;\n\n /**\n * Display string for quantity label.\n */\n inputQuantityAriaLabel: string;\n\n /**\n * Aria label for the decrement button in quantity component.\n */\n decrementButtonAriaLabel: string;\n\n /**\n * Aria label for the increment button in quantity component.\n */\n incrementButtonAriaLabel: string;\n\n /**\n * Original text screenreader.\n */\n originalPriceText: string;\n\n /**\n * Current text screenreader.\n */\n currentPriceText: string;\n\n /**\n * Shipping Charges Text.\n */\n shippingChargesText: string;\n\n /**\n * Price Editor Charges Text.\n */\n priceEditorResources?: ICartLinePriceEditorResources;\n\n /**\n * Sales agreement price prompt text.\n */\n salesAgreementPricePrompt?: string;\n\n /**\n * Shipping text.\n */\n shippingText?: string;\n}\n\n/**\n * Represents cart line data interface.\n */\ninterface ICartLineData {\n cartLine: CartLine | SalesLine;\n cartState?: ICartState;\n product?: SimpleProduct;\n catalogs?: ProductCatalog[];\n}\n\n/**\n * ICartLineProps: The props required to render cartLineitem.\n */\nexport interface ICartLineProps extends IComponentProps {\n /**\n * The flag to change the quantity component from interactible to static.\n */\n disableQuantityInteractivity?: boolean;\n\n /**\n * The primary image url.\n */\n primaryImageUrl?: string;\n\n /**\n * The product url.\n */\n productUrl?: string;\n\n /**\n * GridSettings for the product image in cartLine.\n */\n gridSettings: IGridSettings;\n\n /**\n * ImageSettings for the product image in cartLine.\n */\n imageSettings: IImageSettings;\n\n /**\n * Boolean flag to indicate if the item is out of stock.\n */\n isOutOfStock?: boolean;\n\n /**\n * Flag to make quantity section editable.\n */\n isQuantityEditable?: boolean;\n\n /**\n * Max quantity for line item.\n */\n maxQuantity?: number;\n\n /**\n * Current quantity for line item.\n */\n currentQuantity?: number;\n\n /**\n * Resource string for the component.\n */\n resources: ICartlineResourceString;\n\n /**\n * SalesLine flag.\n */\n isSalesLine?: boolean;\n\n /**\n * Error message to show in place of quantity.\n */\n errorMessage?: string;\n\n /**\n * Inventory information label.\n */\n inventoryInformationLabel?: string;\n\n /**\n * Inventory information class name.\n */\n inventoryLabelClassName?: string;\n\n /**\n * Flag to show/hide shipping charges for line items.\n */\n showShippingChargesForLineItems?: boolean;\n\n /**\n * Boolean flag to indicate if cart state status is ready.\n */\n isCartStateReady?: boolean;\n\n /**\n * Chanel Delivery Option configuration is from api.\n */\n channelDeliveryOptionConfig?: ChannelDeliveryOptionConfiguration;\n\n /**\n * The telemetry content.\n */\n telemetryContent?: ITelemetryContent;\n\n /**\n * The cart line delivery location.\n */\n deliveryLocation?: string;\n\n /**\n * Quantity onChange callback.\n */\n quantityOnChange?(cartLine: CartLine, newQuantity: number): boolean;\n priceCurrency?: string;\n}\n\n/**\n * Represents dimensions strings.\n */\ninterface IDimensionStrings {\n /**\n * String for size key.\n */\n sizeString: string;\n\n /**\n * String for color key.\n */\n colorString: string;\n\n /**\n * String associated with the configuration product dimension.\n */\n configString: string;\n\n /**\n * String for style key.\n */\n styleString: string;\n\n /**\n * String for amount key.\n */\n amountString?: string;\n}\n\n/**\n * Renders catalog label for the cart line.\n * @param props - Cart line props.\n * @returns Catalog label.\n */\nconst CatalogLabelComponent: React.FC = (props: ICartLineProps) => {\n const catalogId = props.data.cartLine.CatalogId;\n validateCatalogId(catalogId);\n\n if (!isChannelTypeB2B(props.context.actionContext.requestContext) || !catalogId || !ArrayExtensions.hasElements(props.data.catalogs)) {\n return null;\n }\n\n const catalog = props.data.catalogs.find(item => item.RecordId === catalogId);\n\n if (!catalog || !catalog.Name) {\n return null;\n }\n\n return
{catalog.Name}
;\n};\n\nconst cartLineItemFunctions = {\n /**\n * Render product dimensions.\n * @param product - Product data.\n * @param dimensionStrings - Dimension strings interface.\n * @returns JSX Element.\n */\n renderProductDimensions: (product: SimpleProduct, dimensionStrings: IDimensionStrings) => {\n if (!product.Dimensions) {\n return [];\n }\n\n return product.Dimensions.map(productDimension => {\n if (productDimension.DimensionTypeValue === ProductDimensionType.Color) {\n return (\n
\n \n {dimensionStrings.colorString}\n {': '}\n {productDimension.DimensionValue?.Value}\n \n
\n );\n }\n\n if (productDimension.DimensionTypeValue === ProductDimensionType.Configuration) {\n return (\n
\n \n {dimensionStrings.configString}\n {': '}\n {productDimension.DimensionValue?.Value}\n \n
\n );\n }\n\n if (productDimension.DimensionTypeValue === ProductDimensionType.Size) {\n return (\n
\n \n {dimensionStrings.sizeString}\n {': '}\n {productDimension.DimensionValue?.Value}\n \n
\n );\n }\n\n if (productDimension.DimensionTypeValue === ProductDimensionType.Style) {\n return (\n
\n \n {product.IsGiftCard ? dimensionStrings.amountString : dimensionStrings.styleString}\n {': '}\n {productDimension.DimensionValue?.Value}\n \n
\n );\n }\n return null;\n });\n },\n\n /**\n * Gets the react node for product unit of price display.\n * @param props - The cart line props.\n * @returns The node representing markup for unit of measure component.\n */\n renderProductUnitPrice: (props: ICartLineProps) => {\n if (!props.data.cartLine.Price) {\n return null;\n }\n const zeroQuantity: number = 0;\n return (\n
\n \n zeroQuantity\n ? {\n price: {\n CustomerContextualPrice: props.data.cartLine.Price\n }\n }\n : {\n price: {\n CustomerContextualPrice: props.data.cartLine.Price\n }\n }\n }\n context={props.context}\n id={props.id}\n typeName={props.typeName}\n currencyCode={props.priceCurrency}\n />\n \n
\n );\n },\n\n /**\n * Render discount lines.\n * @param props - The cart line props.\n * @returns JSX element.\n */\n renderDiscountLines: (props: ICartLineProps) => {\n if (!props.data.cartLine.DiscountLines || !ArrayExtensions.hasElements(props.data.cartLine.DiscountLines)) {\n return null;\n }\n\n /**\n * Get the updated discount percentage.\n * @param discountLine - The discount line.\n * @param cartLine - The cart line.\n * @returns The updated discount percentage.\n */\n const discountPercent = (discountLine: DiscountLine, cartLine: CartLine): number => {\n const numberZero = 0;\n const decimalPrecision = 2;\n const fullPercentage = 100;\n let updatedPercent: number = discountLine.Percentage ?? numberZero;\n\n if (\n (discountLine.Percentage === numberZero ||\n (discountLine.DiscountLineTypeValue && discountLine.DiscountLineTypeValue === DiscountLineType.TenderTypeDiscount)) &&\n cartLine.Price &&\n cartLine.Price > numberZero &&\n cartLine.Quantity &&\n cartLine.Quantity !== numberZero\n ) {\n const effectiveAmount = discountLine.EffectiveAmount ?? numberZero;\n updatedPercent = Number(\n ((effectiveAmount / (cartLine.Price * cartLine.Quantity)) * fullPercentage).toFixed(decimalPrecision)\n );\n }\n\n return updatedPercent;\n };\n\n return props.data.cartLine.DiscountLines.map((discountLine, index) => {\n return (\n
\n {discountLine.OfferName ? discountLine.OfferName : ''}\n \n \n \n \n {` (${discountLine.Percentage !== undefined ? discountPercent(discountLine, props.data.cartLine) : ''}%)`}\n \n
\n );\n });\n },\n\n /**\n * Render inventory label.\n * @param props - The cart line props.\n * @returns JSX element.\n */\n renderInventoryLabel: (props: ICartLineProps) => {\n const inventoryCssName = props.inventoryLabelClassName\n ? `msc-cart-line__product-inventory-label ${props.inventoryLabelClassName}`\n : 'msc-cart-line__product-inventory-label';\n\n return

{props.inventoryInformationLabel}

;\n },\n\n /**\n * Render shipping label.\n * @param props - The cart line props.\n * @returns JSX element.\n */\n renderShippingLabel: (props: ICartLineProps) => {\n const pickupDeliveryModeCode = props.context.request.channel?.PickupDeliveryModeCode;\n const channelDeliveryOptionConfig = props.channelDeliveryOptionConfig;\n const cartline = props.data.cartLine;\n let hasShippingMethod = false;\n if (channelDeliveryOptionConfig !== undefined) {\n hasShippingMethod = !!(\n cartline.DeliveryMode &&\n channelDeliveryOptionConfig.PickupDeliveryModeCodes?.some(deliveryMode => deliveryMode !== cartline.DeliveryMode)\n );\n } else {\n hasShippingMethod = !!(cartline.DeliveryMode && cartline.DeliveryMode !== pickupDeliveryModeCode);\n }\n if (!hasShippingMethod) {\n return undefined;\n }\n\n const shippingChargeLines = (cartline.ChargeLines ?? []).filter(chargeLine => chargeLine.IsShipping);\n\n if (!ArrayExtensions.hasElements(shippingChargeLines)) {\n return undefined;\n }\n\n const defaultCharge: number = 0;\n const freightFee = shippingChargeLines.reduce((chargeTotal, chargeLine) => {\n return chargeTotal + (chargeLine.CalculatedAmount ?? defaultCharge);\n }, defaultCharge);\n\n const priceComponent = (\n \n );\n return (\n <>\n \n {priceComponent}\n \n );\n },\n\n /**\n * Render other charges.\n * @param props - The cart line props.\n * @returns JSX element.\n */\n renderOtherCharges: (props: ICartLineProps) => {\n const cartline = props.data.cartLine;\n const otherCharges = cartline.ChargeLines?.filter(chargeline => !chargeline.IsShipping);\n\n return (\n otherCharges?.map((otherCharge, index) => {\n const itemIndex = index;\n return otherCharge.CalculatedAmount ? (\n
\n \n \n \n \n
\n ) : (\n ''\n );\n }) ?? undefined\n );\n },\n\n /**\n * Render the sales agreement prompt.\n * @param props - The ICartLineProps.\n * @returns The JSX.Element.\n */\n renderSalesAgreementPrompt: (props: ICartLineProps): JSX.Element | null => {\n // eslint-disable-next-line @typescript-eslint/no-magic-numbers -- We use 0 to indicate no sales agreement applied on the cart line.\n if (props.data.cartLine.SalesAgreementLineRecordId === 0) {\n return null;\n }\n return
{props.resources.salesAgreementPricePrompt}
;\n }\n};\n\n/**\n * Render cartline component.\n * @param props - The cart line props.\n * @returns JSX element.\n */\n// eslint-disable-next-line no-redeclare\nconst CartLine: React.FC = (props: ICartLineProps) => {\n const { isSalesLine, productUrl, resources } = props;\n const { product, cartLine } = props.data;\n\n const destructDimensionStrings = {\n sizeString: resources.sizeString,\n colorString: resources.colorString,\n styleString: resources.styleString,\n configString: resources.configString,\n amountString: resources.amountString\n };\n\n const fallbackImageUrl =\n product &&\n getFallbackImageUrl(\n product.ItemId,\n props.context.actionContext.requestContext.apiSettings,\n props.context.request.app?.config?.OmniChannelMedia\n );\n const productDimensions = product && cartLineItemFunctions.renderProductDimensions(product, destructDimensionStrings);\n const renderProductUnitPrice = cartLineItemFunctions.renderProductUnitPrice(props);\n const imageSettings = props.imageSettings;\n if (imageSettings) {\n imageSettings.cropFocalRegion = true;\n }\n const renderDiscountLines = cartLineItemFunctions.renderDiscountLines(props);\n const renderInventoryLabel = cartLineItemFunctions.renderInventoryLabel(props);\n const renderShippingLabel = cartLineItemFunctions.renderShippingLabel(props);\n const renderOtherCharges = cartLineItemFunctions.renderOtherCharges(props);\n const renderSalesAgreementPrompt = cartLineItemFunctions.renderSalesAgreementPrompt(props);\n const payLoad = getPayloadObject('click', props.telemetryContent!, '', product?.RecordId.toString());\n const productAttribute = getTelemetryAttributes(props.telemetryContent!, payLoad);\n const productName = product?.Name ?? cartLine.Description;\n const imgeClassName = props.data.cartLine.IsInvoiceLine ? 'msc-cart-line__invoice-image' : 'msc-cart-line__product-image';\n const cartLineContentClassName = props.data.cartLine.IsInvoiceLine ? 'msc-cart-line__invoice-content' : 'msc-cart-line__content';\n\n /**\n * Render other charges.\n * @param newValue - The cart line props.\n * @returns Boolean.\n */\n const onChange = (newValue: number): boolean => {\n if (props.quantityOnChange) {\n return props.quantityOnChange(props.data.cartLine, newValue);\n }\n return true;\n };\n\n /**\n * Generate error message.\n * @returns JSX element.\n */\n const generateErrorMessage = (): JSX.Element | null => {\n if (props.errorMessage) {\n return (\n
\n \n {props.errorMessage}\n
\n );\n }\n\n return null;\n };\n\n /**\n * Render Saving component.\n * @returns JSX element.\n */\n const renderSaving = (): JSX.Element | null => {\n if (!props.data.cartLine.DiscountAmount) {\n return null;\n }\n const discountAmountZero: number = 0;\n\n if (props.data.cartLine.DiscountAmount > discountAmountZero) {\n return (\n <>\n {`${props.resources.discountStringText || 'Discount'}`}\n \n \n );\n }\n return null;\n };\n\n /**\n * Gets the react node for product unit of measure display.\n * @returns The node representing markup for unit of measure component.\n */\n const renderUnitOfMeasure = () => {\n if (props.data.cartLine.IsInvoiceLine) {\n return null;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- Do not need type check for appsettings\n if (!props.context.app.config.unitOfMeasureDisplayType || props.context.app.config.unitOfMeasureDisplayType === 'none') {\n return undefined;\n }\n\n if (!product || !product.DefaultUnitOfMeasure) {\n return undefined;\n }\n\n return (\n
\n {product.DefaultUnitOfMeasure}\n
\n );\n };\n\n /**\n * Generate quantity and price component.\n * @returns JSX element.\n */\n const generateQuantityAndPrice = (): JSX.Element[] | null => {\n const nodes = [];\n const defaultMaxQuantity: number = 10;\n const singleQuantity: number = 1;\n const unitOfMeasure = renderUnitOfMeasure();\n\n // No quantity selector for invoice line\n if (!props.data.cartLine.IsInvoiceLine) {\n if (props.data.product && props.isQuantityEditable) {\n nodes.push(\n
\n
{resources.quantityDisplayString}
\n\n {generateErrorMessage()}\n\n \n {unitOfMeasure}\n
\n );\n } else {\n nodes.push(\n \n {unitOfMeasure}\n \n\n {generateErrorMessage()}\n\n {props.data.cartLine.Quantity}\n \n );\n }\n }\n\n nodes.push(\n
\n \n {renderSaving()}\n {props.isOutOfStock ? renderInventoryLabel : null}\n
\n );\n\n return nodes;\n };\n\n const _renderStoreLocation = (): JSX.Element | null => {\n if (cartLine && cartLine.FulfillmentStoreId) {\n return (\n
\n {props.deliveryLocation}\n
\n );\n } else {\n return (\n
\n {props.deliveryLocation}\n
\n );\n }\n };\n\n return (\n
\n {MsDyn365.isBrowser ? (\n \n \n ) : null}\n
\n
\n \n {MsDyn365.isBrowser ? (\n \n {productName}\n \n ) : null}\n {ArrayExtensions.hasElements(productDimensions) ? (\n
{productDimensions}
\n ) : (\n ''\n )}\n
\n \n {renderUnitOfMeasure()}\n
\n {renderProductUnitPrice}\n {renderInventoryLabel}\n {renderDiscountLines}\n {props.showShippingChargesForLineItems &&
{renderShippingLabel}
}\n {renderOtherCharges}\n {renderSalesAgreementPrompt}\n
\n {generateQuantityAndPrice()}\n {renderSalesAgreementPrompt}\n {props.data.cartLine.IsInvoiceLine && props.data.cartState && props.resources.priceEditorResources && (\n \n )}\n {_renderStoreLocation()}\n
\n
\n );\n};\n\n// @ts-expect-error\nexport const CartLineItemComponent: React.FunctionComponent = msdyn365Commerce.createComponentOverride(\n 'CartLineItem',\n {\n component: CartLine,\n ...cartLineItemFunctions\n }\n);\n\nexport default CartLineItemComponent;\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 { Review } from '@msdyn365-commerce/commerce-entities';\nimport { RatingComponent } from '@msdyn365-commerce/components';\nimport { getUrlSync, IAny, ICoreContext, IGeneric } from '@msdyn365-commerce/core';\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { getRnrAuthEndpointId, getRnrPartnerId } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Alert,\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n INodeProps,\n ITelemetryContent,\n Modal,\n ModalBody,\n ModalFooter,\n ModalHeader,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport classNames from 'classnames';\nimport { GetUserReviewInput } from '../actions/inputs/get-user-review-input';\nimport { SubmitUserReviewInput } from '../actions/inputs/submit-user-review-input';\nimport submitUserReview from '../actions/submit-user-review';\n\nexport interface IReviewModalProps {\n userReview?: Review;\n product?: SimpleProduct;\n renderContextId: string;\n resources: IReviewModalResources;\n context: ICoreContext>;\n parentId: string;\n parentType: string;\n isOpen: boolean;\n rating: number;\n reviewTitle: string;\n reviewText: string;\n returnRef: React.RefObject | undefined;\n hasError: boolean;\n telemetryContent?: ITelemetryContent;\n onModalToggle(): void;\n onTitleChange(event: React.ChangeEvent): void;\n onTextChange(event: React.ChangeEvent): void;\n onRatingChange(value: number): void;\n onReviewComplete?(isSuccess: boolean): void;\n modalCSS?: string;\n}\n\nexport interface IReviewModalResources {\n selectRatingAriaLabel: string;\n selectRatingLabel: string;\n reviewTitleLabel: string;\n reviewTextLabel: string;\n privacyPolicyTitle: string;\n privacyPolicyTextFormat: string;\n writeReviewModalTitle: string;\n editReviewModalTitle: string;\n submitReviewButtonText: string;\n discardReviewButtonText: string;\n errorMessageText: string;\n reviewTitleAriaLabel?: string;\n reviewAriaLabel?: string;\n}\n\nexport interface IReviewModalViewProps {\n modal: INodeProps;\n modalHeader: React.ReactElement;\n modalFooter: INodeProps;\n modalBody: INodeProps;\n cancelButton: React.ReactElement;\n submitButton: React.ReactElement;\n rating: React.ReactElement;\n ratingLabel: React.ReactElement;\n titleInput: React.ReactElement;\n titleLabel: React.ReactElement;\n textInput: React.ReactElement;\n textLabel: React.ReactElement;\n privacyPolicyUrl: React.ReactElement;\n form: INodeProps;\n inputRow: INodeProps;\n error: React.ReactElement;\n}\n\n/**\n * On Click Submit.\n * @param props -Review Modal props.\n * @returns On submit.\n */\nconst onClickSubmit = (props: IReviewModalProps) => () => {\n onSubmit(props);\n};\n\n/**\n * CartLineItems component.\n */\n\nexport const ReviewModal = (props: IReviewModalProps): IReviewModalViewProps => {\n const payLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.SubmitReview);\n const submitButtonAttribute = getTelemetryAttributes(props.telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.Cancel;\n const cancelButtonAttribute = getTelemetryAttributes(props.telemetryContent!, payLoad);\n return {\n modal: {\n tag: Modal,\n className: props.modalCSS ? classNames(props.modalCSS, 'msc-modal-input-required') : 'ms-review-modal msc-modal-input-required',\n toggle: props.onModalToggle,\n applicationNode: 'renderPage',\n isOpen: props.isOpen,\n returnFocusRef: props.returnRef\n },\n modalHeader: modalHeaderNode(props),\n modalFooter: { tag: ModalFooter, className: 'ms-review-modal-footer' },\n modalBody: { tag: ModalBody, className: 'ms-review-modal-body' },\n cancelButton: (\n \n ),\n submitButton: (\n \n {props.resources.submitReviewButtonText}\n \n ),\n rating: ratingsInput(props),\n ratingLabel: ratingsLabel(props),\n titleInput: titleInput(props),\n titleLabel: titleLabel(props),\n textInput: textInput(props),\n textLabel: textLabel(props),\n privacyPolicyUrl: privacyPolicyLink(props),\n form: { tag: 'form', className: 'ms-review-modal-form', autoComplete: 'off' },\n inputRow: { tag: 'div', className: 'ms-review-modal-row', autoComplete: 'off' },\n error: (\n \n {props.resources.errorMessageText}\n \n )\n };\n};\n\nconst modalHeaderNode = (props: IReviewModalProps) => {\n return (\n \n {props.userReview && props.userReview.reviewId ? props.resources.editReviewModalTitle : props.resources.writeReviewModalTitle}\n \n );\n};\n\nconst submitDisabled = (props: IReviewModalProps) => {\n return !props.rating || !stripWhiteSpacesFromString(props.reviewText) || !stripWhiteSpacesFromString(props.reviewTitle);\n};\n\nconst ratingsInput = (props: IReviewModalProps) => {\n return (\n \n );\n};\n\nconst ratingsLabel = (props: IReviewModalProps) => {\n return (\n \n );\n};\n\nconst titleInput = (props: IReviewModalProps) => {\n const maxLength = props.context.app.config.reviewTitleMaxLength;\n\n return (\n \n );\n};\n\nconst titleLabel = (props: IReviewModalProps) => {\n return (\n \n );\n};\n\nconst reviewTextWidth: number = 50;\n\nconst textInput = (props: IReviewModalProps) => {\n const maxLength = props.context.app.config.reviewTextMaxLength;\n return (\n \n );\n};\n\nconst textLabel = (props: IReviewModalProps) => {\n return (\n \n );\n};\n\nconst privacyPolicyLink = (props: IReviewModalProps) => {\n const policyTextBlocks = props.resources.privacyPolicyTextFormat.split('{0}');\n const isSeparatorAtStart = props.resources.privacyPolicyTextFormat.startsWith('{0}');\n const isSeparatorAtEnd = props.resources.privacyPolicyTextFormat.endsWith('{0}');\n const privacyPolicyUrl = getUrlSync('rnrPrivacyPolicy', props.context.actionContext);\n const payLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.PrivacyPolicy);\n const privacyPolicyAttribute = getTelemetryAttributes(props.telemetryContent!, payLoad);\n\n return (\n

\n {isSeparatorAtStart ? '' : policyTextBlocks[0]}\n \n {props.resources.privacyPolicyTitle}\n \n {isSeparatorAtEnd ? '' : isSeparatorAtStart ? policyTextBlocks[0] : policyTextBlocks[1]}\n

\n );\n};\n\nconst onSubmit = (props: IReviewModalProps): void => {\n if (props.product) {\n submitReview(\n props.product,\n props.reviewTitle,\n props.reviewText,\n props.rating,\n props.context,\n props.userReview,\n props.onReviewComplete\n );\n }\n};\n\n/**\n * This method strips content of extra white spaces.\n * @param text The text to be stripped of extra white spaces.\n */\nconst stripWhiteSpacesFromString = (text: string): string => {\n return text\n .replace(new RegExp('\\\\r?\\\\n|\\\\r+', 'g'), ' ')\n .replace(new RegExp('\\\\s+', 'g'), ' ')\n .trim();\n};\n\nexport const submitReview = (\n product: SimpleProduct,\n title: string,\n text: string,\n rating: number,\n context: ICoreContext,\n userReview?: Review,\n onReviewSubmission?: (isSuccessful: boolean) => void\n) => {\n const { request } = context;\n const { user } = request;\n if (user && request) {\n const input = new SubmitUserReviewInput(\n product.RecordId.toString(),\n getRnrPartnerId(context.actionContext),\n request.apiSettings.channelId.toString(),\n request.locale,\n {\n productName: product && product.Name,\n rating,\n reviewText: stripWhiteSpacesFromString(text),\n title: stripWhiteSpacesFromString(title),\n userEmail: user.emailAddress,\n userName: user.name\n },\n request.user.token,\n getRnrAuthEndpointId(context.actionContext)\n );\n\n submitUserReview(input, context.actionContext)\n .then(reviewId => {\n const review = reviewId\n ? {\n rating,\n title: stripWhiteSpacesFromString(title),\n reviewText: stripWhiteSpacesFromString(text),\n submittedDateTime: new Date(),\n helpfulPositive: userReview ? userReview.helpfulPositive : 0,\n helpfulNegative: userReview ? userReview.helpfulNegative : 0,\n reviewId,\n userName: request.user.firstName || request.user.name\n }\n : userReview;\n\n const getReviewInput = new GetUserReviewInput(input.productId!, input.tenantId, input.authorization, input.serviceEndpoint);\n context.actionContext.update(getReviewInput, review);\n\n if (onReviewSubmission) {\n onReviewSubmission(!!reviewId);\n }\n })\n .catch(() => {\n const productId = product.RecordId;\n context.telemetry.error(`Failed to submit review for product with recordId: ${productId}`);\n context.telemetry.debug(`Failed to submit review for product with recordId: ${productId}`);\n if (onReviewSubmission) {\n onReviewSubmission(false);\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 { IInvoiceSummaryLines, InvoiceSummary } from '@msdyn365-commerce-modules/invoice-payment-summary';\nimport get from 'lodash/get';\nimport * as React from 'react';\n\nimport { ICheckoutData } from '../checkout.data';\nimport { ICheckoutProps } from '../checkout.props.autogenerated';\n\nexport interface IInvoicePaymentSummary {\n heading?: React.ReactNode;\n lines?: IInvoiceSummaryLines;\n}\nexport const getInvoicePaymentSummary = (input: ICheckoutProps): IInvoicePaymentSummary => {\n const {\n data: { checkout },\n resources: { totalAmountLabel, invoiceLabel, invoiceSummaryTitle },\n context,\n typeName,\n id,\n telemetry\n } = input;\n\n const checkoutCart = get(checkout, 'result.checkoutCart');\n const cart = get(checkout, 'result.checkoutCart.cart');\n\n return {\n heading:

{invoiceSummaryTitle}

,\n lines: checkoutCart?.hasInvoiceLine\n ? InvoiceSummary({\n orderTotalLabel: totalAmountLabel,\n invoiceLabel,\n cart,\n context,\n typeName,\n telemetry,\n id,\n checkoutState: checkout.result\n })\n : undefined\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 { isChannelTypeB2B } from '@msdyn365-commerce/core';\nimport { AsyncResultStatus, Cart, CartLineValidationResults } from '@msdyn365-commerce/retail-proxy';\nimport {\n updateLineDeliverySpecificationsAsync,\n validateForCheckoutAsync\n} from '@msdyn365-commerce/retail-proxy/dist/DataActions/CartsDataActions.g';\nimport {\n Address,\n DeliveryPreferenceType,\n LineDeliverySpecification,\n SimpleProduct,\n TokenizedPaymentCard\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { IModuleStateManager, IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\nimport {\n ArrayExtensions,\n getAvailabilitiesForCartLineItems,\n IProductInventoryInformation,\n ProductAvailabilitiesForCartLineItems,\n validateCartLinesInventory\n} from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IModuleProps,\n INodeProps,\n ITelemetryContent,\n TelemetryConstant,\n Waiting\n} from '@msdyn365-commerce-modules/utilities';\nimport { ErrorCode, ErrorLocation } from '@msdyn365-commerce/global-state';\nimport classnames from 'classnames';\nimport isEmpty from 'lodash/isEmpty';\nimport { action, computed, get, reaction, when } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { ICheckoutData } from './checkout.data';\nimport { ICheckoutHeadingData, ICheckoutProps } from './checkout.props.autogenerated';\nimport AlertComponent from './components/alert';\nimport { getInvoicePaymentSummary, IInvoicePaymentSummary } from './components/get-invoice-payment-summary';\nimport { getLineItems, ILineItems } from './components/get-line-items';\nimport { getOrderSummary, IOrderSummary } from './components/get-order-summary';\nimport GuidedFormComponent from './components/guided-form';\nimport PlaceOrderButtonComponent from './components/place-order-button';\nimport placeOrder from './methods/place-order';\nimport { focusOnCheckoutError, setCheckoutErrors } from '../../checkout-errors';\nimport { AsyncResultStatusCode, IExpressPaymentDetails } from '../../common';\n\nexport * from './components/get-line-items';\nexport * from './components/get-order-summary';\n\n/**\n * Device type.\n */\ntype DeviceType = 'Mobile';\n\n/**\n * The Checkout state.\n */\ninterface ICheckoutState {\n errorMessage: string;\n isValidationPassed: boolean;\n isPlaceOrderLoading?: boolean;\n isPlaceOrderClicked?: boolean;\n}\n\n/**\n * The Checkout view props.\n * @extends ICheckoutProps\n */\nexport interface ICheckoutViewProps extends ICheckoutProps {\n className: string;\n canShow?: boolean;\n isEmptyCart?: boolean;\n isConsentGiven?: boolean;\n hasError?: boolean;\n isPaymentVerificationRedirection?: boolean;\n shouldEnableSinglePaymentAuthorizationCheckout?: boolean;\n cartStatus?: string;\n isMobile?: boolean;\n isEditorialMode?: boolean;\n backToShoppingUrl?: string;\n editCartLink?: string;\n hasSalesOrder: boolean;\n hasInvoiceLine?: boolean;\n\n checkoutProps: IModuleProps;\n headerProps: INodeProps;\n bodyProps: INodeProps;\n mainProps: INodeProps;\n mainControlProps: INodeProps;\n sideProps: INodeProps;\n sideControlFirstProps: INodeProps;\n sideControlSecondProps: INodeProps;\n termsAndConditionsProps: INodeProps;\n\n guidedForm?: React.ReactNode;\n title?: React.ReactNode;\n loading?: React.ReactNode;\n alert?: React.ReactNode;\n orderSummary?: IOrderSummary;\n invoicePaymentSummary?: IInvoicePaymentSummary;\n lineItems?: ILineItems;\n placeOrderButton?: React.ReactNode;\n termsAndConditions?: React.ReactNode;\n keepShoppingButton?: React.ReactNode;\n orderConfirmation?: React.ReactNode;\n\n checkoutExpressPaymentContainer?: React.ReactNode;\n checkoutErrorRef?: React.RefObject;\n}\n\n/**\n * The checkout module props interface.\n */\nexport interface ICheckoutModuleProps extends ICheckoutProps, IModuleStateProps {}\n\nconst expressPaymentSectionClassName = 'msc-express-payment-container';\n\n/**\n *\n * CheckoutContainer component.\n * @extends {React.Component}\n */\n// @ts-expect-error\n@withModuleState\n@observer\nclass Checkout extends React.PureComponent {\n @computed get cartStatus(): Msdyn365.AsyncResultStatus {\n return this.props.data.checkout?.status;\n }\n\n @computed get isEmptyCart(): boolean {\n if (this.isEditorialMode) {\n // Editorial mode: Ignore empty cart\n return false;\n }\n const cart = this.props.data.checkout?.result?.checkoutCart?.cart;\n return this.cartStatus === 'SUCCESS' && !!cart && !isEmpty(cart) && (!cart.CartLines || cart.CartLines.length === 0);\n }\n\n @computed get hasError(): boolean {\n const cart = this.props.data.checkout?.result?.checkoutCart?.cart;\n return this.cartStatus === 'FAILED' || (this.cartStatus === 'SUCCESS' && (!cart || isEmpty(cart)));\n }\n\n @computed get isEditorialMode(): boolean {\n return this.props.context.request.params.isEditor;\n }\n\n @computed get canPlaceOrder(): boolean {\n const isTermsAndConditionAccepted = this.props.data.checkout.result && this.props.data.checkout.result?.isTermsAndConditionAccepted;\n\n const shouldEnableSinglePaymentAuthorizationCheckout =\n this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout ?? false;\n\n const disableForOBO = Msdyn365.isOboRequest(this.props.context.request) && !this.isPaidOffByCustomerAccount;\n\n // If isTermsAndConditionAccepted is undefined means TermsAndCondition module is not added to page and we should able to place order.\n return (\n this.props.moduleState.isReady &&\n (isTermsAndConditionAccepted === undefined || isTermsAndConditionAccepted || shouldEnableSinglePaymentAuthorizationCheckout) &&\n (this.state.errorMessage === '' ||\n shouldEnableSinglePaymentAuthorizationCheckout ||\n (this.props.data.checkout.result?.isPaymentVerificationRedirection ?? false)) &&\n !(shouldEnableSinglePaymentAuthorizationCheckout && disableForOBO)\n );\n }\n\n @computed get isPaidOffByCustomerAccount(): boolean {\n const amountDue = this.props.data.checkout.result?.checkoutCart.cart.TotalAmount ?? 0;\n const customerAccountAmount = this.props.data.checkout.result?.customerAccountAmount ?? 0;\n\n return customerAccountAmount === amountDue;\n }\n\n @computed get isCartReady(): boolean {\n return (\n !!this.props.data.checkout.result?.checkoutCart?.cart &&\n this.props.data.customerInformation.status !== 'LOADING' &&\n this.props.data.featureState.status !== 'LOADING'\n );\n }\n\n public get expressPaymentDetailsFromCartPage(): IExpressPaymentDetails | null {\n const properties =\n this.props.data.checkout?.result?.checkoutCart?.cart?.ExtensionProperties?.find(\n property => property.Key === 'expressPaymentDetails'\n )?.Value?.StringValue ?? '';\n return properties ? (JSON.parse(properties) as IExpressPaymentDetails) : null;\n }\n\n public state: ICheckoutState = {\n errorMessage: '',\n isValidationPassed: false,\n isPlaceOrderLoading: false,\n isPlaceOrderClicked: false\n };\n\n private readonly telemetryContent: ITelemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n private readonly checkoutErrorRef: React.RefObject = React.createRef();\n\n public componentDidMount(): void {\n const {\n resources: { genericErrorMessage }\n } = this.props;\n\n when(\n () => this.asyncResultStatus !== AsyncResultStatusCode.LOADING,\n async () => {\n if (this.expressPaymentDetailsFromCartPage) {\n const {\n email,\n tenderLine,\n tokenizedPaymentCard,\n paymentTenderType: paymentTenderTypeFromCartPage,\n isExpressCheckoutAppliedInCartPage,\n isExpressAddressAppliedInCartPage,\n cardPaymentAcceptResult,\n address\n } = this.expressPaymentDetailsFromCartPage;\n\n this.props.data.checkout.result?.updateExpressCheckoutDetails({\n newEmailAddressFromExpressCheckout: email ?? '',\n newTenderLine: tenderLine,\n newTokenizedPaymentCard: tokenizedPaymentCard,\n newPaymentTenderType: paymentTenderTypeFromCartPage,\n newIsExpressCheckoutApplied: isExpressCheckoutAppliedInCartPage,\n newIsExpressAddressApplied: isExpressAddressAppliedInCartPage,\n newCardPaymentAcceptResult: cardPaymentAcceptResult\n });\n\n if (isExpressAddressAppliedInCartPage && address) {\n this.props.data.checkout.result?.updateBillingAddressFromExpressCheckout({\n newBillingAddressFromExpressCheckout: address\n });\n this.props.data.checkout.result?.updateShippingAddressFromExpressCheckout({\n newShippingAddressFromExpressCheckout: address\n });\n } else {\n void this._saveShippingAndBillingAddress(tokenizedPaymentCard);\n }\n\n this.props.data.checkout.result?.checkoutCart.updateExtensionProperties({\n newExtensionProperties: [\n {\n Key: 'expressPaymentDetails',\n Value: { StringValue: '' }\n }\n ]\n });\n }\n }\n );\n\n when(\n () => this.hasError,\n () => {\n this.setState({\n errorMessage: genericErrorMessage\n });\n this.props.context.telemetry.error('Failed to get cart');\n }\n );\n\n when(\n () => {\n return this.isEmptyCart;\n },\n () => {\n this.redirectToCartPage('Cart is empty, but no editCartLink found');\n }\n );\n\n when(\n () => this.isCartReady,\n () => {\n this.validateForCheckout();\n }\n );\n\n reaction(\n () => this.props.moduleState.isReady,\n () => {\n this.onContainerReady();\n }\n );\n\n // Reaction to call place order when isPaymentSectionContainerReady is true for new checkout flow.\n reaction(\n () => this.props.data.checkout.result?.isPaymentSectionContainerReady,\n async isReady => {\n if (\n this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout &&\n isReady &&\n !this.props.data.checkout.result?.redirectAdditionalContext &&\n (!this.props.data.checkout.result?.isExpressCheckoutApplied ||\n this.props.data.checkout.result?.isPaymentVerificationRedirection)\n ) {\n if (!this.state.isPlaceOrderLoading) {\n this.setState({ isPlaceOrderLoading: true });\n }\n\n this.props.telemetry.information(\n 'Call onPlaceOrder as reaction when isPaymentSectionContainerReady is updated for single auth payment.'\n );\n\n await this.onPlaceOrder();\n\n // If 3D authentication redirection, don't update isPlaceOrderLoading\n if (!this.props.data.checkout.result.isPaymentVerificationRequired) {\n this.setState({ isPlaceOrderLoading: false });\n }\n }\n }\n );\n\n // Reaction to enable place order button when isPaymentSectionContainerHasError is true for new checkout flow.\n reaction(\n () => this.props.data.checkout.result?.isPaymentSectionContainerHasError,\n hasError => {\n if (this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout && hasError) {\n this.setState({ isPlaceOrderLoading: false });\n\n this.props.telemetry.information(\n 'Enable place order button as reaction when isPaymentSectionContainerHasError is updated to true for single auth payment.'\n );\n } else {\n this.props.telemetry.information(\n 'No reaction when isPaymentSectionContainerHasError is updated to false or not single auth payment.'\n );\n }\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.isBillingAddressHasError,\n hasError => {\n if (this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout && hasError) {\n this.setState({ isPlaceOrderLoading: false });\n\n this.props.data.checkout.result?.updateIsBillingAddressHasError({ newIsBillingAddressHasError: false });\n\n this.props.telemetry.information(\n 'Enable place order button as reaction when isBillingAddressHasError is updated to true for single auth payment.'\n );\n } else {\n this.props.telemetry.information(\n 'No reaction when isBillingAddressHasError is updated to false or not single auth payment.'\n );\n }\n }\n );\n\n // Reaction to enable place order button when redirection is true for new checkout flow.\n reaction(\n () => this.canPlaceOrder,\n async () => {\n if (this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout && this.canPlaceOrder) {\n if (this.props.data.checkout.result?.isPaymentVerificationRedirection) {\n await this.props.data.checkout.result.updateIsPlaceOrderEnabledInRedirection({\n newIsPlaceOrderEnabledInRedirection: true\n });\n\n this.props.telemetry.information(\n 'Set isPaymentVerificationRedirection to true as reaction when canPlaceOrder is updated to true for single auth payment.'\n );\n } else {\n this.props.telemetry.information(\n 'No reaction when canPlaceOrder is updated to true but isPaymentVerificationRedirection is false for single auth payment.'\n );\n this.props.telemetry.information(\n `isOBORequest is ${Msdyn365.isOboRequest(this.props.context.request)} and canPlaceOrder is ${\n this.canPlaceOrder\n }.`\n );\n }\n } else {\n this.props.telemetry.information('No reaction when canPlaceOrder is updated to false or not single auth payment.');\n }\n }\n );\n\n // Reaction to update the error message when there is a checkout error.\n reaction(\n () => this.props.data.checkout.result?.checkoutError,\n checkoutError => {\n const checkoutErrorLocation: boolean = checkoutError?.errorLocation === ErrorLocation.Checkout;\n // If there is an Error in CheckoutPaymentInstrument module, checkout error location will be updated.\n const checkoutPaymentErrorLocation: boolean =\n checkoutError?.errorCode === ErrorCode.Microsoft_Dynamics_Commerce_Runtime_UnableToAuthorizePayment\n ? checkoutError.errorLocation === ErrorLocation.CheckoutPaymentInstrument\n : checkoutErrorLocation;\n if (\n this.props.data.checkout.result?.shouldEnableCheckoutErrorDisplayMessaging &&\n checkoutError &&\n checkoutError.errorMessage &&\n (checkoutErrorLocation ? checkoutErrorLocation : checkoutPaymentErrorLocation)\n ) {\n this._setErrorMessage(checkoutError.errorMessage);\n }\n }\n );\n }\n\n public componentDidUpdate(): void {\n if (\n this.props.data.checkout.result?.shouldEnableCheckoutErrorDisplayMessaging &&\n this.props.data.checkout.result?.shouldFocusOnCheckoutError &&\n this.state.errorMessage\n ) {\n focusOnCheckoutError(this.checkoutErrorRef, this.props.context.actionContext);\n }\n }\n\n // eslint-disable-next-line complexity -- ignore the complexity.\n public render(): JSX.Element {\n const {\n moduleState,\n config: { className, checkoutHeading, disableGuidedCheckoutFlow },\n resources,\n context: {\n request: {\n user: { isAuthenticated }\n }\n }\n } = this.props;\n const { errorMessage } = this.state;\n const { backToShopping, placeOrderText, confirmPaymentText, cookieConsentRequiredMessage, genericErrorMessage } = resources;\n const checkoutClass = classnames('ms-checkout', className);\n const allCheckoutInformation = this.getSlotItems('checkoutInformation');\n\n // @ts-expect-error - check the key of slot\n const checkoutInformation = allCheckoutInformation?.filter(info => !info?.key.includes('express-payment'));\n\n // @ts-expect-error - check the key of slot\n const checkoutExpressPaymentContainer = allCheckoutInformation?.find(info => info?.key.includes('express-payment'));\n\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 const isMobile =\n this.props.context.request &&\n this.props.context.request.device &&\n (this.props.context.request.device.Type as DeviceType) === 'Mobile';\n\n const backToShoppingUrl = Msdyn365.getUrlSync('home', this.props.context.actionContext) || '';\n const editCartLink = Msdyn365.getUrlSync('cart', this.props.context.actionContext) || '';\n\n const termsAndConditions =\n this.props.slots.termsAndConditions && this.props.slots.termsAndConditions.length > 0 && this.props.slots.termsAndConditions[0];\n\n const payLoad = getPayloadObject('click', this.telemetryContent, TelemetryConstant.BackToShopping);\n const backToShoppingAttributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n\n const hasInvoiceLine = this.props.data.checkout && this.props.data.checkout.result?.checkoutCart.hasInvoiceLine;\n const checkoutBtnText = hasInvoiceLine ? confirmPaymentText : placeOrderText;\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check for null/undefined.\n const shouldEnableSinglePaymentAuthorizationCheckout =\n this.props.data.checkout?.result?.shouldEnableSinglePaymentAuthorizationCheckout ?? false;\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check null/undefined.\n const isExpressCheckoutApplied = this.props.data.checkout?.result?.isExpressCheckoutApplied ?? false;\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check null/undefined.\n const hasShippingAddress = this.props.data.checkout?.result?.hasShippingAddress;\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check null/undefined.\n const hasCartDeliveryMode = this.props.data.checkout?.result?.hasCartDeliveryMode;\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check null/undefined.\n const hasGuestCheckoutEmail = this.props.data.checkout?.result?.hasGuestCheckoutEmail;\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check null/undefined.\n const isTermsAndConditionAccepted = this.props.data.checkout?.result?.isTermsAndConditionAccepted;\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check null/undefined.\n const isPaymentVerificationRedirection = this.props.data.checkout?.result?.isPaymentVerificationRedirection ?? false;\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check null/undefined.\n const shouldEnableCheckoutErrorDisplayMessaging =\n this.props.data.checkout?.result?.shouldEnableCheckoutErrorDisplayMessaging ?? false;\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Explicitly check null/undefined.\n const shouldFocusOnCheckoutError = this.props.data.checkout?.result?.shouldFocusOnCheckoutError;\n\n let hasExpressPaymentContainer = false;\n\n if (\n typeof window !== 'undefined' &&\n (document?.getElementsByClassName(expressPaymentSectionClassName) as HTMLCollectionOf)[0]?.style.display === ''\n ) {\n hasExpressPaymentContainer = true;\n }\n\n let viewProps: ICheckoutViewProps = {\n ...this.props,\n className: checkoutClass,\n checkoutErrorRef: this.checkoutErrorRef,\n isEmptyCart: this.isEmptyCart,\n isConsentGiven,\n hasError: this.hasError,\n isPaymentVerificationRedirection: this.props.data.checkout?.result?.isPaymentVerificationRedirection,\n shouldEnableSinglePaymentAuthorizationCheckout,\n hasSalesOrder:\n this.props.data.checkout &&\n this.props.data.checkout.result !== undefined &&\n this.props.data.checkout.result.salesOrder !== undefined,\n hasInvoiceLine,\n cartStatus: this.cartStatus,\n isMobile,\n backToShoppingUrl,\n editCartLink,\n isEditorialMode: this.isEditorialMode,\n orderConfirmation:\n this.props.slots.orderConfirmation && this.props.slots.orderConfirmation.length > 0\n ? this.props.slots.orderConfirmation[0]\n : undefined,\n checkoutProps: { moduleProps: this.props, className: checkoutClass },\n headerProps: { className: 'ms-checkout__head' },\n bodyProps: { className: 'ms-checkout__body' },\n mainProps: { className: 'ms-checkout__main' },\n mainControlProps: { className: 'ms-checkout__main-control' },\n sideProps: { className: hasExpressPaymentContainer ? 'ms-checkout__has-express-side' : 'ms-checkout__side' },\n sideControlFirstProps: { className: 'ms-checkout__side-control-first' },\n sideControlSecondProps: { className: 'ms-checkout__side-control-second' },\n termsAndConditionsProps: { className: 'ms-checkout__terms-and-conditions' },\n title: checkoutHeading && this.renderMsdyn365Text(checkoutHeading),\n checkoutExpressPaymentContainer\n };\n\n if (!isConsentGiven && isAuthenticated) {\n viewProps = {\n ...viewProps,\n alert: \n };\n } else if (this.isLoading()) {\n viewProps = {\n ...viewProps,\n loading: \n };\n } else if (this.hasError) {\n viewProps = {\n ...viewProps,\n alert: \n };\n } else {\n viewProps = {\n ...viewProps,\n alert: errorMessage && ,\n canShow: true,\n guidedForm: checkoutInformation ? (\n \n ) : (\n undefined\n ),\n orderSummary: getOrderSummary(this.props),\n invoicePaymentSummary: getInvoicePaymentSummary(this.props),\n lineItems: hasInvoiceLine ? undefined : getLineItems(this.props, this.telemetryContent),\n placeOrderButton: (\n \n ),\n termsAndConditions,\n keepShoppingButton: backToShoppingUrl && (\n \n {backToShopping}\n \n )\n };\n }\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n @computed public get asyncResultStatus(): AsyncResultStatus | undefined {\n const isLoading = Object.values(this.props.data).some(data => get(data, 'status') === AsyncResultStatusCode.LOADING);\n if (isLoading) {\n return AsyncResultStatusCode.LOADING;\n }\n\n const isSuccess = Object.values(this.props.data).every(data => get(data, 'status') === AsyncResultStatusCode.SUCCESS);\n if (isSuccess) {\n return AsyncResultStatusCode.SUCCESS;\n }\n\n const isFailed = Object.values(this.props.data).some(data => get(data, 'status') === AsyncResultStatusCode.FAILED);\n if (isFailed) {\n return AsyncResultStatusCode.FAILED;\n }\n\n return undefined;\n }\n\n /**\n * Renders heading.\n * @param checkoutHeading - The checkout heading.\n * @returns React node.\n */\n public renderMsdyn365Text(checkoutHeading: ICheckoutHeadingData): React.ReactNode {\n return (\n \n );\n }\n\n /**\n * Event handler for heading change event.\n * @param event - The content change event in heading element.\n * @returns The new heading value.\n */\n public handleCheckoutHeadingChange = (event: Msdyn365.ContentEditableEvent) =>\n (this.props.config.checkoutHeading!.text = event.target.value);\n\n /**\n * Checks if cart is loading.\n * @returns True if is loading, false otherwise.\n */\n private readonly isLoading = (): boolean => {\n return !this.cartStatus || this.cartStatus === 'LOADING' || this.isEmptyCart || !this.state.isValidationPassed;\n };\n\n /**\n * Get slot items.\n * @param key - The slot key.\n * @returns React node or undefined.\n */\n private readonly getSlotItems = (key: string): React.ReactNode[] | undefined => {\n const { slots } = this.props;\n return slots && slots[key] && slots[key].length > 0 ? slots[key] : undefined;\n };\n\n /**\n * Trigger the payment section container submit when placing order.\n */\n private readonly triggerPaymentWithPlaceOrder = async (): Promise => {\n this.setState({ isPlaceOrderLoading: true });\n\n await this.props.data.checkout.result?.updateShouldTriggerPaymentWithPlaceOrder({\n newShouldTriggerPaymentWithPlaceOrder: !this.props.data.checkout.result.shouldTriggerPaymentWithPlaceOrder\n });\n };\n\n /**\n * On place order.\n * @returns Void promise.\n */\n private readonly onPlaceOrder = async (): Promise => {\n const {\n resources: { checkoutOutOfStockErrorMessage },\n context: {\n actionContext,\n app: {\n config: { enableStockCheck = false }\n }\n },\n slots: { orderConfirmation },\n data: { checkout, products }\n } = this.props;\n\n this.props.telemetry.information('Checkout onPlaceOrder is called.');\n this.setState({ isPlaceOrderClicked: true });\n\n // If hasInvoiceLine is true, no inventory check\n if (\n !this.props.data.checkout.result?.checkoutCart.hasInvoiceLine &&\n enableStockCheck &&\n (await this.isOverMaxQuantity((await checkout).checkoutCart.cart, await products))\n ) {\n this.setState({\n errorMessage: checkoutOutOfStockErrorMessage\n });\n this.props.context.telemetry.error(checkoutOutOfStockErrorMessage);\n } else {\n const hasOrderConfirmation = orderConfirmation && orderConfirmation.length > 0;\n\n const updatedCartVersion = await this.updateCartLineEmailAddress(this.props.data.checkout.result?.guestCheckoutEmail || '');\n\n await placeOrder(\n actionContext,\n this.props.data.checkout.result,\n this.props.data.products.result,\n !hasOrderConfirmation,\n updatedCartVersion,\n this.props.data.checkout.result?.isPaymentVerificationRedirection\n ).catch(error => {\n this.handleCheckoutError(error);\n });\n\n await checkout.result?.updateIsPaymentSectionContainerReady({ newIsPaymentSectionContainerReady: false });\n }\n };\n\n /**\n * Update receipt email address for electronic cart line.\n * @param newGuestCheckoutEmail - The guest checkout email.\n * @returns The updated cart version.\n */\n private readonly updateCartLineEmailAddress = async (newGuestCheckoutEmail: string): Promise => {\n const emailDeliveryModeCode = this.props.context.request.channel?.EmailDeliveryModeCode;\n\n const emailDeliveryCartLines = this.props.data.checkout.result?.checkoutCart.cart.CartLines?.filter(\n cartLine => cartLine.DeliveryMode && cartLine.DeliveryMode !== '' && cartLine.DeliveryMode === emailDeliveryModeCode\n );\n\n let updatedCartVersion: number | undefined;\n if (emailDeliveryCartLines && emailDeliveryCartLines.length > 0) {\n const lineDeliverySpecifications: LineDeliverySpecification[] = emailDeliveryCartLines.map(line => {\n return {\n LineId: line.LineId,\n DeliverySpecification: {\n DeliveryModeId: emailDeliveryModeCode,\n DeliveryPreferenceTypeValue: DeliveryPreferenceType.ElectronicDelivery,\n ElectronicDeliveryEmailAddress: newGuestCheckoutEmail\n }\n };\n });\n\n await updateLineDeliverySpecificationsAsync(\n { callerContext: this.props.context.actionContext },\n (await this.props.data.checkout).checkoutCart.cart.Id,\n lineDeliverySpecifications\n )\n .then(updatedCart => {\n updatedCartVersion = updatedCart.Version;\n })\n .catch(error => {\n this.props.context.actionContext.telemetry.exception(error);\n throw new Error('[updateLineDeliverySpecificationsAsync] Unable to update electronic delivery email address in cart');\n });\n }\n\n return updatedCartVersion;\n };\n\n /**\n * Return true if any product in the cart is over its max quantity.\n * @param cart -- The checkout cart.\n * @param products -- The checkout products.\n * @returns - Is any product in the cart is over max quantity.\n */\n private readonly isOverMaxQuantity = async (cart: Cart, products: SimpleProduct[]): Promise => {\n let isOverMaxQuantity = false;\n const emailDeliveryModeCode = this.props.context.request.channel?.EmailDeliveryModeCode;\n\n await getAvailabilitiesForCartLineItems(\n new ProductAvailabilitiesForCartLineItems(this.props.context.actionContext.requestContext.apiSettings),\n this.props.context.actionContext\n )\n .then(productInventoryInformation => {\n const productsThatShouldValidateInventory: IProductInventoryInformation[] = [];\n\n cart.CartLines?.map(cartline => {\n const cartlineProduct = products.find(product => product.RecordId === cartline.ProductId);\n\n // If product is non-stocked or cartline is electronic delivery, then no inventory check\n const isStockedItem = cartlineProduct?.Behavior?.IsStockedProduct;\n const isEmailDelivery =\n cartline.DeliveryMode && cartline.DeliveryMode !== '' ? cartline.DeliveryMode === emailDeliveryModeCode : false;\n const shouldSkipInventoryCheck = !isStockedItem || isEmailDelivery;\n if (!shouldSkipInventoryCheck && ArrayExtensions.hasElements(productInventoryInformation)) {\n const foundProductAvailability = productInventoryInformation.find(productInventory => {\n return productInventory.ProductAvailableQuantity?.ProductId! === cartline.ProductId;\n });\n if (foundProductAvailability) {\n productsThatShouldValidateInventory.push(foundProductAvailability);\n }\n }\n });\n\n const cartLinesInventoryValidation = validateCartLinesInventory(\n cart.CartLines ?? [],\n productsThatShouldValidateInventory,\n this.props.context.actionContext,\n products,\n emailDeliveryModeCode\n );\n\n // If is invalid then exceeds the available quantity\n isOverMaxQuantity = !cartLinesInventoryValidation.isValid;\n return isOverMaxQuantity;\n })\n .catch(error => {\n this.props.context.actionContext.telemetry.exception(error);\n throw new Error('[getAvailabilitiesForCartLineItems] Unable to get availabilities for products in checkout cart');\n });\n\n return isOverMaxQuantity;\n };\n\n /**\n * Gets active child in module state.\n * @returns - The module state manager collection.\n */\n private readonly getActiveChildModuleStates = (): IModuleStateManager[] => {\n const { childIds, getModule } = this.props.moduleState;\n return childIds\n .map(getModule)\n .filter((state): state is IModuleStateManager => !!state && !state.isDisabled && state.hasModuleState);\n };\n\n /**\n * On container ready.\n */\n private readonly onContainerReady = (): void => {\n this.props.telemetry.information('Checkout onContainerReady is called.');\n\n this.getActiveChildModuleStates().forEach(state => {\n state.isReady && state.onContainerReady && state.onContainerReady();\n });\n };\n\n /**\n * Redirects to cart page.\n * @param notFoundEditCartLinkMessage - Not found edit cart link message.\n */\n private readonly redirectToCartPage = (notFoundEditCartLinkMessage: string): void => {\n const editCartLink = Msdyn365.getUrlSync('cart', this.props.context.actionContext) || '';\n if (window && editCartLink) {\n window.location.assign(editCartLink);\n } else {\n this.setState({\n errorMessage: this.props.resources.genericErrorMessage\n });\n this.props.context.telemetry.error(notFoundEditCartLinkMessage);\n }\n };\n\n /**\n * Validates for checkout.\n * @param retry - Retry flag.\n */\n private readonly validateForCheckout = (retry: boolean = true): void => {\n const notFoundEditCartLinkMessage = \"Cart doesn't pass validation, but no editCartLink found\";\n const cart = this.props.data.checkout.result!.checkoutCart.cart;\n const { Id, Version } = cart;\n const isOrderQuantityLimitsFeatureEnabledInHq =\n this.props.data.featureState.result?.find(\n featureState => featureState.Name === 'Dynamics.AX.Application.RetailDefaultOrderQuantityLimitsFeature'\n )?.IsEnabled || false;\n const isEcommerceQuantityLimitsFeatureEnabledInHq =\n this.props.data.featureState.result?.find(\n featureState => featureState.Name === 'Dynamics.AX.Application.EcommerceQuantityLimitConfigurationsFeature'\n )?.IsEnabled || false;\n const defaultOrderQuantityLimitsFeatureConfig = this.props.context?.request?.app?.platform?.enableDefaultOrderQuantityLimits;\n const customerInfo = this.props.data.customerInformation.result;\n const isB2BSite = isChannelTypeB2B(this.props.context.actionContext.requestContext);\n\n const isOrderQuantityLimitsFeatureEnabledInSiteSettings =\n defaultOrderQuantityLimitsFeatureConfig === 'all' ||\n (customerInfo &&\n ((defaultOrderQuantityLimitsFeatureConfig === 'b2b' && isB2BSite) ||\n (defaultOrderQuantityLimitsFeatureConfig === 'b2c' && !isB2BSite)));\n if (\n (isOrderQuantityLimitsFeatureEnabledInHq && isOrderQuantityLimitsFeatureEnabledInSiteSettings) ||\n isEcommerceQuantityLimitsFeatureEnabledInHq\n ) {\n if (Version && Id) {\n validateForCheckoutAsync({ callerContext: this.props.context.actionContext, bypassCache: 'none' }, Id, Version)\n .then((result: CartLineValidationResults) => {\n if (result.ValidationFailuresByCartLines?.length !== 0) {\n this.redirectToCartPage(notFoundEditCartLinkMessage);\n } else {\n this.setState({ isValidationPassed: true });\n }\n })\n .catch(error => {\n this.props.telemetry.warning(error);\n this.props.telemetry.debug('Unable to validate Cart');\n if (retry && error.name === 'Microsoft_Dynamics_Commerce_Runtime_InvalidCartVersion') {\n const cartState = this.props.data.checkout.result?.checkoutCart;\n cartState\n ?.refreshCart({})\n .then(() => {\n this.validateForCheckout(false);\n })\n .catch((refreshError: Error) => {\n this.props.telemetry.warning(refreshError.message);\n this.props.telemetry.debug('Unable to refresh Cart');\n });\n } else {\n this.redirectToCartPage(notFoundEditCartLinkMessage);\n }\n });\n } else {\n this.redirectToCartPage(notFoundEditCartLinkMessage);\n }\n } else {\n this.setState({ isValidationPassed: true });\n }\n };\n\n @action\n private readonly _setErrorMessage = (errorMessage: string): void => {\n this.props.telemetry.error(errorMessage);\n this.props.moduleState.setHasError(true);\n this.props.moduleState.onUpdating();\n this.setState({\n errorMessage\n });\n };\n\n /**\n * Save the address as Shipping and Billing address.\n * @param tokenizedPaymentCard - Tokenized payment card.\n */\n private readonly _saveShippingAndBillingAddress = async (tokenizedPaymentCard?: TokenizedPaymentCard): Promise => {\n const checkoutState = this.props.data.checkout.result;\n\n // For Paypal, the address returned in TokenizedPaymentCard will be used as both shipping and billing address.\n if (checkoutState && tokenizedPaymentCard && tokenizedPaymentCard.Zip) {\n const address: Address = this._getAddressFromTokenizedPaymentCard(tokenizedPaymentCard);\n\n await checkoutState.updateBillingAddressFromExpressCheckout({ newBillingAddressFromExpressCheckout: address });\n await checkoutState.updateShippingAddressFromExpressCheckout({ newShippingAddressFromExpressCheckout: address });\n }\n };\n\n /**\n * Get address from tokenizedPaymentCard.\n * @param tokenizedPaymentCard -- The tokenizedPaymentCard from the payment.\n * @returns The address.\n */\n private readonly _getAddressFromTokenizedPaymentCard = (tokenizedPaymentCard: TokenizedPaymentCard): Address => {\n const address: Address = {\n TwoLetterISORegionName: tokenizedPaymentCard.Country,\n Name: tokenizedPaymentCard.NameOnCard,\n Street: tokenizedPaymentCard.Address1,\n StreetNumber: tokenizedPaymentCard.Address2,\n City: tokenizedPaymentCard.City,\n State: tokenizedPaymentCard.State,\n ZipCode: tokenizedPaymentCard.Zip,\n Phone: tokenizedPaymentCard.Phone\n };\n\n return address;\n };\n\n /**\n * Handle checkout errors.\n * @param error -- The error on checkout api failure.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private readonly handleCheckoutError = (error: any) => {\n const {\n resources: {\n genericErrorMessage,\n invalidCartVersionErrorMessage,\n missingRequiredCartTenderLinesErrorMessage,\n timeoutErrorMessage\n },\n context: { actionContext }\n } = this.props;\n const checkoutResult = this.props.data.checkout.result;\n const apiError = error && error.message;\n if (error?.statusCode === 500) {\n const errorMessage = timeoutErrorMessage;\n this.setState({\n errorMessage\n });\n this.props.telemetry.exception(error);\n this.setState({ isPlaceOrderLoading: false });\n return;\n }\n if (checkoutResult && checkoutResult.shouldEnableCheckoutErrorDisplayMessaging) {\n const errorCode = error && error.name ? error.name : '';\n // apiError message will be used if errorcode resource/enums is unavailable\n setCheckoutErrors(errorCode, this.props.resources, !!checkoutResult.isExpressCheckoutApplied, actionContext, apiError);\n } else {\n let errorMessage = genericErrorMessage;\n this.setState({ isPlaceOrderClicked: false });\n\n if (error && error.name === 'Microsoft_Dynamics_Commerce_Runtime_InvalidCartVersion') {\n errorMessage = invalidCartVersionErrorMessage;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- unknown error type.\n } else if (error && error.name === 'Microsoft_Dynamics_Commerce_Runtime_MissingRequiredCartTenderLines') {\n errorMessage = missingRequiredCartTenderLinesErrorMessage;\n } else if (error && error.name === 'Microsoft_Dynamics_Commerce_Runtime_ExclusiveCouponCannotBeAppliedWithOtherCoupons') {\n // If api error is not available show generic message\n errorMessage = apiError || genericErrorMessage;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- unknown error type.\n if (\n this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout &&\n error.data?.AdditionalContext &&\n !this.props.data.checkout.result?.isPaymentVerificationRedirection\n ) {\n return;\n }\n\n this.setState({\n errorMessage\n });\n this.props.telemetry.exception(error);\n }\n };\n}\n\nexport default Checkout;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IActionContext } from '@msdyn365-commerce/core';\nimport {\n CheckoutModule,\n ErrorCode,\n ErrorLocation,\n ErrorMessageResource,\n getCheckoutState,\n ICheckoutError,\n ICheckoutState\n} from '@msdyn365-commerce/global-state/';\n\n// eslint-disable-next-line @typescript-eslint/no-extraneous-class -- create global class\nexport class CheckoutErrors {\n public static readonly ActionError: ICheckoutError = {\n errorCode: ErrorCode.ActionError,\n errorMessageResource: ErrorMessageResource.checkoutTimeoutErrorMessage,\n errorLocation: ErrorLocation.Checkout\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_BlockedLoyaltyCard: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_BlockedLoyaltyCard,\n errorMessageResource: ErrorMessageResource.blockedLoyaltyCardErrorMessage,\n errorLocation: ErrorLocation.CheckoutLoyalty\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_CustomerAccountLimitSignDifferentFromAmountDue: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_CustomerAccountLimitSignDifferentFromAmountDue,\n errorMessageResource: ErrorMessageResource.customerAccountLimitSignDifferentFromAmountDueErrorMessage,\n errorLocation: ErrorLocation.CheckoutCustomerAccountPayment\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentExceedsAvailableCreditLimit: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentExceedsAvailableCreditLimit,\n errorMessageResource: ErrorMessageResource.customerAccountPaymentExceedsAvailableCreditLimitErrorMessage,\n errorLocation: ErrorLocation.Checkout\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentExceedsCustomerAccountFloorLimit: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentExceedsCustomerAccountFloorLimit,\n errorMessageResource: ErrorMessageResource.customerAccountPaymentExceedsCustomerAccountFloorLimitErrorMessage,\n errorLocation: ErrorLocation.CheckoutCustomerAccountPayment\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentExceedsTotalAmountForCarryOutAndReturnItems: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentExceedsTotalAmountForCarryOutAndReturnItems,\n errorMessageResource: ErrorMessageResource.customerAccountPaymentExceedsTotalAmountForCarryOutAndReturnItemsErrorMessage,\n errorLocation: ErrorLocation.CheckoutCustomerAccountPayment\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentForCustomerWithoutAllowOnAccount: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentForCustomerWithoutAllowOnAccount,\n errorMessageResource: ErrorMessageResource.customerAccountPaymentForCustomerWithoutAllowOnAccountErrorMessage,\n errorLocation: ErrorLocation.CheckoutCustomerAccountPayment\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentNotAllowedForOpenInvoices: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentNotAllowedForOpenInvoices,\n errorMessageResource: ErrorMessageResource.customerAccountPaymentNotAllowedForOpenInvoicesErrorMessage,\n errorLocation: ErrorLocation.CheckoutCustomerAccountPayment\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_FraudRisk: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_FraudRisk,\n errorMessageResource: ErrorMessageResource.fraudRiskErrorMessage,\n errorLocation: ErrorLocation.CheckoutPaymentInstrument\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_GiftCardBalanceInquiryFailed: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_GiftCardBalanceInquiryFailed,\n errorMessageResource: ErrorMessageResource.giftCardBalanceInquiryFailedErrorMessage,\n errorLocation: ErrorLocation.CheckoutGiftCard\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_GiftCardCurrencyMismatch: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_GiftCardCurrencyMismatch,\n errorMessageResource: ErrorMessageResource.giftCardCurrencyMismatchErrorMessage,\n errorLocation: ErrorLocation.CheckoutGiftCard\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_InvalidCartVersion: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_InvalidCartVersion,\n errorMessageResource: ErrorMessageResource.invalidCartVersionErrorMessage,\n errorLocation: ErrorLocation.Checkout\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_InvalidLoyaltyCardNumber: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_InvalidLoyaltyCardNumber,\n errorMessageResource: ErrorMessageResource.invalidLoyaltyCardNumberErrorMessage,\n errorLocation: ErrorLocation.CheckoutLoyalty\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_InvalidPaymentRequest: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_InvalidPaymentRequest,\n errorMessageResource: ErrorMessageResource.invalidPaymentRequestErrorMessage,\n errorLocation: ErrorLocation.CheckoutPaymentInstrument\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_InvalidPaymentRequest_Console: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_InvalidPaymentRequest,\n errorMessageResource: ErrorMessageResource.invalidPaymentRequestConsoleErrorMessage,\n errorLocation: ErrorLocation.Console\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_MissingRequiredCartTenderLines: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_MissingRequiredCartTenderLines,\n errorMessageResource: ErrorMessageResource.missingRequiredCartTenderLinesErrorMessage,\n errorLocation: ErrorLocation.CheckoutPaymentInstrument\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_MultipleCustomerAccountPaymentsNotAllowed: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_MultipleCustomerAccountPaymentsNotAllowed,\n errorMessageResource: ErrorMessageResource.multipleCustomerAccountPaymentsNotAllowedErrorMessage,\n errorLocation: ErrorLocation.CheckoutCustomerAccountPayment\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_NoMoreThanOneLoyaltyTender: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_NoMoreThanOneLoyaltyTender,\n errorMessageResource: ErrorMessageResource.noMoreThanOneLoyaltyTenderErrorMessage,\n errorLocation: ErrorLocation.CheckoutLoyalty\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_NoResponseFromGatewayForGiftCardBalanceInquiry: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_NoResponseFromGatewayForGiftCardBalanceInquiry,\n errorMessageResource: ErrorMessageResource.noResponseFromGatewayForGiftCardBalanceInquiryErrorMessage,\n errorLocation: ErrorLocation.CheckoutGiftCard\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_NoTenderLoyaltyCard: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_NoTenderLoyaltyCard,\n errorMessageResource: ErrorMessageResource.noTenderLoyaltyCardErrorMessage,\n errorLocation: ErrorLocation.CheckoutLoyalty\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_NotEnoughRewardPoints: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_NotEnoughRewardPoints,\n errorMessageResource: ErrorMessageResource.notEnoughRewardPointsErrorMessage,\n errorLocation: ErrorLocation.CheckoutLoyalty\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_PaymentAlreadyVoided: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_PaymentAlreadyVoided,\n errorMessageResource: ErrorMessageResource.paymentAlreadyVoidedErrorMessage,\n errorLocation: ErrorLocation.CheckoutPaymentInstrument\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_PaymentAmountExceedsGiftBalance: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_PaymentAmountExceedsGiftBalance,\n errorMessageResource: ErrorMessageResource.paymentAmountExceedsGiftBalanceErrorMessage,\n errorLocation: ErrorLocation.CheckoutGiftCard\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_PaymentRequiresMerchantProperties: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_PaymentRequiresMerchantProperties,\n errorMessageResource: ErrorMessageResource.paymentRequiresMerchantPropertiesErrorMessage,\n errorLocation: ErrorLocation.CheckoutPaymentInstrument\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_PaymentRequiresMerchantProperties_Console: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_PaymentRequiresMerchantProperties,\n errorMessageResource: ErrorMessageResource.paymentRequiresMerchantPropertiesConsoleErrorMessage,\n errorLocation: ErrorLocation.Console\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_PaymentUsingUnauthorizedAccount: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_PaymentUsingUnauthorizedAccount,\n errorMessageResource: ErrorMessageResource.paymentUsingUnauthorizedAccountErrorMessage,\n errorLocation: ErrorLocation.CheckoutCustomerAccountPayment\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_RefundAmountMoreThanAllowed: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_RefundAmountMoreThanAllowed,\n errorMessageResource: ErrorMessageResource.refundAmountMoreThanAllowedErrorMessage,\n errorLocation: ErrorLocation.CheckoutLoyalty\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_UnableToAuthorizePayment: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_UnableToAuthorizePayment,\n errorMessageResource: ErrorMessageResource.unableToAuthorizePaymentErrorMessage,\n errorLocation: ErrorLocation.CheckoutPaymentInstrument\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_UnableToAuthorizePaymentCardAdditionalContextRequired: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_UnableToAuthorizePaymentCardAdditionalContextRequired,\n errorMessageResource: ErrorMessageResource.unableToAuthorizePaymentCardAdditionalContextRequiredErrorMessage,\n errorLocation: ErrorLocation.CheckoutPaymentInstrument\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_UnableToAuthorizePaymentCardTypeMissingOrNotSupported: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_UnableToAuthorizePaymentCardTypeMissingOrNotSupported,\n errorMessageResource: ErrorMessageResource.unableToAuthorizePaymentCardTypeMissingOrNotSupportedErrorMessage,\n errorLocation: ErrorLocation.CheckoutPaymentInstrument\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_UnableToCancelPayment: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_UnableToCancelPayment,\n errorMessageResource: ErrorMessageResource.unableToCancelPaymentErrorMessage,\n errorLocation: ErrorLocation.CheckoutPaymentInstrument\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_UnableToReadCardTokenInfo: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_UnableToReadCardTokenInfo,\n errorMessageResource: ErrorMessageResource.unableToReadCardTokenInfoErrorMessage,\n errorLocation: ErrorLocation.CheckoutPaymentInstrument\n };\n\n public static readonly Microsoft_Dynamics_Commerce_Runtime_UnableToRetrieveCardPaymentAcceptResult: ICheckoutError = {\n errorCode: ErrorCode.Microsoft_Dynamics_Commerce_Runtime_UnableToRetrieveCardPaymentAcceptResult,\n errorMessageResource: ErrorMessageResource.unableToRetrieveCardPaymentAcceptResultErrorMessage,\n errorLocation: ErrorLocation.CheckoutPaymentInstrument\n };\n\n public static readonly checkoutErrorsList: ICheckoutError[] = [\n CheckoutErrors.ActionError,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_BlockedLoyaltyCard,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_CustomerAccountLimitSignDifferentFromAmountDue,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentExceedsAvailableCreditLimit,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentExceedsCustomerAccountFloorLimit,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentExceedsTotalAmountForCarryOutAndReturnItems,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentForCustomerWithoutAllowOnAccount,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_CustomerAccountPaymentNotAllowedForOpenInvoices,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_FraudRisk,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_GiftCardBalanceInquiryFailed,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_GiftCardCurrencyMismatch,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_InvalidCartVersion,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_InvalidLoyaltyCardNumber,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_InvalidPaymentRequest,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_InvalidPaymentRequest_Console,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_MissingRequiredCartTenderLines,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_MultipleCustomerAccountPaymentsNotAllowed,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_NoMoreThanOneLoyaltyTender,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_NoResponseFromGatewayForGiftCardBalanceInquiry,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_NoTenderLoyaltyCard,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_NotEnoughRewardPoints,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_PaymentAlreadyVoided,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_PaymentAmountExceedsGiftBalance,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_PaymentRequiresMerchantProperties,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_PaymentRequiresMerchantProperties_Console,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_PaymentUsingUnauthorizedAccount,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_RefundAmountMoreThanAllowed,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_UnableToAuthorizePayment,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_UnableToAuthorizePaymentCardAdditionalContextRequired,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_UnableToAuthorizePaymentCardTypeMissingOrNotSupported,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_UnableToCancelPayment,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_UnableToReadCardTokenInfo,\n CheckoutErrors.Microsoft_Dynamics_Commerce_Runtime_UnableToRetrieveCardPaymentAcceptResult\n ];\n}\n\nexport async function setCheckoutErrors(\n errorCode: string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n resources: any,\n isExpressCheckoutApplied: boolean,\n ctx: IActionContext,\n apiError?: string | undefined\n): Promise {\n let clientCheckoutError: ICheckoutError | undefined;\n const consoleCheckoutErrors: ICheckoutError[] = [];\n\n const checkoutState: ICheckoutState = await getCheckoutState(ctx).catch((error: Error) => {\n ctx.telemetry.exception(error);\n throw error;\n });\n\n // find the checkout errors\n for (const checkoutError of CheckoutErrors.checkoutErrorsList) {\n if (errorCode === checkoutError.errorCode) {\n if (checkoutError.errorLocation === ErrorLocation.Console) {\n const consoleCheckoutError: ICheckoutError = {\n errorCode: checkoutError.errorCode,\n errorMessageResource: checkoutError.errorMessageResource,\n errorLocation: checkoutError.errorLocation\n };\n consoleCheckoutErrors.push(consoleCheckoutError);\n } else {\n if (clientCheckoutError) {\n ctx.telemetry.exception(new Error('Invalid number of client checkout errors.'));\n throw new Error('Invalid number of client checkout errors.');\n } else {\n clientCheckoutError = {\n errorCode: checkoutError.errorCode,\n errorMessageResource: checkoutError.errorMessageResource,\n errorLocation: checkoutError.errorLocation\n };\n }\n }\n }\n }\n\n // log the console checkout errors\n for (const consoleCheckoutError of consoleCheckoutErrors) {\n consoleCheckoutError.errorMessage = getCheckoutErrorMessage(resources, consoleCheckoutError.errorMessageResource!, apiError!);\n console.log(consoleCheckoutError.errorMessage);\n }\n\n // handle the client checkout error\n if (clientCheckoutError) {\n clientCheckoutError.errorMessage = getCheckoutErrorMessage(resources, clientCheckoutError.errorMessageResource!, apiError!);\n\n if (isExpressCheckoutApplied && clientCheckoutError.errorLocation === ErrorLocation.CheckoutPaymentInstrument) {\n clientCheckoutError.errorLocation = ErrorLocation.Checkout;\n }\n\n await checkoutState.updateCheckoutError({ newCheckoutError: clientCheckoutError });\n await checkoutState.updateShouldFocusOnCheckoutError({ newShouldFocusOnCheckoutError: true });\n } else {\n // if could not map to any checkout error(s), show the API error message over generic error\n if (consoleCheckoutErrors.length === 0) {\n const genericError = {\n errorLocation: ErrorLocation.Checkout\n };\n if (apiError) {\n genericError['errorMessage'] = apiError;\n } else {\n genericError['errorMessage'] = resources.genericErrorMessage;\n }\n\n await checkoutState.updateCheckoutError({ newCheckoutError: genericError });\n await checkoutState.updateShouldFocusOnCheckoutError({ newShouldFocusOnCheckoutError: true });\n }\n }\n}\n\nexport async function focusOnCheckoutError(checkoutErrorRef: React.RefObject, ctx: IActionContext): Promise {\n const checkoutState: ICheckoutState = await getCheckoutState(ctx).catch((error: Error) => {\n ctx.telemetry.exception(error);\n throw error;\n });\n\n checkoutErrorRef.current && checkoutErrorRef.current.scrollIntoView();\n\n await checkoutState.updateCheckoutErrorFocus({ newCheckoutErrorFocus: CheckoutModule.None });\n await checkoutState.updateShouldFocusOnCheckoutError({ newShouldFocusOnCheckoutError: false });\n}\n\nexport async function setCheckoutErrorFocus(checkoutModuleId: string, ctx: IActionContext): Promise {\n const checkoutState: ICheckoutState = await getCheckoutState(ctx).catch((error: Error) => {\n ctx.telemetry.exception(error);\n throw error;\n });\n\n for (const checkoutModule of Object.keys(CheckoutModule)) {\n if (checkoutModuleId.includes(CheckoutModule[checkoutModule])) {\n await checkoutState.updateCheckoutErrorFocus({ newCheckoutErrorFocus: CheckoutModule[checkoutModule] });\n return;\n }\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction getCheckoutErrorMessage(resources: any, errorMessageResource: ErrorMessageResource, errorMessageFromAPI: string): string {\n const errorResource = Object.keys(resources).find(resource => resource === errorMessageResource);\n // return API error when error resource string is not found in checkout definition file\n return errorResource !== undefined ? resources[errorResource] : errorMessageFromAPI;\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\n/**\n * The payment error.\n */\nexport interface IPaymentError {\n title: string;\n message: string;\n className?: string;\n}\n\n/**\n * The payment error.\n * @param param0 - First param.\n * @param param0.title - Title.\n * @param param0.message - Message.\n * @param param0.className - ClassName.\n * @returns React node.\n */\nexport const ErrorComponent: React.FC = ({ title, message, className = 'ms-checkout-payment-instrument' }) => (\n
\n

{title}

\n

{message}

\n
\n);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Alert, Button, INodeProps, NodeTag } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { showAdditionalFields } from '../gift-card-balance-check.props.autogenerated';\n\nexport interface IGetFormInput {\n errorMessage: string;\n giftCardNumber: string;\n giftCardPin: string;\n giftCardExp: string;\n inputRef?: React.RefObject;\n inputPinRef?: React.RefObject;\n inputExpRef?: React.RefObject;\n supportExternalGiftCard?: boolean;\n additionalFields?: showAdditionalFields;\n resources: {\n balanceCheckButton: string;\n giftCardFormLabel: string;\n giftCardNumberLabel: string;\n giftCardPinLabel: string;\n giftCardExpLabel: string;\n giftCardAlertLabel: string;\n giftCardPinPlaceholderText: string;\n giftCardExpPlaceholderText: string;\n };\n onEnterGiftCardNumber(giftCardNumber: string): void;\n onEnterGiftCardPin(giftCardPin: string): void;\n onEnterGiftCardExp(giftCardExp: string): void;\n onApplyGiftCard(): Promise;\n}\n\nexport interface IForm {\n formProps: INodeProps;\n label: React.ReactNode;\n inputPinLabel: React.ReactNode;\n inputExpLabel: React.ReactNode;\n alert: React.ReactNode;\n inputProps: INodeProps;\n inputNumProps: INodeProps;\n inputPinProps: INodeProps;\n inputExpProps: INodeProps;\n inputNumber: React.ReactNode;\n inputPin: React.ReactNode;\n inputExp: React.ReactNode;\n applyButton: React.ReactNode;\n supportExternalGiftCard: boolean | undefined;\n showGiftCardPinInput: boolean | undefined;\n showGiftCardExpInput: boolean | undefined;\n alertFieldLabel: React.ReactNode;\n}\n\n/**\n * On apply function.\n * @param onApplyGiftCard -On apply gift card.\n * @returns Apply gift card.\n */\nconst onApplyHandler = (onApplyGiftCard: () => Promise) => async (event: React.SyntheticEvent): Promise => {\n event.preventDefault();\n await onApplyGiftCard();\n};\n\n/**\n * On change number function.\n * @param onEnterGiftCardNumber -On enter gift card number.\n * @returns On gift card enter pin function result.\n */\nconst onChangeNumberHandler = (onEnterGiftCardNumber: (giftCardNumber: string) => void) => (event: React.ChangeEvent) => {\n const value = (event.target.value || '').replace(new RegExp('[<>]', 'gi'), '');\n onEnterGiftCardNumber(value);\n};\n\n/**\n * On change pin function.\n * @param onEnterGiftCardPin -On enter gift card pin.\n * @returns On enter gift card pin function result.\n */\nconst onChangePinHandler = (onEnterGiftCardPin: (giftCardPin: string) => void) => (event: React.ChangeEvent) => {\n const value = (event.target.value || '').replace(new RegExp('[<>]', 'gi'), '');\n onEnterGiftCardPin(value);\n};\n\n/**\n * On change exp function.\n * @param onEnterGiftCardExp -On enter gift card.\n * @returns On enter gift card function result.\n */\nconst onChangeExpHandler = (onEnterGiftCardExp: (giftCardExp: string) => void) => (event: React.ChangeEvent) => {\n const value = (event.target.value || '').replace(new RegExp('[<>]', 'gi'), '');\n onEnterGiftCardExp(value);\n};\n\nexport const getForm = (options: IGetFormInput): IForm => {\n const {\n errorMessage,\n inputRef,\n inputPinRef,\n inputExpRef,\n giftCardNumber,\n giftCardPin,\n giftCardExp,\n onEnterGiftCardNumber,\n onEnterGiftCardPin,\n onEnterGiftCardExp,\n onApplyGiftCard,\n supportExternalGiftCard,\n additionalFields,\n resources: {\n balanceCheckButton,\n giftCardFormLabel,\n giftCardNumberLabel,\n giftCardPinLabel,\n giftCardExpLabel,\n giftCardAlertLabel,\n giftCardPinPlaceholderText,\n giftCardExpPlaceholderText\n }\n } = options;\n\n const formProps = {\n className: classnames('ms-gift-card-balance-check__form', { 'is-invalid': !!errorMessage }),\n onSubmit: onApplyHandler(onApplyGiftCard),\n tag: 'form' as NodeTag\n };\n\n const label = (\n \n );\n\n const inputPinLabel = (\n \n );\n\n const inputExpLabel = (\n \n );\n\n const alertFieldLabel = (\n \n );\n\n const alert = (\n \n {errorMessage}\n \n );\n\n const inputProps = {\n className: 'ms-gift-card-balance-check__input-fields'\n };\n\n const inputNumProps = {\n className: 'ms-gift-card-balance-check__input-num-fields'\n };\n\n const inputPinProps = {\n className: 'ms-gift-card-balance-check__input-pin-fields'\n };\n\n const inputExpProps = {\n className: 'ms-gift-card-balance-check__input-exp-fields'\n };\n\n const inputNumber = (\n \n );\n\n const inputPin = (\n \n );\n\n const inputExp = (\n \n );\n\n const applyButton = (\n \n {balanceCheckButton}\n \n );\n\n let showGiftCardPinInput = false;\n let showGiftCardExpInput = false;\n\n switch (additionalFields) {\n case showAdditionalFields.pin:\n showGiftCardPinInput = true;\n break;\n case showAdditionalFields.expirationDate:\n showGiftCardExpInput = true;\n break;\n case showAdditionalFields.pinAndExpirationDate:\n showGiftCardPinInput = true;\n showGiftCardExpInput = true;\n break;\n default:\n }\n\n return {\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","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { GiftCard } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IGetItemInput {\n giftCard: GiftCard;\n resources: {\n enteredGiftCardLabel: string;\n giftCardAvailableBalanceLabel: string;\n };\n getFormattedPrice(price?: number, currencyCode?: string): string;\n}\n\nexport interface IItem {\n itemProps: INodeProps;\n id?: string;\n selectedGiftCard: React.ReactNode;\n removeButton?: React.ReactNode;\n}\n\n/**\n * GiftCardItem component.\n * @param root0\n * @param root0.giftCard\n * @param root0.getFormattedPrice\n * @param root0.resources\n * @param root0.resources.enteredGiftCardLabel\n * @param root0.resources.giftCardAvailableBalanceLabel\n * @extends {React.PureComponent}\n */\nexport const getItem = ({\n giftCard,\n getFormattedPrice,\n resources: { enteredGiftCardLabel, giftCardAvailableBalanceLabel }\n}: IGetItemInput): IItem => {\n const balance = getFormattedPrice(giftCard.Balance, giftCard.CardCurrencyCode);\n const giftCardLast4Digit = (giftCard.Id || '').substr(-4);\n\n const itemProps = {\n className: 'ms-gift-card-balance-check__item'\n };\n\n const selectedGiftCard = (\n \n {enteredGiftCardLabel}\n {` `}\n {giftCardLast4Digit}\n {` `}({giftCardAvailableBalanceLabel}\n {` `}\n {balance})\n \n );\n\n return {\n itemProps,\n id: giftCard && giftCard.Id,\n selectedGiftCard\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n getGiftCardAsync,\n getTenderTypesAsync,\n resolveCardTypesAsync\n} from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\nimport {\n CardType,\n CardTypeInfo,\n GiftCard,\n RetailOperation,\n TenderType\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport * as React from 'react';\n\nimport { OPERATIONS } from '../checkout';\nimport { getForm, IForm } from './components/get-form';\nimport { getItem, IItem } from './components/get-item';\nimport { IGiftCardBalanceCheckProps } from './gift-card-balance-check.props.autogenerated';\n\ninterface IGiftCardBalanceCheckState {\n isFetchingGiftCard: boolean;\n errorMessage: string;\n giftCardNumber: string;\n giftCardPin: string;\n giftCardExp: string;\n giftCard?: GiftCard;\n}\n\nenum SupportedGiftCardType {\n Internal = 'internal',\n External = 'external',\n Both = 'both'\n}\n\nexport interface IGiftCardBalanceCheckModuleProps extends IGiftCardBalanceCheckProps<{}> {}\n\nexport interface IGiftCardBalanceCheckViewProps extends IGiftCardBalanceCheckProps<{}>, IGiftCardBalanceCheckState {\n className?: string;\n\n form: IForm;\n item?: IItem;\n\n giftCardBalanceCheckProps: IModuleProps;\n\n enterGiftCardNumber?(giftCardNumber: string): void;\n enterGiftCardPin?(giftCardPin: string): void;\n enterGiftCardExp?(giftCardExp: string): void;\n applyGiftCard?(): void;\n}\n\n/**\n *\n * GiftCardBalanceCheck component.\n * @extends {React.Component}\n */\nexport class GiftCardBalanceCheck extends React.Component {\n public state: IGiftCardBalanceCheckState = {\n isFetchingGiftCard: false,\n errorMessage: '',\n giftCardNumber: '',\n giftCardPin: '',\n giftCardExp: ''\n };\n\n private readonly inputRef: React.RefObject = React.createRef();\n\n private readonly inputPinRef: React.RefObject = React.createRef();\n\n private readonly inputExpRef: React.RefObject = React.createRef();\n\n public shouldComponentUpdate(nextProps: IGiftCardBalanceCheckModuleProps, nextState: IGiftCardBalanceCheckState): 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 const {\n config: { className, showAdditionalFields },\n resources\n } = this.props;\n const { errorMessage, giftCardNumber, giftCardPin, giftCardExp } = this.state;\n\n const supportedGiftCardType = this.props.context.app.config.giftCardSupported;\n\n if (!this._isEnabled()) {\n this.props.context.telemetry.error('Gift card balance check is not supported, module wont render');\n return null;\n }\n\n const supportExternalGiftCard = supportedGiftCardType !== SupportedGiftCardType.Internal;\n\n const moduleClassName = classname('ms-gift-card-balance-check', className);\n\n const viewProps: IGiftCardBalanceCheckViewProps = {\n ...this.props,\n ...this.state,\n className: moduleClassName,\n giftCardBalanceCheckProps: { moduleProps: this.props, className: moduleClassName },\n\n enterGiftCardNumber: this._enterGiftCardNumber,\n enterGiftCardPin: this._enterGiftCardPin,\n enterGiftCardExp: this._enterGiftCardExp,\n applyGiftCard: this._applyGiftCard,\n\n form: getForm({\n errorMessage,\n giftCardNumber,\n giftCardPin,\n giftCardExp,\n inputRef: this.inputRef,\n inputPinRef: this.inputPinRef,\n inputExpRef: this.inputExpRef,\n resources,\n supportExternalGiftCard,\n additionalFields: showAdditionalFields,\n onEnterGiftCardNumber: this._enterGiftCardNumber,\n onEnterGiftCardPin: this._enterGiftCardPin,\n onEnterGiftCardExp: this._enterGiftCardExp,\n onApplyGiftCard: this._applyGiftCard\n }),\n item:\n this.state.giftCard &&\n getItem({\n giftCard: this.state.giftCard,\n getFormattedPrice: this._getFormattedPrice,\n resources\n })\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private readonly _isEnabled = (): boolean => {\n if (\n !this.props.context.request.user.isAuthenticated &&\n this.props.context.app.config.giftCardSupported !== SupportedGiftCardType.External &&\n !this.props.config.shouldBeEnabledForGuest\n ) {\n return false;\n }\n return true;\n };\n\n private readonly _getFormattedPrice = (price: number = 0, currencyCode: string = 'USD'): string => {\n return this.props.context.cultureFormatter.formatCurrency(price, currencyCode);\n };\n\n private readonly _enterGiftCardNumber = (giftCardNumber: string): void => {\n this.setState({\n giftCardNumber\n });\n this._clearError();\n };\n\n private readonly _enterGiftCardPin = (giftCardPin: string): void => {\n this.setState({\n giftCardPin\n });\n this._clearError();\n };\n\n private readonly _enterGiftCardExp = (giftCardExp: string): void => {\n this.setState({\n giftCardExp\n });\n this._clearError();\n };\n\n private readonly _clearError = (): void => {\n this.setState({\n errorMessage: ''\n });\n };\n\n private readonly _setError = (errorMessage: string): void => {\n this.props.telemetry.error('Error', errorMessage);\n this.props.telemetry.debug('Error', errorMessage);\n this.setState({\n errorMessage\n });\n };\n\n private readonly _applyGiftCard = async (): Promise => {\n if (this.state.isFetchingGiftCard) {\n return;\n }\n this.setState({\n isFetchingGiftCard: true\n });\n\n const giftCardNumber = this.state.giftCardNumber.trim();\n const giftCardPin = this.state.giftCardPin.trim();\n const giftCardExp = this.state.giftCardExp.trim();\n\n const giftCardTypes = await this._getGiftCardTypes(giftCardNumber);\n const giftCardType = giftCardTypes && giftCardTypes[0];\n const isPinRequired = giftCardType && giftCardType.IsPinRequired;\n const isExpRequired = giftCardType && giftCardType.IsExpirationDateRequired;\n const tenderTypeId = giftCardType && giftCardType.PaymentMethodId;\n const giftCard = await this._getGiftCard(giftCardNumber, giftCardPin, giftCardExp, isPinRequired, isExpRequired, tenderTypeId);\n\n if (giftCard) {\n this._clearError();\n this.setState({\n giftCardNumber: '',\n giftCardPin: '',\n giftCardExp: '',\n isFetchingGiftCard: false,\n giftCard\n });\n return Promise.resolve();\n }\n const input = this.inputRef && this.inputRef.current && this.inputRef.current.focus && (this.inputRef.current as HTMLElement);\n input && input.focus();\n this.setState({\n isFetchingGiftCard: false,\n giftCard: undefined\n });\n };\n\n private readonly _findGiftcardTenderTypes = (\n tenderTypes: TenderType[],\n operationId: RetailOperation,\n giftcardType: string\n ): string[] | undefined => {\n let matchedTenderTypes: TenderType[] | undefined;\n\n switch (giftcardType) {\n case SupportedGiftCardType.Internal:\n matchedTenderTypes = tenderTypes.filter(\n tenderType => tenderType.OperationId === operationId && tenderType.ConnectorId === ''\n );\n break;\n case SupportedGiftCardType.External:\n matchedTenderTypes = tenderTypes.filter(\n tenderType => tenderType.OperationId === operationId && tenderType.ConnectorId !== ''\n );\n break;\n default:\n throw new Error('Invalid gift card type');\n }\n\n if (matchedTenderTypes) {\n return matchedTenderTypes.map(tenderType => tenderType.TenderTypeId || '');\n }\n return;\n };\n\n private readonly _getGiftCard = async (\n giftCardNumber: string,\n giftCardPin: string,\n giftCardExp: string,\n isPinRequired: boolean | undefined,\n isExpRequired: boolean | undefined,\n tenderTypeId: string | undefined\n ): Promise => {\n const {\n resources: { invalidCardTypeError, noBalanceError, invalidCardInfoError, noCardPinError, noCardExpError }\n } = this.props;\n\n const supportedGiftCardType = this.props.context.app.config.giftCardSupported;\n\n if (!tenderTypeId) {\n return undefined;\n }\n\n const tenderTypes = await getTenderTypesAsync({ callerContext: this.props.context.actionContext, queryResultSettings: {} }).catch(\n error => {\n throw error;\n }\n );\n\n if (!tenderTypes) {\n throw new Error('Fail to get gift card tender line');\n }\n\n const internalGiftcardTenderTypes = this._findGiftcardTenderTypes(\n tenderTypes,\n OPERATIONS.PayGiftCertificate,\n SupportedGiftCardType.Internal\n );\n const externalGiftcardTenderTypes = this._findGiftcardTenderTypes(\n tenderTypes,\n OPERATIONS.PayGiftCertificate,\n SupportedGiftCardType.External\n );\n\n switch (supportedGiftCardType) {\n case undefined:\n case SupportedGiftCardType.Internal:\n if (!internalGiftcardTenderTypes?.includes(tenderTypeId)) {\n this._setError(invalidCardTypeError);\n return undefined;\n }\n break;\n case SupportedGiftCardType.External:\n if (!externalGiftcardTenderTypes?.includes(tenderTypeId)) {\n this._setError(invalidCardTypeError);\n return undefined;\n }\n break;\n case SupportedGiftCardType.Both:\n if (!internalGiftcardTenderTypes?.includes(tenderTypeId) && !externalGiftcardTenderTypes?.includes(tenderTypeId)) {\n this._setError(invalidCardTypeError);\n return undefined;\n }\n break;\n default:\n throw new Error('Unsupported gift card type');\n }\n\n if (!this.props.context.request.user.isAuthenticated && internalGiftcardTenderTypes?.includes(tenderTypeId)) {\n this._setError(invalidCardTypeError);\n return undefined;\n }\n\n if (isPinRequired && giftCardPin === '') {\n this._setError(noCardPinError);\n return undefined;\n }\n\n if (isExpRequired && giftCardExp === '') {\n this._setError(noCardExpError);\n return undefined;\n }\n\n const month = Number.parseInt(giftCardExp.split('/')[0], 10);\n const year = Number.parseInt(giftCardExp.split('/')[1], 10);\n\n return getGiftCardAsync({ callerContext: this.props.context.actionContext }, giftCardNumber, tenderTypeId, giftCardPin, month, year)\n .then(activeGiftCard => {\n if (!activeGiftCard.Balance || activeGiftCard.Balance === 0) {\n this._setError(noBalanceError);\n return;\n }\n return activeGiftCard;\n })\n .catch(error => {\n this._setError(invalidCardInfoError);\n return undefined;\n });\n };\n\n private readonly _getGiftCardTypes = async (giftCardNumber: string): Promise => {\n const {\n resources: { emptyInputError, invalidCodeError }\n } = this.props;\n\n if (!giftCardNumber) {\n this._setError(emptyInputError);\n return undefined;\n }\n\n return resolveCardTypesAsync({ callerContext: this.props.context.actionContext }, giftCardNumber, CardType.GiftCard)\n .then(giftCardTypes => {\n if (!giftCardTypes || giftCardTypes.length === 0 || giftCardTypes[0] === undefined) {\n this._setError(invalidCodeError);\n return;\n }\n return giftCardTypes;\n })\n .catch(error => {\n this._setError(invalidCodeError);\n return undefined;\n });\n };\n}\n\nexport default GiftCardBalanceCheck;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CacheType, IActionContext, IActionInput } from '@msdyn365-commerce/core';\n\nimport { IModuleStates } from './module-state.data';\n\n/**\n * GetModulesInput.\n */\nexport class ModuleStatesCacheKey implements IActionInput {\n public getCacheKey = () => 'ModuleState';\n\n public getCacheObjectType = () => 'ModuleState';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\nexport function getModuleStates(ctx: IActionContext): IModuleStates {\n const cacheKey = new ModuleStatesCacheKey();\n\n let moduleStates = ctx.get(cacheKey.getCacheObjectType(), cacheKey.getCacheKey());\n if (moduleStates) {\n return moduleStates;\n }\n ctx.update(cacheKey, {});\n moduleStates = ctx.get(cacheKey.getCacheObjectType(), cacheKey.getCacheKey());\n return moduleStates;\n}\n\nexport function updateModuleStates(value: IModuleStates, ctx: IActionContext): void {\n const cacheKey = new ModuleStatesCacheKey();\n ctx.update(cacheKey, value);\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IActionContext } from '@msdyn365-commerce/core';\nimport { getCheckoutState } from '@msdyn365-commerce/global-state';\nimport { checkoutAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CartsDataActions.g';\nimport { getTenderTypesAsync, resolveCardTypesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\nimport {\n Address,\n CardPaymentAcceptResult,\n CardType,\n CartTenderLine,\n RetailOperation,\n SalesOrder,\n TenderType,\n TokenizedPaymentCard\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\nexport const OPERATIONS = {\n PayCard: 201,\n PayGiftCertificate: 214,\n PayLoyalty: 207,\n PayCustomerAccount: 202\n};\n\nconst getCardTypeId = async (ctx: IActionContext, cardPrefix: string = ''): Promise => {\n try {\n const response = await resolveCardTypesAsync({ callerContext: ctx }, cardPrefix, CardType.Unknown);\n if (response && response.length > 0) {\n return response[0].TypeId;\n }\n } catch (error) {\n ctx.telemetry.error('Call to resolveCardTypesAsync failed.', error);\n }\n return undefined;\n};\n\nconst findTenderIdTypeByOperationId = (tenderTypes: TenderType[], operationId: RetailOperation): string | undefined => {\n const matchedTenderType = tenderTypes.find(tenderType => tenderType.OperationId === operationId);\n if (matchedTenderType) {\n return matchedTenderType.TenderTypeId;\n }\n return;\n};\n\nconst roundNumber = (value: number) => Number(value.toFixed(2));\n\nasync function getLoyaltyTenderLine(\n ctx: IActionContext,\n LoyaltyCardId: string,\n Amount: number = 0,\n Currency: string = 'USD'\n): Promise {\n const tenderTypes = await getTenderTypesAsync({ callerContext: ctx, queryResultSettings: {} }).catch(error => {\n throw error;\n });\n\n if (!tenderTypes) {\n throw new Error('Fail to get gift card tender line');\n }\n\n const TenderTypeId = findTenderIdTypeByOperationId(tenderTypes, OPERATIONS.PayLoyalty);\n return {\n // @ts-expect-error\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.CartTenderLine',\n\n 'Amount@odata.type': '#Decimal',\n Currency,\n TenderTypeId,\n Amount,\n LoyaltyCardId\n };\n}\n\nasync function getGiftCardTenderLine(\n ctx: IActionContext,\n GiftCardId: string = '',\n Amount: number = 0,\n Currency: string = 'USD',\n tenderTypeId?: string,\n giftCardPin?: string,\n giftCardExpirationYear?: number,\n giftCardExpirationMonth?: number\n): Promise {\n let TenderTypeId = tenderTypeId;\n\n if (!TenderTypeId) {\n const tenderTypes = await getTenderTypesAsync({ callerContext: ctx, queryResultSettings: {} }).catch(error => {\n throw error;\n });\n if (!tenderTypes) {\n throw new Error('Fail to get gift card tender line');\n }\n TenderTypeId = findTenderIdTypeByOperationId(tenderTypes, OPERATIONS.PayGiftCertificate);\n }\n\n const GiftCardPin = giftCardPin;\n const GiftCardExpirationYear = giftCardExpirationYear;\n const GiftCardExpirationMonth = giftCardExpirationMonth;\n return {\n // @ts-expect-error\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.CartTenderLine',\n 'Amount@odata.type': '#Decimal',\n Currency,\n TenderTypeId,\n Amount,\n GiftCardId,\n GiftCardPin,\n GiftCardExpirationYear,\n GiftCardExpirationMonth\n };\n}\n\nasync function getCreditCardTenderLine(\n ctx: IActionContext,\n tokenizedPaymentCard: TokenizedPaymentCard,\n cardPrefix: string = '',\n Amount: number = 0,\n Currency: string = 'USD',\n billingAddress?: Address\n): Promise {\n const tenderTypes = await getTenderTypesAsync({ callerContext: ctx, queryResultSettings: {} }).catch(error => {\n throw error;\n });\n\n let cartTypeId = tokenizedPaymentCard.CardTypeId;\n\n if (!cartTypeId) {\n cartTypeId = await getCardTypeId(ctx, cardPrefix);\n }\n\n if (!tenderTypes) {\n throw new Error('Fail to get card tender type');\n }\n\n if (!cartTypeId) {\n throw new Error('Fail to get card type id');\n }\n\n const TenderTypeId = tokenizedPaymentCard.TenderType ?? findTenderIdTypeByOperationId(tenderTypes, OPERATIONS.PayCard);\n const cardTenderLine: CartTenderLine = {\n // @ts-expect-error\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.CartTenderLine',\n 'Amount@odata.type': '#Decimal',\n Currency,\n Amount,\n TenderTypeId,\n CardTypeId: cartTypeId\n };\n cardTenderLine.TokenizedPaymentCard = {\n ...tokenizedPaymentCard,\n CardTypeId: cartTypeId,\n\n // @ts-expect-error\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.TokenizedPaymentCard',\n House: tokenizedPaymentCard.House || 'N/A',\n ...(tokenizedPaymentCard.CardTokenInfo && {\n CardTokenInfo: {\n ...tokenizedPaymentCard.CardTokenInfo,\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.CardTokenInfo'\n }\n }),\n ...(billingAddress && {\n Phone: billingAddress.Phone,\n Country: billingAddress.ThreeLetterISORegionName,\n Address1: billingAddress.Street,\n City: billingAddress.City,\n State: billingAddress.State,\n Zip: billingAddress.ZipCode\n })\n };\n\n return cardTenderLine;\n}\n\n/**\n * Get credit card tender line.\n * @param context - Action context.\n * @param amount - Due amount for credit card.\n * @param currency - Currency.\n * @param cardPaymentAcceptResult - CardPaymentAcceptResult.\n * @param billingAddress - BillingAddress.\n * @returns - The credit card tender line.\n */\nasync function getCreditCardTenderLineForSinglePaymentAuth(\n context: IActionContext,\n amount: number = 0,\n currency: string = 'USD',\n cardPaymentAcceptResult?: CardPaymentAcceptResult,\n billingAddress?: Address\n): Promise {\n const tenderTypes = await getTenderTypesAsync({ callerContext: context, queryResultSettings: {} }).catch(error => {\n throw error;\n });\n\n const tenderTypeId = findTenderIdTypeByOperationId(tenderTypes, OPERATIONS.PayCard);\n\n if (cardPaymentAcceptResult) {\n cardPaymentAcceptResult.TokenizedPaymentCard = {\n // @ts-expect-error\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.TokenizedPaymentCard',\n House: 'N/A',\n ...(billingAddress && {\n Phone: billingAddress.Phone,\n Country: billingAddress.ThreeLetterISORegionName,\n Address1: billingAddress.Street,\n City: billingAddress.City,\n State: billingAddress.State,\n Zip: billingAddress.ZipCode\n })\n };\n }\n\n const cardTenderLine: CartTenderLine = {\n // @ts-expect-error -- existing data.\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.CartTenderLine',\n 'Amount@odata.type': '#Decimal',\n Currency: currency,\n Amount: amount,\n TenderTypeId: tenderTypeId,\n CardPaymentAcceptResult: cardPaymentAcceptResult\n };\n\n return cardTenderLine;\n}\n\nasync function createCustomerAccountTenderLine(ctx: IActionContext, Amount: number, Currency: string = 'USD'): Promise {\n const CustomerId = null;\n if (!ctx.requestContext.user.isAuthenticated) {\n ctx.telemetry.error('A customer id is required to pay with customer account');\n }\n\n const tenderTypes = await getTenderTypesAsync({ callerContext: ctx, queryResultSettings: {} }).catch(error => {\n throw error;\n });\n\n if (!tenderTypes) {\n ctx.telemetry.error('No tender types found for this channel');\n }\n\n const TenderTypeId = findTenderIdTypeByOperationId(tenderTypes, OPERATIONS.PayCustomerAccount);\n if (!TenderTypeId) {\n ctx.telemetry.error('No customer account tender type');\n }\n return {\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.CartTenderLine',\n 'Amount@odata.type': '#Decimal',\n Currency,\n TenderTypeId,\n Amount,\n\n // @ts-expect-error\n CustomerId\n };\n}\n\nexport const CartCheckout = async (\n ctx: IActionContext,\n updatedCartVersion?: number,\n isPaymentVerificationRedirection?: boolean\n): Promise => {\n const checkoutState = await getCheckoutState(ctx).catch(error => {\n throw error;\n });\n\n const cartState = checkoutState.checkoutCart;\n\n const channelConfiguration = ctx.requestContext.channel;\n\n if (!cartState || Object.keys(cartState).length === 0 || !channelConfiguration) {\n throw new Error('Fail to placeOrder');\n }\n\n const {\n giftCardExtends,\n tokenizedPaymentCard,\n cardPrefix,\n guestCheckoutEmail,\n billingAddress,\n loyaltyAmount,\n cardPaymentAcceptResult,\n shouldEnableSinglePaymentAuthorizationCheckout,\n isExpressCheckoutApplied,\n isExpressAddressApplied\n } = checkoutState;\n const { Currency } = channelConfiguration;\n\n let amountDue = cartState.cart.AmountDue || 0;\n let cartTenderLines;\n const getTenderLinePromises = [];\n const loyaltyCardNumber = cartState.cart.LoyaltyCardId;\n\n // Pay by loyalty first\n if (loyaltyAmount && loyaltyCardNumber) {\n const chargedAmount = roundNumber(Math.min(loyaltyAmount, amountDue));\n const loyaltyTenderLinePromise = getLoyaltyTenderLine(ctx, loyaltyCardNumber, chargedAmount, Currency);\n getTenderLinePromises.push(loyaltyTenderLinePromise);\n amountDue = roundNumber(amountDue - chargedAmount);\n\n ctx.telemetry.information('Checkout loyalty tender line is added.');\n } else {\n ctx.telemetry.information('Checkout loyalty tender line is not added when no loyaltyAmount or loyaltyCardNumber.');\n }\n\n // Then by customer account\n if (checkoutState.customerAccountAmount > 0) {\n const chargedAmount = roundNumber(Math.min(checkoutState.customerAccountAmount, amountDue));\n const customerAccountTenderLinePromise = createCustomerAccountTenderLine(ctx, chargedAmount, Currency);\n getTenderLinePromises.push(customerAccountTenderLinePromise);\n amountDue = roundNumber(amountDue - chargedAmount);\n\n ctx.telemetry.information('Checkout customer account amount tender line is added.');\n } else {\n ctx.telemetry.information('Checkout customer account amount tender line is not added when customerAccountAmount is 0.');\n }\n\n // Then by gift card\n if (giftCardExtends && giftCardExtends.length > 0) {\n giftCardExtends.some(giftCardExtend => {\n if (giftCardExtend.Balance && amountDue > 0) {\n const chargedAmount = roundNumber(Math.min(giftCardExtend.Balance, amountDue));\n const tenderTypeId = giftCardExtend.TenderTypeId;\n const giftCardPin = giftCardExtend.Pin;\n const giftCardExpirationYear = giftCardExtend.ExpirationDate\n ? Number.parseInt(giftCardExtend.ExpirationDate?.split('/')[1], 10)\n : undefined;\n const giftCardExpirationMonth = giftCardExtend.ExpirationDate\n ? Number.parseInt(giftCardExtend.ExpirationDate?.split('/')[0], 10)\n : undefined;\n const creditCardTenderLinePromise = getGiftCardTenderLine(\n ctx,\n giftCardExtend.Id,\n chargedAmount,\n Currency,\n tenderTypeId,\n giftCardPin,\n giftCardExpirationYear,\n giftCardExpirationMonth\n );\n getTenderLinePromises.push(creditCardTenderLinePromise);\n amountDue = roundNumber(amountDue - chargedAmount);\n\n ctx.telemetry.information('Checkout gift card tender line is added.');\n } else {\n ctx.telemetry.information('Checkout gift card tender line is not added when no balance or no remaining balance.');\n }\n return amountDue === 0;\n });\n }\n\n // Pay the rest by credit card\n if (amountDue > 0) {\n let creditCardTenderLinePromise: Promise;\n\n if (\n shouldEnableSinglePaymentAuthorizationCheckout &&\n (!(isExpressCheckoutApplied && !isExpressAddressApplied) || (isExpressCheckoutApplied && isPaymentVerificationRedirection))\n ) {\n creditCardTenderLinePromise = getCreditCardTenderLineForSinglePaymentAuth(\n ctx,\n amountDue,\n Currency,\n cardPaymentAcceptResult,\n billingAddress\n );\n } else {\n if (!tokenizedPaymentCard) {\n throw new Error('Fail to placeOrder: no token found');\n }\n creditCardTenderLinePromise = getCreditCardTenderLine(\n ctx,\n tokenizedPaymentCard,\n cardPrefix,\n amountDue,\n Currency,\n billingAddress\n );\n }\n\n getTenderLinePromises.push(creditCardTenderLinePromise);\n\n ctx.telemetry.information('Checkout credit card tender line is added.');\n } else {\n ctx.telemetry.information('Checkout credit card tender line is not added when no remaining balance for credit card.');\n }\n\n if (getTenderLinePromises.length > 0) {\n // When payment methods is required\n cartTenderLines = await Promise.all(getTenderLinePromises).catch(error => {\n throw error;\n });\n\n if (!cartTenderLines || cartTenderLines.length === 0) {\n throw new Error('Fail to placeOrder: fail to get cart tender lines');\n }\n } else {\n ctx.telemetry.information('TenderLinePromises length is 0.');\n }\n\n const cartVersion = updatedCartVersion || cartState.cart.Version;\n\n ctx.telemetry.information('Checkout checkoutAsync is called.');\n\n // Proceed checkout\n const salesOrder = await checkoutAsync(\n { callerContext: ctx, bypassCache: 'get' },\n cartState.cart.Id,\n guestCheckoutEmail,\n undefined,\n undefined,\n cartTenderLines || null,\n cartVersion\n ).catch(async error => {\n if (checkoutState.shouldEnableSinglePaymentAuthorizationCheckout) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- unknown type.\n if (error.data?.AdditionalContext) {\n ctx.telemetry.warning('CheckoutAsync call failed. AdditionalContext is sent for single payment auth.');\n\n await checkoutState.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: true });\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- unknown type.\n await checkoutState.updateRedirectAdditionalContext({\n newRedirectAdditionalContext: error?.data?.AdditionalContext as string\n });\n await checkoutState.updateRedirectPaymentConnectorId({\n newRedirectPaymentConnectorId: cardPaymentAcceptResult?.Settings?.PaymentConnectorId as string\n });\n } else {\n ctx.telemetry.warning('CheckoutAsync call failed. AdditionalContext is not sent for single payment auth.');\n\n await checkoutState.updateIsCheckoutCallFailed({ newIsCheckoutCallFailed: true });\n\n await checkoutState.updateCheckoutErrorPaymentConnectorId({\n newCheckoutErrorPaymentConnectorId: cardPaymentAcceptResult?.Settings?.PaymentConnectorId as string\n });\n\n if (isPaymentVerificationRedirection) {\n ctx.telemetry.warning('RefreshCart when isPaymentVerificationRedirection is true.');\n\n await checkoutState.checkoutCart.refreshCart({});\n await checkoutState.updateIsExpressCheckoutApplied({ newIsExpressCheckoutApplied: false });\n await checkoutState.updateShouldCollapsePaymentSection({ newShouldCollapsePaymentSection: false });\n }\n }\n }\n\n throw error;\n });\n\n if (!salesOrder) {\n ctx.telemetry.error('Failed to placeOrder: fail to checkout.');\n throw new Error('Fail to placeOrder: fail to checkout');\n }\n\n return salesOrder;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport ReviewsList from './reviews-list';\nimport ReviewsListView from './reviews-list.view';\n\nexport * from './components/components';\nexport * from './components/report-review-modal';\nexport * from './components/review-card';\nexport * from './reviews-list';\nexport * from './reviews-list.data';\nexport * from './reviews-list.props.autogenerated';\nexport * from './reviews-list.view';\n\nexport { ReviewsList, ReviewsListView };\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 { IOrderTemplateNameDialogResources, OrderTemplateNameDialog } from '@msdyn365-commerce/components';\r\nimport { IComponentProps } from '@msdyn365-commerce/core';\r\nimport React, { useState } from 'react';\r\n\r\nconst modalCloseButtonReference: React.RefObject = React.createRef();\r\n\r\n/**\r\n * The Create Order Template Button Props.\r\n */\r\nexport interface ICreateOrderTemplateButtonProps extends IComponentProps {\r\n\r\n /**\r\n * The label for create order template.\r\n */\r\n createOrderTemplateText: string;\r\n\r\n /**\r\n * The create order template dialog resources.\r\n */\r\n createOrderTemplateDialogResources: IOrderTemplateNameDialogResources;\r\n\r\n /**\r\n * The delegate to fire when dialog captured any user entry.\r\n */\r\n onOrderTemplateCreated(): Promise;\r\n}\r\n\r\nconst CreateOrderTemplateButton: React.FC = (props) => {\r\n const onCancelHandler = React.useCallback(() => {\r\n return;\r\n }, []);\r\n const [isCreateOrderTemplateDialogOpen, setOrderTemplateNameDialogOpen] = useState(false);\r\n const onCreateButtonClick = React.useCallback(() => {\r\n setOrderTemplateNameDialogOpen(true);\r\n }, []);\r\n\r\n return (\r\n <>\r\n \r\n {props.createOrderTemplateText}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default CreateOrderTemplateButton;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nexport const SignInMessage: React.FC<{ text: string }> = (props: { text: string }) => {\n return

{props.text}

;\n};\n\nexport const SignInButton: React.FC<{ text: string; href: string; ariaLabel: string; telemetryContent?: ITelemetryContent }> = (props: {\n text: string;\n href: string;\n ariaLabel: string;\n telemetryContent?: ITelemetryContent;\n}) => {\n const { text, href, ariaLabel, telemetryContent } = props;\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.SignIn);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n return (\n \n {text}\n \n );\n};\n\ninterface IModalToggleProps {\n innerRef: React.RefObject | undefined;\n id: string;\n text: string;\n ariaLabel: string;\n telemetryContent?: ITelemetryContent;\n onClick(): void;\n}\n\nexport const ModalToggle: React.FC = (props: IModalToggleProps) => {\n const { text, onClick, ariaLabel, innerRef, telemetryContent, id } = props;\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.WriteReview);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n return (\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 { Review } from '@msdyn365-commerce/commerce-entities';\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport React from 'react';\n\nimport { IReviewModalViewProps, ReviewModal, submitReview } from '../../common/review-modal';\nimport { TOGGLE_REVIEW_MODAL_BUTTON_ID } from '../../common/rnrInterface';\nimport { ModalToggle, SignInButton, SignInMessage } from './components/components';\nimport { IWriteReviewData } from './write-review.data';\nimport { IWriteReviewProps } from './write-review.props.autogenerated';\n\nexport interface IWriteReviewCallbacks {\n toggleModal(): void;\n updateReviewTitle(title: string): void;\n updateReviewText(text: string): void;\n updateRating(rating: number): void;\n onReviewSubmitted(isSuccessful: boolean): void;\n submitReview(\n product: SimpleProduct,\n title: string,\n text: string,\n rating: number,\n context: Msdyn365.ICoreContext,\n userReview?: Review,\n onReviewSubmission?: (isSuccessful: boolean) => void\n ): void;\n}\n\nexport interface IWriteReviewState {\n rating: number;\n reviewTitle: string;\n reviewText: string;\n isReviewModalOpen: boolean;\n hasReviewError: boolean;\n}\n\nexport interface IWriteReviewViewProps extends IWriteReviewProps {\n state: IWriteReviewState;\n className: string;\n callbacks: IWriteReviewCallbacks;\n signInMessage: React.ReactNode;\n signInButton: React.ReactNode;\n modalToggle: React.ReactNode;\n reviewModal: IReviewModalViewProps;\n moduleProps: IModuleProps;\n heading: React.ReactNode;\n}\n\n/**\n * This module is enables user's to leave ratings and reviews on a specific product\n * WriteReview module.\n * @extends {React.PureComponent>}\n */\nclass WriteReview extends React.PureComponent, IWriteReviewState> {\n private readonly _modalToggleRef: React.RefObject | undefined;\n\n private readonly telemetryContent: ITelemetryContent;\n private readonly writeReviewCallbacks: IWriteReviewCallbacks = {\n // @ts-expect-error\n toggleModal: this._toggleReviewModal,\n updateReviewTitle: (title: string): void => {\n this.setState({ reviewTitle: title });\n },\n updateReviewText: (text: string): void => {\n this.setState({ reviewText: text });\n },\n updateRating: (rating: number): void => {\n this.setState({ rating });\n },\n onReviewSubmitted: (isSuccessful: boolean): void => {\n if (isSuccessful) {\n this.setState({ isReviewModalOpen: false, hasReviewError: false });\n } else {\n this.setState({ hasReviewError: true });\n }\n },\n submitReview\n };\n public constructor(props: IWriteReviewProps) {\n super(props);\n const {\n userReview: { result: userReview }\n } = this.props.data;\n this._toggleReviewModal = this._toggleReviewModal.bind(this);\n this._modalToggleRef = React.createRef();\n const rating = userReview ? userReview.rating : 0;\n const reviewTitle = userReview ? userReview.title : '';\n const reviewText = userReview ? userReview.reviewText : '';\n\n this.state = {\n isReviewModalOpen: false,\n rating,\n reviewTitle,\n reviewText,\n hasReviewError: false\n };\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public render(): JSX.Element {\n const { resources } = this.props;\n const { className, heading } = this.props.config;\n const {\n product: { result: product },\n userReview: { result: userReview }\n } = this.props.data;\n\n const userInfo = this.props.context && this.props.context.request && this.props.context.request.user;\n const completeClass = classnames('ms-write-review', 'msc-modal-input-required', className);\n const viewProps = {\n ...this.props,\n state: this.state,\n className: completeClass,\n moduleProps: {\n moduleProps: this.props,\n className: completeClass,\n id: null\n },\n callbacks: this.writeReviewCallbacks,\n signInMessage: ,\n signInButton: (\n \n ),\n modalToggle: !Msdyn365.isOboRequest(this.props.context.request) && product && (\n \n ),\n reviewModal: this._buildUserReviewModal(),\n heading: heading && heading.text && (\n \n )\n } as IWriteReviewViewProps;\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading!.text = event.target.value);\n private readonly _onTitleChange = (event: React.ChangeEvent): void => {\n this.writeReviewCallbacks.updateReviewTitle(event.target.value);\n };\n\n private readonly _onTextChange = (event: React.ChangeEvent): void => {\n this.writeReviewCallbacks.updateReviewText(event.target.value);\n };\n\n private readonly _onRatingChange = (value: number): void => {\n this.writeReviewCallbacks.updateRating(value);\n };\n\n private readonly _toggleReviewModal = (): void => {\n const userReview = this.props.data.userReview.result;\n if (this.state.isReviewModalOpen) {\n this.setState({ isReviewModalOpen: false, hasReviewError: false });\n } else if (userReview) {\n this.setState({\n isReviewModalOpen: true,\n reviewText: userReview.reviewText,\n reviewTitle: userReview.title,\n rating: userReview.rating\n });\n } else {\n this.setState({\n isReviewModalOpen: true,\n reviewText: '',\n reviewTitle: '',\n rating: 0\n });\n }\n };\n\n /**\n * This method builds the user review modal.\n * @param config The module config.\n */\n private _buildUserReviewModal(): IReviewModalViewProps {\n return ReviewModal({\n userReview: this.props.data.userReview.result,\n product: this.props.data.product.result,\n resources: { ...this.props.resources },\n context: this.props.context,\n parentId: this.props.id,\n parentType: this.props.typeName,\n isOpen: this.state.isReviewModalOpen,\n rating: this.state.rating,\n reviewTitle: this.state.reviewTitle,\n reviewText: this.state.reviewText,\n onModalToggle: this._toggleReviewModal,\n onTitleChange: this._onTitleChange,\n onTextChange: this._onTextChange,\n onRatingChange: this._onRatingChange,\n onReviewComplete: this.writeReviewCallbacks.onReviewSubmitted,\n renderContextId: 'writeReview',\n returnRef: this._modalToggleRef,\n hasError: this.state.hasReviewError,\n telemetryContent: this.telemetryContent\n });\n }\n}\n\nexport default WriteReview;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IPaymentConnectorPostMessage } from './payment-instrument-message';\n\n/**\n * Payment iFrame interface.\n */\nexport interface IPaymentFrameElementProps {\n className?: string;\n moduleName?: string;\n iframeAriaLabel: string;\n displayContent?: string;\n sourceUrl?: string;\n requestUrlOrigin?: string;\n messageOrigin?: string;\n // eslint-disable-next-line @typescript-eslint/naming-convention -- public props.\n css?: string;\n height?: number;\n // eslint-disable-next-line @typescript-eslint/naming-convention -- public event.\n onIFrameMessage?(event: MessageEvent): void;\n}\n\n/**\n * Default post message name.\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention -- Existing name.\nexport const POST_MESSAGE_NAME = 'message';\n\n/**\n * Get host name.\n * @param url - The url.\n * @returns The host name.\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention -- Public props.\nconst getHostName = (url: string = ''): string => {\n return (url.includes('//') ? url.split('/')[2] : url.split('/')[0]).toLowerCase();\n};\n\n/**\n *\n * IFrameElement component.\n * @extends {React.PureComponent}\n */\nexport class Iframe extends React.PureComponent {\n private readonly iframeRef: React.RefObject;\n\n // eslint-disable-next-line @typescript-eslint/explicit-member-accessibility -- Existing code.\n constructor(props: IPaymentFrameElementProps) {\n super(props);\n this.iframeRef = React.createRef();\n }\n\n public componentDidMount(): void {\n window.addEventListener(POST_MESSAGE_NAME, this.onEvent);\n\n this.updateContentDocument();\n }\n\n public componentDidUpdate(previousProps: IPaymentFrameElementProps): void {\n if (previousProps.displayContent !== this.props.displayContent) {\n this.updateContentDocument();\n }\n }\n\n public componentWillUnmount(): void {\n window.removeEventListener(POST_MESSAGE_NAME, this.onEvent);\n }\n\n public render(): JSX.Element | null {\n const { sourceUrl, className, iframeAriaLabel, height, moduleName = 'checkout-payment-instrument' } = this.props;\n return (\n \n );\n }\n\n /**\n * Post message.\n * @param parameters - Payment connector post message.\n */\n public postMessage = (parameters: IPaymentConnectorPostMessage): void => {\n if (this.iframeRef.current?.contentWindow?.postMessage) {\n this.iframeRef.current.contentWindow.postMessage(parameters.message, parameters.targetOrigin);\n }\n };\n\n /**\n * On event.\n * @param event - The message event.\n */\n private readonly onEvent = (event: MessageEvent) => {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- IFrame.\n const { sourceUrl, onIFrameMessage, requestUrlOrigin, messageOrigin } = this.props;\n const sourceHost = getHostName(sourceUrl);\n const eventHost = getHostName(event.origin);\n const requestHost = getHostName(requestUrlOrigin);\n const messageHost = getHostName(messageOrigin);\n\n // Important: security check\n // check actual origin matches with expected origin\n if (\n !onIFrameMessage ||\n (sourceUrl && !(sourceHost === eventHost || requestHost === eventHost || messageHost === eventHost)) ||\n (!sourceUrl && !(requestHost === eventHost || messageHost === eventHost))\n ) {\n return;\n }\n\n onIFrameMessage(event);\n };\n\n /**\n * Update content document.\n */\n private readonly updateContentDocument = (): void => {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Existing props.\n const { displayContent, sourceUrl, css } = this.props;\n if (!sourceUrl && displayContent && this.iframeRef.current) {\n const innerDocument = this.iframeRef.current.contentDocument;\n\n if (innerDocument) {\n innerDocument.open();\n innerDocument.write(displayContent);\n if (css) {\n // Append custom style\n const style = document.createElement('style');\n const cssNote = document.createTextNode(css);\n style.appendChild(cssNote);\n innerDocument.head.appendChild(style);\n }\n\n innerDocument.close();\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 { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IMediaGalleryThumbnailItemViewProps, IMediaGalleryThumbnailsViewProps, IMediaGalleryViewProps } from '../..';\n\nconst MediaGalleryView: React.FC = props => {\n const { CarouselProps, Thumbnails, MediaGallery, Modal } = props;\n\n return (\n \n \n {Modal}\n {_renderThumbnails(Thumbnails)}\n \n );\n};\n\nconst _renderThumbnails = (thumbnails: IMediaGalleryThumbnailsViewProps): JSX.Element => {\n const { ThumbnailsContainerProps, SingleSlideCarouselComponentProps, items } = thumbnails;\n\n return (\n \n {items && items.map(_renderThumbnailItem)}\n \n );\n};\n\nconst _renderThumbnailItem = (thumbnail: IMediaGalleryThumbnailItemViewProps): JSX.Element => {\n const { ThumbnailItemContainerProps, Picture } = thumbnail;\n\n return {Picture};\n};\n\nexport default MediaGalleryView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nconst countryISOMapping: { [key: string]: string } = {\n AF: 'AFG',\n AX: 'ALA',\n AL: 'ALB',\n DZ: 'DZA',\n AS: 'ASM',\n AD: 'AND',\n AO: 'AGO',\n AI: 'AIA',\n AQ: 'ATA',\n AG: 'ATG',\n AR: 'ARG',\n AM: 'ARM',\n AW: 'ABW',\n AU: 'AUS',\n AT: 'AUT',\n AZ: 'AZE',\n BS: 'BHS',\n BH: 'BHR',\n BD: 'BGD',\n BB: 'BRB',\n BY: 'BLR',\n BE: 'BEL',\n BZ: 'BLZ',\n BJ: 'BEN',\n BM: 'BMU',\n BT: 'BTN',\n BO: 'BOL',\n BA: 'BIH',\n BW: 'BWA',\n BV: 'BVT',\n BR: 'BRA',\n VG: 'VGB',\n IO: 'IOT',\n BN: 'BRN',\n BG: 'BGR',\n BF: 'BFA',\n BI: 'BDI',\n KH: 'KHM',\n CM: 'CMR',\n CA: 'CAN',\n CV: 'CPV',\n KY: 'CYM',\n CF: 'CAF',\n TD: 'TCD',\n CL: 'CHL',\n CN: 'CHN',\n HK: 'HKG',\n MO: 'MAC',\n CX: 'CXR',\n CC: 'CCK',\n CO: 'COL',\n KM: 'COM',\n CG: 'COG',\n CD: 'COD',\n CK: 'COK',\n CR: 'CRI',\n CI: 'CIV',\n HR: 'HRV',\n CU: 'CUB',\n CY: 'CYP',\n CZ: 'CZE',\n DK: 'DNK',\n DJ: 'DJI',\n DM: 'DMA',\n DO: 'DOM',\n EC: 'ECU',\n EG: 'EGY',\n SV: 'SLV',\n GQ: 'GNQ',\n ER: 'ERI',\n EE: 'EST',\n ET: 'ETH',\n FK: 'FLK',\n FO: 'FRO',\n FJ: 'FJI',\n FI: 'FIN',\n FR: 'FRA',\n GF: 'GUF',\n PF: 'PYF',\n TF: 'ATF',\n GA: 'GAB',\n GM: 'GMB',\n GE: 'GEO',\n DE: 'DEU',\n GH: 'GHA',\n GI: 'GIB',\n GR: 'GRC',\n GL: 'GRL',\n GD: 'GRD',\n GP: 'GLP',\n GU: 'GUM',\n GT: 'GTM',\n GG: 'GGY',\n GN: 'GIN',\n GW: 'GNB',\n GY: 'GUY',\n HT: 'HTI',\n HM: 'HMD',\n VA: 'VAT',\n HN: 'HND',\n HU: 'HUN',\n IS: 'ISL',\n IN: 'IND',\n ID: 'IDN',\n IR: 'IRN',\n IQ: 'IRQ',\n IE: 'IRL',\n IM: 'IMN',\n IL: 'ISR',\n IT: 'ITA',\n JM: 'JAM',\n JP: 'JPN',\n JE: 'JEY',\n JO: 'JOR',\n KZ: 'KAZ',\n KE: 'KEN',\n KI: 'KIR',\n KP: 'PRK',\n KR: 'KOR',\n KW: 'KWT',\n KG: 'KGZ',\n LA: 'LAO',\n LV: 'LVA',\n LB: 'LBN',\n LS: 'LSO',\n LR: 'LBR',\n LY: 'LBY',\n LI: 'LIE',\n LT: 'LTU',\n LU: 'LUX',\n MK: 'MKD',\n MG: 'MDG',\n MW: 'MWI',\n MY: 'MYS',\n MV: 'MDV',\n ML: 'MLI',\n MT: 'MLT',\n MH: 'MHL',\n MQ: 'MTQ',\n MR: 'MRT',\n MU: 'MUS',\n YT: 'MYT',\n MX: 'MEX',\n FM: 'FSM',\n MD: 'MDA',\n MC: 'MCO',\n MN: 'MNG',\n ME: 'MNE',\n MS: 'MSR',\n MA: 'MAR',\n MZ: 'MOZ',\n MM: 'MMR',\n NA: 'NAM',\n NR: 'NRU',\n NP: 'NPL',\n NL: 'NLD',\n AN: 'ANT',\n NC: 'NCL',\n NZ: 'NZL',\n NI: 'NIC',\n NE: 'NER',\n NG: 'NGA',\n NU: 'NIU',\n NF: 'NFK',\n MP: 'MNP',\n NO: 'NOR',\n OM: 'OMN',\n PK: 'PAK',\n PW: 'PLW',\n PS: 'PSE',\n PA: 'PAN',\n PG: 'PNG',\n PY: 'PRY',\n PE: 'PER',\n PH: 'PHL',\n PN: 'PCN',\n PL: 'POL',\n PT: 'PRT',\n PR: 'PRI',\n QA: 'QAT',\n RE: 'REU',\n RO: 'ROU',\n RU: 'RUS',\n RW: 'RWA',\n BL: 'BLM',\n SH: 'SHN',\n KN: 'KNA',\n LC: 'LCA',\n MF: 'MAF',\n PM: 'SPM',\n VC: 'VCT',\n WS: 'WSM',\n SM: 'SMR',\n ST: 'STP',\n SA: 'SAU',\n SN: 'SEN',\n RS: 'SRB',\n SC: 'SYC',\n SL: 'SLE',\n SG: 'SGP',\n SK: 'SVK',\n SI: 'SVN',\n SB: 'SLB',\n SO: 'SOM',\n ZA: 'ZAF',\n GS: 'SGS',\n SS: 'SSD',\n ES: 'ESP',\n LK: 'LKA',\n SD: 'SDN',\n SR: 'SUR',\n SJ: 'SJM',\n SZ: 'SWZ',\n SE: 'SWE',\n CH: 'CHE',\n SY: 'SYR',\n TW: 'TWN',\n TJ: 'TJK',\n TZ: 'TZA',\n TH: 'THA',\n TL: 'TLS',\n TG: 'TGO',\n TK: 'TKL',\n TO: 'TON',\n TT: 'TTO',\n TN: 'TUN',\n TR: 'TUR',\n TM: 'TKM',\n TC: 'TCA',\n TV: 'TUV',\n UG: 'UGA',\n UA: 'UKR',\n AE: 'ARE',\n GB: 'GBR',\n US: 'USA',\n UM: 'UMI',\n UY: 'URY',\n UZ: 'UZB',\n VU: 'VUT',\n VE: 'VEN',\n VN: 'VNM',\n VI: 'VIR',\n WF: 'WLF',\n EH: 'ESH',\n YE: 'YEM',\n ZM: 'ZMB',\n ZW: 'ZWE',\n XK: 'XKX'\n};\n\n/**\n * Convert two-letter ISO country code to tree-letter ISO country code.\n * @param countryCode {string} The two-letter country code.\n * @returns The three-letter country code or empty string if not found.\n */\nexport const getThreeLetterCountryCode = (countryCode: string) => {\n return countryISOMapping[countryCode] || '';\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { PriceComponent, RatingComponent } from '@msdyn365-commerce/components';\nimport {\n IComponent,\n IComponentProps,\n ICoreContext,\n IGridSettings,\n IImageData,\n IImageSettings,\n Image,\n IRequestContext\n} from '@msdyn365-commerce/core';\nimport { ProductPrice, ProductSearchResult } from '@msdyn365-commerce/retail-proxy';\nimport { format } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\n/**\n * IActiveProductProps interface.\n */\nexport interface IActiveProductProps extends IComponentProps<{ product?: ProductSearchResult }> {\n className?: string;\n imageSettings?: IImageSettings;\n savingsText?: string;\n freePriceText?: string;\n originalPriceText?: string;\n currentPriceText?: string;\n ratingAriaLabel?: string;\n}\n\n/**\n * IActiveProduct interface.\n */\nexport interface IActiveProduct extends IComponent {}\n\n/**\n * RenderDescription function.\n * @param description - Product description string.\n * @returns - Returns JSX.Element | null.\n */\nfunction renderDescription(description?: string): JSX.Element | null {\n return

{description}

;\n}\n\n/**\n * GetRatingAriaLabel function.\n * @param rating - Product rating number.\n * @param ratingAriaLabel - Product rating aria label.\n * @returns - Returns string.\n */\nfunction getRatingAriaLabel(rating?: number, ratingAriaLabel?: string): string {\n const numberTwo: number = 2;\n if (rating && ratingAriaLabel) {\n const roundedRating = rating.toFixed(numberTwo);\n return format(ratingAriaLabel || '', roundedRating, '5');\n }\n return '';\n}\n\n/**\n * RenderRating function.\n * @param context - The core context.\n * @param typeName - The type name of the module.\n * @param ratingId - The rating id.\n * @param avgRating - The average rating.\n * @param totalRatings - The total ratings.\n * @param ariaLabel - The rating aria label.\n * @returns - Returns JSX.Element | null.\n */\nfunction renderRating(\n context: ICoreContext,\n typeName: string,\n ratingId: string,\n avgRating?: number,\n totalRatings?: number,\n ariaLabel?: string\n): JSX.Element | null {\n if (!avgRating) {\n return null;\n }\n\n const numberRatings = totalRatings?.toString() ?? undefined;\n const ratingAriaLabel = getRatingAriaLabel(avgRating, ariaLabel);\n\n return (\n \n );\n}\n\n/**\n * RenderPrice function.\n * @param context - The core context.\n * @param typeName - The type name of the module.\n * @param productId - The product id.\n * @param basePrice - The base price of the product.\n * @param adjustedPrice - The adjusted price of the product.\n * @param savingsText - The savings text of the product.\n * @param freePriceText - The free price text.\n * @param originalPriceText - The original price text.\n * @returns - Returns JSX.Element | null.\n */\nfunction renderPrice(\n context: ICoreContext,\n typeName: string,\n productId: string,\n basePrice?: number,\n adjustedPrice?: number,\n savingsText?: string,\n freePriceText?: string,\n originalPriceText?: string\n): JSX.Element | null {\n const price: ProductPrice = {\n BasePrice: basePrice,\n AdjustedPrice: adjustedPrice,\n CustomerContextualPrice: adjustedPrice\n };\n\n return (\n \n );\n}\n\n/**\n * RenderProductPlacementImage function.\n * @param requestContext - RequestContext.\n * @param imageSettings - The product image settings.\n * @param gridSettings - The viewport gird settings.\n * @param imageUrl - The product image url.\n * @param altText - The product image alt text.\n * @returns - Returns JSX.Element | null.\n */\nfunction renderProductPlacementImage(\n requestContext: IRequestContext,\n imageSettings?: IImageSettings,\n gridSettings?: IGridSettings,\n imageUrl?: string,\n altText?: string\n): JSX.Element | null {\n if (!imageUrl || !gridSettings || !imageSettings) {\n return null;\n }\n const imgData: IImageData = {\n src: imageUrl,\n altText: altText ? altText : ''\n };\n const imageProps = {\n gridSettings,\n imageSettings\n };\n imageProps.imageSettings.cropFocalRegion = true;\n return ;\n}\n\n/**\n * ActiveProduct constant.\n * @param props - The active product props.\n * @param props.data - The product search result data.\n * @param props.context - The core context.\n * @param props.imageSettings - The prodcut image settings.\n * @param props.savingsText - The product savings text.\n * @param props.freePriceText - The free price text.\n * @param props.originalPriceText - The original price text.\n * @param props.ratingAriaLabel - The product rating aria label.\n * @param props.typeName - The type name of the module.\n * @param props.id - The id of the product.\n * @returns - Returns JSX.Element | null.\n */\nexport const ActiveProductComponent: React.FC = ({\n data,\n context,\n imageSettings,\n savingsText,\n freePriceText,\n originalPriceText,\n ratingAriaLabel,\n typeName,\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Do not need naming convention check for library prameters\n id\n}) => {\n const product = data.product;\n if (!product) {\n return null;\n }\n\n return (\n <>\n
\n
\n {renderProductPlacementImage(\n context.actionContext.requestContext,\n imageSettings,\n context.request.gridSettings,\n product.PrimaryImageUrl,\n product.Name\n )}\n
\n
\n

{product.Name}

\n {renderPrice(context, typeName, id, product.BasePrice, product.Price, savingsText, freePriceText, originalPriceText)}\n {renderDescription(product.Description)}\n {!context.app.config.hideRating &&\n renderRating(context, typeName, id, product.AverageRating, product.TotalRatings, ratingAriaLabel)}\n
\n
\n \n );\n};\n\nexport default ActiveProductComponent;\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 { INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\n/**\n * ILinksData: Interface for\n * Additional content.\n */\ninterface ILinksData {\n linkText?: string;\n linkUrl: Msdyn365.ILinkData;\n ariaLabel?: string;\n isOpenInNewTab?: boolean;\n}\n\n/**\n * IAdditionalContentData: Interface for\n * Active content.\n */\ninterface IAdditionalContentData {\n heading?: string;\n subtext?: string;\n links?: ILinksData[];\n}\n\n/**\n * IActiveImageAdditionalContentProps: Interface for\n * Active Image Additional Content Component props.\n */\nexport interface IActiveImageAdditionalContentProps {\n requestContext: Msdyn365.IRequestContext;\n additionalContent: IAdditionalContentData | undefined;\n handleAdditionalTextChange(event: Msdyn365.ContentEditableEvent): void;\n handleAdditionalParagraphChange(event: Msdyn365.ContentEditableEvent): void;\n handleAdditionalLinkTextChange(linkIndex: number, event: Msdyn365.ContentEditableEvent): void;\n}\n\n/**\n * IActiveImageAdditionalContentViewProps: Interface for\n * Active Image Additional Content view props.\n */\nexport interface IActiveImageAdditionalContentViewProps {\n additionalContentNode: INodeProps;\n heading: React.ReactNode;\n text: React.ReactNode;\n links: React.ReactNode;\n additionalContentContainer: INodeProps;\n additionalContentItemLinks: INodeProps;\n}\n\n/**\n * Renders additional content heading.\n * @param additionalContentHeading - Additional content heading.\n * @param props - Active Image Additional content component props.\n * @returns Heading Node.\n */\nconst renderHeading = (additionalContentHeading: string, props: IActiveImageAdditionalContentProps) => {\n const requestContext = props.requestContext;\n return (\n {\n props.handleAdditionalTextChange(event);\n },\n requestContext\n }}\n />\n );\n};\n\n/**\n * Renders additional content heading.\n * @param additionalContentParagraphText - Additional content paragraph text.\n * @param props - Active Image Additional content component props.\n * @returns Paragraph Node.\n */\nconst renderParagraph = (additionalContentParagraphText: string, props: IActiveImageAdditionalContentProps) => {\n const requestContext = props.requestContext;\n return (\n {\n props.handleAdditionalTextChange(event);\n },\n requestContext\n }}\n />\n );\n};\n\n/**\n * Renders additional content heading.\n * @param ctaLink - Additional content link.\n * @param props - Active Image Additional content component props.\n * @param linkIndex - Additional content link index.\n * @returns Link Node.\n */\nconst renderLinks = (ctaLink: ILinksData, props: IActiveImageAdditionalContentProps, linkIndex: number) => {\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: ctaLink.ariaLabel,\n className: 'msc-active-image__details__additional-content__cta__links',\n linkText: ctaLink.linkText,\n linkUrl: ctaLink.linkUrl.destinationUrl,\n openInNewTab: ctaLink.isOpenInNewTab,\n role: 'button'\n };\n const requestContext = props.requestContext;\n return (\n {\n props.handleAdditionalLinkTextChange(linkIndex, event);\n },\n requestContext\n }}\n />\n );\n};\n\n/**\n * Create node for each additonal content item.\n * @param item - Active Image additonal content item props.\n * @param props - Active Image Additional content component props.\n * @returns IActiveImageAdditionalContentItemViewProps.\n */\nconst assembleNode = (item: IAdditionalContentData, props: IActiveImageAdditionalContentProps): IActiveImageAdditionalContentViewProps => {\n const headingNode = item.heading && renderHeading(item.heading, props);\n const paragraphNode = item.subtext && renderParagraph(item.subtext, props);\n const linksNode = item.links?.map((ctaLink: ILinksData, index: number) => {\n return renderLinks(ctaLink, props, index);\n });\n\n return {\n additionalContentNode: { className: 'msc-active-image__details__additional-content' },\n heading: headingNode,\n text: paragraphNode,\n links: linksNode,\n additionalContentContainer: { className: 'msc-active-image__details__additional-content__container' },\n additionalContentItemLinks: { className: 'msc-active-image__details__additional__content__cta' }\n };\n};\n\n/**\n * ActiveImageAdditionalContent component.\n * @param props - Active Image Additional content component props.\n * @returns Active Image Additional content view props.\n */\nexport const activeImageAdditionalContent = (\n props: IActiveImageAdditionalContentProps\n): IActiveImageAdditionalContentViewProps | undefined => {\n const { additionalContent } = props;\n if (!additionalContent) {\n return undefined;\n }\n\n return assembleNode(additionalContent, props);\n};\n\nexport default activeImageAdditionalContent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { IImageData, Image, IRequestContext } from '@msdyn365-commerce/core';\nimport { ProductSearchResult } from '@msdyn365-commerce/retail-proxy';\nimport React from 'react';\n\n/**\n * @type AreaEvent for active points\n */\ntype AreaEvent = Event | React.MouseEvent | React.FocusEvent;\n\n/**\n * @interface IRgbColor\n * @description - The IRgbColor interface contract.\n */\nexport interface IRgbColor {\n rValue: number;\n gValue: number;\n bValue: number;\n}\n\n/**\n * @interface IArea\n * @description - The IArea interface contract.\n */\nexport interface IArea {\n areaId: string;\n coords: number[];\n href?: string;\n center?: number[];\n primaryImageUrl?: string;\n productUrl: string;\n productSearchResult?: ProductSearchResult;\n}\n\n/**\n * @interface IArea\n * @description - The IArea interface contract.\n */\nexport interface IAreaMap {\n name: string;\n areas: IArea[];\n}\n\n/**\n * @enum CanvasCalculations\n * @description - The canvas calculations enum.\n */\nexport enum CanvasCalculations {\n defaultWidth = 0,\n defaultHeight = 0,\n defaultPositionX = 0,\n defaultPositionY = 0,\n defaultScale = 1,\n halfDivisor = 2,\n doubleMultiplier = 2,\n buttonHeight = 30,\n buttonPadding = 30,\n paddingAdjustment = 3,\n expandAnimationStartWidth = 10,\n expandAnimationEndWidth = 40,\n collapseAnimationStartWidth = 40,\n collapseAnimationEndWidth = 8,\n expandRadius = 12,\n collapseRadius = 8,\n rotation = 1.57,\n startAngle = 0,\n endAngle = 7,\n clearMargin = 50,\n clearHeight = 100,\n clearWidth = 100,\n textFadeInStartValue = 0,\n textFadeOutStartValue = 0.5,\n textFadeInterval = 0.01\n}\n\n/**\n * @enum CanvasStyles\n * @description - The canvas styles enum.\n */\nexport enum CanvasStyles {\n color = '#FFFFFF',\n buttonTextClor = '#000000'\n}\n\n/**\n * @enum\n * @description - The canvas styles enum.\n */\nexport interface IImageMapperResources {\n buttonText?: string;\n altText?: string;\n}\n\n/**\n * @interface IImageMapperProps\n * @description - The IImageMapperProps interface contract.\n */\nexport interface IImageMapperProps {\n imageData: IImageData;\n areaMap: IAreaMap;\n viewPort: string;\n requestContext: IRequestContext;\n color?: string;\n buttonTextClor?: string;\n width?: number;\n imgWidth?: number;\n activeImageRefs: React.RefObject;\n imageMapperResources?: IImageMapperResources;\n onLoad?(): void;\n onClick?(area: IArea, index: number, event: AreaEvent): void;\n onFocus?(area: IArea, index: number, event: AreaEvent): void;\n onMouseEnter?(area: IArea, index: number, event: AreaEvent): void;\n onMouseLeave?(area: IArea, index: number, event: AreaEvent): void;\n}\n\n/**\n * ImageMapper.\n */\nexport class ImageMapper extends React.Component {\n private readonly _backgroundImage: React.RefObject;\n\n private readonly _container: React.RefObject;\n\n private readonly _canvas: React.RefObject;\n\n private _isDesktopViewPort: boolean = false;\n\n private _context: CanvasRenderingContext2D | null | undefined = null;\n\n public constructor(props: IImageMapperProps) {\n super(props);\n this._backgroundImage = React.createRef();\n this._container = React.createRef();\n this._canvas = React.createRef();\n }\n\n /**\n * ComponentDidMount method.\n */\n public componentDidMount(): void {\n const { viewPort } = this.props;\n this.initCanvas();\n this._isDesktopViewPort = viewPort === 'lg' || viewPort === 'xl';\n this.renderAreas();\n this._context = null;\n }\n\n /**\n * ComponentDidUpdate method.\n */\n public componentDidUpdate(): void {\n const { viewPort } = this.props;\n this.initCanvas();\n this._isDesktopViewPort = viewPort === 'lg' || viewPort === 'xl';\n }\n\n /**\n * ShouldComponentUpdate method.\n * @param nextProps - Next props.\n * @returns Returns boolean.\n */\n public shouldComponentUpdate(nextProps: IImageMapperProps): boolean {\n let shouldRender = false;\n if (nextProps !== this.props) {\n shouldRender = true;\n }\n return shouldRender;\n }\n\n /**\n * GetActiveImageWidth method - Gets the active image width.\n * @returns Returns number | undefined.\n */\n public getActiveImageWidth = (): number | undefined => {\n if (MsDyn365.isBrowser) {\n const activeImageReferenceValue = this.props.activeImageRefs;\n if (activeImageReferenceValue.current !== null) {\n return activeImageReferenceValue.current.clientWidth;\n }\n }\n return undefined;\n };\n\n /**\n * GetActiveImageHeight method - Gets the active image height.\n * @returns Returns number | undefined.\n */\n public getActiveImageHeight = (): number | undefined => {\n if (MsDyn365.isBrowser) {\n const activeImageReferenceValue = this.props.activeImageRefs;\n if (activeImageReferenceValue.current !== null) {\n return activeImageReferenceValue.current.clientHeight;\n }\n }\n return undefined;\n };\n\n /**\n * ConvertHexToRgb method - This method takes color in HEX format and returns IRgbColor color object.\n * @param hexColor -The color hex value.\n * @returns -Returns IRgbColor object.\n */\n public convertHexToRgb = (hexColor: string): IRgbColor => {\n // RegEx used to execute the conversion of the hex color to rgb value.\n const regEx = new RegExp('^#?([a-f\\\\d]{2})([a-f\\\\d]{2})([a-f\\\\d]{2})$', 'u');\n\n // RegEx.exec method executes a search for a match in a specified string. Returns a result array, or null.\n const result = regEx.exec(hexColor);\n const defaultValue = 0;\n return result\n ? {\n rValue: Number.parseInt(result[1], 16),\n gValue: Number.parseInt(result[2], 16),\n bValue: Number.parseInt(result[3], 16)\n }\n : {\n rValue: defaultValue,\n gValue: defaultValue,\n bValue: defaultValue\n };\n };\n\n /**\n * ApplyFadingTransition method - Applys fading transition to button text.\n * @param text -The button text.\n * @param coords -The coordinates.\n * @param rgbColor -The RGB color object.\n * @param alpha -The alpha value of the button text.\n */\n public applyFadingTransition = (text: string, coords: number[], rgbColor: IRgbColor, alpha: number): void => {\n const halfDivisor: number = CanvasCalculations.halfDivisor;\n const context = this._canvas.current?.getContext('2d') ?? this._context;\n if (context && this._isDesktopViewPort) {\n const buttonPadding = CanvasCalculations.buttonPadding;\n const paddingAdjustment = CanvasCalculations.paddingAdjustment;\n const buttonWidth = context.measureText(text).width + buttonPadding;\n context.fillStyle = `rgba(${rgbColor.rValue}, ${rgbColor.gValue}, ${rgbColor.bValue}, ${alpha} )`;\n if (MsDyn365.isBrowser && document.body.parentElement && document.body.parentElement.getAttribute('dir') === 'rtl') {\n context.fillText(text, coords[0] + buttonWidth / halfDivisor - buttonPadding / halfDivisor, coords[1] + paddingAdjustment);\n } else {\n context.fillText(text, coords[0] - buttonWidth / halfDivisor + buttonPadding / halfDivisor, coords[1] + paddingAdjustment);\n }\n }\n };\n\n /**\n * Draw button method - Draws button and contains fixed hight, padding values.\n * @param text -The button text.\n * @param coords -The coordinates.\n */\n public drawButton = (text: string, coords: number[]): void => {\n const { color = CanvasStyles.color, buttonTextClor = CanvasStyles.buttonTextClor } = this.props;\n const halfDivisor: number = CanvasCalculations.halfDivisor;\n const context = this._canvas.current?.getContext('2d') ?? this._context;\n if (context && this._isDesktopViewPort) {\n const buttonHeight = CanvasCalculations.buttonHeight;\n const buttonPadding = CanvasCalculations.buttonPadding;\n const paddingAdjustment = CanvasCalculations.paddingAdjustment;\n const buttonWidth = context.measureText(text).width + buttonPadding;\n const buttonPositionX = coords[0] - buttonWidth / halfDivisor;\n const buttonPositionY = coords[1] - buttonHeight / halfDivisor;\n const arcsize = buttonHeight / halfDivisor;\n\n context.beginPath();\n context.moveTo(buttonPositionX + arcsize, buttonPositionY);\n context.lineTo(buttonPositionX + buttonWidth - arcsize, buttonPositionY);\n context.arcTo(\n buttonPositionX + buttonWidth,\n buttonPositionY,\n buttonPositionX + buttonWidth,\n buttonPositionY + arcsize,\n arcsize\n );\n context.lineTo(buttonPositionX + buttonWidth, buttonPositionY + buttonHeight - arcsize);\n context.arcTo(\n buttonPositionX + buttonWidth,\n buttonPositionY + buttonHeight,\n buttonPositionX + buttonWidth - arcsize,\n buttonPositionY + buttonHeight,\n arcsize\n );\n context.lineTo(buttonPositionX + arcsize, buttonPositionY + buttonHeight);\n context.arcTo(buttonPositionX, buttonPositionY + buttonHeight, buttonPositionX, buttonPositionY - arcsize, arcsize);\n context.lineTo(buttonPositionX, buttonPositionY + arcsize);\n context.arcTo(buttonPositionX, buttonPositionY, buttonPositionX + arcsize, buttonPositionY, arcsize);\n context.lineTo(buttonPositionX + arcsize, buttonPositionY);\n context.stroke();\n context.closePath();\n context.fillStyle = color;\n context.fill();\n context.fillStyle = buttonTextClor;\n if (MsDyn365.isBrowser && document.body.parentElement && document.body.parentElement.getAttribute('dir') === 'rtl') {\n context.fillText(text, coords[0] + buttonWidth / halfDivisor - buttonPadding / halfDivisor, coords[1] + paddingAdjustment);\n } else {\n context.fillText(text, coords[0] - buttonWidth / halfDivisor + buttonPadding / halfDivisor, coords[1] + paddingAdjustment);\n }\n }\n };\n\n /**\n * ExpandAnimation method - Shows expand animation and contains fixed values to draw the circle and ellipse shapes.\n * @param coords -Coordinates.\n */\n public expandAnimation = (coords: number[]): void => {\n const { color = CanvasStyles.color, buttonTextClor = CanvasStyles.buttonTextClor } = this.props;\n const buttonText = this.props.imageMapperResources?.buttonText;\n let animationStartWidth = CanvasCalculations.expandAnimationStartWidth;\n const pointPositionX = coords[0];\n const pointPositionY = coords[1];\n const animationEndWidth = CanvasCalculations.expandAnimationEndWidth;\n const radius = CanvasCalculations.expandRadius;\n const rotation = CanvasCalculations.rotation;\n const startAngle = CanvasCalculations.startAngle;\n const endAngle = CanvasCalculations.endAngle;\n let textFadeInValue = CanvasCalculations.textFadeInStartValue;\n const buttonTextClorInRgb = this.convertHexToRgb(buttonTextClor.toLocaleLowerCase());\n\n /**\n * Animate method - Reders expand animation.\n */\n const animate = () => {\n const context = this._canvas.current?.getContext('2d') ?? this._context;\n if (!context) {\n return;\n }\n context.beginPath();\n context.ellipse(pointPositionX, pointPositionY, radius, animationStartWidth, rotation, startAngle, endAngle);\n context.fillStyle = color;\n context.fill();\n context.fillStyle = color;\n if (buttonText) {\n if (animationStartWidth < animationEndWidth) {\n requestAnimationFrame(animate);\n this.applyFadingTransition(buttonText, coords, buttonTextClorInRgb, textFadeInValue);\n textFadeInValue += CanvasCalculations.textFadeInterval;\n animationStartWidth++;\n } else {\n this.drawButton(buttonText, [pointPositionX, pointPositionY]);\n }\n }\n };\n\n if (this._isDesktopViewPort) {\n animate();\n }\n };\n\n /**\n * CollapseAnimation method - Shows collapse animation and contains fixed values to draw the circle and ellipse shapes.\n * @param coords -Coordinates.\n */\n public collapseAnimation = (coords: number[]): void => {\n const { color = CanvasStyles.color, buttonTextClor = CanvasStyles.buttonTextClor } = this.props;\n const buttonText = this.props.imageMapperResources?.buttonText;\n let animationStartWidth = CanvasCalculations.collapseAnimationStartWidth;\n const pointPositionX = coords[0];\n const pointPositionY = coords[1];\n const animationEndWidth = CanvasCalculations.collapseAnimationEndWidth;\n const rotation = CanvasCalculations.rotation;\n const clearMargin = CanvasCalculations.clearMargin;\n const clearHeight = CanvasCalculations.clearHeight;\n const clearWidth = CanvasCalculations.clearWidth;\n const radius = CanvasCalculations.collapseRadius;\n const startAngle = CanvasCalculations.startAngle;\n const endAngle = CanvasCalculations.endAngle;\n let textFadeOutValue = CanvasCalculations.textFadeOutStartValue;\n const buttonTextClorInRgb = this.convertHexToRgb(buttonTextClor.toLocaleLowerCase());\n\n /**\n * Animate method - Renders collapse animation.\n */\n const animate = () => {\n const context = this._canvas.current?.getContext('2d') ?? this._context;\n if (!context) {\n return;\n }\n context.beginPath();\n context.clearRect(pointPositionX - clearMargin, pointPositionY - clearMargin, clearWidth, clearHeight);\n context.ellipse(pointPositionX, pointPositionY, radius, animationStartWidth, rotation, startAngle, endAngle);\n context.fillStyle = color;\n context.fill();\n if (animationEndWidth < animationStartWidth && buttonText) {\n requestAnimationFrame(animate);\n this.applyFadingTransition(buttonText, coords, buttonTextClorInRgb, textFadeOutValue);\n textFadeOutValue -= CanvasCalculations.textFadeInterval;\n animationStartWidth--;\n }\n };\n\n if (this._isDesktopViewPort) {\n animate();\n }\n };\n\n /**\n * DrawCircle method - Renders active points.\n * @param coords -Coordinates.\n */\n public drawCircle = (coords: number[]): void => {\n const { color = CanvasStyles.color, viewPort } = this.props;\n const doubleMultiplier: number = CanvasCalculations.doubleMultiplier;\n const startAngle: number = CanvasCalculations.startAngle;\n const context = this._canvas.current?.getContext('2d') ?? this._context;\n const radius = viewPort === 'xs' || viewPort === 'sm' ? coords[2] * doubleMultiplier : coords[2];\n if (!context) {\n return;\n }\n context.fillStyle = color;\n context.beginPath();\n context.strokeStyle = color;\n context.arc(coords[0], coords[1], radius, startAngle, Math.PI * doubleMultiplier);\n context.closePath();\n context.stroke();\n context.fill();\n };\n\n /**\n * ScaleCoords method - To scale the active point coordinates based on the window size.\n * @param coords -Coordinates.\n * @returns -Returns number[].\n */\n public scaleCoords = (coords: number[]): number[] => {\n const { imgWidth } = this.props;\n const defaultWidth: number = CanvasCalculations.defaultWidth;\n const defaultScale: number = CanvasCalculations.defaultScale;\n\n // Calculate scale based on current 'width' and the original 'imgWidth'\n const width = this.getActiveImageWidth();\n const scale = width && imgWidth && imgWidth > defaultWidth ? width / imgWidth : defaultScale;\n return coords.map(coord => coord * scale);\n };\n\n /**\n * RenderPrefilledAreas method - To render active points in case of events.\n */\n public renderPrefilledAreas = (): void => {\n const { areaMap } = this.props;\n areaMap.areas.map(area => {\n this.drawCircle(this.scaleCoords(area.coords));\n return null;\n });\n };\n\n /**\n * ComputeCenter method - To re-calculate the center of active point based on window size.\n * @param area -IArea.\n * @returns -Returns number[].\n */\n public computeCenter = (area: IArea): number[] => {\n const scaledCoords = this.scaleCoords(area.coords);\n return [scaledCoords[0], scaledCoords[1]];\n };\n\n /**\n * HandleHoverOn method - To handle mouse hover on event.\n * @param area -IArea.\n */\n public handleHoverOn = (area: IArea): void => {\n if (area.center && this._canvas.current) {\n this.drawCircle(this.scaleCoords(area.coords));\n this.expandAnimation(area.center);\n }\n };\n\n /**\n * HandleHoverOff method - To handle mouse hover off event.\n * @param area -IArea.\n */\n public handleHoverOff = (area: IArea): void => {\n if (this._canvas.current) {\n const context = this._canvas.current.getContext('2d') ?? this._context;\n const canvasPositionX: number = CanvasCalculations.defaultPositionX;\n const canvasPositionY: number = CanvasCalculations.defaultPositionY;\n\n if (!context) {\n return;\n }\n context.clearRect(canvasPositionX, canvasPositionY, this._canvas.current.width, this._canvas.current.height);\n this.renderPrefilledAreas();\n if (area.center) {\n this.collapseAnimation(area.center);\n }\n }\n };\n\n /**\n * Click method - Mouse click event.\n * @param area -IArea.\n * @param index - Number.\n * @returns - Void.\n */\n public click = (area: IArea, index: number) => (event: AreaEvent): void => {\n const { onClick } = this.props;\n if (onClick) {\n event.preventDefault();\n onClick(area, index, event);\n }\n };\n\n /**\n * HoverOn method - Mouse hover on event.\n * @param area -IArea.\n * @param index - Number.\n * @returns - Void.\n */\n public hoverOn = (area: IArea, index: number) => (event: AreaEvent): void => {\n const { onMouseEnter } = this.props;\n this.handleHoverOn(area);\n if (onMouseEnter) {\n onMouseEnter(area, index, event);\n }\n };\n\n /**\n * HoverOff method - Mouse hover off event.\n * @param area - IArea.\n * @param index - Number.\n * @returns - Void.\n */\n public hoverOff = (area: IArea, index: number) => (event: AreaEvent): void => {\n const { onMouseLeave } = this.props;\n\n this.handleHoverOff(area);\n\n if (onMouseLeave) {\n onMouseLeave(area, index, event);\n }\n };\n\n /**\n * RenderAreas method - Renders active points at given coordinates.\n * @returns -Returns JSX.Element[].\n */\n public renderAreas = (): JSX.Element[] => {\n const { areaMap, viewPort } = this.props;\n const buttonText = this.props.imageMapperResources?.buttonText ? this.props.imageMapperResources.buttonText : '';\n const altText = this.props.imageMapperResources?.altText ? this.props.imageMapperResources.altText : '';\n const doubleMultiplier: number = CanvasCalculations.doubleMultiplier;\n\n return areaMap.areas.map((area, index) => {\n const scaledCoords = this.scaleCoords(area.coords);\n const xsRadius = area.coords[2] * doubleMultiplier;\n if (viewPort === 'xs') {\n scaledCoords[2] = xsRadius;\n }\n const center = this.computeCenter(area);\n const extendedArea = { ...area, scaledCoords, center };\n const areaKey = `area-${index}`;\n const altTextWithProductName = altText\n .replace('{buttonText}', buttonText ? buttonText : '')\n .replace('{productName}', area.productSearchResult?.Name ? area.productSearchResult.Name : '');\n return (\n \n );\n });\n };\n\n /**\n * InitCanvas method - To render the canvas.\n */\n public initCanvas = (): void => {\n if (!this._canvas.current || !this._backgroundImage.current || !this._container.current) {\n return;\n }\n\n const { color, onLoad } = this.props;\n const defaultWidth: number = CanvasCalculations.defaultWidth;\n const defaultHeight: number = CanvasCalculations.defaultHeight;\n\n const canvasWidth = this.getActiveImageWidth() ?? defaultWidth;\n const canvasHeight = this.getActiveImageHeight() ?? defaultHeight;\n\n this._canvas.current.width = canvasWidth;\n this._canvas.current.height = canvasHeight;\n this._container.current.style.width = `${canvasWidth}px`;\n\n const context = this._canvas.current.getContext('2d') ?? this._context;\n if (!context) {\n return;\n }\n context.fillStyle = color ?? '';\n\n if (onLoad) {\n onLoad();\n }\n\n this.renderPrefilledAreas();\n };\n\n /**\n * Render method - To render the image mapper component with active image, canvas and active points.\n * @returns -Returns JSX.Element | null.\n */\n public render(): JSX.Element | null {\n const { imageData, areaMap, requestContext } = this.props;\n\n return (\n
\n \n \n \n {this.renderAreas()}\n \n
\n );\n }\n}\n\nexport default ImageMapper;\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 { ProductSearchResult } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, getProductPageUrlSync } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IModuleProps,\n INodeProps,\n isMobile,\n ITelemetryContent,\n VariantType\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport {\n activeImageAdditionalContent,\n ActiveProductComponent,\n IActiveImageAdditionalContentViewProps,\n IArea,\n IAreaMap,\n IImageMapperProps,\n ImageMapper\n} from '../active-image-utilities';\nimport { IActiveImageData } from './active-image.data';\nimport { IActiveImageProps } from './active-image.props.autogenerated';\n\n/**\n * @type AreaEvent for active points\n */\ntype AreaEvent = Event | React.MouseEvent | React.FocusEvent;\n\n/**\n * @interface IActiveImageViewProps\n * @classdesc - The IActiveImageViewProps interface contract.\n */\nexport interface IActiveImageViewProps extends IActiveImageProps<{}>, IImageMapperProps {\n activePointContainer: IModuleProps;\n activePointDetailsContainer: INodeProps;\n imageMapper: React.ReactNode;\n overlay: React.ReactNode;\n productCard: React.ReactNode;\n title?: React.ReactNode;\n text?: React.ReactNode;\n links?: React.ReactNode;\n detailsContainer?: INodeProps;\n detailsContainerCta?: INodeProps;\n additionalContent?: IActiveImageAdditionalContentViewProps;\n productCardleftPosition: number;\n productCardtopPosition: number;\n handleAdditionalText?(event: MsDyn365.ContentEditableEvent): void;\n handleAdditionalParagraph?(event: MsDyn365.ContentEditableEvent): void;\n handleAdditionalLinkText?(event: MsDyn365.ContentEditableEvent): void;\n}\n\n/**\n * @interface IActiveImageLinksData\n * @classdesc - The IActiveImageLinksData interface contract.\n */\nexport interface IActiveImageLinksData {\n linkText?: string;\n linkUrl: MsDyn365.ILinkData;\n ariaLabel?: string;\n willOpenInNewTab?: boolean;\n}\n\n/**\n * @interface IActiveImageState\n * @classdesc - The IActiveImageState interface contract.\n */\ninterface IActiveImageState {\n clientWidth: number;\n area: IArea | null;\n viewport: string;\n overlayClass: string;\n}\n\n/**\n * @enum ActiveImageConstants\n * @description - The active image constants enum.\n */\nexport enum ActiveImageConstants {\n timeoutInterval = 200,\n enterKey = 'Enter',\n escKey = 'Escape'\n}\n\n/**\n *\n * ActiveImage class.\n * @extends {React.PureComponent & IImageMapperProps, IActiveImageState>}\n */\nexport class ActiveImage extends React.PureComponent & IImageMapperProps, IActiveImageState> {\n private readonly _telemetryContent: ITelemetryContent;\n\n private _isDesktopViewPort: boolean;\n\n private readonly _defaultProductCardWidth: number = 315;\n\n private readonly _defaultProdutCardHight: number = 490;\n\n private readonly _activePoints: IArea[] = [];\n\n private readonly _activeImageRefs: React.RefObject;\n\n private readonly _activeImageClass: string;\n\n private readonly _productCardDivRef: React.RefObject;\n\n public constructor(props: IActiveImageProps & IImageMapperProps) {\n super(props);\n this._telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n const viewport = isMobile({ variant: VariantType.Browser, context: this.props.context.request });\n this._activeImageClass = `msc-active-image-${this.getActiveImageId()}`;\n this.state = {\n clientWidth: 0,\n area: null,\n viewport,\n overlayClass: ''\n };\n this._isDesktopViewPort = viewport === 'lg' || viewport === 'xl';\n this._activeImageRefs = React.createRef();\n this._productCardDivRef = React.createRef();\n }\n\n public componentDidMount(): void {\n if (MsDyn365.msdyn365Commerce.isBrowser) {\n window.addEventListener('resize', this.updateClientWidth);\n document.addEventListener('keydown', this.keyDown, false);\n document.addEventListener('mousedown', this._handleOutsideClick);\n }\n setTimeout(() => {\n this.updateClientWidth();\n }, ActiveImageConstants.timeoutInterval);\n\n if (MsDyn365.msdyn365Commerce.isBrowser && this._activeImageRefs.current) {\n const images: HTMLCollectionOf = this._activeImageRefs.current.getElementsByClassName(\n 'msc-thumbnail_image msc-active-image-img'\n );\n if (ArrayExtensions.hasElements(Array.from(images))) {\n images[0].removeAttribute('usemap');\n }\n }\n }\n\n /**\n * AddActivePoints method - To handle add Active Points.\n * @param area - IArea.\n * @param product - ProductSearchResult.\n * @param coords - Coords.\n * @param productUrl - String.\n */\n public addActivePoints = (area: IArea | undefined, product: ProductSearchResult, coords: number[], productUrl: string): void => {\n if (!area) {\n this._activePoints.push({\n areaId: product.RecordId.toString(),\n coords,\n primaryImageUrl: product.PrimaryImageUrl ?? '',\n productUrl,\n productSearchResult: product\n });\n }\n };\n\n /**\n * ComponentWillUnmount method.\n */\n public componentWillUnmount(): void {\n if (MsDyn365.msdyn365Commerce.isBrowser) {\n window.removeEventListener('resize', this.updateClientWidth);\n document.removeEventListener('keydown', (this.keyDown as unknown) as EventListener, false);\n document.removeEventListener('mousedown', this._handleOutsideClick, false);\n }\n }\n\n /**\n * UpdateClientWidth method to update client width in state.\n */\n public updateClientWidth = (): void => {\n const viewport = isMobile({ variant: VariantType.Browser, context: this.props.context.request });\n this.setState({ clientWidth: this.getActiveImageWidth(), viewport });\n this._isDesktopViewPort = viewport === 'lg' || viewport === 'xl';\n };\n\n /**\n * Render method.\n * @returns - Returns JSX.Element | null.\n */\n public render(): JSX.Element | null {\n const viewProps: IActiveImageViewProps = {\n ...(this.props as IImageMapperProps & IActiveImageProps<{}>),\n activePointContainer: {\n moduleProps: this.props,\n className: classnames('msc-active-image', this._activeImageClass, this.props.config.className)\n },\n activePointDetailsContainer: {\n tag: 'div',\n className: classnames('msc-active-image-wrapper', this._activeImageClass, this.props.config.className),\n ref: this._activeImageRefs\n },\n imgWidth: this.props.config.canvasWidth,\n imageMapper: this.renderImageMapper(),\n overlay: this.renderOverlay(),\n productCard: this.renderProductCard(),\n productCardleftPosition: this.getProductCardPositionX(),\n productCardtopPosition: this.getProductCardPositionY(),\n title: this.renderActiveImageDetailsHeading(),\n text: this.renderActiveImageDetailsParagraph(),\n links: this.renderActiveImageDetailsLinks(),\n detailsContainer: { className: 'msc-active-image__details' },\n detailsContainerCta: { className: 'msc-active-image__details__cta' },\n additionalContent: activeImageAdditionalContent({\n requestContext: this.props.context.request,\n additionalContent: this.props.config.additionalContent,\n handleAdditionalTextChange: this.handleAdditionalTextChange,\n handleAdditionalParagraphChange: this.handleAdditionalParagraphChange,\n handleAdditionalLinkTextChange: this.handleAdditionalLinkTextChange\n }),\n handleAdditionalText: this.handleAdditionalTextChange,\n handleAdditionalParagraph: this.handleAdditionalParagraphChange,\n handleAdditionalLinkText: this.handleAdditionalTextChange\n };\n\n return this.props.renderView(viewProps);\n }\n\n /**\n * RenderImageMapper method - To render image mapper.\n * @returns - Returns React.ReactNode | null.\n */\n public renderImageMapper = (): React.ReactNode | null => {\n const { config, context } = this.props;\n const defaultPosition: number = 0;\n const defaultLength: number = 0;\n const productResults = this.props.data.products.result;\n if (config.activePoints && productResults) {\n for (const product of productResults) {\n for (const configProduct of config.activePoints) {\n if (product.ItemId === configProduct.itemId) {\n const productUrl = getProductPageUrlSync(product.Name ?? '', product.RecordId, context.actionContext, undefined);\n const coords = [\n configProduct.xPosition ?? defaultPosition,\n configProduct.yPosition ?? defaultPosition,\n configProduct.radius ?? defaultPosition\n ];\n const area = this._activePoints.find(activePoint => JSON.stringify(activePoint.coords) === JSON.stringify(coords));\n this.addActivePoints(area, product, coords, productUrl);\n }\n }\n }\n }\n const mappedArea: IAreaMap = {\n name: `map-${this._activeImageClass}`,\n areas: this._activePoints.length > defaultLength ? this._activePoints : []\n };\n\n // If image is null, we want to render the placeholder SVG - by passing image data with empty src\n return (\n \n );\n };\n\n /**\n * EnterArea method - To handle mouse enter event.\n * @param area - Active point area.\n * @param index - Active point index.\n * @param event - Active point AreaEvent.\n */\n public enterArea = (area: IArea, index: number, event: AreaEvent): void => {\n this.setState({ area, overlayClass: 'msc-active-image-overlay' });\n if (this.props.onMouseEnter) {\n this.props.onMouseEnter(area, index, event);\n }\n if (event.type.toLocaleLowerCase() === 'click' && this._isDesktopViewPort) {\n window.open(area.productUrl, '_self');\n }\n };\n\n /**\n * LeaveArea method - To handle mouse leave event.\n */\n public leaveArea = (): void => {\n if (this._isDesktopViewPort) {\n this.resetState();\n }\n };\n\n /**\n * ResetState method - To reset the state for area and overlayclass.\n */\n public resetState = (): void => {\n this.setState({ area: null, overlayClass: '' });\n };\n\n /**\n * RenderProductComponent method - To render the product card with product information.\n * @returns - Returns React.ReactNode.\n */\n public renderProductComponent = (): React.ReactNode => {\n if (this.state.area?.productSearchResult) {\n const baseImageUrl: string = this.props.context.request.apiSettings.baseImageUrl;\n const imageUrl: string = this.state.area.primaryImageUrl ?? '';\n const primaryImageUrl: string = `${baseImageUrl}${imageUrl}`;\n const product: ProductSearchResult = this.state.area.productSearchResult;\n product.PrimaryImageUrl = primaryImageUrl;\n\n return (\n \n );\n }\n return React.Fragment;\n };\n\n /**\n * RenderProductCard method - To render product cards.\n * @returns - Returns React.ReactNode.\n */\n public renderProductCard = (): React.ReactNode => {\n const { area } = this.state;\n\n return (\n <>\n {area?.center && (\n
\n
\n {!this._isDesktopViewPort &&
\n
\n )}\n \n );\n };\n\n /**\n * RenderOverlay method - To render overlay for non desktop viewports.\n * @returns - Returns React.ReactNode.\n */\n public renderOverlay = (): React.ReactNode => {\n return <>{!this._isDesktopViewPort &&
};\n };\n\n /**\n * GetProductCardPositionX method - Provides product card x position to the left or right of active point based on available space.\n * For xs, sm and md viewports it provides x position for the center alignment.\n * @returns - Returns number.\n */\n public getProductCardPositionX = (): number => {\n const defaultImageSettings = this.getDefaultImageSettings();\n const productImageSettingsWidth = this.props.config.productImageSettings?.viewports\n ? this.props.config.productImageSettings.viewports.lg?.w\n : defaultImageSettings.viewports.lg?.w;\n const defaultPositionX: number = 0;\n const halfDivisor: number = 2;\n const productCardWidth: number = productImageSettingsWidth ? productImageSettingsWidth : this._defaultProductCardWidth;\n const { area, clientWidth, viewport } = this.state;\n const pointPositionX = area?.center?.[0] ?? clientWidth / halfDivisor;\n const leftAllignPosition = pointPositionX - productCardWidth - productCardWidth / halfDivisor;\n const rightAllignPosition = pointPositionX + productCardWidth / halfDivisor;\n let position: number = (clientWidth - productCardWidth) / halfDivisor;\n if (viewport !== 'xs' && viewport !== 'sm' && viewport !== 'md') {\n if (leftAllignPosition < defaultPositionX) {\n position = rightAllignPosition;\n } else {\n position = leftAllignPosition;\n }\n }\n return position;\n };\n\n /**\n * GetProductCardPositionY method - Provides product card y position in center with respect to active point.\n * For xs, sm and md viewports it provides y position for the center alignment.\n * @returns - Returns number.\n */\n public getProductCardPositionY = (): number => {\n const defaultImageSettings = this.getDefaultImageSettings();\n const productImageSettingsHeight = this.props.config.productImageSettings?.viewports\n ? this.props.config.productImageSettings.viewports.lg?.h\n : defaultImageSettings.viewports.lg?.h;\n const halfDivisor: number = 2;\n const { area, viewport } = this.state;\n const produtCardHight: number = productImageSettingsHeight ? productImageSettingsHeight : this._defaultProdutCardHight;\n const pointPositionY = (this.getActiveImageHeight() - produtCardHight) / halfDivisor;\n let position: number = pointPositionY;\n if (viewport !== 'xs' && viewport !== 'sm' && viewport !== 'md') {\n position = (area?.center?.[1] ?? this.getActiveImageHeight() / halfDivisor) - produtCardHight / halfDivisor;\n }\n return position;\n };\n\n /**\n * GetDefaultImageSettings method.\n * @returns MsDyn365.IImageSettings.\n */\n public getDefaultImageSettings = (): MsDyn365.IImageSettings => {\n const defaultImageSettings: MsDyn365.IImageSettings = {\n viewports: {\n xs: { q: 'w=275&h=275&m=6', w: 275, h: 275 },\n lg: { q: 'w=275&h=275&m=6', w: 275, h: 275 },\n xl: { q: 'w=275&h=275&m=6', w: 275, h: 275 }\n },\n lazyload: true\n };\n\n return defaultImageSettings;\n };\n\n /**\n * KeyDown method - To handle keydown event.\n * @param event - KeyboardEvent.\n */\n public keyDown = (event: KeyboardEvent): void => {\n if (event.key === ActiveImageConstants.enterKey) {\n const target: HTMLElement = event.target as HTMLElement;\n if (target.nodeName === 'AREA') {\n const area: HTMLAreaElement = target as HTMLAreaElement;\n if (area.href) {\n window.open(area.href, '_self');\n }\n }\n }\n if (event.key === ActiveImageConstants.escKey) {\n this.resetState();\n }\n };\n\n /**\n * GetActiveImageWidth method - To get active image width.\n * @returns Returns number.\n */\n public getActiveImageWidth = (): number => {\n const defaultWidth: number = 0;\n if (MsDyn365.msdyn365Commerce.isBrowser) {\n const activeImageReferenceValue = this._activeImageRefs;\n if (activeImageReferenceValue.current !== null) {\n return activeImageReferenceValue.current.clientWidth;\n }\n }\n return defaultWidth;\n };\n\n /**\n * GetActiveImageHeight method - To get active image height.\n * @returns Returns number.\n */\n public getActiveImageHeight = (): number => {\n const defaultHeight: number = 0;\n if (MsDyn365.msdyn365Commerce.isBrowser) {\n const activeImageReferenceValue = this._activeImageRefs;\n if (activeImageReferenceValue.current !== null) {\n return activeImageReferenceValue.current.clientHeight;\n }\n }\n return defaultHeight;\n };\n\n /**\n * HandleLinkTextChange method - To handle link text change event.\n * @param linkIndex - The link index.\n * @param event - The dialog that is allowed to remain open.\n */\n public handleLinkTextChange(linkIndex: number, event: MsDyn365.ContentEditableEvent): void {\n if (this.props.config.links && this.props.config.links[Number(linkIndex)]) {\n this.props.config.links[Number(linkIndex)].linkText = event.target.value;\n }\n }\n\n /**\n * HandleTextChange method - To handle text change event.\n * @param event - The dialog that is allowed to remain open.\n */\n public handleTextChange = (event: MsDyn365.ContentEditableEvent): void => {\n this.props.config.heading!.text = event.target.value;\n };\n\n /**\n * HandleParagraphChange method - To handle paragraph change event.\n * @param event - The dialog that is allowed to remain open.\n */\n public handleParagraphChange = (event: MsDyn365.ContentEditableEvent): void => {\n this.props.config.paragraph = event.target.value;\n };\n\n /**\n * HandleAdditionalTextChange method - To handle additional text change event.\n * @param event - The dialog that is allowed to remain open.\n */\n public handleAdditionalTextChange(event: MsDyn365.ContentEditableEvent): void {\n if (this.props.config.additionalContent) {\n this.props.config.additionalContent.heading = event.target.value;\n }\n }\n\n /**\n * HandleAdditionalLinkTextChange method - To handle additional link text change event.\n * @param linkIndex - The link index.\n * @param event - The dialog that is allowed to remain open.\n */\n public handleAdditionalLinkTextChange(linkIndex: number, event: MsDyn365.ContentEditableEvent): void {\n const additionalContent = this.props.config.additionalContent ?? {};\n if (additionalContent.links) {\n additionalContent.links[Number(linkIndex)].linkText = event.target.value;\n }\n }\n\n /**\n * HandleAdditionalParagraphChange method - To handle additional paragraph change event.\n * @param event - The dialog that is allowed to remain open.\n */\n public handleAdditionalParagraphChange(event: MsDyn365.ContentEditableEvent): void {\n if (this.props.config.additionalContent) {\n this.props.config.additionalContent.subtext = event.target.value;\n }\n }\n\n /**\n * RenderActiveImageDetailsLinks method - To render active image details links.\n * @returns - React node.\n */\n public renderActiveImageDetailsLinks = (): React.ReactNode[] | undefined => {\n const { links } = this.props.config;\n const payLoad = getPayloadObject('click', this._telemetryContent, '');\n\n return links?.map((linkData: IActiveImageLinksData, index: number) => {\n payLoad.contentAction.etext = linkData.linkText;\n const attributes = getTelemetryAttributes(this._telemetryContent, payLoad);\n const linkId = index;\n const editableLink: MsDyn365.ILinksData = {\n ariaLabel: linkData.ariaLabel,\n className: 'msc-active-image__details__cta__link',\n linkText: linkData.linkText,\n linkUrl: linkData.linkUrl.destinationUrl,\n openInNewTab: linkData.willOpenInNewTab,\n role: 'button',\n additionalProperties: attributes\n };\n\n return (\n {\n this.handleLinkTextChange(index, event);\n },\n requestContext: this.props.context.request\n }}\n />\n );\n });\n };\n\n /**\n * RenderActiveImageDetailsHeading method - To render active image details heading.\n * @returns - React.ReactNode | undefined.\n */\n public renderActiveImageDetailsHeading = (): React.ReactNode | undefined => {\n const { heading } = this.props.config;\n\n return (\n heading && (\n \n )\n );\n };\n\n /**\n * RenderActiveImageDetailsParagraph method - To render active image details paragraph.\n * @returns - React.ReactNode | undefined.\n */\n public renderActiveImageDetailsParagraph = (): React.ReactNode | undefined => {\n const { paragraph } = this.props.config;\n\n return (\n paragraph && (\n \n )\n );\n };\n\n /**\n * GetActiveImageId - To get active image id from src.\n * @returns - String.\n */\n public getActiveImageId = (): string => {\n const { activeImage } = this.props.config;\n let activeImageId: string = '';\n if (activeImage?.src) {\n const activeImageSource = activeImage.src.split('/');\n const decrementOne: number = 1;\n const activeImageIdPart = activeImageSource[activeImageSource.length - decrementOne].split('?');\n activeImageId = activeImageIdPart[0] ?? '';\n }\n return activeImageId;\n };\n\n /**\n * Handle outside click method - To handle outside click of the active image product.\n * @param event - Mouse event.\n */\n private readonly _handleOutsideClick = (event: MouseEvent) => {\n if (this._productCardDivRef.current?.contains(event.target as Node)) {\n return;\n }\n this.resetState();\n };\n}\nexport default ActiveImage;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CacheType, IActionInput } from '@msdyn365-commerce/core';\n\nexport enum ReviewConcernCategory {\n OffensiveContent = '1',\n ReviewResponse = '7',\n SpamAdvertising = '8',\n Profanity = '9'\n}\n\n/**\n * ReportReviewConcern Input Action.\n */\nexport class ReportReviewConcernInput implements IActionInput {\n public reviewId: string;\n\n public tenantId: string;\n\n public locale: string;\n\n public serviceEndpoint: string;\n\n public concernCategory: string;\n\n public authToken: string;\n\n constructor(reviewId: string, tenantId: string, locale: string, concernCategory: string, authToken: string, serviceEndpoint: string) {\n this.reviewId = reviewId;\n this.tenantId = tenantId;\n this.locale = locale;\n this.concernCategory = concernCategory;\n this.authToken = authToken;\n this.serviceEndpoint = serviceEndpoint;\n }\n\n public getCacheKey = () => 'ReportReviewConcern';\n\n public getCacheObjectType = () => 'ReportReviewConcern';\n\n public dataCacheType = (): CacheType => 'none';\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\n/**\n * Visibility observer state.\n */\ninterface IVisibilityObserverState {\n isVisible?: boolean;\n errorMessage?: string;\n observer?: MutationObserver;\n}\n\n/**\n * Visibility observer props.\n */\nexport interface IVisibilityObserverProps {\n visibilityObserver?: IVisibilityObserverState;\n}\n\n/**\n * With visibility observer.\n * @param WrappedComponent - Wrapped component.\n * @param className - ClassName.\n * @returns React node.\n */\nexport const withVisibilityObserver =

(\n WrappedComponent: React.ComponentType

,\n className = 'ms-checkout-payment-instrument'\n): React.ComponentType

=> {\n /**\n *\n * VisibilityObserver component.\n * @extends {React.Component

}\n */\n class VisibilityObserver extends React.Component

{\n // eslint-disable-next-line react/state-in-constructor -- Existing pattern.\n public state: IVisibilityObserverState = {\n isVisible: false,\n // eslint-disable-next-line react/no-unused-state -- Need show error.\n errorMessage: '',\n observer: undefined\n };\n\n private readonly selfRef: React.RefObject = React.createRef();\n\n public componentDidMount(): void {\n this.initMutationObserver();\n }\n\n public componentWillUnmount(): void {\n this.stopMutationObserver();\n }\n\n public shouldComponentUpdate(nextProps: IVisibilityObserverProps, nextState: IVisibilityObserverState): boolean {\n if (this.state === nextState && this.props === nextProps) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n return (\n

\n \n
\n );\n }\n\n /**\n * Initial mutation observer.\n */\n private readonly initMutationObserver = (): void => {\n // Select the node that will be observed for mutations\n const targetNode = document.getElementsByTagName('body')[0];\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Better double check.\n if (!targetNode) {\n this.setState({\n // eslint-disable-next-line react/no-unused-state -- Need show error.\n errorMessage: 'No body element found'\n });\n return;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Better double check.\n if (!MutationObserver) {\n this.setState({\n // eslint-disable-next-line react/no-unused-state -- Need show error.\n errorMessage: 'MutationObserver is not supported'\n });\n return;\n }\n\n // Options for the observer (which mutations to observe)\n const config = { attributes: true, childList: true, subtree: true };\n\n // Create an observer instance linked to the callback function\n const mutationObserver = new MutationObserver(() => {\n this.handleVisibilityChange();\n });\n mutationObserver.observe(targetNode, config);\n\n this.setState({\n observer: mutationObserver\n });\n };\n\n /**\n * Stop mutation observer.\n */\n private readonly stopMutationObserver = (): void => {\n this.state.observer?.disconnect();\n };\n\n /**\n * Handle visibility change.\n */\n private readonly handleVisibilityChange = (): void => {\n // If module is visible or not\n const isVisible = !!this.selfRef.current && this.selfRef.current.offsetWidth > 0 && this.selfRef.current.offsetHeight > 0;\n if (!this.state.isVisible && isVisible) {\n this.setState({\n isVisible\n });\n this.stopMutationObserver();\n }\n };\n }\n\n return VisibilityObserver;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { RatingsSummary } from '@msdyn365-commerce/commerce-entities';\nimport { format, INodeProps, Progress } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nexport interface IHistogramItemsProps {\n ratingsSummary: RatingsSummary;\n resources: IHistogramItemsResources;\n locale: string;\n onClick(stars: number): void;\n}\n\nexport interface IHistogramItemsResources {\n barItemAriaLabel: string;\n}\n\nexport interface IHistogramItemViewProps {\n starLabel: React.ReactElement;\n bar: React.ReactElement;\n percentage: React.ReactElement;\n buttonProps: INodeProps;\n}\n\n/**\n * CartLineItems component.\n */\n\nexport const HistogramItems = (props: IHistogramItemsProps): IHistogramItemViewProps[] => {\n const { ratingsSummary } = props;\n const totalRatingsCount: number = ratingsSummary.totalRatingsCount || 0;\n if (totalRatingsCount === 0) {\n return [];\n }\n return [\n renderItem(props, 5, ratingsSummary.star5Count, totalRatingsCount),\n renderItem(props, 4, ratingsSummary.star4Count, totalRatingsCount),\n renderItem(props, 3, ratingsSummary.star3Count, totalRatingsCount),\n renderItem(props, 2, ratingsSummary.star2Count, totalRatingsCount),\n renderItem(props, 1, ratingsSummary.star1Count, totalRatingsCount)\n ];\n};\n\nconst renderItem = (props: IHistogramItemsProps, stars: number, count?: number, totalCount?: number): IHistogramItemViewProps => {\n count = count || 0;\n totalCount = totalCount || 0;\n const percentage = totalCount === 0 ? 0 : count / totalCount;\n const formattedPercent = new Intl.NumberFormat(props.locale, { style: 'percent' }).format(percentage);\n const ariaLabel = format(props.resources.barItemAriaLabel, stars, formattedPercent);\n\n return {\n starLabel: (\n \n ),\n percentage: (\n \n ),\n bar: ,\n buttonProps: {\n tag: 'button',\n className: 'ms-ratings-histogram__item',\n onClick: () => {\n props.onClick(stars);\n }\n }\n };\n};\n\nexport const AverageRatingNumber: React.FC<{ summary: RatingsSummary }> = (props: { summary: RatingsSummary }) => {\n return (\n

\n {props.summary.averageRating}\n {` `}/ 5\n

\n );\n};\n\nexport const TotalReviews: React.FC<{ summary: RatingsSummary }> = (props: { summary: RatingsSummary }) => {\n return

{props.summary.totalRatingsCount}

;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n/**\n * Payment connect post message type.\n */\nexport enum PaymentConnectorPostMessageType {\n CardPrefix = 'msax-cc-cardprefix',\n Error = 'msax-cc-error',\n Height = 'msax-cc-height',\n Result = 'msax-cc-result',\n Submit = 'msax-cc-submit',\n ExtraContext = 'msax-cc-extracontext',\n Redirect = 'msax-cc-redirect',\n Showoverlay = 'msax-cc-showoverlay',\n Hideoverlay = 'msax-cc-hideoverlay',\n ShippingAddress = 'msax-shipping-address'\n}\n\n/**\n * Interface for payment connector post message.\n */\nexport interface IPaymentConnectorPostMessage {\n message: string;\n targetOrigin: string;\n}\n\n/**\n * Payment connector message.\n * @param data - Data with message.\n * @param messageType - Message type.\n * @returns Payment connector post message.\n */\nexport function paymentConnectorMessage(data: string, messageType: PaymentConnectorPostMessageType): IPaymentConnectorPostMessage {\n return {\n message: JSON.stringify({\n type: messageType,\n value: data\n }),\n targetOrigin: '*'\n };\n}\n\n/**\n * Payment connector extra context message.\n * @param data - The data.\n * @returns The payment connector post message.\n */\nexport function paymentConnectorExtraContextMessage(data: string): IPaymentConnectorPostMessage {\n return paymentConnectorMessage(data, PaymentConnectorPostMessageType.ExtraContext);\n}\n\n/**\n * Payment connector submit message.\n * @returns The payment connector post message.\n */\nexport function paymentConnectorSubmitMessage(): IPaymentConnectorPostMessage {\n return paymentConnectorMessage('true', PaymentConnectorPostMessageType.Submit);\n}\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\nexport * from './get-product-reviews';\nexport * from './get-user-review';\nexport * from './inputs/get-product-reviews-input';\nexport * from './inputs/get-user-review-input';\nexport * from './inputs/report-review-concern-input';\nexport * from './inputs/submit-helpfulness-vote-input';\nexport * from './inputs/submit-user-review-input';\nexport * from './inputs/submit-user-review-input-data';\nexport * from './ratings-reviews-state-data-action';\nexport * from './report-review-concern';\nexport * from './submit-helpfulness-vote';\nexport * from './submit-user-review';\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\ninterface IAlertProps {\n message: string;\n}\n\nconst CheckoutAlert: React.FC = ({ message }) => (\n

\n {message}\n

\n);\n\nexport default CheckoutAlert;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n getPayloadObject,\n getTelemetryAttributes,\n INodeProps,\n ITelemetryContent,\n Module,\n Node\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IWishlistItemViewProps } from '../..';\nimport { IWishlistItemsViewProps } from './wishlist-items';\n\nconst WishlistItemsView: React.FC = props => {\n const {\n WishlistItems,\n status,\n statusMessage,\n heading,\n Products,\n products,\n Product,\n ProductDetails,\n ProductDimensions,\n telemetryContent,\n statusNotExistsMessage\n } = props;\n\n return (\n \n {heading}\n {statusNotExistsMessage}\n {status !== 'SUCCESS' && statusMessage}\n {Products && products && products.length > 0 && (\n \n {products &&\n products.map(product => {\n return product && _renderItem(product, Product, ProductDimensions, ProductDetails, telemetryContent);\n })}\n \n )}\n \n );\n};\n\nconst _renderItem = (\n product: IWishlistItemViewProps,\n Product?: INodeProps,\n ProductDimensions?: INodeProps,\n ProductDetails?: INodeProps,\n telemetryContent?: ITelemetryContent\n): JSX.Element | null => {\n const {\n key,\n productImage,\n productLink,\n productPrice,\n productDimensions,\n addToCartButton,\n removeButton,\n productStatusMessage,\n entireProductLink,\n productName,\n productAriaLabel,\n inventoryInformation,\n productUnitOfMeasure\n } = product;\n const payLoad = getPayloadObject('click', telemetryContent!, '', key);\n const productAttributes = getTelemetryAttributes(telemetryContent!, payLoad);\n if (entireProductLink) {\n return (\n \n \n {productImage}\n {productName}\n {productDimensions && ProductDimensions && (\n \n {productDimensions.map(dimension => {\n return dimension;\n })}\n \n )}\n {productPrice}\n {productUnitOfMeasure}\n \n {inventoryInformation}\n {addToCartButton}\n {removeButton}\n {productStatusMessage}\n \n );\n }\n return (\n \n {productImage}\n {productLink}\n {productDimensions && ProductDimensions && (\n \n {productDimensions.map(dimension => {\n return dimension;\n })}\n \n )}\n {productPrice}\n {addToCartButton}\n {removeButton}\n {productStatusMessage}\n \n );\n};\n\nexport default WishlistItemsView;\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 { IAddResource, ICheckoutGiftCardViewProps, IForm, IItem, IList, IShowResource } from './checkout-gift-card';\n\nexport const From: 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 SelectedGiftCard: React.FC = ({ itemProps, selectedGiftCard, removeButton }) => (\n \n {selectedGiftCard}\n {removeButton}\n \n);\n\nexport const GiftCardList: React.FC = ({ listProps, list }) => (\n \n {list.map(({ id, ...item }) => (\n \n ))}\n \n);\n\nexport const AddResource: React.FC = ({ form, list }) => (\n <>\n {form && }\n {list && }\n \n);\n\nexport const ShowResource: React.FC = ({ title, list }) => (\n <>\n {title}\n {list && }\n \n);\n\nconst CheckoutGiftCardView: React.FC = props => {\n const { checkoutGiftCardProps, checkoutErrorRef, showGiftCard, addGiftCard } = props;\n return (\n \n {showGiftCard && }\n {addGiftCard && }\n \n );\n};\n\nexport default CheckoutGiftCardView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IProductDimensionsWithAvailabilitiesFull } from '@msdyn365-commerce/commerce-entities';\nimport { ProductDimensionsMatrix } from '@msdyn365-commerce/components';\nimport { RichTextComponent } from '@msdyn365-commerce/core';\nimport { ICoreContext, getCatalogId } from '@msdyn365-commerce/core-internal';\nimport { ArrayExtensions, IDimensionsApp, validateCatalogId } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, Collapse, IModuleProps, isMobile, VariantType } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { FeatureState } from '@msdyn365-commerce/retail-proxy';\nimport { IBulkPurchaseData } from './bulk-purchase.data';\nimport { IBulkPurchaseProps } from './bulk-purchase.props.autogenerated';\n\n/**\n * Additional optional props for the bulk purchase.\n */\nexport interface IBulkPurchaseExtendedProps extends IBulkPurchaseProps {\n productDimensions?: IProductDimensionsWithAvailabilitiesFull[];\n}\n\n/**\n * View for the bulk purchase module.\n */\nexport interface IBulkPurchaseViewProps extends IBulkPurchaseProps {\n container: IModuleProps;\n content: React.ReactElement;\n}\n\n/**\n * View for the bulk purchase module.\n */\nexport interface IBulkPurchaseState {\n isExpanded: boolean;\n}\n\n/**\n * Bulk-purchase module.\n */\nexport class BulkPurchase extends React.PureComponent {\n public static readonly className = 'ms-bulk-purchase';\n private readonly collapseRef: React.RefObject = React.createRef();\n\n public constructor(props: IBulkPurchaseExtendedProps) {\n super(props);\n\n this.state = {\n isExpanded: false\n };\n }\n\n public render(): React.ReactElement | null {\n const hasDimensionsInProps = ArrayExtensions.hasElements(this.props.productDimensions);\n const hasDimensionsInData = ArrayExtensions.hasElements(this.props.data.productDimensions?.result);\n if (!hasDimensionsInProps && !hasDimensionsInData) {\n return null;\n }\n\n const viewProps: IBulkPurchaseViewProps = {\n ...this.props,\n container: {\n moduleProps: this.props,\n className: classnames(BulkPurchase.className, this.props.config.className)\n },\n content: this._renderCollapseContent(`${BulkPurchase.className}__content`)\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private _renderCollapseContent(className: string): React.ReactElement {\n return (\n
\n {this._renderCollapseButton(`${className}__collapse-button`)}\n {this._renderCollapse(`${className}__collapse`)}\n
\n );\n }\n\n private _renderCollapseButton(className: string): React.ReactElement {\n return (\n \n {this.props.resources.bulkPurchaseHeaderTitle}\n \n );\n }\n\n /**\n *This function is being used to handel variant change dropdown.\n */\n private _dimensionDropDownChange = () => {\n this.collapseRef.current?.reEvaluateHeight();\n };\n\n private _renderCollapse(className: string): React.ReactElement {\n return (\n \n {this._renderMainContent(`${className}__main-content`)}\n \n );\n }\n\n private _renderMainContent(className: string): React.ReactElement {\n const isMobileDevice = isMobile({ variant: VariantType.Viewport, context: this.props.context.request }) === 'xs';\n\n return (\n
\n {!isMobileDevice && (\n
\n \n
\n )}\n {this._renderMatrix(`${className}__matrix-container`)}\n
\n );\n }\n\n private _renderMatrix(className: string): React.ReactElement {\n const hasDimensionsInProps = ArrayExtensions.hasElements(this.props.productDimensions);\n const channelMultipleCatalogsFeature = 'Dynamics.AX.Application.ChannelMultipleCatalogsFeature';\n const { featureState } = this.props.data;\n const isMultipleCatalogsFeatureEnabled =\n featureState?.result?.find((item: FeatureState) => item.Name === channelMultipleCatalogsFeature)?.IsEnabled || false;\n const catalogId = getCatalogId(this.props.context.request);\n validateCatalogId(catalogId);\n return (\n }\n data={{\n dimensions: hasDimensionsInProps ? this.props.productDimensions! : this.props.data.productDimensions!.result!,\n orderTemplates: this.props.data.orderTemplates?.result,\n customerInformation: this.props.data.customerInformation?.result\n }}\n resources={this.props.resources}\n dimensionOnChange={this._dimensionDropDownChange}\n isMultipleCatalogFeatureEnabledInHq={isMultipleCatalogsFeatureEnabled}\n catalogId={catalogId}\n />\n );\n }\n\n /**\n * Callback which toggles collapse mode.\n */\n private readonly _toggleCollapse = () => {\n this.setState(state => ({\n isExpanded: !state.isExpanded\n }));\n };\n}\n\nexport default BulkPurchase;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { TelemetryEvent } from '@msdyn365-commerce/core';\nimport { Button, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport React, { useState } from 'react';\n\ninterface ICheckoutPlaceOrderButtonProps {\n canPlaceOrder: boolean;\n checkoutBtnText: string;\n telemetryContent?: ITelemetryContent;\n shouldEnableSinglePaymentAuthorizationCheckout?: boolean;\n isPlaceOrderLoading?: boolean;\n isExpressCheckoutApplied?: boolean;\n isPaymentVerificationRedirection?: boolean;\n placeOrder(): Promise;\n}\n\nconst buttonsStates: React.Dispatch>[] = [];\n\n/**\n * On place order function.\n * @param isBusy -Check is busy.\n * @param canPlaceOrder -Check can place order.\n * @param placeOrder -Place order function.\n * @returns Set state of button.\n */\nconst onPlaceOrderHandler = (isBusy: boolean, canPlaceOrder: boolean, placeOrder: () => Promise) => async () => {\n if (isBusy || !canPlaceOrder) {\n return;\n }\n buttonsStates.map(buttonSetState => {\n buttonSetState(true);\n return true;\n });\n await placeOrder();\n};\n\nconst CheckoutPlaceOrderButton: React.FC = ({\n checkoutBtnText,\n canPlaceOrder,\n placeOrder,\n telemetryContent,\n shouldEnableSinglePaymentAuthorizationCheckout,\n isPlaceOrderLoading,\n isExpressCheckoutApplied,\n isPaymentVerificationRedirection\n}) => {\n const [isBusy, setIsBusy] = useState(false);\n buttonsStates.push(setIsBusy);\n const payload = getPayloadObject(TelemetryEvent.Purchase, telemetryContent!, checkoutBtnText, '');\n const attributes = getTelemetryAttributes(telemetryContent!, payload);\n\n if (shouldEnableSinglePaymentAuthorizationCheckout && (!isExpressCheckoutApplied || isPaymentVerificationRedirection)) {\n return (\n \n {checkoutBtnText}\n \n );\n }\n\n return (\n \n {checkoutBtnText}\n \n );\n};\n\nexport default CheckoutPlaceOrderButton;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport withModuleState from './with-module-state';\n\nexport * from './module-state';\nexport * from './module-state.data';\n\nexport { withModuleState };\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { ICarouselData } from './carousel.data';\nimport { ICarouselProps } from './carousel.props.autogenerated';\nimport { ICarouselState } from './carousel.state';\n\nexport interface ICarouselViewProps extends ICarouselProps<{}>, ICarouselState {\n closeAnimation: string;\n carouselContainer: IModuleProps;\n telemetryContent: ITelemetryContent;\n next(): void;\n previous(): void;\n onIndicatorsClickHandler(): void;\n handleDismissCarousel(): void;\n handleOnExited(): void;\n handleOnExiting(): void;\n}\n\n/**\n *\n * CarouselModule component.\n * @extends {React.PureComponent>}\n */\nclass CarouselModule extends React.PureComponent, ICarouselState> {\n private animating: boolean;\n\n private readonly telemetryContent: ITelemetryContent;\n\n constructor(props: ICarouselProps, state: ICarouselState) {\n super(props);\n this.state = { activeIndex: 0, closeNow: false, dismissCarousel: false };\n this.animating = false;\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public componentDidMount(): void {\n if (this.props.context && this.props.context.request && this.props.context.request.cookies) {\n if (this.props.context.request.cookies.get(`CarouselDismiss_${this.props.id}`) === undefined) {\n this.props.context.request.cookies.set(`CarouselDismiss_${this.props.id}`, 'false');\n this.setState({ dismissCarousel: false });\n }\n }\n }\n\n public render(): JSX.Element | null {\n if (this.state.dismissCarousel) {\n return null;\n }\n\n const { className } = this.props.config;\n\n const viewProps = {\n // Context for telemetry and raw data for C1 to do customization\n // Including computed data, state data and methods\n ...this.props,\n ...this.state,\n telemetryContent: this.telemetryContent,\n carouselContainer: {\n moduleProps: this.props,\n className: classnames('ms-carousel', className)\n },\n closeAnimation: this.state.closeNow ? 'close-now' : '',\n next: this._next,\n previous: this._previous,\n onIndicatorsClickHandler: this._goToIndex,\n handleDismissCarousel: this._handleDismissCarousel,\n handleOnExited: this._onExited,\n handleOnExiting: this._onExiting\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Function implementation to dismiss the Carousel.\n */\n private readonly _handleDismissCarousel = (): void => {\n if (this.props.context && this.props.context.request && this.props.context.request.cookies) {\n this.props.context.request.cookies.set(`CarouselDismiss_${this.props.id}`, 'true');\n this.setState({ dismissCarousel: true });\n }\n };\n\n /**\n * Function implementation to move to next slide.\n */\n private readonly _next = (): void => {\n const { slots } = this.props;\n const nextIndex = this.state.activeIndex === (slots && slots.content && slots.content.length - 1) ? 0 : this.state.activeIndex + 1;\n\n if (this.animating) {\n this.setState({ closeNow: true, activeIndex: nextIndex });\n } else {\n this.setState({ activeIndex: nextIndex });\n }\n };\n\n /**\n * Function implementation to move to previous slide.\n */\n private readonly _previous = (): void => {\n const slots = this.props.slots && this.props.slots.content;\n const nextIndex = this.state.activeIndex === 0 ? (slots ? slots.length - 1 : 0) : this.state.activeIndex - 1;\n\n if (this.animating) {\n this.setState({ closeNow: true, activeIndex: nextIndex });\n } else {\n this.setState({ activeIndex: nextIndex });\n }\n };\n\n private readonly _onExiting = (): void => {\n this.animating = true;\n };\n\n private readonly _onExited = (): void => {\n this.animating = false;\n this.setState({ closeNow: false });\n };\n\n /**\n * Function implementation to move to a given slide.\n * @param newIndex\n */\n private readonly _goToIndex = (newIndex: number): void => {\n if (this.animating) {\n return;\n }\n this.setState({ activeIndex: newIndex });\n };\n}\n\nexport default CarouselModule;\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 { IHistogramItemViewProps } from './component/components';\nimport { IRatingsHistogramViewProps } from './ratings-histogram';\n\nconst RatingsHistogramView: React.FC = props => {\n const { heading, histogramItems, histogramProps, moduleProps } = props;\n\n return (\n \n {heading}\n \n {histogramItems.map(item => {\n return histogramItem(item);\n })}\n \n \n );\n};\n\nconst histogramItem = (props: IHistogramItemViewProps) => {\n return (\n \n {props.starLabel}\n {props.bar}\n {props.percentage}\n \n );\n};\n\nexport default RatingsHistogramView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Waiting } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\n/**\n * Payment waiting props.\n */\nexport interface IPaymentWaitingProps {\n message: string;\n className?: string;\n}\n\n/**\n * Payment waiting.\n * @param param0 - First in param.\n * @param param0.message - Message.\n * @param param0.className - ClassName.\n * @returns React node.\n */\nexport const WaitingComponent: React.FC = ({ message, className = 'ms-checkout-payment-instrument' }) => (\n
\n \n {message}\n
\n);\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 { IOrderTemplateListViewProps, ISingleOrderTemplateViewProps } from '@msdyn365-commerce-modules/order-template';\r\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { INodeProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport CreateNewTemplateButtonComponent from './components/create-order-template.component';\r\nimport * as React from 'react';\r\n\r\nimport { IOrderTemplateListProps, IOrderTemplateListResources } from '../definition-extensions/order-template-list.ext.props.autogenerated';\r\nimport { IOrderTemplateNameDialogResources } from \"@msdyn365-commerce/components\";\r\n\r\n/**\r\n * Interface for OrderTemplateImage.\r\n */\r\ninterface IOrderTemplateImage {\r\n props: {\r\n children: React.ReactElement[];\r\n };\r\n}\r\n\r\n/**\r\n * To render order template.\r\n * @param orderTemplate - The order template view props.\r\n * @param orderTemplateNodeProps - The order template node props.\r\n * @returns The JSX Element.\r\n */\r\nconst renderOrderTemplate = (orderTemplate: ISingleOrderTemplateViewProps, orderTemplateNodeProps?: INodeProps): JSX.Element | null => {\r\n\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from module file\r\n const { key, addToCartButton, orderTemplateImage, orderTemplateStatusMessage, removeButton, orderTemplateName } = orderTemplate;\r\n\r\n const orderTemplateImageElement: IOrderTemplateImage = orderTemplateImage as React.ReactElement;\r\n const currentImageListLength = orderTemplateImageElement.props.children.length;\r\n const defaultNumberImagesInTile = 4;\r\n\r\n if (currentImageListLength < defaultNumberImagesInTile) {\r\n for (let index = 0; index < defaultNumberImagesInTile - currentImageListLength; index++) {\r\n orderTemplateImageElement.props.children.push();\r\n }\r\n }\r\n\r\n return (\r\n \r\n {orderTemplateName}\r\n {orderTemplateImage}\r\n {addToCartButton}\r\n {removeButton}\r\n {orderTemplateStatusMessage}\r\n \r\n );\r\n};\r\n\r\nconst _reloadPage = async () => {\r\n window.location.reload();\r\n};\r\n\r\nconst _generateOrderTemplateNameDialogResources = (resources: IOrderTemplateListResources): IOrderTemplateNameDialogResources => {\r\n return {\r\n orderTemplateHeaderLabel: resources.createOrderTemplateHeader,\r\n orderTemplateTitleLabel: resources.orderTemplateTitle,\r\n orderTemplateNameAriaLabel: resources.orderTemplateNameAriaLabel,\r\n orderTemplateDescription: resources.createOrderTemplateDescription,\r\n\r\n defaultOrderTemplateName: resources.defaultOrderTemplateName,\r\n\r\n orderTemplateButtonLabel: resources.createOrderTemplateButtonText,\r\n orderTemplateCancelButtonLabel: resources.cancelNewOrderTemplateCreationButtonText\r\n };\r\n}\r\n\r\n/**\r\n * Order Template List View.\r\n * @param props - The view props.\r\n * @returns The JSX Element.\r\n */\r\nexport const OrderTemplateListViewComponent: React.FC> = props => {\r\n const {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from module file\r\n OrderTemplateList, OrderTemplates, OrderTemplate,\r\n status,\r\n statusMessage,\r\n heading,\r\n orderTemplates,\r\n createOrderTemplateButton,\r\n templateHeaderStatusMessage\r\n } = props;\r\n console.log(createOrderTemplateButton)\r\n return (\r\n \r\n {heading}\r\n {status !== 'SUCCESS' && statusMessage}\r\n {status === 'EMPTY' && (\r\n \r\n )}\r\n \r\n {status === 'SUCCESS' &&\r\n (!OrderTemplates || !orderTemplates ||\r\n !ArrayExtensions.hasElements(orderTemplates)) ? (\r\n
\r\n

\r\n {props.resources.headingForEmptyOrderTemplateList}\r\n

\r\n

\r\n {props.resources.textForEmptyOrderTemplateList}\r\n

\r\n {createOrderTemplateButton}\r\n
\r\n ) : createOrderTemplateButton}\r\n {templateHeaderStatusMessage}\r\n
\r\n { OrderTemplates && orderTemplates && ArrayExtensions.hasElements(orderTemplates) &&\r\n \r\n {orderTemplates.map((orderTemplate) => {\r\n return renderOrderTemplate(orderTemplate, OrderTemplate);\r\n })}\r\n }\r\n
\r\n );\r\n};\r\n\r\nexport default OrderTemplateListViewComponent;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { IOrderSummaryLines, OrderSummary } from '@msdyn365-commerce-modules/order-summary-utilities';\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport get from 'lodash/get';\nimport * as React from 'react';\n\nimport { ICheckoutData } from '../checkout.data';\nimport { ICheckoutProps } from '../checkout.props.autogenerated';\n\nexport interface IOrderSummary {\n orderSummaryProps: INodeProps;\n heading?: React.ReactNode;\n lines?: IOrderSummaryLines;\n}\nexport const getOrderSummary = (input: ICheckoutProps): IOrderSummary => {\n const {\n config: { orderSummaryHeading },\n data: { checkout },\n resources: {\n subTotalLabel,\n shippingLabel,\n taxLabel,\n orderTotalLabel,\n loyaltyLabel,\n giftcardLabel,\n totalDiscountsLabel,\n freeText,\n toBeCalculatedText,\n otherCharges,\n customerAccountLabel\n },\n context,\n typeName,\n id,\n telemetry\n } = input;\n\n const checkoutState = get(checkout, 'result');\n const cart = get(checkout, 'result.checkoutCart.cart');\n const showLineItems = cart.CartLines && cart.CartLines.length > 0;\n const channelConfiguration = context.request.channel!;\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\n const { channelDeliveryOptionConfig, featureState } = input.data;\n const retailMultiplePickUpOptionEnabled = featureState?.result?.find(feature => feature.Name === multiplePickupStoreSwitchName)\n ?.IsEnabled;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- app configs are of generic type\n const isShowOrHideTaxEnabled = context.request.app.config.isEnableShowOrHideSalesTaxECommerceEnabled === true;\n\n const handleOrderSummaryHeadingChange = (event: Msdyn365.ContentEditableEvent) => {\n const {\n config: { orderSummaryHeading }\n } = input;\n if (orderSummaryHeading) {\n orderSummaryHeading.text = event.target.value;\n }\n };\n\n return {\n orderSummaryProps: { className: 'ms-checkout-guest-profile__selected-item' },\n heading: orderSummaryHeading && orderSummaryHeading.text && (\n \n ),\n lines: showLineItems\n ? OrderSummary({\n checkoutState,\n cart,\n subTotalLabel,\n shippingLabel,\n taxLabel,\n orderTotalLabel,\n loyaltyLabel,\n giftcardLabel,\n totalDiscountsLabel,\n freeText,\n toBeCalculatedText,\n context,\n typeName,\n id,\n channelConfiguration,\n telemetry,\n otherChargeLabel: otherCharges,\n retailMultiplePickUpOptionEnabled,\n channelDeliveryOptionConfig: channelDeliveryOptionConfig?.result,\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- existing property.\n isTaxIncludedInPrice: cart.IsTaxIncludedInPrice,\n isShowTaxBreakup: isShowOrHideTaxEnabled,\n customerAccountLabel\n })\n : undefined\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IActionContext } from '@msdyn365-commerce/core';\nimport { SalesOrder } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { CartCheckout } from '../../../common/checkout';\n\nexport const OPERATIONS = {\n PayCard: 201,\n PayGiftCertificate: 214,\n PayLoyalty: 207,\n PayCustomerAccount: 202\n};\n\nexport default async (\n ctx: IActionContext,\n updatedCartVersion?: number,\n isPaymentVerificationRedirection?: boolean\n): Promise => {\n return CartCheckout(ctx, updatedCartVersion, isPaymentVerificationRedirection);\n};\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 { IOrderTemplateNameDialogResources, OrderTemplateNameDialog } from '@msdyn365-commerce/components';\r\nimport { IComponentProps } from '@msdyn365-commerce/core';\r\nimport React, { useState } from 'react';\r\n\r\nconst modalCloseButtonReference: React.RefObject = React.createRef();\r\n\r\n/**\r\n * The Create Order Template Button Props.\r\n */\r\nexport interface ICreateOrderTemplateButtonProps extends IComponentProps {\r\n\r\n /**\r\n * The label for create order template.\r\n */\r\n createOrderTemplateText: string;\r\n\r\n /**\r\n * The create order template dialog resources.\r\n */\r\n createOrderTemplateDialogResources: IOrderTemplateNameDialogResources;\r\n\r\n /**\r\n * The delegate to fire when dialog captured any user entry.\r\n */\r\n onOrderTemplateCreated(): Promise;\r\n}\r\n\r\nconst CreateOrderTemplateButton: React.FC = (props) => {\r\n const onCancelHandler = React.useCallback(() => {\r\n return;\r\n }, []);\r\n const [isCreateOrderTemplateDialogOpen, setOrderTemplateNameDialogOpen] = useState(false);\r\n const onCreateButtonClick = React.useCallback(() => {\r\n setOrderTemplateNameDialogOpen(true);\r\n }, []);\r\n\r\n return (\r\n <>\r\n \r\n {props.createOrderTemplateText}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default CreateOrderTemplateButton;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { IComponent, IComponentProps } from '@msdyn365-commerce/core';\r\nimport { ICartState } from '@msdyn365-commerce/global-state';\r\nimport { Coupon } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { Button, format, getPayloadObject, getTelemetryAttributes, IPayLoad, ITelemetryContent, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\n/**\r\n * IPromoCodeProps: Interface for promo code component.\r\n */\r\nexport interface IPromoCodeProps extends IComponentProps<{}> {\r\n cart: ICartState | undefined;\r\n promoCodeHeadingText: string;\r\n appliedPromoCodeHeadingText: string;\r\n removePromoAriaLabelFormat: string;\r\n promoPlaceholderText: string;\r\n promoCodeApplyButtonText: string;\r\n collapseTimeOut: number;\r\n removePromoText: string;\r\n invalidPromoCodeErrorText: string;\r\n failedToAddPromoCodeErrorText: string;\r\n duplicatePromoCodeErrorText: string;\r\n failedToRemovePromoCodeErrorText: string;\r\n\r\n /** The telemetry content. */\r\n telemetryContent?: ITelemetryContent;\r\n promoCodeApplyCallback?(): void;\r\n}\r\n\r\n/**\r\n * IPromoCodeProps: Interface for promo code component.\r\n */\r\nexport interface IPromoCodeComponent extends IComponent { }\r\n\r\n/**\r\n * IPromoCodeProps: Interface for promo code state.\r\n */\r\ninterface IPromoCodeState {\r\n promoCodeInputValue: string;\r\n error: string;\r\n canApply: boolean;\r\n}\r\n\r\n/**\r\n *\r\n * The PromoCode component renders the promocode section.\r\n * @extends {React.PureComponent}\r\n */\r\nclass PromoCode extends React.PureComponent {\r\n\r\n private readonly payLoad: IPayLoad;\r\n\r\n public constructor(props: IPromoCodeProps) {\r\n super(props);\r\n this.payLoad = getPayloadObject('click', this.props.telemetryContent!, TelemetryConstant.ApplyPromoCode);\r\n this.state = {\r\n promoCodeInputValue: '',\r\n error: '',\r\n canApply: false\r\n };\r\n }\r\n\r\n public render(): JSX.Element {\r\n return (\r\n
\r\n
\r\n {this.props.promoCodeHeadingText}\r\n
\r\n {this._renderForm(this.props.promoPlaceholderText, this.props.promoCodeApplyButtonText, this.props.cart)}\r\n

\r\n {this.state.error}\r\n

\r\n {this._renderAppliedPromoCode(this.props)}\r\n
\r\n );\r\n }\r\n\r\n /**\r\n * On input change method.\r\n * @param event - Change event.\r\n */\r\n private readonly _onInputChangeHandler = (event: React.ChangeEvent) => {\r\n const error = event.target.value === '' ? '' : this.state.error;\r\n this.setState({\r\n promoCodeInputValue: event.target.value, error,\r\n canApply: !!event.target.value\r\n });\r\n };\r\n\r\n /**\r\n * Apply promo code method.\r\n * @param cartState - Cart state interface.\r\n */\r\n private readonly _applyPromotion = (cartState: ICartState | undefined) => {\r\n if (!cartState) {\r\n return;\r\n }\r\n const appliedPromo = this.state.promoCodeInputValue;\r\n\r\n cartState.addPromoCode({ promoCode: appliedPromo })\r\n .then(result => {\r\n if (result.status === 'SUCCESS') {\r\n // Show success text\r\n this.setState({ promoCodeInputValue: '', error: '', canApply: false });\r\n } else if (result.substatus === 'ALREADYADDED') {\r\n this.setState({ error: this.props.duplicatePromoCodeErrorText });\r\n } else {\r\n this.setState({ error: this.props.invalidPromoCodeErrorText });\r\n }\r\n })\r\n .catch(() => {\r\n this.setState({ error: this.props.failedToAddPromoCodeErrorText });\r\n });\r\n };\r\n\r\n /**\r\n * On submit action.\r\n * @param cartState - Cart state.\r\n * @returns Apply promotion.\r\n */\r\n private readonly _onSubmitHandler = (cartState: ICartState | undefined) => (event: React.FormEvent) => {\r\n event.preventDefault();\r\n this._applyPromotion(cartState);\r\n };\r\n\r\n /**\r\n * On apply promotion.\r\n * @param cartState - Cart state.\r\n * @returns Apply promotion.\r\n */\r\n private readonly applyPromotionHandler = (cartState: ICartState | undefined) => () => {\r\n this._applyPromotion(cartState);\r\n };\r\n\r\n /**\r\n * Renders promo code form.\r\n * @param promoPlaceholderText - Promo code input box placeholder string.\r\n * @param promoCodeApplyButtonText - Promo code button text string.\r\n * @param cartState - Cart state interface.\r\n * @returns Promo code form.\r\n */\r\n private readonly _renderForm = (promoPlaceholderText: string, promoCodeApplyButtonText: string, cartState: ICartState | undefined) => {\r\n\r\n const attributes = getTelemetryAttributes(this.props.telemetryContent!, this.payLoad);\r\n\r\n return (\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n );\r\n };\r\n\r\n /**\r\n * Remove promo code method.\r\n * @param cartState - Cart state interface.\r\n * @param event - Mouse event.\r\n */\r\n private readonly _removePromotion = (cartState: ICartState | undefined, event: React.MouseEvent) => {\r\n if (!cartState) {\r\n return;\r\n }\r\n const code = event.currentTarget.getAttribute('data-value') ?? '';\r\n cartState.removePromoCodes({\r\n promoCodes: [code]\r\n })\r\n .then(result => {\r\n if (result.status === 'SUCCESS') {\r\n this.setState({ error: '' });\r\n }\r\n })\r\n .catch(() => {\r\n this.setState({ error: this.props.failedToRemovePromoCodeErrorText });\r\n });\r\n\r\n };\r\n\r\n /**\r\n * Renders applied promo code form.\r\n * @param props - Promo code component props.\r\n * @returns Applied promo code.\r\n */\r\n private readonly _renderAppliedPromoCode = (props: IPromoCodeProps) => {\r\n if (!props.cart || !props.cart.cart.Coupons || !ArrayExtensions.hasElements(props.cart.cart.Coupons)) {\r\n return;\r\n }\r\n\r\n /**\r\n * On remove promotion action.\r\n * @param event - Mouse event.\r\n */\r\n const removePromotionHandler = (event: React.MouseEvent) => {\r\n this._removePromotion(props.cart, event);\r\n };\r\n\r\n return (\r\n <>\r\n {\r\n props.cart.cart.Coupons.map((coupon: Coupon) => {\r\n const ariaLabel = props.removePromoAriaLabelFormat ? format(props.removePromoAriaLabelFormat, props.removePromoText, coupon.Code) : '';\r\n\r\n return (\r\n
\r\n
\r\n {'Code '}\r\n \r\n {coupon.Code}\r\n \r\n {'Applied '}\r\n\r\n
\r\n \r\n
\r\n );\r\n })\r\n }\r\n \r\n );\r\n };\r\n}\r\n\r\nexport default PromoCode;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport RatingsHistogram from './ratings-histogram';\nimport RatingsHistogramView from './ratings-histogram.view';\n\nexport * from './component/components';\nexport * from './ratings-histogram';\nexport * from './ratings-histogram.data';\nexport { IRatingsHistogramConfig, IRatingsHistogramProps, IRatingsHistogramResources } from './ratings-histogram.props.autogenerated';\nexport * from './ratings-histogram.view';\n\nexport { RatingsHistogram, RatingsHistogramView };\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Button } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { Iframe } from './iframe';\nimport defaultPaymentConnectorDropinStyle from './payment-instrument.dropin.style';\nimport defaultPaymentConnectorPaypalStyle from './payment-instrument.paypal.style';\nimport defaultPaymentConnectorStyle from './payment-instrument.style';\n\n/**\n * Interface for add payment form.\n */\nexport interface IAddPaymentFormProps {\n acceptPageUrl?: string;\n acceptPageContent?: string;\n iframeRef?: React.RefObject