{"version":3,"sources":["webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/isFunction.js?1684","webpack:///src/modules/checkout-delivery-options/checkout-delivery-options.tsx?d83e","webpack:///./node_modules/@msdyn365-commerce-modules/checkout/node_modules/lodash/_baseIsEqual.js?4528","webpack:///./src/modules/eve-checkout-payment-instrument/eve-checkout-payment-instrument.view.tsx?4352","webpack:///src/actions/submit-helpfulness-vote.ts?be08","webpack:///src/modules/checkout/components/get-line-items.tsx?5207","webpack:///./node_modules/@msdyn365-commerce-modules/checkout/node_modules/lodash/_baseUnary.js?f36a","webpack:///./node_modules/@msdyn365-commerce-modules/checkout/node_modules/lodash/_baseGetAllKeys.js?eb19","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/_isStrictComparable.js?914d","webpack:///src/index.ts?c6ae","webpack:///./src/themes/nile-theme/views/components/promocode.component.tsx?b84f","webpack:///./node_modules/@msdyn365-commerce-modules/checkout/node_modules/lodash/_nativeKeys.js?5615","webpack:///./node_modules/@msdyn365-commerce-modules/checkout/node_modules/lodash/_baseMatches.js?b838","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/_WeakMap.js?d196","webpack:///./node_modules/@msdyn365-commerce-modules/checkout/node_modules/lodash/_createAggregator.js?41f5","webpack:///src/modules/fabrikam/views/components/promocode.component.tsx?7eef","webpack:///src/actions/inputs/submit-user-review-input.ts?921c","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/_baseTimes.js?657d","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/_listCacheSet.js?514f","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/_Hash.js?e949","webpack:///src/common/place-order.tsx?73b4","webpack:///src/modules/checkout-payment-instrument/checkout-payment-instrument.view.tsx?9afd","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/_nativeKeys.js?e935","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/_ListCache.js?13d2","webpack:///src/modules/checkout-payment-instrument/components/index.ts?e7fe","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/_getTag.js?193e","webpack:///src/modules/checkout/components/index.ts?5ba9","webpack:///src/modules/checkout-loyalty/components/checkout-loyalty-label.tsx?3110","webpack:///./node_modules/@msdyn365-commerce-modules/checkout/node_modules/lodash/_setToArray.js?4086","webpack:///./node_modules/@msdyn365-commerce-modules/checkout/node_modules/lodash/_isPrototype.js?2db1","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/_arraySome.js?41f4","webpack:///./node_modules/@msdyn365-commerce-modules/checkout/node_modules/lodash/_equalObjects.js?a62e","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/_stackGet.js?8574","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/_Set.js?8cd4","webpack:///./node_modules/@msdyn365-commerce-modules/checkout/node_modules/lodash/_arrayPush.js?ecfa","webpack:///src/modules/checkout-gift-card/components/title.tsx?6d07","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/_stackSet.js?9a22","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/_getValue.js?f599","webpack:///src/modules/video-player/components/additional-content.tsx?22a8","webpack:///src/modules/video-player/video-player.tsx?cfb9","webpack:///src/modules/checkout-terms-and-conditions/checkout-terms-and-conditions.tsx?0ddf","webpack:///./node_modules/@msdyn365-commerce-modules/checkout/node_modules/lodash/_baseFor.js?660c","webpack:///src/modules/checkout-terms-and-conditions/checkout-terms-and-conditions.view.tsx?0931","webpack:///./node_modules/@msdyn365-commerce-modules/checkout/node_modules/lodash/_baseTimes.js?e60f","webpack:///src/modules/checkout-delivery-options/components/checkout-delivery-options.description.tsx?8620","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/_hashHas.js?df42","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/stubFalse.js?fc6a","webpack:///./node_modules/@msdyn365-commerce-modules/checkout/node_modules/lodash/identity.js?d923","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/_DataView.js?848e","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/_listCacheHas.js?415a","webpack:///src/modules/checkout-terms-and-conditions/components/checkout-terms-and-conditions.error-title.tsx?1f3c","webpack:///src/modules/write-review/index.ts?2b94","webpack:///./node_modules/@msdyn365-commerce-modules/checkout/node_modules/lodash/_equalArrays.js?5e92","webpack:///./node_modules/@msdyn365-commerce-modules/checkout/node_modules/lodash/_Set.js?2f3e","webpack:///src/common/rnrInterface.ts?25e5","webpack:///src/common/get-checkout-return-url.tsx?942d","webpack:///./node_modules/@msdyn365-commerce-modules/checkout/node_modules/lodash/_baseForOwn.js?1906","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/eq.js?d68d","webpack:///src/modules/reviews-list/components/review-card.tsx?2d16","webpack:///src/modules/checkout-guest-profile/components/get-show-contact-info.tsx?77e1","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/isBuffer.js?71b4","webpack:///src/modules/checkout-loyalty/components/index.ts?b742","webpack:///./node_modules/@msdyn365-commerce-modules/checkout/node_modules/lodash/groupBy.js?8081","webpack:///src/modules/reviews-list/components/components.tsx?c96f","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/_hashSet.js?1ee5","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/_baseIsArguments.js?c5de","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/_Symbol.js?c903","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/_baseIsTypedArray.js?fa73","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/_getNative.js?a190","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/_setToArray.js?856e","webpack:///src/modules/checkout-terms-and-conditions/components/checkout-terms-and-conditions.check-box.tsx?c1cc","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/isArguments.js?c9ee","webpack:///./node_modules/@msdyn365-commerce-modules/checkout/node_modules/lodash/_baseIsArguments.js?b99e","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/_arrayLikeKeys.js?c0c6","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/_stackDelete.js?878b","webpack:///./node_modules/@msdyn365-commerce-modules/checkout/node_modules/lodash/isTypedArray.js?c52d","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/_setCacheAdd.js?5a30","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/_equalArrays.js?5ac0","webpack:///./node_modules/@msdyn365-commerce-modules/checkout/node_modules/lodash/_getTag.js?b57c","webpack:///src/modules/ratings-histogram/ratings-histogram.tsx?4c32","webpack:///./node_modules/@msdyn365-commerce-modules/checkout/node_modules/lodash/_arrayLikeKeys.js?d729","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/_isPrototype.js?8edd","webpack:///src/modules/checkout-loyalty/components/checkout-loyalty-text.tsx?0080","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/_SetCache.js?9eca","webpack:///./node_modules/@msdyn365-commerce-modules/checkout/node_modules/lodash/isBuffer.js?b0c0","webpack:///./node_modules/@msdyn365-commerce-modules/checkout/node_modules/lodash/_defineProperty.js?b156","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/_baseIsEqualDeep.js?984e","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/_MapCache.js?6dfc","webpack:///src/modules/reviews-list/reviews-list.tsx?b5d0","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/_isKeyable.js?4e9b","webpack:///src/order-summary-lineitem.tsx?86d9","webpack:///./node_modules/@msdyn365-commerce-modules/checkout/node_modules/lodash/_basePropertyDeep.js?e17a","webpack:///src/common/index.ts?ee63","webpack:///src/modules/checkout-delivery-options/components/checkout-delivery-options.radio-button.tsx?f1bb","webpack:///./node_modules/@msdyn365-commerce-modules/checkout/node_modules/lodash/_WeakMap.js?c2dd","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/_nodeUtil.js?a27e","webpack:///./node_modules/@msdyn365-commerce-modules/checkout/node_modules/lodash/_baseAggregator.js?4525","webpack:///src/modules/checkout-payment-instrument/components/payment-information.tsx?3828","webpack:///../../src/index.ts?0e3e","webpack:///./node_modules/@msdyn365-commerce-modules/checkout/node_modules/lodash/_baseIsEqualDeep.js?1f80","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/_Map.js?0082","webpack:///src/modules/checkout-gift-card/components/get-item.tsx?ec46","webpack:///src/modules/checkout-express-payment-container/checkout-express-payment-container.view.tsx?3d5f","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/_stackHas.js?72cd","webpack:///src/actions/inputs/submit-helpfulness-vote-input.ts?cfb5","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/_isMasked.js?568e","webpack:///src/modules/checkout-section-container/index.ts?09bd","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/isObject.js?4b2f","webpack:///src/modules/carousel/carousel.view.tsx?b19a","webpack:///src/modules/checkout-gift-card/index.ts?d562","webpack:///./node_modules/@msdyn365-commerce-modules/checkout/node_modules/lodash/_setCacheHas.js?9e75","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/isArray.js?3989","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/_hashDelete.js?e4cb","webpack:///src/modules/checkout-terms-and-conditions/components/index.ts?c155","webpack:///./node_modules/@msdyn365-commerce-modules/checkout/node_modules/lodash/property.js?4ad8","webpack:///./node_modules/@msdyn365-commerce-modules/checkout/node_modules/lodash/_setCacheAdd.js?f483","webpack:///./node_modules/@msdyn365-commerce-modules/checkout/node_modules/lodash/isLength.js?5482","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/isTypedArray.js?8124","webpack:///src/modules/active-image/active-image.view.tsx?b3e2","webpack:///./node_modules/@msdyn365-commerce-modules/checkout/node_modules/lodash/_hasPath.js?906e","webpack:///src/actions/report-review-concern.ts?11eb","webpack:///src/modules/checkout-delivery-options/components/checkout-delivery-options.error-message.tsx?8f25","webpack:///./node_modules/@msdyn365-commerce-modules/checkout/node_modules/lodash/isArguments.js?d298","webpack:///src/modules/checkout-terms-and-conditions/components/checkout-terms-and-conditions.error-message.tsx?791f","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/_getMatchData.js?7ef9","webpack:///./node_modules/@msdyn365-commerce-modules/checkout/node_modules/lodash/_baseHasIn.js?957f","webpack:///src/modules/checkout-guest-profile/index.ts?aa99","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/_listCacheGet.js?cbdd","webpack:///src/modules/checkout-guest-profile/components/get-add-contact-info.tsx?1fcf","webpack:///../../../src/module-state-manager/with-module-state.tsx?61ca","webpack:///./node_modules/@msdyn365-commerce-modules/checkout/node_modules/lodash/_Stack.js?0510","webpack:///./node_modules/@msdyn365-commerce-modules/checkout/node_modules/lodash/_matchesStrictComparable.js?c892","webpack:///./node_modules/@msdyn365-commerce-modules/checkout/node_modules/lodash/_getAllKeys.js?e753","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/_listCacheDelete.js?cc7c","webpack:///src/modules/checkout-gift-card/components/get-form.tsx?9f59","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/_toSource.js?ef53","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/_freeGlobal.js?d4c2","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/_getSymbols.js?88b5","webpack:///src/modules/checkout-gift-card/checkout-gift-card.tsx?e6b8","webpack:///./node_modules/@msdyn365-commerce-modules/checkout/node_modules/lodash/_getMatchData.js?0f99","webpack:///../../src/checkout-state.ts?acd8","webpack:///src/modules/checkout-loyalty/index.ts?b360","webpack:///src/modules/checkout-gift-card/components/get-list.tsx?9723","webpack:///./node_modules/@msdyn365-commerce-modules/checkout/node_modules/lodash/_mapToArray.js?6811","webpack:///src/modules/promo-banner/promo-banner.view.tsx?d069","webpack:///src/modules/video-player/video-player.view.tsx?2e40","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/_mapCacheClear.js?d706","webpack:///src/modules/checkout/index.ts?1106","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/_equalByTag.js?b411","webpack:///./node_modules/@msdyn365-commerce-modules/checkout/node_modules/lodash/_stackDelete.js?35bf","webpack:///./node_modules/@msdyn365-commerce-modules/checkout/node_modules/lodash/_arraySome.js?d1e5","webpack:///src/modules/checkout-guest-profile/checkout-guest-profile.view.tsx?c89a","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/_hashClear.js?c517","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/isLength.js?e923","webpack:///./node_modules/@msdyn365-commerce-modules/checkout/node_modules/lodash/_baseProperty.js?e070","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/_overArg.js?2f49","webpack:///./node_modules/@msdyn365-commerce-modules/checkout/node_modules/lodash/isEmpty.js?a31a","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/_mapCacheSet.js?bbc8","webpack:///src/modules/reviews-list/components/report-review-modal.tsx?22a9","webpack:///src/modules/checkout-loyalty/checkout-loyalty.view.tsx?876d","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/_Stack.js?85ae","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/isArrayLike.js?6559","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:///./node_modules/@msdyn365-commerce-modules/checkout/node_modules/lodash/_baseIteratee.js?636b","webpack:///src/checkout-errors/checkout-errors.ts?687e","webpack:///src/common/error.tsx?f9f6","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/_arrayFilter.js?ada2","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/_baseIsEqual.js?0d81","webpack:///./node_modules/@msdyn365-commerce-modules/checkout/node_modules/lodash/_createBaseEach.js?22be","webpack:///./node_modules/@msdyn365-commerce-modules/checkout/node_modules/lodash/_arrayAggregator.js?ac53","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/_cacheHas.js?fcc2","webpack:///./node_modules/@msdyn365-commerce-modules/checkout/node_modules/lodash/_createBaseFor.js?c12f","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/_listCacheClear.js?d49a","webpack:///./node_modules/@msdyn365-commerce-modules/checkout/node_modules/lodash/_baseKeys.js?9cca","webpack:///./node_modules/@msdyn365-commerce-modules/checkout/node_modules/lodash/_SetCache.js?3800","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/modules/checkout-express-payment-container/checkout-express-payment-container.tsx?28fd","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/_mapCacheHas.js?0783","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/isObjectLike.js?4255","webpack:///../../../src/module-state-manager/module-state.ts?7579","webpack:///src/common/checkout.tsx?9dad","webpack:///src/modules/checkout-terms-and-conditions/index.ts?d6c6","webpack:///src/modules/reviews-list/index.ts?51cb","webpack:///./node_modules/@msdyn365-commerce-modules/checkout/node_modules/lodash/_stackHas.js?dc19","webpack:///src/modules/write-review/components/components.tsx?ead4","webpack:///src/modules/write-review/write-review.tsx?dea3","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/_getMapData.js?b4e8","webpack:///./node_modules/@msdyn365-commerce-modules/checkout/node_modules/lodash/_DataView.js?9985","webpack:///src/modules/checkout-loyalty/components/checkout-loyalty-input.tsx?d04f","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/_mapCacheGet.js?e38b","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/_baseIsMatch.js?cbdf","webpack:///./node_modules/@msdyn365-commerce-modules/checkout/node_modules/lodash/_getSymbols.js?5848","webpack:///src/modules/checkout-guest-profile/components/index.ts?d932","webpack:///./node_modules/@msdyn365-commerce-modules/checkout/node_modules/lodash/_isStrictComparable.js?2734","webpack:///./node_modules/@msdyn365-commerce-modules/checkout/node_modules/lodash/keys.js?b7f1","webpack:///src/common/iframe.tsx?89ab","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/_getAllKeys.js?a208","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:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/_Uint8Array.js?cb77","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/_isIndex.js?9566","webpack:///src/actions/inputs/report-review-concern-input.ts?c9d1","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/_getRawTag.js?e4e8","webpack:///./node_modules/@msdyn365-commerce-modules/checkout/node_modules/lodash/_baseAssignValue.js?afb6","webpack:///src/modules/promo-banner/components/close-button.tsx?939d","webpack:///src/modules/promo-banner/components/links.tsx?3133","webpack:///src/modules/promo-banner/components/text.tsx?834e","webpack:///src/modules/promo-banner/promo-banner.tsx?958e","webpack:///./node_modules/@msdyn365-commerce-modules/checkout/node_modules/lodash/_stackSet.js?2e05","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/_arrayPush.js?2505","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/_coreJsData.js?46ab","webpack:///src/modules/checkout-section-container/components/loading.tsx?c2e5","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:///./node_modules/@msdyn365-commerce-modules/checkout/node_modules/lodash/isArrayLike.js?00f9","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/_setCacheHas.js?ff02","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/_nativeCreate.js?7557","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/_mapToArray.js?fbfe","webpack:///./node_modules/@msdyn365-commerce-modules/checkout/node_modules/lodash/_Promise.js?c81e","webpack:///src/modules/reviews-list/reviews-list.view.tsx?6dd9","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/keys.js?89f5","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/_assocIndexOf.js?7c21","webpack:///./node_modules/@msdyn365-commerce-modules/checkout/node_modules/lodash/hasIn.js?4047","webpack:///src/actions/index.ts?e12b","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/isMatch.js?fc98","webpack:///src/modules/checkout/components/alert.tsx?5f0c","webpack:///src/modules/checkout-section-container/checkout-section-container.view.tsx?61ae","webpack:///src/modules/checkout-gift-card/checkout-gift-card.view.tsx?3424","webpack:///src/modules/checkout-guest-profile/checkout-guest-profile.tsx?f355","webpack:///./node_modules/@msdyn365-commerce-modules/checkout/node_modules/lodash/_baseIsTypedArray.js?c517","webpack:///./node_modules/@msdyn365-commerce-modules/checkout/node_modules/lodash/_isIndex.js?5c0b","webpack:///./node_modules/@msdyn365-commerce-modules/checkout/node_modules/lodash/_baseIsMatch.js?dd52","webpack:///src/modules/checkout-section-container/checkout-section-container.tsx?9b3a","webpack:///src/modules/checkout/components/place-order-button.tsx?c8b4","webpack:///../../../src/module-state-manager/index.ts?8e3a","webpack:///./node_modules/@msdyn365-commerce-modules/checkout/node_modules/lodash/stubArray.js?e3dc","webpack:///src/modules/carousel/carousel.tsx?bfbb","webpack:///src/modules/ratings-histogram/ratings-histogram.view.tsx?4481","webpack:///src/common/waiting.tsx?8365","webpack:///./node_modules/@msdyn365-commerce-modules/checkout/node_modules/lodash/_Uint8Array.js?a11d","webpack:///./node_modules/@msdyn365-commerce-modules/checkout/node_modules/lodash/_cacheHas.js?7f6d","webpack:///src/modules/checkout-gift-card/components/index.ts?b9ee","webpack:///./node_modules/@msdyn365-commerce-modules/checkout/node_modules/lodash/_overArg.js?09bc","webpack:///src/modules/checkout/components/get-order-summary.tsx?6f62","webpack:///src/modules/checkout/methods/checkout.ts?3b66","webpack:///./node_modules/@msdyn365-commerce-modules/checkout/node_modules/lodash/_stackGet.js?c272","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/_hashGet.js?f67c","webpack:///src/modules/ratings-histogram/index.ts?834d","webpack:///src/common/add-payment-form.tsx?7e1f","webpack:///./node_modules/@msdyn365-commerce-modules/checkout/node_modules/lodash/_equalByTag.js?5ca7","webpack:///src/modules/gift-card-balance-check/gift-card-balance-check.view.tsx?ce1c","webpack:///src/modules/checkout-loyalty/checkout-loyalty.tsx?c94a","webpack:///./src/utilities/CheckoutCookieManager.ts?0794","webpack:///./node_modules/@msdyn365-commerce-modules/checkout/node_modules/lodash/_nodeUtil.js?2ded","webpack:///../../src/checkout-utilities.data.ts?b2cc","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/_baseUnary.js?853e","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/_baseGetAllKeys.js?61a3","webpack:///src/modules/checkout-payment-instrument/checkout-payment-instrument.tsx?0303","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/_baseGetTag.js?b8a0","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/_objectToString.js?0126","webpack:///./node_modules/@msdyn365-commerce-modules/checkout/node_modules/lodash/_baseMatchesProperty.js?ecf3","webpack:///src/modules/checkout-delivery-options/checkout-delivery-options.view.tsx?d64d","webpack:///./node_modules/@msdyn365-commerce-modules/checkout/node_modules/lodash/stubFalse.js?42bf","webpack:///src/modules/checkout-payment-instrument/index.ts?4b7c","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/_root.js?363d","webpack:///./node_modules/@msdyn365-commerce-modules/checkout/node_modules/lodash/_baseEach.js?8e16","webpack:///src/modules/checkout/components/guided-card.tsx?5a55","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/_baseIsNative.js?fd31","webpack:///./node_modules/@msdyn365-commerce-modules/checkout/node_modules/lodash/_stackClear.js?fcf3","webpack:///src/modules/checkout/components/guided-form.tsx?7fad","webpack:///src/modules/checkout-delivery-options/components/checkout-delivery-options.error-title.tsx?e220","webpack:///./src/modules/eve-checkout-payment-instrument/components/payment-information.tsx?0e33","webpack:///./src/modules/eve-checkout-payment-instrument/eve-checkout-payment-instrument.tsx?87a8","webpack:///src/invoice-summary-lineitem.tsx?1b66","webpack:///../../src/checkout-state-data-action.ts?8344","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/stubArray.js?68bc","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/_stackClear.js?8e8a","webpack:///src/modules/checkout-delivery-options/index.ts?cc66","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/_equalObjects.js?78ea","webpack:///src/common/empty-active-cart.tsx?80fa","webpack:///src/actions/submit-user-review.ts?d4c7","webpack:///src/modules/checkout-delivery-options/components/index.ts?70b1","webpack:///./node_modules/@msdyn365-commerce-modules/checkout/node_modules/lodash/_arrayFilter.js?c216","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/_mapCacheDelete.js?829c","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/_baseKeys.js?b226","webpack:///./node_modules/@msdyn365-commerce-modules/checkout-utilities/node_modules/lodash/_Promise.js?9bfd","webpack:///src/modules/checkout/methods/place-order.ts?6d11","webpack:///src/modules/checkout-express-payment-container/index.ts?497e","webpack:///src/modules/write-review/write-review.view.tsx?9069"],"names":["baseGetTag","isObject","module","exports","value","tag","CheckoutDeliveryOptions","React","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","className","description","DescriptionComponent","Object","assign","Description","PriceComponent","CustomerContextualPrice","freePriceText","currencyCode","Currency","getErrorMessage","errorMessageTitle","CheckoutDeliveryOptionsError","role","title","ErrorTitleComponent","message","ErrorMessageComponent","errorMessage","getDeliveryOptionList","count","map","index","code","radioButton","RadioButtonComponent","isChecked","ariaSetSize","ariaPosInSet","ariaLabel","onChange","onDeliveryOptionChange","telemetryContent","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","baseIsEqualDeep","isObjectLike","baseIsEqual","other","bitmask","customizer","stack","OverlayModal","_ref","modal","Node","CheckoutPaymentInstrumentView","_ref2","checkoutPaymentInstrument","paymentInformation","addPaymentForm","overlayModal","isTermsAndConditionsChecked","Module","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","type","_channelDeliveryOptio2","_getLineItemsByDeliveryType","_getGroupTitleComponent","_input$data$deliveryO","itemLabel","itemsLabel","inStorePickUpLabel","shippingCountCheckoutLineItem","emailDeliveryModeDesc","productDeliveryOptions","_productDeliveryOptio","DeliveryOptions","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","payLoad","getPayloadObject","TelemetryConstant","EditCart","attribute","getTelemetryAttributes","groupClass","LineItems","Header","Msdyn365","editProps","editLink","itemsForPickup","itemsForShip","itemsForEmail","itemsGroupWithMulitplePickupMode","func","arrayPush","isArray","object","keysFunc","symbolsFunc","PromoCode","_onInputChangeHandler","e","setState","promoCodeInputValue","canApply","_applyPromotion","appliedPromo","addPromoCode","promoCode","substatus","duplicatePromoCodeErrorText","invalidPromoCodeErrorText","failedToAddPromoCodeErrorText","_onSubmitHandler","preventDefault","_applyPromotionHandler","_renderForm","promoPlaceholderText","promoCodeApplyButtonText","attributes","placeholder","_removePromotion","getAttribute","removePromoCodes","promoCodes","failedToRemovePromoCodeErrorText","_calculateDiscount","discountAmount","line","DiscountLines","discountLine","DiscountCode","DiscountCost","_renderAppliedPromoCode","Coupons","removePromotionHandler","promoCodTotalDiscount","coupon","appliedPromoCodeHeadingText","removePromoAriaLabelFormat","format","removePromoText","ApplyPromoCode","isCollapseOpen","promoCodeHeadingText","nativeKeys","overArg","baseIsMatch","getMatchData","matchesStrictComparable","source","matchData","WeakMap","getNative","arrayAggregator","baseAggregator","baseIteratee","setter","initializer","collection","iteratee","accumulator","SubmitUserReviewInput","channelId","userReviewData","authorization","getCacheKey","getCacheObjectType","dataCacheType","n","Array","assocIndexOf","__data__","size","hashClear","hashDelete","hashGet","hashHas","hashSet","Hash","clear","entry","prototype","has","PlaceOrder","orderedProducts","redirect","updatedCartVersion","Promise","resolve","reject","salesOrder","CartCheckout","EmptyActiveCart","orderConfirmationUrl","getUrlSync","separator","includes","url","updateSalesOrder","newSalesOrder","newOrderedProducts","_objectWithoutProperties","_excluded","ref","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","ListCache","DataView","Map","Set","toSource","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","getTag","ArrayBuffer","Ctor","ctorString","CheckoutLoyaltyLabel","htmlFor","objectProto","array","predicate","getAllKeys","hasOwnProperty","equalFunc","isPartial","objProps","objLength","call","objStacked","othStacked","skipCtor","objValue","othValue","compared","objCtor","othCtor","values","offset","GiftCardTitle","MapCache","pairs","LARGE_ARRAY_SIZE","getAdditionalContentItems","_item$links","renderHeading","additionalContentHeading","handleAdditionalTextChange","subtext","renderParagraph","additionalContentParagraphText","handleAdditionalParagraphChange","links","ctaLink","renderLinks","linkIndex","editableLink","linkText","linkUrl","destinationUrl","openInNewTab","link","onTextChange","handleAdditionalLinkTextChange","additionalContentItemContainer","additionalContentItemLinks","videoPlayerAdditionalContent","additionalContent","additionalContentNode","additionalContentItems","VideoPlayer","handleTextChange","handleParagraphChange","paragraph","isMobileDevice","isMobile","variant","VariantType","Viewport","options","video","playerResources","playAriaLabel","playLabel","pauseAriaLabel","pauseLabel","playingAriaLabel","playingLabel","pausedAriaLabel","pausedLabel","muteAriaLabel","muteLabel","unMuteAriaLabel","unMuteLabel","fullScreenAriaLabel","fullScreenLabel","exitFullScreenAriaLabel","exitFullScreenLabel","seekBarLabel","videoTimeDurationLabel","closedCaptionLabel","videoMetaData","_video$_links","videoId","duration","playTime","thumbnail","posterframeUrl","src","_links","binaryReferences","videoBinaryReferences","videoPlayerData","metaData","player","Player","playerData","isEditor","params","_getVideoDetailsHeading","_getVideoDetailsParagraph","_getVideoDetailsLinks","detailsContainer","detailsContainerCTA","handleText","handleParagraph","handleAdditionalText","handleAdditionalParagraph","handleLink","handleLinkTextChange","handleAdditionalLink","Number","_this$props$config$ad","linkData","contentAction","etext","linkId","additionalProperties","_heading$tag","CheckoutTermsAndConditions","isTermsAccepted","getTermsAndConditions","showCheckbox","isDisabled","isAutoSave","isTermsAndConditionAccepted","checkboxAriaLabel","termsAndConditionAcceptance","checkBox","CheckboxComponent","_data$checkout$result","updateTermsAndConditionsAcceptance","cancelBtnAriaLabel","saveBtnAriaLabel","editBtnAriaLabel","newIsTermsAndConditionAccepted","checked","shouldEnableSinglePaymentAuthorizationCheckout","updateIsTermsAndConditionsChecked","newIsTermsAndConditionChecked","showControlButtons","defaultTermsAndConditionAcceptedValue","isShowContent","isShowButtons","checkoutTermsAndConditions","termsAndConditionsContent","baseFor","createBaseFor","TermsAndCondition","ErrorMessage","CheckoutTermsAndConditionsView","CheckoutDeliveryOptionsDescription","nativeCreate","CheckoutTermsAndConditionsErrorTitle","SetCache","arraySome","cacheHas","arrLength","othLength","arrStacked","seen","arrValue","othIndex","TOGGLE_REVIEW_MODAL_BUTTON_ID","TOGGLE_EDIT_MODAL_BUTTON_CARD_ID","GetCheckoutReturnUrl","returnUrl","isAbsoluteUrl","RegExp","test","origin","ReviewCard","cardProps","isUserReview","review","name","createElement","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","isOboRequest","yesButtonText","noButtonText","voteCount","helpfulPositive","helpfulNegative","user","onClickMethod","updateReviewHelpfulness","isAuthenticated","signInUrl","toggleWriteReviewModal","editReviewCardText","Intl","DateTimeFormat","month","day","year","Date","toggleReportReviewModal","reportConcernText","reportedReviews","reportedText","reportedReviewId","returnRef","innerRef","getContactInfo","canEdit","email","showInfoProps","stubFalse","freeExports","nodeType","freeModule","Buffer","root","isBuffer","baseAssignValue","createAggregator","ReviewCount","currentPage","reviewsCount","reviewsShownOnEachPage","pageReviewCountText","_getReviewStartNumber","_getReviewEndNumber","PageControls","previousPageClick","_getPreviousPageData","nextPageClick","_getNextPageData","Next","nextAttribute","Previous","previousAttribute","_hasPreviousPage","_paginationAriaLabel","pageReviewAriaLabel","previousButtonText","_hasNextPage","nextButtonText","_getPagesCount","_getReviewsShown","Math","min","ceil","isNextPage","page","pageModifier","pageReviewCount","updateReviews","selectedSortByOption","selectedFilterByOption","Symbol","isLength","typedArrayTags","baseIsNative","getValue","CheckoutTermsAndConditionsCheckbox","baseIsArguments","propertyIsEnumerable","isArguments","arguments","baseTimes","isIndex","isTypedArray","inherited","isArr","isArg","isBuff","isType","skipIndexes","String","baseIsTypedArray","baseUnary","nodeUtil","nodeIsTypedArray","RatingsHistogram","handleHeadingChange","selectFilterBy","bind","ratingsSummary","ratingCount","totalRatingsCount","completeClass","callbacks","histogramItems","HistogramItems","averageRating","averageRatingAriaLabel","hideCount","averageNumber","AverageRatingNumber","summary","totalReviews","TotalReviews","ratingsSummaryProps","histogramProps","stars","filterKey","update","createRatingsReviewsStateInput","CheckoutLoyaltyText","setCacheAdd","setCacheHas","add","defineProperty","Stack","equalArrays","equalByTag","equalObjects","objectTag","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","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","isNaN","filterByOption","option","selectedIndex","warning","_userReview","userReview","_reviewCard","_reviewCards","reviewList","reviewElements","isTakenDown","isPublished","_userReportModalToggle","reportingReviewId","_userReviewModal","ReviewModal","isOpen","onModalToggle","onTitleChange","_onTitleChange","_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","token","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","channelConfiguration","_computedLoyaltyAmount","loyaltyAmount","getDeliveryMode","featureSate","pickupDeliveryMode","dM","OrderSummary","SubtotalAmount","SubtotalAmountWithoutTax","TaxAmount","TaxOnNonShippingCharges","DiscountAmount","TotalAmount","OtherChargeAmount","hasDeliveryMethod","hasShippingMethod","freightFee","getDeliveryConfiguration","isTaxIncludedInPrice","isShowTaxBreakup","deliveryModes","taxOnShippingCharge","TaxOnShippingCharge","shippingChargeAmount","ShippingChargeAmount","some","reactNodes","subtotal","subTotalLabel","tax","taxLabel","orderTotal","orderTotalLabel","otherCharge","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","baseGet","path","CheckoutDeliveryOptionsRadioButton","freeProcess","freeGlobal","process","types","require","binding","baseEach","PaymentInformation","changePaymentButtonText","cardTitle","cardNumberLabel","expiresDateLabel","addressTitle","tokenizedPaymentCard","tenderLine","billingAddress","NameOnCard","CardTypeId","CardTokenInfo","ExpirationMonth","ExpirationYear","MaskedCardNumber","cardLastNDigit","substr","isValidCardNumber","Street","StreetNumber","City","State","ZipCode","ThreeLetterISORegionName","Phone","onRemoveHandler","onRemoveGiftCard","_giftCard$Id","getItem","getFormattedPrice","canRemove","enteredGiftCardLabel","giftCardAvailableBalanceLabel","removeGiftCardButton","balance","CardCurrencyCode","giftCardLast4Digit","selectedGiftCard","removeButton","itemProps","ContainerItemsComponent","isLoadingClassName","CheckoutExpressPaymentContainerView","checkoutPlainContainerProps","uid","coreJsData","maskSrcKey","exec","IE_PROTO","retrieveItems","slots","content","CarouselView","carouselContainer","renderModuleAttributes","Carousel","closeAnimation","activeIndex","next","previous","pause","pauseOnHover","ride","autoplay","interval","transitionType","hideFlipper","dismissEnabled","onIndicatorsClickHandler","handleDismissCarousel","dismissCarouselAriaText","ariaLabelForDismissButton","indicatorAriaText","ariaLabelForSlide","directionTextPrev","flipperPrevious","directionTextNext","flipperNext","handleOnExited","handleOnExiting","keyboard","baseProperty","basePropertyDeep","isKey","toKey","activeImageView","activePointContainer","activePointDetailsContainer","imageMapper","additionalContentContainer","detailsContainerCta","style","top","productCardtopPosition","left","productCardleftPosition","overlay","productCard","castPath","hasFunc","reportReviewConcernDataAction","concernCategory","CheckoutDeliveryOptionsErrorMessage","CheckoutTermsAndConditionsErrorMessage","isStrictComparable","getAddContactInfo","inputRef","canSubmit","canCancel","emailLabel","emailErrortext","onInputChange","onInputChangeHandler","addFormProps","submitButton","inputGroupProps","WrappedComponent","_super","ModuleState","_this","initializeState","_b","states","getModuleStates","updateModuleStates","__assign","_a","hasInitialized","isRequired","isCancellable","isSubmitContainer","childIds","getModuleStateManager","validate","isPending","isSkipped","isCancelAllowed","shouldSubmitContainer","hasModuleState","setIsRequired","setIsSubmitContainer","onSkip","onDisable","getModule","moduleId","getModuleByTypeName","getModuleStateManagerByTypeName","moduleStates","_moduleState","modules","_validateLeaf","isMatch","_validateContainer","allMatched","skipSkippableItem","app","childId","_isPaymentSectionContainer","ArrayExtensions","hasElements","enableControl","__extends","stackClear","stackDelete","stackGet","stackHas","stackSet","srcValue","baseGetAllKeys","getSymbols","splice","pop","onApplyHandler","onApplyGiftCard","onChangeNumberHandler","onEnterGiftCardNumber","onChangePinHandler","onEnterGiftCardPin","onChangeExpHandler","onEnterGiftCardExp","getForm","inputPinRef","inputExpRef","giftCardNumber","giftCardPin","giftCardExp","supportExternalGiftCard","additionalFields","disableAddGiftCard","applyGiftCardButton","giftCardFormLabel","giftCardNumberLabel","giftCardPinLabel","giftCardExpLabel","giftCardAlertLabel","giftCardPinPlaceholderText","giftCardExpPlaceholderText","formProps","inputPinLabel","inputExpLabel","alertFieldLabel","Alert","assertive","fade","includeAlertClass","inputNumber","inputPin","inputExp","applyButton","showGiftCardPinInput","showGiftCardExpInput","inputProps","inputNumProps","inputPinProps","inputExpProps","funcToString","Function","global","arrayFilter","stubArray","nativeGetSymbols","getOwnPropertySymbols","symbol","SupportedGiftCardType","CheckoutGiftCard","isFetchingGiftCard","isEnabled","giftCards","couldPaidByGiftCard","giftCardSupported","External","shouldBeEnabledForGuest","handleCancelOrSubmit","hasSelectedItem","cultureFormatter","formatCurrency","enterGiftCardNumber","enterGiftCardPin","enterGiftCardExp","removeGiftCard","applyGiftCard","giftCardTypes","getGiftCardTypes","giftCardType","isPinRequired","IsPinRequired","isExpRequired","IsExpirationDateRequired","tenderTypeId","PaymentMethodId","getGiftCard","addGiftCard","Pin","ExpirationDate","TenderTypeId","current","focus","findGiftcardTenderTypes","tenderTypes","operationId","giftcardType","matchedTenderTypes","Internal","tenderType","OperationId","ConnectorId","noBalanceError","invalidCardInfoError","invalidCardTypeError","noCardPinError","noCardExpError","supportedGiftCardType","getTenderTypesAsync","internalGiftcardTenderTypes","OPERATIONS","PayGiftCertificate","externalGiftcardTenderTypes","Both","parseInt","split","getGiftCardAsync","activeGiftCard","emptyInputError","duplicatedCodeError","invalidCodeError","card","resolveCardTypesAsync","CardType","GiftCard","getLoyaltyAmount","getGiftCardTotalAmount","getCustomerAccountAmount","showAdditionalFields","shouldPayGiftCard","isOBORequest","EnabledPaymentsForOBO","moduleClassName","checkoutGiftCardProps","showGiftCard","TitleCompoent","getList","form","CheckoutState","_giftCards","_giftCardExtends","_loyaltyAmount","_guestCheckoutEmail","_isTermsAndConditionAccepted","_customerAccountAmount","_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","updateCustomerAccountAmount","listProps","AsyncResultStatusCode","PromoBannerView","promoBannerProps","contentProps","closeButton","bannerMessages","promoBannerTextProps","promoBannerLinksProps","carouselProps","promoBannerText","handleLinks","slides","VideoPlayerView","Uint8Array","eq","mapToArray","setToArray","symbolProto","symbolValueOf","valueOf","byteLength","byteOffset","buffer","convert","stacked","ShowContactInfo","AddContactInfo","CheckoutGuestProfileView","_ref3","showContactInfo","addContactInfo","transform","arg","baseKeys","isArrayLike","isPrototype","getMapData","reportConcernDropdownOptions","SubmitReview","submitReviewAttribute","SuccessButton","successAttribute","Cancel","cancelAttribute","reportSpamText","OffensiveContent","offensiveContentText","Profanity","profanityContentText","Modal","toggle","applicationNode","returnFocusRef","modalHeader","ModalHeader","modalFooter","ModalFooter","modalBody","ModalBody","header","headerSubmitted","feedbackThankYouText","cancelReportReviewText","reportReviewButtonText","succesfulButton","okReportReviewText","reportMessage","reportModalMessage","reportSubmittedMessage","radioButtons","radioPairs","errorMessageText","inputId","AddCheckoutLoyalty","cardNumber","drawer","rewardPoints","loyaltyAmountContainer","appliedLoyaltyAmountContainer","loyaltyAmountLabel","loyaltyAmountInput","loyaltyAmountApplyButton","showAppliedAmount","loyaltyAmountAppliedText","loyaltyAmountAppliedPrice","loyaltyAmountRemoveButton","rewardPoint","checkoutLoyaltyRewardPoint","availablePointsText","activePoints","expiringPointsText","expiringPoints","ShowCheckoutLoyalty","coveredAmountText","CheckoutLoyaltyView","checkoutLoyalty","showLoyalty","addLoyalty","isShowLoyalty","isShowAddLoyalty","isFunction","CatalogLabelComponent","catalogId","validateCatalogId","catalog","cartLineItemFunctions","renderProductDimensions","dimensionStrings","Dimensions","productDimension","_productDimension$Dim","_productDimension$Dim2","_productDimension$Dim3","_productDimension$Dim4","DimensionTypeValue","ProductDimensionType","Color","DimensionValue","Configuration","Size","Style","IsGiftCard","renderProductUnitPrice","Price","renderDiscountLines","_discountLine$OfferId","OfferId","OfferName","isSalesLine","PeriodicDiscount","EffectiveAmount","BasePrice","Percentage","discountPercent","_discountLine$Percent","updatedPercent","DiscountLineTypeValue","DiscountLineType","TenderTypeDiscount","_discountLine$Effecti","effectiveAmount","toFixed","renderInventoryLabel","inventoryCssName","inventoryLabelClassName","inventoryInformationLabel","renderShippingLabel","_props$context$reques","_cartline$ChargeLines","cartline","shippingChargeLines","ChargeLines","chargeLine","IsShipping","chargeTotal","_chargeLine$Calculate","CalculatedAmount","priceComponent","renderOtherCharges","_cartline$ChargeLines2","_otherCharges$map","otherCharges","chargeline","itemIndex","renderSalesAgreementPrompt","SalesAgreementLineRecordId","renderConfirmedShipDate","confirmedShipDate","confirmedShipDateLabel","msdyn365Commerce","createComponentOverride","component","_props$context$reques2","_product$Name","_props$primaryImageUr","destructDimensionStrings","fallbackImageUrl","getFallbackImageUrl","ItemId","apiSettings","OmniChannelMedia","productDimensions","cropFocalRegion","productAttribute","productName","imgeClassName","IsInvoiceLine","cartLineContentClassName","newValue","quantityOnChange","generateErrorMessage","renderUnitOfMeasure","unitOfMeasureDisplayType","DefaultUnitOfMeasure","Image","fallBackSrc","altText","loadFailureBehavior","NetAmountWithAllInclusiveTax","GrossAmount","ExtendedPrice","NetPrice","generateQuantityAndPrice","nodes","unitOfMeasure","_props$maxQuantity","_props$data$product$I","IncrementalQuantity","max","maxQuantity","currentCount","currentQuantity","decrementButtonAriaLabel","incrementButtonAriaLabel","isCartStateReady","isGiftCard","isOutOfStock","classNames","renderSaving","priceEditorResources","CartLinePriceEditor","deliveryLocation","PickUpAtStoreComponent","EmailDeliveryComponent","LineItemComponent","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","maxLength","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","enableStockCheck","isOverMaxQuantity","_checkout$result","hasOrderConfirmation","updateCartLineEmailAddress","guestCheckoutEmail","placeOrder","handleCheckoutError","updateIsPaymentSectionContainerReady","newIsPaymentSectionContainerReady","_this$props$context$r","emailDeliveryCartLines","lineDeliverySpecifications","DeliverySpecification","DeliveryModeId","DeliveryPreferenceTypeValue","DeliveryPreferenceType","ElectronicDelivery","ElectronicDeliveryEmailAddress","updateLineDeliverySpecificationsAsync","updatedCart","Version","_this$props$context$r2","getAvailabilitiesForCartLineItems","ProductAvailabilitiesForCartLineItems","productInventoryInformation","_cart$CartLines","_cart$CartLines2","productsThatShouldValidateInventory","_cartlineProduct$Beha","cartlineProduct","isStockedItem","Behavior","IsStockedProduct","foundProductAvailability","productInventory","_productInventory$Pro","ProductAvailableQuantity","cartLinesInventoryValidation","validateCartLinesInventory","isValid","getActiveChildModuleStates","onContainerReady","redirectToCartPage","notFoundEditCartLinkMessage","editCartLink","validateForCheckout","_this$props$data$feat2","_this$props$context","retry","isOrderQuantityLimitsFeatureEnabledInHq","isEcommerceQuantityLimitsFeatureEnabledInHq","defaultOrderQuantityLimitsFeatureConfig","platform","enableDefaultOrderQuantityLimits","customerInfo","customerInformation","isB2BSite","isOrderQuantityLimitsFeatureEnabledInSiteSettings","validateForCheckoutAsync","bypassCache","_result$ValidationFai","ValidationFailuresByCartLines","refreshCart","refreshError","_setErrorMessage","_saveShippingAndBillingAddress","Zip","address","_getAddressFromTokenizedPaymentCard","updateBillingAddressFromExpressCheckout","newBillingAddressFromExpressCheckout","updateShippingAddressFromExpressCheckout","newShippingAddressFromExpressCheckout","TwoLetterISORegionName","Country","Address1","Address2","invalidCartVersionErrorMessage","missingRequiredCartTenderLinesErrorMessage","timeoutErrorMessage","checkoutResult","apiError","statusCode","errorCode","setCheckoutErrors","_error$data","AdditionalContext","isEditorialMode","isEmpty","disableForOBO","isPaidOffByCustomerAccount","amountDue","_this$props$data$chec22","_this$props$data$chec23","asyncResultStatus","LOADING","_this$props$data$chec24","_this$props$data$chec27","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","device","Type","backToShoppingUrl","BackToShopping","backToShoppingAttributes","checkoutBtnText","hasShippingAddress","hasCartDeliveryMode","hasGuestCheckoutEmail","hasExpressPaymentContainer","document","getElementsByClassName","display","renderMsdyn365Text","AlertComponent","_this$props$data$chec59","_this$props$data$chec60","GuidedFormComponent","resource","getOrderSummary","PlaceOrderButtonComponent","every","SUCCESS","FAILED","baseMatches","baseMatchesProperty","identity","CheckoutErrors","clientCheckoutError","consoleCheckoutErrors","getCheckoutState","checkoutErrorsList","Console","consoleCheckoutError","errorMessageResource","getCheckoutErrorMessage","console","log","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","resIndex","eachFunc","fromRight","iterable","cache","balanceCheckButton","GiftCardBalanceCheck","_isEnabled","_getFormattedPrice","_enterGiftCardNumber","_clearError","_enterGiftCardPin","_enterGiftCardExp","_setError","_applyGiftCard","_getGiftCardTypes","_getGiftCard","_findGiftcardTenderTypes","giftCardBalanceCheckProps","CheckoutExpressPaymentContainer","_getItems","primary","_handleCheckoutExpressContainerHeadingChange","checkoutExpressPaymentContainerHeading","shouldHideExpressPaymentContainer","shippingAddressFromExpressCheckout","isExpressPaymentModulesReady","extensionPropertyKey","isModuleReady","BooleanValue","_checkout$result2","checkoutExpressPaymentSectionLoadingMessage","ExpressPayment","shouldHideExpressPaymentContainerClassName","WaitingComponent","_renderMsdyn365Text","ModuleStatesCacheKey","cacheKey","getCardTypeId","cardPrefix","Unknown","TypeId","findTenderIdTypeByOperationId","matchedTenderType","roundNumber","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","cardTenderLine","CardPaymentAcceptResult","getCreditCardTenderLineForSinglePaymentAuth","cartTypeId","TenderType","getCreditCardTenderLine","all","cartVersion","checkoutAsync","_error$data2","_cardPaymentAcceptRes","_cardPaymentAcceptRes2","updateRedirectAdditionalContext","newRedirectAdditionalContext","updateRedirectPaymentConnectorId","newRedirectPaymentConnectorId","Settings","PaymentConnectorId","updateIsCheckoutCallFailed","newIsCheckoutCallFailed","updateCheckoutErrorPaymentConnectorId","newCheckoutErrorPaymentConnectorId","updateIsExpressCheckoutApplied","SignInMessage","SignInButton","SignIn","ModalToggle","WriteReview","PureComponent","writeReviewCallbacks","_modalToggleRef","createRef","userInfo","signInMessage","signInButton","signInLabel","signInAriaLabel","modalToggle","editReviewButtonText","reviewButtonLabel","_buildUserReviewModal","isKeyable","AdressInput","step","ariaValueMax","ariaValueMin","ariaValueNow","onBlur","noCustomizer","COMPARE_PARTIAL_FLAG","arrayLikeKeys","getHostName","toLowerCase","Iframe","postMessage","parameters","_this$iframeRef$curre","iframeRef","contentWindow","targetOrigin","onEvent","sourceUrl","onIFrameMessage","requestUrlOrigin","messageOrigin","sourceHost","eventHost","requestHost","messageHost","updateContentDocument","displayContent","css","innerDocument","contentDocument","open","write","cssNote","createTextNode","appendChild","head","close","addEventListener","previousProps","componentWillUnmount","removeEventListener","iframeAriaLabel","height","moduleName","sandbox","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","renderRating","ratingId","totalRatings","_totalRatings$toStrin","numberRatings","ratingAriaLabel","roundedRating","getRatingAriaLabel","ActiveProductComponent","savingsText","Fragment","imageUrl","imgData","imageProps","renderProductPlacementImage","basePrice","adjustedPrice","AdjustedPrice","renderPrice","hideRating","AverageRating","TotalRatings","assembleNode","isOpenInNewTab","activeImageAdditionalContent","CanvasCalculations","CanvasStyles","ImageMapper","Component","_isDesktopViewPort","_context","getActiveImageWidth","activeImageReferenceValue","activeImageRefs","clientWidth","getActiveImageHeight","clientHeight","convertHexToRgb","hexColor","rValue","gValue","bValue","applyFadingTransition","coords","rgbColor","alpha","_this$_canvas$current","_this$_canvas$current2","halfDivisor","_canvas","getContext","buttonPadding","paddingAdjustment","buttonWidth","measureText","width","fillStyle","body","parentElement","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","toLocaleLowerCase","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","join","onFocus","tabIndex","alt","initCanvas","_this$getActiveImageW","_this$getActiveImageH","_this$_canvas$current12","_backgroundImage","_container","onLoad","defaultHeight","canvasWidth","canvasHeight","shouldRender","_requestContext$gridS","imageData","useMap","ActiveImageConstants","ActiveImage","_defaultProductCardWidth","_defaultProdutCardHight","_activePoints","addActivePoints","_product$PrimaryImage","areaId","updateClientWidth","viewport","Browser","renderImageMapper","_this$props$config$ac","productResults","configProduct","itemId","_configProduct$xPosit","_configProduct$yPosit","_configProduct$radius","getProductPageUrlSync","xPosition","yPosition","activePoint","stringify","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","defaultImageSettings","getDefaultImageSettings","productImageSettingsWidth","viewports","lg","w","productCardWidth","leftAllignPosition","position","getProductCardPositionY","_this$props$config$pr3","_this$props$config$pr4","_defaultImageSettings2","productImageSettingsHeight","h","produtCardHight","_area$center$2","_area$center2","xs","q","xl","lazyload","keyDown","enterKey","nodeName","escKey","renderActiveImageDetailsLinks","_telemetryContent","willOpenInNewTab","renderActiveImageDetailsHeading","renderActiveImageDetailsParagraph","getActiveImageId","activeImageId","_activeImageIdPart$","activeImageSource","decrementOne","_handleOutsideClick","_this$_productCardDiv","contains","setTimeout","timeoutInterval","images","from","removeAttribute","handleAdditionalLinkText","reIsUint","nativeObjectToString","symToStringTag","toStringTag","isOwn","unmasked","PromoBannerCloseButton","closeButtonAriaLabel","onClose","PromoBannerClose","PromoBannerLinks","editableLinks","_mapEditableLinks","linkdata","onTelemetryClick","PromoBannerText","PromoBanner","animating","isVisible","_next","nextIndex","_isLastItem","_goToIndex","_previous","_isFirstItem","_onDismiss","closeButtonLabel","bannerText","bannerAriaLabel","onDismiss","hideIndicator","Loading","withVisibilityObserver","VisibilityObserver","selfRef","initMutationObserver","targetNode","getElementsByTagName","MutationObserver","mutationObserver","handleVisibilityChange","observe","childList","subtree","stopMutationObserver","_this$state$observer","disconnect","offsetWidth","offsetHeight","visibilityObserver","renderItem","star5Count","star4Count","star3Count","star2Count","star1Count","totalCount","percentage","formattedPercent","NumberFormat","barItemAriaLabel","starLabel","bar","Progress","buttonProps","PaymentConnectorPostMessageType","paymentConnectorMessage","messageType","paymentConnectorExtraContextMessage","ExtraContext","paymentConnectorSubmitMessage","Submit","paymentConnectorAmountMessage","buildReviewCard","createReviewModal","createReportModal","ReviewsListview","baseHasIn","hasPath","CheckoutAlert","ItemComponent","CheckoutSectionContainerView","From","SelectedGiftCard","GiftCardList","AddResource","ShowResource","CheckoutGiftCardView","CheckoutGuestProfile","_this$props$data$acco","customerAccountInformation","accountInformation","updateEmail","Email","setErrorMsgOboUserEmailEmpty","emailOnCart","ReceiptEmail","emailAddressFromExpressCheckout","isEmailValid","updateGuestProfile","updateHasGuestCheckoutEmail","newHasGuestCheckoutEmail","rowEmail","hasCheckoutError","EmailRegex","defaultRegex","submitEmail","_this$inputRef$curren","isEmailFromExpressCheckoutDifferent","getShowContactInfo","hasEmailError","CheckoutPlainContainer","getItems","isPaymentSectionContainer","isCollapse","_checkoutResult$check","_cart$TotalAmount","shouldCollapsePaymentSection","updateIsPaymentSectionContainerHasError","newIsPaymentSectionContainerHasError","isCheckoutCallFailed","container","hidden","LoadingComponent","initialized","skipped","ready","updating","pending","buttonsStates","onPlaceOrderHandler","isBusy","buttonSetState","CheckoutPlaceOrderButton","setIsBusy","useState","payload","TelemetryEvent","Purchase","CarouselModule","_handleDismissCarousel","dismissCarousel","closeNow","_onExiting","_onExited","newIndex","histogramItem","RatingsHistogramView","orderSummaryHeading","showLineItems","isShowOrHideTaxEnabled","isEnableShowOrHideSalesTaxECommerceEnabled","orderSummaryProps","IsTaxIncludedInPrice","PayCard","PayLoyalty","PayCustomerAccount","AddPaymentFormComponent","acceptPageUrl","acceptPageContent","iFrameHeightOverride","isFetchingPaymentConnector","paymentStyleOverride","cancelButtonText","submitButtonText","defaultPaymentConnectorStyle","Form","Item","GiftCardBalanceCheckView","_defaultLoyaltyPoints","loyaltyCard","CardNumber","updateLoyaltyCardId","shouldPayLoyalty","_dialogToggleRef","_applyLoyaltyPoints","_removeLoyaltyPoints","_onInputChange","_onBlur","dollarsApplied","maxDollars","isFetchingLoyaltyCard","loyaltyTransactionEstimation","MaxCurrencyValueOfLoyaltyPoints","_updateEstimate","_updateLoyalty","Loyalty","Heading","headingTag","loyaltyHeadingText","TextComponent","loyaltyCoveredAmountText","Drawer","toggleButtonText","_drawerHeader","openGlyph","closeGlyph","glyphPlacement","RewardPoints","points","_renderPointSection","availablePointsLabel","expiringLoyaltyPointsLabel","LabelComponent","payWithLoyaltyAmountLabel","InputComponent","applyCheckoutLoyaltyPaymentText","removeCheckoutLoyaltyPaymentText","point","RewardPointId","ActivePoints","PointsExpiringSoon","parseFloat","num","element","getElementById","loyalPointsRequest","createGetMaxLoyaltyPointsToRedeemForTransactionBalanceInput","_query","callActionOrExecute","_points$MaxCurrencyVa","GetLoyaltyTransactionEstimationInput","newMaxPoints","setLoyaltyCookie","cookieExpirationTimeInMinutes","cookieExpiryTime","setMinutes","getMinutes","loyaltyAmt","savedDate","setGiftCardCookie","getAppliedLoyaltyPoints","amtToReturn","loyaltyCookie","loyaltyAmountSaved","remove","getAppliedGiftCards","giftCardsToReturn","giftCookie","savedGiftCards","_this$props$data$card","_this$props$config$pa2","setTerminalError","shouldCheckConnectorId","paymentConnectorId","cardPaymentAcceptPoint","_this$props$config$pa","paymenTenderType","express","Height","paymentConnectorHeight","postMessageToIframe","isPrimaryPayment","Result","handlePaymentResult","CardPrefix","handlePaymentCardPrefix","handlePaymentError","Redirect","handlePaymentRedirect","Showoverlay","showOverlayModal","Hideoverlay","resultAccessCode","_cardPaymentAcceptPoi","isRedirectedFromPaymentGateway","termsAndConditionErrorMessage","settings","ReturnUrl","AccessCode","updateCardPaymentAcceptResult","_checkout$result3","_checkout$result4","terminalError","_checkout$result5","_checkout$result6","isTermsAndConditionChecked","setErrorMessage","updatePaymentAcceptPageData","finally","isPaymentProcessing","retrieveCardPaymentAcceptResultAsync","TenderLine","saveBillingAddress","handleAdditionalContext","cardTypeId","updatePaymentTenderType","_handleCheckoutError","redirectData","isPaymentVerificationRequried","paymentVerificationPostData","isShow","isOverlayModal","redirectToPaymentVerification","_this$props$config$pa3","saveDataInStorage","updateIsPaymentVerificationRequired","newIsPaymentVerificationRequired","redirectInfo","method","propertyName","submit","defaultSubmitErrorMessage","Message","_checkout$result7","_checkout$result8","_checkout$result9","_checkout$result11","moduleStatusWhenExpressCheckoutApplied","_checkout$result10","shouldPaidByCard","isPlaceOrderEnabledInRedirection","_handleExpressCheckout","requestFormData","query","formData","btoa","redirectResult","cardTypeErrorMessage","_checkout$result12","showBillingAddress","shouldPassLocaleToiFrame","getCardPaymentAcceptPointAction","GetCardPaymentAcceptPointInput","paymentAcceptPoint","AcceptPageContent","AcceptPageUrl","setPending","additionalContext","togglePayment","_this$props$config$pa4","_this$props$config$pa5","updateIsExpressAddressApplied","_this$props$config$pa6","_this$props$data$card2","errorPaymentConnectorId","_this$props$config$pa7","_config$paymenTenderT","isPaidByOtherPaymentSource","_this$props$config$pa8","shouldReloadAcceptPage","_this$props$data$card3","checkoutErrorPaymentConnectorId","_this$props$data$card4","redirectPaymentConnectorId","_this$props$data$card5","_this$props$config$pa9","_this$props$data$card6","_this$props$config$pa10","_checkout$result13","_cardPaymentAcceptPoi2","isSinglePayment","PaymentInstrument","MessageOrigin","paymentTenderTypeClassName","loadingMessage","PaymentInformationComponent","getRawTag","objectToString","hasIn","DeliveryOptionList","DeliveryOptionSelected","CheckoutDeliveryOptionsView","freeSelf","self","baseForOwn","createBaseEach","CheckoutGuidedCard","editButtonRef","formCardRef","renderFooder","isVisted","isSubmitting","hasControlGroup","saveAndContinueBtnLabel","Save","SaveContinue","saveBtnAttributes","cancelBtnAttributes","focusOnFirstFocusableElement","node","child","querySelector","focusOnEditButton","scrollToTitle","formCard","getTitle","Tag","_getModules","_getId","prevProps","isActive","onNext","shouldFocus","children","childrenModules","childModule","childState","isExpanded","changeBtnLabel","CheckoutChange","changeBtnAttributes","active","expanded","closed","visted","isMasked","reIsHostCtor","funcProto","reIsNative","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","CheckoutDeliveryOptionsErrorTitle","getReturnUrl","_this$paymenTenderTyp","setRedirectInfoFromCookie","_checkout$result14","_checkout$result15","_checkout$result16","_cardPaymentAcceptPoi3","_checkout$result17","loyaltyPts","giftCardsData","_giftCardsData$giftCa","g","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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CJC,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,MACJ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","file":"static/js/15.714d91a0cc05deae3717.chunk.js","sourcesContent":["var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\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","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { ICheckoutPaymentInstrumentViewProps, ICheckoutPaymentOverlayModal } from './eve-checkout-payment-instrument';\r\nconst OverlayModal: React.FC = ({ modal }) => {\r\n return ;\r\n};\r\n\r\n// might be worth going back to rename the class&rereference open/close glyph\r\nconst CheckoutPaymentInstrumentView: React.FC = ({\r\n checkoutPaymentInstrument,\r\n className,\r\n id,\r\n waiting,\r\n alert,\r\n paymentInformation,\r\n addPaymentForm,\r\n overlayModal,\r\n isTermsAndConditionsChecked\r\n}) => {\r\n return (\r\n \r\n {waiting}\r\n {alert}\r\n {paymentInformation}\r\n {addPaymentForm}\r\n {overlayModal && }\r\n \r\n );\r\n};\r\n\r\nexport default CheckoutPaymentInstrumentView;\r\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 * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\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","/*--------------------------------------------------------------\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\n/* eslint-disable no-duplicate-imports */\r\nimport { PriceComponent } from '@msdyn365-commerce/components';\r\nimport { 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 { Button, format, getPayloadObject, getTelemetryAttributes, IPayLoad, ITelemetryContent, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\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\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\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, nextState: IPromoCodeState): boolean {\r\n if (this.state === nextState && this.props.data === nextProps.data) {\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 _onInputChangeHandler = (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 } 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 /**\r\n * On Submit function.\r\n * @param cartState -Cartstate.\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._applyPromotionHandler(cartState);\r\n };\r\n\r\n /**\r\n * On apply promotion function.\r\n * @param cartState -Cartstate.\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 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 {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 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 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 removePromotionHandler = (event: React.MouseEvent) => {\r\n this._removePromotion(props.cart, event);\r\n };\r\n\r\n const promoCodTotalDiscount = props.cart.cart.Coupons.reduce(\r\n (count: number, coupon: Coupon) => {\r\n return count + (this._calculateDiscount(coupon.Code || '', props.cart) || 0);\r\n },\r\n 0);\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\nexport default PromoCode;\r\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","var baseIsMatch = require('./_baseIsMatch'),\n getMatchData = require('./_getMatchData'),\n matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nmodule.exports = baseMatches;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","var arrayAggregator = require('./_arrayAggregator'),\n baseAggregator = require('./_baseAggregator'),\n baseIteratee = require('./_baseIteratee'),\n isArray = require('./isArray');\n\n/**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\nfunction createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, baseIteratee(iteratee, 2), accumulator);\n };\n}\n\nmodule.exports = createAggregator;\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 { IComponentProps } from '@msdyn365-commerce/core';\nimport { ICartState } from '@msdyn365-commerce/global-state';\nimport { Coupon } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport {\n Button,\n format,\n getPayloadObject,\n getTelemetryAttributes,\n IPayLoad,\n ITelemetryContent,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IPromoCodeProps extends IComponentProps<{}> {\n cart: ICartState | undefined;\n promoCodeHeadingText: string;\n appliedPromoCodeHeadingText: string;\n removePromoAriaLabelFormat: string;\n promoPlaceholderText: string;\n promoCodeApplyButtonText: string;\n collapseTimeOut: number;\n removePromoText: string;\n invalidPromoCodeErrorText: string;\n failedToAddPromoCodeErrorText: string;\n duplicatePromoCodeErrorText: string;\n failedToRemovePromoCodeErrorText: string;\n\n /**\n * The telemetry content\n */\n telemetryContent?: ITelemetryContent;\n promoCodeApplyCallback?(): void;\n}\n\ninterface IPromoCodeState {\n isCollapseOpen: boolean;\n promoCodeInputValue: string;\n error: string;\n canApply: boolean;\n}\n\n/**\n *\n * The PromoCode component renders the promocode section.\n * @extends {React.PureComponent}\n */\nclass PromoCode extends React.Component {\n private readonly payLoad: IPayLoad;\n\n constructor(props: IPromoCodeProps, state: IPromoCodeState) {\n super(props);\n this.payLoad = getPayloadObject('click', this.props.telemetryContent!, TelemetryConstant.ApplyPromoCode);\n this.state = {\n isCollapseOpen: false,\n promoCodeInputValue: '',\n error: '',\n canApply: false\n };\n }\n\n public shouldComponentUpdate(nextProps: IPromoCodeProps, nextState: IPromoCodeState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element {\n return (\n
\n
{this.props.promoCodeHeadingText}
\n {this._renderForm(this.props.promoPlaceholderText, this.props.promoCodeApplyButtonText, this.props.cart)}\n

\n {this.state.error}\n

\n {this._renderAppliedPromoCode(this.props)}\n
\n );\n }\n\n private readonly _onInputChangeHandler = (e: React.ChangeEvent) => {\n const error = e.target.value === '' ? '' : this.state.error;\n this.setState({\n promoCodeInputValue: e.target.value.trim(),\n error,\n canApply: !!e.target.value\n });\n };\n\n private readonly _applyPromotion = (cartState: ICartState | undefined) => {\n if (!cartState || !cartState.cart) {\n return;\n }\n const appliedPromo = this.state.promoCodeInputValue;\n\n cartState\n .addPromoCode({ promoCode: appliedPromo })\n .then(result => {\n if (result.status === 'SUCCESS') {\n // Show success text\n this.setState({ promoCodeInputValue: '', error: '', canApply: false });\n } else if (result.substatus === 'ALREADYADDED') {\n this.setState({ error: this.props.duplicatePromoCodeErrorText });\n } else {\n this.setState({ error: this.props.invalidPromoCodeErrorText });\n }\n })\n .catch(error => {\n this.setState({ error: this.props.failedToAddPromoCodeErrorText });\n });\n };\n\n /**\n * On Submit function.\n * @param cartState -Cartstate.\n * @returns Apply promotion.\n */\n private readonly _onSubmitHandler = (cartState: ICartState | undefined) => (event: React.FormEvent) => {\n event.preventDefault();\n this._applyPromotionHandler(cartState);\n };\n\n /**\n * On apply promotion function.\n * @param cartState -Cartstate.\n * @returns Apply promotion.\n */\n private readonly _applyPromotionHandler = (cartState: ICartState | undefined) => () => {\n this._applyPromotion(cartState);\n };\n\n private readonly _renderForm = (promoPlaceholderText: string, promoCodeApplyButtonText: string, cartState: ICartState | undefined) => {\n const attributes = getTelemetryAttributes(this.props.telemetryContent!, this.payLoad);\n\n return (\n
\n
\n \n \n {promoCodeApplyButtonText}\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 * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\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","/*!\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 { ICheckoutPaymentInstrumentViewProps, ICheckoutPaymentOverlayModal } from './checkout-payment-instrument';\n\nconst OverlayModal: React.FC = ({ modal }) => {\n return ;\n};\n\nconst CheckoutPaymentInstrumentView: React.FC = ({\n checkoutPaymentInstrument,\n checkoutErrorRef,\n className,\n id,\n waiting,\n alert,\n paymentInformation,\n addPaymentForm,\n overlayModal,\n ...restProps\n}) => (\n \n {waiting}\n {alert}\n {paymentInformation}\n {addPaymentForm}\n {overlayModal && }\n \n);\n\nexport default CheckoutPaymentInstrumentView;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nexport * from './payment-information';\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\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 * as React from 'react';\n\nexport interface ICheckoutLoyaltyLabelProps {\n className: string;\n text: string;\n htmlFor: string;\n}\n\n/**\n * AddPaymentForm SFC.\n * @param root0\n * @param root0.className\n * @param root0.text\n * @param root0.htmlFor\n * @extends {React.FC}\n */\nconst CheckoutLoyaltyLabel: React.FC = ({ className, text, htmlFor }) => {\n return (\n \n );\n};\n\nexport default CheckoutLoyaltyLabel;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalObjects;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\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","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\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\nimport { IAdditionalContentData, ILinksData } from '../video-player.props.autogenerated';\n\n/**\n * IVideoPlayerAdditionalContentProps: Interface for\n * Video Player Additional Content Component props.\n */\nexport interface IVideoPlayerAdditionalContentProps {\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 * IVideoPlayerAdditionalContentProps: Interface for\n * Video Player Additional Content view props.\n */\nexport interface IVideoPlayerAdditionalContentViewProps {\n additionalContentNode: INodeProps;\n additionalContentItems?: IVideoPlayerAdditionalContentItemViewProps;\n}\n\n/**\n * IVideoPlayerAdditionalContentProps: Interface for\n * Video Player Additional Content Item view props.\n */\nexport interface IVideoPlayerAdditionalContentItemViewProps {\n heading: React.ReactNode;\n text: React.ReactNode;\n links: React.ReactNode;\n additionalContentItemContainer: INodeProps;\n additionalContentItemLinks: INodeProps;\n}\n\n/**\n * Renders additional content heading.\n * @param additionalContentHeading - Additional content heading.\n * @param props - Video Player Additional content component props.\n * @returns Heading Node.\n */\nconst renderHeading = (additionalContentHeading: string, props: IVideoPlayerAdditionalContentProps) => {\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 - Video Player Additional content component props.\n * @returns Paragraph Node.\n */\nconst renderParagraph = (additionalContentParagraphText: string, props: IVideoPlayerAdditionalContentProps) => {\n const requestContext = props.requestContext;\n return (\n {\n props.handleAdditionalParagraphChange(event);\n },\n requestContext\n }}\n />\n );\n};\n\n/**\n * Renders additional content heading.\n * @param ctaLink - Additional content link.\n * @param props - Video Player Additional content component props.\n * @param linkIndex - Additional content link index.\n * @returns Link Node.\n */\nconst renderLinks = (ctaLink: ILinksData, props: IVideoPlayerAdditionalContentProps, linkIndex: number) => {\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: ctaLink.ariaLabel,\n className: 'ms-video-player__details__additional-content__cta__links',\n linkText: ctaLink.linkText,\n linkUrl: ctaLink.linkUrl.destinationUrl,\n openInNewTab: ctaLink.openInNewTab,\n role: 'link'\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 - Video Player additonal content item props.\n * @param props - Video Player Additional content component props.\n * @returns IVideoPlayerAdditionalContentItemViewProps.\n */\nconst getAdditionalContentItems = (\n item: IAdditionalContentData,\n props: IVideoPlayerAdditionalContentProps\n): IVideoPlayerAdditionalContentItemViewProps => {\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 heading: headingNode,\n text: paragraphNode,\n links: linksNode,\n additionalContentItemContainer: { className: 'ms-video-player__details__additional-content__container' },\n additionalContentItemLinks: { className: 'ms-video-player__details__additional-content__cta' }\n };\n};\n\n/**\n * VideoPlayerAdditionalContent component.\n * @param props - Video Player Additional content component props.\n * @returns Video Player Additional content view props.\n */\nexport const videoPlayerAdditionalContent = (\n props: IVideoPlayerAdditionalContentProps\n): IVideoPlayerAdditionalContentViewProps | undefined => {\n const { additionalContent } = props;\n if (!additionalContent) {\n return undefined;\n }\n\n const reactNodes: IVideoPlayerAdditionalContentItemViewProps = getAdditionalContentItems(additionalContent, props);\n return {\n additionalContentNode: { className: 'ms-video-player__details__additional-content' },\n additionalContentItems: reactNodes\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IPlayerData, IPlayerOptions, IPlayerResources, IVideoMetadata, Player } from '@msdyn365-commerce/components';\nimport * as MsDyn365 from '@msdyn365-commerce/core';\nimport {\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n INodeProps,\n isMobile,\n ITelemetryContent,\n VariantType\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IVideoPlayerAdditionalContentViewProps, videoPlayerAdditionalContent } from './components/additional-content';\nimport { ILinksData, IVideoPlayerConfig, IVideoPlayerProps } from './video-player.props.autogenerated';\n\nexport interface IVideoPlayerViewProps extends IVideoPlayerProps<{}> {\n player: React.ReactNode;\n title?: React.ReactNode;\n text?: React.ReactNode;\n links?: React.ReactNode;\n detailsContainer?: INodeProps;\n detailsContainerCta?: INodeProps;\n additionalContent?: IVideoPlayerAdditionalContentViewProps;\n handleText?(): void;\n handleParagraph?(): void;\n handleAdditionalText?(): void;\n handleAdditionalParagraph?(): void;\n handleLink?(): void;\n handleAdditionalLink?(): void;\n}\n\n/**\n *\n * VideoPlayer component.\n * @extends {React.PureComponent>}\n */\nclass VideoPlayer extends React.PureComponent> {\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly isMobileDevice: boolean;\n\n public constructor(props: IVideoPlayerProps) {\n super(props);\n this.isMobileDevice = isMobile({ variant: VariantType.Viewport, context: this.props.context.request }) === 'xs';\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 options = {\n ...this.props.config,\n isMobileDevice: this.isMobileDevice\n };\n const video: MsDyn365.IVideoData = this.props.config.video;\n const playerResources: IPlayerResources = {\n playAriaLabel: this.props.resources.playLabel,\n pauseAriaLabel: this.props.resources.pauseLabel,\n playingAriaLabel: this.props.resources.playingLabel,\n pausedAriaLabel: this.props.resources.pausedLabel,\n muteAriaLabel: this.props.resources.muteLabel,\n unMuteAriaLabel: this.props.resources.unMuteLabel,\n fullScreenAriaLabel: this.props.resources.fullScreenLabel,\n exitFullScreenAriaLabel: this.props.resources.exitFullScreenLabel,\n seekBarLabel: this.props.resources.seekBarLabel,\n videoTimeDurationLabel: this.props.resources.videoTimeDurationLabel,\n closedCaptionLabel: this.props.resources.closedCaptionLabel\n };\n const videoMetaData: IVideoMetadata = {};\n\n if (video) {\n videoMetaData.videoId = video.id;\n videoMetaData.title = video.title;\n videoMetaData.duration = video.playTime;\n\n if (video.thumbnail) {\n videoMetaData.posterframeUrl = video.thumbnail.src;\n }\n\n if (video._links?.binaryReferences) {\n videoMetaData.videoBinaryReferences = video._links.binaryReferences;\n }\n }\n const videoPlayerData: IPlayerData = { options: options as IPlayerOptions, metaData: videoMetaData };\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\n player: (\n \n \n \n ),\n title: this._getVideoDetailsHeading(),\n text: this._getVideoDetailsParagraph(),\n links: this._getVideoDetailsLinks(),\n detailsContainer: { className: 'ms-video-player__details' },\n detailsContainerCTA: { className: 'ms-video-player__details__cta' },\n additionalContent: videoPlayerAdditionalContent({\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 handleText: this.handleTextChange,\n handleParagraph: this.handleParagraphChange,\n handleAdditionalText: this.handleAdditionalTextChange,\n handleAdditionalParagraph: this.handleAdditionalParagraphChange,\n handleLink: this.handleLinkTextChange,\n handleAdditionalLink: this.handleAdditionalTextChange\n };\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Handle link text change.\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 * Handle text change.\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 * Handle paragraph change.\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 * Handle additional text change.\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 * Handle additional link text change.\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 * Handle additional paragraph change.\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 * Get video details links.\n * @returns - React node.\n */\n private _getVideoDetailsLinks(): React.ReactNode[] | undefined {\n const { links } = this.props.config;\n const payLoad = getPayloadObject('click', this.telemetryContent, '');\n\n return links?.map((linkData: ILinksData, 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: 'ms-video-player__details__cta__link',\n linkText: linkData.linkText,\n linkUrl: linkData.linkUrl.destinationUrl,\n openInNewTab: linkData.openInNewTab,\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 private _getVideoDetailsHeading(): React.ReactNode | undefined {\n const { heading } = this.props.config;\n\n return (\n heading && (\n \n )\n );\n }\n\n private _getVideoDetailsParagraph(): React.ReactNode | undefined {\n const { paragraph } = this.props.config;\n\n return (\n paragraph && (\n \n )\n );\n }\n}\n\nexport default VideoPlayer;\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 { IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\nimport { Button, getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport { CheckoutModule, ErrorLocation } from '@msdyn365-commerce/global-state';\nimport classname from 'classnames';\nimport { action, computed, observable, reaction, when } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { ICheckoutTermsAndConditionsData } from './checkout-terms-and-conditions.data';\nimport { ICheckoutTermsAndConditionsProps } from './checkout-terms-and-conditions.props.autogenerated';\nimport CheckboxComponent from './components/checkout-terms-and-conditions.check-box';\nimport ErrorMessageComponent from './components/checkout-terms-and-conditions.error-message';\nimport ErrorTitleComponent from './components/checkout-terms-and-conditions.error-title';\nimport { focusOnCheckoutError } from '../../checkout-errors';\n\nexport interface ICheckoutTermsAndConditionsModuleProps\n extends ICheckoutTermsAndConditionsProps,\n IModuleStateProps {}\n\nexport interface ICheckoutTermsAndConditions {\n termsAndConditionAcceptance: INodeProps;\n checkBox: React.ReactNode;\n description: React.ReactNode;\n}\n\nexport interface ICheckoutTermsAndConditionsError {\n error: INodeProps;\n title: React.ReactNode;\n message: React.ReactNode;\n}\n\nexport interface ICheckoutTermsAndConditionsViewState {\n isError: boolean;\n isShowSaveButton: boolean;\n isShowEditButton: boolean;\n isShowCancelButton: boolean;\n}\n\nexport interface ICheckoutTermsAndConditionsViewProps extends ICheckoutTermsAndConditionsProps<{}> {\n checkoutTermsAndConditions: IModuleProps;\n isTermsAccepted: boolean;\n errorMessageData: string;\n viewState: ICheckoutTermsAndConditionsViewState;\n termsAndConditionsContent: ICheckoutTermsAndConditions;\n errorMessage?: ICheckoutTermsAndConditionsError;\n saveButton?: React.ReactNode;\n editButton?: React.ReactNode;\n cancelButton?: React.ReactNode;\n checkoutErrorRef?: React.RefObject;\n onChange(event: React.ChangeEvent): void;\n onSave(): void;\n onEdit(): void;\n onCancel(): void;\n}\n\n/**\n *\n * CheckoutTermsAndConditions component.\n * @extends {React.Component>}\n */\n// @ts-expect-error\n@withModuleState\n@observer\nclass CheckoutTermsAndConditions extends React.Component {\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly checkoutErrorRef: React.RefObject = React.createRef();\n\n @observable private isTermsAccepted: boolean = true;\n\n @observable private errorMessage?: string;\n\n constructor(props: ICheckoutTermsAndConditionsModuleProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n @computed get isDataReady(): boolean {\n return (this.props.data.checkout.result && this.props.data.checkout.status) === 'SUCCESS';\n }\n\n @computed get isShowButtons(): boolean {\n const { showControlButtons } = this.props.config;\n return !this.props.moduleState.hasExternalSubmitGroup && (showControlButtons || false);\n }\n\n @computed get isAutoSave(): boolean {\n const { showControlButtons } = this.props.config;\n return !this.props.moduleState.hasExternalSubmitGroup && !showControlButtons;\n }\n\n @computed get defaultTermsAndConditionAcceptedValue(): boolean {\n const { showCheckbox } = this.props.config;\n return !showCheckbox;\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 && this.props.data.checkout.result.isTermsAndConditionAccepted,\n async () => {\n this.isTermsAccepted =\n this.props.data.checkout.result?.isTermsAndConditionAccepted || this.defaultTermsAndConditionAcceptedValue;\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.CheckoutTermsAndConditions &&\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.CheckoutTermsAndConditions) {\n focusOnCheckoutError(this.checkoutErrorRef, this.props.context.actionContext);\n }\n }\n );\n }\n }\n\n public shouldComponentUpdate(\n nextProps: ICheckoutTermsAndConditionsModuleProps,\n nextState: ICheckoutTermsAndConditionsViewState\n ): 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 const {\n moduleState: { isReady, hasError },\n config: { className }\n } = this.props;\n const isTermsAndConditionAccepted = this.props.data.checkout.result?.isTermsAndConditionAccepted;\n const isError = hasError;\n const isShowContent = !isReady;\n const isShowSelected = !hasError && isReady;\n\n const viewProps = {\n ...this.props,\n ...this.state,\n isTermsAccepted: this.isTermsAccepted,\n errorMessageData: this.errorMessage,\n checkoutErrorRef: this.checkoutErrorRef,\n viewState: {\n isError,\n isShowSaveButton: isShowContent && this.isShowButtons,\n isShowEditButton: isShowSelected && this.isShowButtons,\n isShowCancelButton: isShowContent && this.isShowButtons && isTermsAndConditionAccepted\n },\n checkoutTermsAndConditions: {\n moduleProps: this.props,\n className: classname('ms-checkout-terms-and-conditions', className)\n },\n termsAndConditionsContent: this.getTermsAndConditions(),\n errorMessage: this.getErrorMessage(),\n saveButton: this.getSaveButton(),\n editButton: this.getEditButton(),\n cancelButton: this.getCancelButton(),\n onSave: this.onSubmit,\n onEdit: this.onEdit,\n onCancel: this.onCancel,\n onChange: this.onChange\n };\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleTextChange = (event: MsDyn365.ContentEditableEvent) => (this.props.config.description = event.target.value);\n\n private readonly getTermsAndConditions = (): ICheckoutTermsAndConditions => {\n const {\n moduleState: { isReady },\n config: { showCheckbox, description }\n } = this.props;\n const isDisabled = isReady && !this.isAutoSave;\n const isTermsAndConditionAccepted = this.isTermsAccepted;\n const { checkboxAriaLabel } = this.props.resources;\n return {\n termsAndConditionAcceptance: { className: 'ms-checkout-terms-and-conditions__container' },\n checkBox: showCheckbox && (\n \n ),\n description: (\n \n )\n };\n };\n\n @action\n private readonly init = async (): Promise => {\n const {\n data,\n config: { showCheckbox }\n } = this.props;\n\n const hasInvoiceLine = this.props.data.checkout.result?.checkoutCart.hasInvoiceLine;\n\n // If hasInvoiceLine is true, this is for b2b and isTermsAccepted should be true\n if (hasInvoiceLine || data.checkout.result?.isTermsAndConditionAccepted || !showCheckbox) {\n await this.updateTermsAndConditionsAcceptance(true);\n this.isTermsAccepted = true;\n } else if (showCheckbox) {\n await this.updateTermsAndConditionsAcceptance(false);\n this.isTermsAccepted = false;\n }\n\n this.props.moduleState.init({\n onEdit: this.onEdit,\n onCancel: this.onCancel,\n onSubmit: this.onSubmit,\n status: hasInvoiceLine ? 'disabled' : this.isTermsAccepted ? 'ready' : 'updating'\n });\n\n if (this.props.data.checkout.result?.isPaymentVerificationRedirection) {\n this.isTermsAccepted = true;\n this.props.moduleState.setHasError(false);\n this.props.moduleState.onReady();\n }\n };\n\n private readonly getErrorMessage = (): ICheckoutTermsAndConditionsError => {\n const { errorMessageTitle } = this.props.resources;\n return {\n error: { tag: 'div', className: 'ms-checkout-terms-and-conditions__error', role: 'alert', 'aria-live': 'assertive' },\n title: ,\n message: \n };\n };\n\n private readonly getCancelButton = (): React.ReactNode => {\n const { cancelBtnLabel = 'Cancel', cancelBtnAriaLabel } = this.props.resources;\n return (\n \n {cancelBtnLabel}\n \n );\n };\n\n private readonly getSaveButton = (): React.ReactNode => {\n const { saveBtnLabel = 'Save', saveBtnAriaLabel } = this.props.resources;\n return (\n \n {saveBtnLabel}\n \n );\n };\n\n private readonly getEditButton = (): React.ReactNode => {\n const { editBtnLabel = 'Change', editBtnAriaLabel } = this.props.resources;\n return (\n \n {editBtnLabel}\n \n );\n };\n\n private readonly onEdit = (): void => {\n this.props.telemetry.information('Terms and conditions onEdit is called.');\n\n this.onUpdating();\n };\n\n private readonly onSubmit = async (): Promise => {\n this.props.telemetry.information('Terms and conditions onSubmit is called.');\n\n if (!this.isTermsAccepted) {\n if (this.isAutoSave) {\n await this.updateTermsAndConditionsAcceptance(this.isTermsAccepted);\n } else {\n this.setError(this.props.resources.errorMessage);\n this.props.moduleState.setHasError(true);\n }\n } else {\n this.clearError();\n await this.updateTermsAndConditionsAcceptance(this.isTermsAccepted);\n this.props.moduleState.onReady();\n }\n };\n\n private readonly onUpdating = () => {\n this.props.moduleState.onUpdating();\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 onCancel = (): void => {\n this.props.telemetry.information('Terms and conditions onCancel is called.');\n\n // Reset to the saved value\n if (!this.props.data.checkout.result) {\n return;\n }\n\n const isTermsAccepted = this.props.data.checkout.result.isTermsAndConditionAccepted;\n if (!isTermsAccepted) {\n // It has no saved email, set to status updating and request user to fill the email form\n this.props.moduleState.onUpdating();\n } else {\n // It has saved email, set to status ready\n this.isTermsAccepted = true;\n this.props.moduleState.setHasError(false);\n this.props.moduleState.onReady();\n }\n };\n\n private readonly updateTermsAndConditionsAcceptance = async (isTermsAccepted: boolean): Promise => {\n if (this.props.data.checkout.result) {\n await this.props.data.checkout.result.updateTermsAndConditionsAcceptance({ newIsTermsAndConditionAccepted: isTermsAccepted });\n }\n };\n\n private readonly clearError = (): void => {\n this.props.moduleState.setHasError(false);\n this.errorMessage = undefined;\n };\n\n private readonly onChange = async (event: React.ChangeEvent) => {\n const checked = event.target.checked;\n this.isTermsAccepted = checked;\n\n if (this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout) {\n await this.props.data.checkout.result.updateIsTermsAndConditionsChecked({ newIsTermsAndConditionChecked: checked });\n }\n\n if (this.isAutoSave) {\n await this.onSubmit();\n }\n };\n}\n\nexport default CheckoutTermsAndConditions;\n","var createBaseFor = require('./_createBaseFor');\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport {\n ICheckoutTermsAndConditions,\n ICheckoutTermsAndConditionsError,\n ICheckoutTermsAndConditionsViewProps\n} from './checkout-terms-and-conditions';\n\nconst TermsAndCondition: React.FC = ({ termsAndConditionAcceptance, checkBox, description }) => {\n return (\n \n {checkBox}\n {description}\n \n );\n};\n\nconst ErrorMessage: React.FC = ({ error, title, message }) => {\n return (\n \n {title}\n {message}\n \n );\n};\n\nconst CheckoutTermsAndConditionsView: React.FC = props => {\n const {\n checkoutTermsAndConditions,\n checkoutErrorRef,\n viewState,\n termsAndConditionsContent,\n errorMessage,\n saveButton,\n editButton,\n cancelButton\n } = props;\n\n return (\n // TODO: All wrapper div should be provided by viewProps. Once SDK provide the sln, update markup.\n \n {viewState.isError && errorMessage && }\n \n {viewState.isShowSaveButton && saveButton}\n {viewState.isShowEditButton && editButton}\n {viewState.isShowCancelButton && cancelButton}\n \n );\n};\n\nexport default CheckoutTermsAndConditionsView;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\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 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","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\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 ICheckoutTermsAndConditionsErrorTitleProps {\n title?: string;\n}\n\n/**\n * AddPaymentForm SFC.\n * @param root0\n * @param root0.title\n * @extends {React.FC}\n */\nconst CheckoutTermsAndConditionsErrorTitle: React.FC = ({ title }) => {\n if (!title) {\n return null;\n }\n\n return

{title}

;\n};\n\nexport default CheckoutTermsAndConditionsErrorTitle;\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","var SetCache = require('./_SetCache'),\n arraySome = require('./_arraySome'),\n cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\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","var baseFor = require('./_baseFor'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\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 { Button, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IShowContactInfoInput {\n canEdit: boolean;\n email: string;\n resources: {\n editBtnLabel: string;\n };\n onEdit(): void;\n}\n\nexport interface IShowContactInfo {\n showInfoProps: INodeProps;\n email: React.ReactNode;\n editButton?: React.ReactNode;\n}\n\nconst getContactInfo = ({ canEdit, email, resources: { editBtnLabel }, onEdit }: IShowContactInfoInput): IShowContactInfo => ({\n showInfoProps: { className: 'ms-checkout-guest-profile__selected-item' },\n email: {email},\n editButton: canEdit && (\n \n )\n});\n\nexport default getContactInfo;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nexport * from './checkout-loyalty-input';\nexport * from './checkout-loyalty-label';\nexport * from './checkout-loyalty-text';\n","var baseAssignValue = require('./_baseAssignValue'),\n createAggregator = require('./_createAggregator');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\nvar groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n});\n\nmodule.exports = groupBy;\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","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\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 } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ICheckoutTermsAndConditionsCheckboxProps {\n isChecked: boolean;\n ariaLabel?: string;\n disabled: boolean;\n id?: 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.ariaLabel\n * @param root0.disabled\n * @param root0.telemetryContent\n * @param root0.onChange\n * @param root0.id\n * @extends {React.FC}\n */\nconst CheckoutTermsAndConditionsCheckbox: React.FC = ({\n isChecked,\n ariaLabel,\n disabled,\n telemetryContent,\n onChange,\n id\n}) => {\n const payLoad = getPayloadObject('click', telemetryContent!, '');\n const attribute = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n <>\n \n \n );\n};\n\nexport default CheckoutTermsAndConditionsCheckbox;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","var SetCache = require('./_SetCache'),\n arraySome = require('./_arraySome'),\n cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\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","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\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 ICheckoutLoyaltyTextProps {\n className: string;\n text?: string;\n}\n\n/**\n * AddPaymentForm SFC.\n * @param root0\n * @param root0.className\n * @param root0.text\n * @extends {React.FC}\n */\nconst CheckoutLoyaltyText: React.FC = ({ className, text }) => {\n if (!text) {\n return null;\n }\n\n return {text};\n};\n\nexport default CheckoutLoyaltyText;\n","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","var Stack = require('./_Stack'),\n equalArrays = require('./_equalArrays'),\n equalByTag = require('./_equalByTag'),\n equalObjects = require('./_equalObjects'),\n getTag = require('./_getTag'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\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 * as Msdyn365 from '@msdyn365-commerce/core';\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport {\n getRnrAuthEndpointId,\n getRnrEndpointId,\n getRnrPartnerId,\n getSelectedProductIdFromActionInput\n} from '@msdyn365-commerce-modules/retail-actions';\nimport {\n format,\n getTelemetryObject,\n ILabeledDropdownOnChangeNotification,\n ILabeledDropdownOption,\n IModuleProps,\n INodeProps,\n ITelemetryContent,\n LabeledDropdown\n} from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport { reaction } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { reportReviewConcern, submitHelpfulnessVote } from '../..';\nimport { getReviewsForGivenProduct } from '../../actions/get-product-reviews';\nimport { GetProductReviewsInput } from '../../actions/inputs/get-product-reviews-input';\nimport { ReportReviewConcernInput, ReviewConcernCategory } from '../../actions/inputs/report-review-concern-input';\nimport { SubmitHelpfulnessVoteInput } from '../../actions/inputs/submit-helpfulness-vote-input';\nimport { IReviewModalViewProps, ReviewModal, submitReview } from '../../common/review-modal';\nimport { IRnrKeyValuePair, IRnrOrderByKeyValuePair } from '../../common/rnrInterface';\nimport { PageControls, ReviewCount } from './components/components';\nimport { IReportReviewModalViewProps, ReportReviewModal } from './components/report-review-modal';\nimport { IReviewCardViewProps, ReviewCard } from './components/review-card';\nimport { IReviewsListData } from './reviews-list.data';\nimport { IReviewsListProps } from './reviews-list.props.autogenerated';\n\nexport interface IReviewsListState {\n skipItems: number;\n listOfReviews: Review[];\n currentPage: number;\n reviewsCount: number;\n showSpinner: boolean;\n isFilterApplied: boolean;\n selectedSortByOption: ILabeledDropdownOption;\n selectedFilterByOption: ILabeledDropdownOption;\n userReviewRating: number;\n userReviewTitle: string;\n userReviewText: string;\n isReviewModalOpen: boolean;\n hasReviewError: boolean;\n isReportModalOpen: boolean;\n hasReportError: boolean;\n reportingReviewId: string;\n reportedKey: string;\n reported: boolean;\n reportedReviews: string[];\n votedReviews: { reviewId: string; approved: boolean }[];\n}\n\nexport interface IReviewsListCallbacks {\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 updateReviewHelpfulnessVote(reviewId: string, isHelpful: boolean): void;\n toggleReportModal(reviewId: string): void;\n reportReview(reviewId: string, reportedKey: string): void;\n updateSortByDropdown(notification: ILabeledDropdownOnChangeNotification): void;\n updateFilterByDropdown(notification: ILabeledDropdownOnChangeNotification): void;\n updateReviews(\n skipItems: number,\n selectedSortByOption: ILabeledDropdownOption,\n selectedFilterByOption: ILabeledDropdownOption,\n currentPage: number,\n isFilterApplied: boolean\n ): void;\n}\n\nexport interface IReviewsListViewProps extends IReviewsListProps {\n state: IReviewsListState;\n className: string;\n callbacks: IReviewsListCallbacks;\n moduleProps: IModuleProps;\n reviewModal: IReviewModalViewProps;\n reportReviewModal: IReportReviewModalViewProps;\n sortByDropdown: React.ReactNode;\n filterByDropdown: React.ReactNode;\n averageRating: React.ReactNode;\n reviewCount: React.ReactElement;\n refineReviewsProps: INodeProps;\n reviewsListProps: INodeProps;\n reviewCards: IReviewCardViewProps[];\n userReview?: IReviewCardViewProps;\n pageControls: React.ReactNode;\n noReviewsMessage: React.ReactElement;\n noReviewsWithFilterMessage: React.ReactElement;\n heading: React.ReactNode;\n sortByOptions: IRnrOrderByKeyValuePair[];\n filterByOptions: IRnrOrderByKeyValuePair[];\n}\n\n/**\n *\n * ReviewsList component.\n * @extends {React.Component, IReviewsListState>}\n */\n@observer\nclass ReviewsList extends React.Component, IReviewsListState> {\n public sortByDropdownOptions: IRnrOrderByKeyValuePair[] = [\n { key: 'MostHelpful', value: this.props.resources.mostHelpfulSortOptionText },\n { key: 'MostRecent', value: this.props.resources.mostRecentSortOptionText },\n { key: 'HighestRating', value: this.props.resources.highestRatedSortOptionText },\n { key: 'LowestRating', value: this.props.resources.lowestRatedSortOptionText }\n ];\n\n public filterByDropdownOptions: IRnrKeyValuePair[] = [\n { key: '1;2;3;4;5', value: this.props.resources.allRatinsFilterByOptionText },\n { key: '5', value: this.props.resources.fiveStarFilterByOptionText },\n { key: '4', value: this.props.resources.fourStarFilterByOptionText },\n { key: '3', value: this.props.resources.threeStarFilterByOptionText },\n { key: '2', value: this.props.resources.twoStarFilterByOptionText },\n { key: '1', value: this.props.resources.oneStarFilterByOptionText }\n ];\n\n private readonly _userReviewModalToggle: React.RefObject;\n\n private readonly _userReportModalToggle: React.RefObject;\n\n private readonly telemetryContent?: ITelemetryContent;\n private readonly reviewsListCallbacks: IReviewsListCallbacks = {\n updateReviewTitle: (title: string): void => {\n this.setState({ userReviewTitle: title });\n },\n updateReviewText: (text: string): void => {\n this.setState({ userReviewText: text });\n },\n updateRating: (rating: number): void => {\n this.setState({ userReviewRating: 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 // @ts-expect-error\n toggleModal: this._toggleReviewModal,\n // @ts-expect-error\n updateReviewHelpfulnessVote: this.updateReviewHelpfulnessVote,\n toggleReportModal: (reviewId: string): void => {\n this.state.isReportModalOpen ? this._onReportModalOpen(reviewId) : this._onReportModalClose();\n },\n // @ts-expect-error\n reportReview: this._reportReviewCallback,\n // @ts-expect-error\n updateFilterByDropdown: this.updateFilterByDropdown,\n // @ts-expect-error\n updateSortByDropdown: this.updateSortByDropdown,\n // @ts-expect-error\n updateReviews: this.updateReviews\n };\n constructor(props: IReviewsListProps) {\n super(props);\n const {\n userReview: { result: userReview }\n } = this.props.data;\n\n this.state = {\n skipItems: 0,\n reviewsCount: 0,\n listOfReviews: [],\n currentPage: 1,\n showSpinner: false,\n isFilterApplied: false,\n selectedSortByOption: this.sortByDropdownOptions[0],\n selectedFilterByOption: this.filterByDropdownOptions[0],\n userReviewRating: userReview ? userReview.rating : 0,\n userReviewText: userReview ? userReview.reviewText : '',\n userReviewTitle: userReview ? userReview.title : '',\n isReviewModalOpen: false,\n hasReviewError: false,\n isReportModalOpen: false,\n hasReportError: false,\n reported: false,\n reportedKey: ReviewConcernCategory.SpamAdvertising,\n reportingReviewId: '',\n reportedReviews: [],\n votedReviews: []\n };\n\n this._userReviewModalToggle = React.createRef();\n this._userReportModalToggle = React.createRef();\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public shouldComponentUpdate(nextProps: IReviewsListProps, nextState: IReviewsListState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n public componentDidMount = async () => {\n this.props.data.reviewsList.then(reviewsList => {\n if (\n reviewsList &&\n reviewsList.pagingInfo &&\n reviewsList.pagingInfo.totalItems &&\n reviewsList.items &&\n reviewsList.items.length > 0\n ) {\n this.setState({\n listOfReviews: reviewsList.items,\n reviewsCount: reviewsList.pagingInfo.totalItems\n });\n }\n });\n await this.updateReviews(0, this.state.selectedSortByOption, this.state.selectedFilterByOption, 1, this.state.isFilterApplied);\n\n reaction(\n () => this.props.data.ratingsReviewsState.result && this.props.data.ratingsReviewsState.result.filterKey,\n async (filterKey: string | undefined) => {\n const filterKeyValue = Number(filterKey);\n const dropdownItemsCount = this.filterByDropdownOptions.length;\n if (filterKey && !isNaN(filterKeyValue) && filterKeyValue < dropdownItemsCount) {\n const filterByOption = this.filterByDropdownOptions.find((option: IRnrKeyValuePair) => option.key === filterKey);\n if (!filterByOption) {\n this.props.telemetry.warning(`[reviews-list] cannot find filter with key ${filterKey}`);\n } else {\n await this.updateReviews(0, this.state.selectedSortByOption, filterByOption, 1, true);\n const selectedIndex = dropdownItemsCount - filterKeyValue;\n this.setState({\n selectedFilterByOption: this.filterByDropdownOptions[selectedIndex]\n });\n }\n }\n }\n );\n };\n public render(): JSX.Element | null {\n const { className, heading, reviewsShownOnEachPage } = this.props.config;\n const { currentPage, reviewsCount, selectedFilterByOption, selectedSortByOption } = this.state;\n const {\n ratingsSummary: { result: ratingsSummary }\n } = this.props.data;\n const resources = this.props.resources;\n const completeClass = classname('ms-reviews-list', className);\n const viewProps: IReviewsListViewProps = {\n ...this.props,\n state: this.state,\n className: completeClass,\n moduleProps: {\n moduleProps: this.props,\n className: completeClass\n },\n callbacks: this.reviewsListCallbacks,\n reviewModal: this._userReviewModal(),\n reportReviewModal: this._reportReviewModal(),\n filterByDropdown: (\n \n ),\n sortByDropdown: (\n \n ),\n averageRating: ratingsSummary && (\n \n ),\n reviewCount: (\n \n ),\n refineReviewsProps: { className: 'ms-reviews-list__refiners' },\n reviewsListProps: { className: 'ms-reviews-list__reviews' },\n reviewCards: this._reviewCards(this.state.listOfReviews),\n userReview: this._userReview(),\n pageControls: (\n \n ),\n noReviewsMessage: (\n \n {resources.noReviewsMessage}\n \n ),\n noReviewsWithFilterMessage: (\n \n {resources.noReviewsWithSelectedFilterMessage}\n \n ),\n heading: heading && heading.text && (\n \n ),\n sortByOptions: this.sortByDropdownOptions,\n filterByOptions: this.filterByDropdownOptions\n } as IReviewsListViewProps;\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading!.text = event.target.value);\n private readonly _userReview = () => {\n const userReview = this.props.data.userReview.result;\n\n return userReview && this._reviewCard(userReview, true);\n };\n\n private readonly _reviewCards = (reviewList: Review[]) => {\n const userReview = this.props.data.userReview.result;\n const reviewElements: IReviewCardViewProps[] = [];\n\n for (const review of reviewList) {\n if (!review.isTakenDown && review.isPublished && userReview ? review.reviewId !== userReview.reviewId : true) {\n reviewElements.push(this._reviewCard(review, false));\n }\n }\n return reviewElements;\n };\n\n private readonly _reviewCard = (review: Review, userReview: boolean): IReviewCardViewProps => {\n return ReviewCard({\n review,\n resources: { ...this.props.resources },\n context: this.props.context,\n isUserReview: userReview,\n parentId: this.props.id,\n parentType: this.props.typeName,\n reportedReviews: this.state.reportedReviews,\n returnRef: this._userReportModalToggle,\n reportedReviewId: this.state.reportingReviewId,\n toggleWriteReviewModal: this._toggleReviewModal,\n toggleReportReviewModal: this._onReportModalOpen,\n updateReviewHelpfulness: this.updateReviewHelpfulnessVote,\n votedReviews: this.state.votedReviews\n });\n };\n\n private readonly _userReviewModal = (): 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.userReviewRating,\n reviewTitle: this.state.userReviewTitle,\n reviewText: this.state.userReviewText,\n onModalToggle: this._toggleReviewModal,\n onTitleChange: this._onTitleChange,\n onTextChange: this._onTextChange,\n onRatingChange: this._onRatingChange,\n onReviewComplete: this._onReviewComplete,\n renderContextId: 'writeReview-list',\n returnRef: this._userReviewModalToggle,\n hasError: this.state.hasReviewError,\n modalCSS: 'ms-reviews-list'\n });\n };\n\n private readonly _onTitleChange = (event: React.ChangeEvent): void => {\n this.reviewsListCallbacks.updateReviewTitle(event.target.value);\n };\n\n private readonly _onTextChange = (event: React.ChangeEvent): void => {\n this.reviewsListCallbacks.updateReviewText(event.target.value);\n };\n\n private readonly _onRatingChange = (value: number): void => {\n this.reviewsListCallbacks.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 {\n this.setState({\n isReviewModalOpen: true,\n userReviewText: userReview!.reviewText,\n userReviewTitle: userReview!.title,\n userReviewRating: userReview!.rating\n });\n }\n };\n\n private readonly _onReviewComplete = (isSuccess: boolean): void => {\n if (isSuccess) {\n this.setState({ isReviewModalOpen: false, hasReviewError: false });\n } else {\n this.setState({ hasReviewError: true });\n }\n };\n\n private readonly _reportReviewModal = () => {\n return ReportReviewModal({\n resources: { ...this.props.resources },\n context: this.props.context,\n isOpen: this.state.isReportModalOpen,\n returnRef: this._userReportModalToggle,\n reportedKey: this.state.reportedKey,\n onModalToggle: this._onReportModalClose,\n onRadioChange: this._onRadioChange,\n reportReview: this._reportReview,\n hasError: this.state.hasReportError,\n telemetryContent: this.telemetryContent\n });\n };\n\n private readonly _onReportModalOpen = (reviewId: string) => {\n this.setState({\n isReportModalOpen: true,\n reportingReviewId: reviewId,\n reported: false,\n reportedKey: ReviewConcernCategory.SpamAdvertising\n });\n };\n\n private readonly _onReportModalClose = () => {\n this.setState({ isReportModalOpen: false, hasReportError: false });\n };\n\n private readonly _onRadioChange = (event: React.ChangeEvent) => {\n this.setState({ reportedKey: event.currentTarget.getAttribute('data-key') || '' });\n };\n\n private readonly _reportReviewCallback = (reviewId: string, reportedKey: string) => {\n reportReviewConcern(\n new ReportReviewConcernInput(\n reviewId,\n getRnrPartnerId(this.props.context.actionContext),\n this.props.context.request.locale,\n reportedKey,\n this.getUserToken(this.props.context.request),\n getRnrAuthEndpointId(this.props.context.actionContext)\n ),\n this.props.context.actionContext\n )\n .then((_value: boolean) => {\n const reportedReview = this.state.reportedReviews;\n reportedReview.push(reviewId);\n this.setState({ reported: true, reportedReviews: reportedReview, hasReportError: false });\n })\n .catch((error: boolean) => {\n this.setState({ hasReportError: true });\n });\n };\n\n private readonly _reportReview = () => {\n this._reportReviewCallback(this.state.reportingReviewId, this.state.reportedKey);\n };\n\n private readonly updateSortByDropdown = async (notification: ILabeledDropdownOnChangeNotification) => {\n await this.updateReviews(0, notification.selectedOption, this.state.selectedFilterByOption, 1, this.state.isFilterApplied);\n };\n\n private readonly updateFilterByDropdown = async (notification: ILabeledDropdownOnChangeNotification) => {\n await this.updateReviews(0, this.state.selectedSortByOption, notification.selectedOption, 1, true);\n };\n\n private readonly updateReviews = async (\n skipItems: number | 0,\n selectedSortByOption: ILabeledDropdownOption,\n selectedFilterByOption: ILabeledDropdownOption,\n currentPage: number,\n isFilterApplied: boolean\n ) => {\n const productId = getSelectedProductIdFromActionInput(this.props.context.actionContext);\n if (productId === undefined) {\n return;\n }\n const result = await getReviewsForGivenProduct(\n // Task #211227597 Remove this hardcoded values.\n new GetProductReviewsInput(\n productId,\n getRnrPartnerId(this.props.context.actionContext),\n this.props.context.request.locale,\n getRnrEndpointId(this.props.context.actionContext),\n selectedSortByOption.key,\n selectedFilterByOption.key,\n skipItems < 0 ? 0 : skipItems,\n this.props.config.reviewsShownOnEachPage\n ),\n this.props.context.actionContext\n );\n if (result && result.items && result.pagingInfo && result.pagingInfo.totalItems !== undefined) {\n this.setState({\n currentPage,\n listOfReviews: result.items,\n selectedSortByOption,\n selectedFilterByOption,\n reviewsCount: result.pagingInfo.totalItems,\n isFilterApplied\n });\n }\n };\n\n private readonly _updateVoteUi = (reviewId: string, isHelpful: boolean): void => {\n let alreadyExists = false;\n let list = this.state.votedReviews.map(review => {\n if (review.reviewId === reviewId) {\n review.approved = isHelpful;\n alreadyExists = true;\n }\n return review;\n });\n\n if (!alreadyExists) {\n list = list.concat({ reviewId, approved: isHelpful });\n }\n\n this.setState({ votedReviews: list });\n };\n\n private readonly updateReviewHelpfulnessVote = (reviewId: string, isHelpful: boolean): void => {\n submitHelpfulnessVote(\n new SubmitHelpfulnessVoteInput(\n reviewId,\n getRnrPartnerId(this.props.context.actionContext),\n this.props.context.request.locale,\n isHelpful,\n this.getUserToken(this.props.context.request),\n getRnrAuthEndpointId(this.props.context.actionContext)\n ),\n this.props.context.actionContext\n )\n .then(() => {\n this._updateVoteUi(reviewId, isHelpful);\n })\n .catch((error: Error) => {\n throw new Error('[submitHelpfulnessVote]Error executing action');\n });\n };\n\n private readonly getUserToken = (context: Msdyn365.IRequestContext): string => {\n return context && context.user && context.user.token;\n };\n}\n\nexport default ReviewsList;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\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 { ICoreContext, ITelemetry } from '@msdyn365-commerce/core';\nimport { ICheckoutState, IGiftCardExtend } from '@msdyn365-commerce/global-state';\nimport { Cart, ChannelConfiguration, ChannelDeliveryOptionConfiguration } from '@msdyn365-commerce/retail-proxy';\nimport * as React from 'react';\n\nexport interface IOrderSummaryProps {\n subTotalLabel: string;\n shippingLabel: string;\n taxLabel: string;\n orderTotalLabel: string;\n loyaltyLabel?: string;\n giftcardLabel?: string;\n totalDiscountsLabel: string;\n context: ICoreContext;\n telemetry: ITelemetry;\n cart: Cart;\n channelConfiguration: ChannelConfiguration;\n id: string;\n typeName: string;\n otherChargeLabel?: string;\n freeText?: string;\n toBeCalculatedText?: string;\n checkoutState?: ICheckoutState;\n retailMultiplePickUpOptionEnabled?: boolean;\n channelDeliveryOptionConfig?: ChannelDeliveryOptionConfiguration;\n isTaxIncludedInPrice?: boolean;\n isShowTaxBreakup?: boolean;\n customerAccountLabel?: string;\n}\n\nexport interface IOrderSummaryLines {\n subtotal: React.ReactNode;\n shipping?: React.ReactNode;\n otherCharge?: React.ReactNode;\n tax: React.ReactNode;\n orderTotal: React.ReactNode;\n totalDiscounts?: React.ReactNode;\n giftCard?: React.ReactNode;\n loyalty?: React.ReactNode;\n customerAccount?: React.ReactNode;\n}\n\ninterface IOrderSummaryLineProps {\n label: string;\n context: ICoreContext;\n telemetry: ITelemetry;\n price?: number;\n freeText?: string;\n toBeCalculatedText?: string;\n id: string;\n typeName: string;\n cssLabel: string;\n priceCurrency?: string;\n}\n\ninterface IShippingOrderLine {\n cart: Cart;\n channelConfiguration: ChannelConfiguration;\n canShip?: boolean;\n hasDeliveryMethod?: boolean;\n hasShippingMethod?: boolean;\n freightFee?: number;\n}\n\nconst OrderSummaryLine: React.FC = ({\n price,\n label,\n context,\n id,\n typeName,\n toBeCalculatedText,\n freeText,\n cssLabel,\n priceCurrency\n}) => {\n return (\n

\n {label}\n {price || price === 0 ? (\n \n ) : (\n {toBeCalculatedText}\n )}\n

\n );\n};\n\nconst _buildOrderSummarySection = (\n props: IOrderSummaryProps,\n price: number | undefined,\n cssLabel: string,\n label: string = ''\n): React.ReactNode => {\n return (\n \n );\n};\n\nconst _computedLoyaltyAmount = (checkoutState: ICheckoutState): number => {\n return (checkoutState && checkoutState.loyaltyAmount) || 0;\n};\n\nconst _computedCustomerAccountAmount = (checkoutState: ICheckoutState): number => {\n return (checkoutState && checkoutState.customerAccountAmount) || 0;\n};\n\nconst _computeGiftCardAmount = (checkoutState: ICheckoutState, cart: Cart): number => {\n const giftCardCounter = (count: number, giftCard: IGiftCardExtend) => {\n return count + (giftCard.Balance || 0);\n };\n const giftCardTotalValue = (checkoutState.giftCardExtends || []).reduce(giftCardCounter, 0);\n const amount = (cart.TotalAmount || 0) - _computedLoyaltyAmount(checkoutState);\n return Math.min(giftCardTotalValue, amount);\n};\n\nconst getDeliveryConfiguration = (\n cart: Cart,\n channelConfiguration: ChannelConfiguration,\n channelDeliveryOptionConfig?: ChannelDeliveryOptionConfiguration,\n retailMultiplePickUpOptionEnabled?: boolean,\n isTaxIncludedInPrice?: boolean,\n isShowTaxBreakup?: boolean\n): IShippingOrderLine => {\n const pickupDeliveryModeCode = channelConfiguration && channelConfiguration.PickupDeliveryModeCode;\n const emailDeliveryModeCode = channelConfiguration && channelConfiguration.EmailDeliveryModeCode;\n const cartLines = cart.CartLines || [];\n const deliveryModes = cartLines.map(cartLine => cartLine.DeliveryMode);\n const taxOnShippingCharge = cart.TaxOnShippingCharge !== undefined ? cart.TaxOnShippingCharge : 0;\n const shippingChargeAmount = cart.ShippingChargeAmount !== undefined ? cart.ShippingChargeAmount : 0;\n\n // isTaxIncludedInPrice isShowTaxBreakup useProperties\n // False False/True shippingChargeAmount\n // True True shippingChargeAmount\n // True false shippingChargeAmount + taxOnShippingCharge\n // if either of isTaxIncludedInPrice or isShowTaxBreakup is undefined then we will execute old logic\n let freightFee: number | undefined = 0;\n if (isTaxIncludedInPrice === undefined || isShowTaxBreakup === undefined) {\n freightFee = cart.ShippingChargeAmount;\n } else {\n freightFee = isTaxIncludedInPrice && !isShowTaxBreakup ? shippingChargeAmount + taxOnShippingCharge : cart.ShippingChargeAmount;\n }\n const canShip = deliveryModes.some(\n deliveryMode =>\n !(\n deliveryMode !== '' &&\n (deliveryMode ===\n getDeliveryMode(deliveryMode, retailMultiplePickUpOptionEnabled, channelDeliveryOptionConfig, pickupDeliveryModeCode) ||\n deliveryMode === emailDeliveryModeCode)\n )\n );\n const hasDeliveryMethod = deliveryModes.some(deliveryMode => !!deliveryMode && deliveryMode !== emailDeliveryModeCode);\n const hasShippingMethod = deliveryModes.some(\n deliveryMode =>\n !!deliveryMode &&\n deliveryMode !==\n getDeliveryMode(deliveryMode, retailMultiplePickUpOptionEnabled, channelDeliveryOptionConfig, pickupDeliveryModeCode) &&\n deliveryMode !== emailDeliveryModeCode\n );\n return {\n canShip,\n hasDeliveryMethod,\n hasShippingMethod,\n freightFee\n } as IShippingOrderLine;\n};\n\nconst getDeliveryMode = (\n deliveryMode?: string,\n featureSate: boolean = false,\n channelDeliveryOptionConfig?: ChannelDeliveryOptionConfiguration,\n pickupDeliveryMode?: string\n) => {\n if (!featureSate) {\n return pickupDeliveryMode;\n }\n return channelDeliveryOptionConfig?.PickupDeliveryModeCodes?.find(dM => dM === deliveryMode);\n};\n\n// eslint-disable-next-line complexity\nexport const OrderSummary = (props: IOrderSummaryProps) => {\n const {\n SubtotalAmount,\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Existing Property.\n SubtotalAmountWithoutTax,\n TaxAmount,\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Existing Property.\n TaxOnNonShippingCharges,\n DiscountAmount = 0,\n TotalAmount,\n OtherChargeAmount\n } = props.cart;\n\n const { canShip, hasDeliveryMethod, hasShippingMethod, freightFee } = getDeliveryConfiguration(\n props.cart,\n props.channelConfiguration,\n props.channelDeliveryOptionConfig,\n props.retailMultiplePickUpOptionEnabled,\n props.isTaxIncludedInPrice,\n props.isShowTaxBreakup\n );\n\n let reactNodes: IOrderSummaryLines;\n // if either of isTaxIncludedInPrice or isShowTaxBreakup is undefined then we will execute old logic\n if (props.isTaxIncludedInPrice === undefined || props.isShowTaxBreakup === undefined) {\n reactNodes = {\n subtotal: _buildOrderSummarySection(props, SubtotalAmount, 'sub-total', props.subTotalLabel),\n tax: _buildOrderSummarySection(props, hasDeliveryMethod ? TaxAmount : undefined, 'tax-amount', props.taxLabel),\n orderTotal: _buildOrderSummarySection(props, TotalAmount, 'total', props.orderTotalLabel),\n otherCharge:\n (OtherChargeAmount && _buildOrderSummarySection(props, OtherChargeAmount, 'other-charges', props.otherChargeLabel)) ||\n undefined\n };\n } else {\n const otherChargeAmount = OtherChargeAmount !== undefined ? OtherChargeAmount : 0;\n const taxOnNonShippingCharges = TaxOnNonShippingCharges !== undefined ? TaxOnNonShippingCharges : 0;\n const isTaxGreaterThanZero = TaxAmount !== undefined && TaxAmount > 0;\n // isTaxIncludedInPrice isShowTaxBreakup useProperties\n // False False/True otherChargeAmount\n // True True otherChargeAmount\n // True false otherChargeAmount+TaxOnNonShippingCharges\n\n const otherChargeAmountTotal =\n props.isTaxIncludedInPrice && !props.isShowTaxBreakup ? otherChargeAmount + taxOnNonShippingCharges : otherChargeAmount;\n\n const subtotalAmountActual = props.isTaxIncludedInPrice && props.isShowTaxBreakup ? SubtotalAmountWithoutTax : SubtotalAmount;\n\n reactNodes = {\n subtotal: _buildOrderSummarySection(props, subtotalAmountActual, 'sub-total', props.subTotalLabel),\n tax: props.isShowTaxBreakup\n ? _buildOrderSummarySection(\n props,\n hasDeliveryMethod || isTaxGreaterThanZero ? TaxAmount : undefined,\n 'tax-amount',\n props.taxLabel\n )\n : '',\n orderTotal: _buildOrderSummarySection(props, TotalAmount, 'total', props.orderTotalLabel),\n otherCharge:\n (OtherChargeAmount && _buildOrderSummarySection(props, otherChargeAmountTotal, 'other-charges', props.otherChargeLabel)) ||\n undefined\n };\n }\n if (canShip) {\n reactNodes.shipping = _buildOrderSummarySection(props, hasShippingMethod ? freightFee : undefined, 'shipping', props.shippingLabel);\n }\n if (props.checkoutState) {\n const giftCardAmount = _computeGiftCardAmount(props.checkoutState, props.cart);\n const loyaltyAmount = _computedLoyaltyAmount(props.checkoutState);\n const customerAccountAmount = _computedCustomerAccountAmount(props.checkoutState);\n const totalAmountAfterGiftCard = (TotalAmount || 0) - giftCardAmount - loyaltyAmount - customerAccountAmount;\n\n if (loyaltyAmount > 0) {\n reactNodes.loyalty = _buildOrderSummarySection(props, -loyaltyAmount, 'loyalty', props.loyaltyLabel || 'Loyalty amount');\n }\n\n if (giftCardAmount > 0) {\n reactNodes.giftCard = _buildOrderSummarySection(props, -giftCardAmount, 'gift-card', props.giftcardLabel || 'Gift card amount');\n }\n\n if (customerAccountAmount > 0) {\n reactNodes.customerAccount = _buildOrderSummarySection(\n props,\n -customerAccountAmount,\n 'customer-credit-amount',\n props.customerAccountLabel || 'Customer Credit amount'\n );\n }\n\n reactNodes.orderTotal = _buildOrderSummarySection(\n { ...props, freeText: undefined },\n totalAmountAfterGiftCard,\n 'total',\n props.orderTotalLabel\n );\n }\n\n if (DiscountAmount > 0) {\n reactNodes.totalDiscounts = _buildOrderSummarySection(props, -DiscountAmount, 'total-discounts', props.totalDiscountsLabel);\n }\n\n return reactNodes;\n};\n","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nmodule.exports = basePropertyDeep;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nexport * from './add-payment-form';\nexport * from './error';\nexport * from './iframe';\nexport * from './payment-instrument-message';\nexport * from './waiting';\nexport * from './with-visibility-observer';\nexport * from './interfaces';\nexport * from './place-order';\nexport * from './empty-active-cart';\nexport * from './country-codes';\nexport { CartCheckout } from './checkout';\nexport * from './get-checkout-return-url';\n\n/**\n * AsyncResultStatusCode.\n */\nexport enum AsyncResultStatusCode {\n LOADING = 'LOADING',\n SUCCESS = 'SUCCESS',\n FAILED = 'FAILED'\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, 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","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","var baseEach = require('./_baseEach');\n\n/**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n}\n\nmodule.exports = baseAggregator;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Address, TenderLine, TokenizedPaymentCard } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { Button } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IPaymentInformationProps {\n resources: {\n changePaymentButtonText: string;\n cardTitle: string;\n cardNumberLabel: string;\n expiresDateLabel: string;\n addressTitle: string;\n };\n tokenizedPaymentCard?: TokenizedPaymentCard;\n tenderLine?: TenderLine;\n billingAddress?: Address;\n canEdit?: boolean;\n onEdit?(): void;\n}\n\n/**\n * PaymentInformation SFC.\n * @param root0\n * @param root0.resources\n * @param root0.resources.changePaymentButtonText\n * @param root0.resources.cardTitle\n * @param root0.resources.cardNumberLabel\n * @param root0.resources.expiresDateLabel\n * @param root0.resources.addressTitle\n * @param root0.tokenizedPaymentCard\n * @param root0.tenderLine\n * @param root0.billingAddress\n * @param root0.onEdit\n * @param root0.canEdit\n * @extends {React.SFC}\n */\nconst PaymentInformation: React.SFC = ({\n resources: { changePaymentButtonText, cardTitle, cardNumberLabel, expiresDateLabel, addressTitle },\n tokenizedPaymentCard,\n tenderLine,\n billingAddress,\n onEdit,\n canEdit\n}) => {\n const { NameOnCard = '', CardTypeId, CardTokenInfo = {}, ExpirationMonth = 0, ExpirationYear = 0 } = tokenizedPaymentCard || {};\n const { MaskedCardNumber = '' } = CardTokenInfo || tenderLine || {};\n const cardLastNDigit = MaskedCardNumber.substr(-4);\n\n // @ts-expect-error\n const isValidCardNumber = !isNaN(cardLastNDigit) && cardLastNDigit !== '';\n const { Name, Street, StreetNumber, City, State, ZipCode, ThreeLetterISORegionName, Phone } = billingAddress || {};\n\n return (\n
\n

{cardTitle}

\n

{NameOnCard}

\n {CardTypeId &&

{CardTypeId}

}\n {isValidCardNumber && (\n

\n {cardNumberLabel} {` `} {cardLastNDigit}\n

\n )}\n {(ExpirationMonth > 0 || ExpirationYear > 0) && (\n

\n {expiresDateLabel} {` `} {ExpirationMonth}/{ExpirationYear}\n

\n )}\n {billingAddress && (\n <>\n

{addressTitle}

\n

\n {Name}\n {` `}\n {Street}\n

\n {StreetNumber &&

{StreetNumber}

}\n

\n {City},{State}\n {` `}\n {ZipCode}\n {` `}\n {ThreeLetterISORegionName}\n {` `}\n {Phone}\n

\n \n )}\n {canEdit && (\n \n )}\n
\n );\n};\n\nexport default React.memo(PaymentInformation);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport checkoutStateDataAction from './checkout-state-data-action';\n\nexport * from './checkout-state';\nexport * from './checkout-state-data-action';\nexport * from './module-state-manager';\nexport * from './checkout-utilities.data';\n\nexport { checkoutStateDataAction };\n","var Stack = require('./_Stack'),\n equalArrays = require('./_equalArrays'),\n equalByTag = require('./_equalByTag'),\n equalObjects = require('./_equalObjects'),\n getTag = require('./_getTag'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\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 { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICheckoutExpressPaymentContainerViewProps } from './checkout-express-payment-container';\n\ninterface IContainerItemsComponent {\n isLoadingClassName: string;\n items: React.ReactNode[];\n}\n\nconst ContainerItemsComponent: React.FC = ({ isLoadingClassName, items }) => (\n
{items}
\n);\n\nconst CheckoutExpressPaymentContainerView: React.FC = ({\n checkoutPlainContainerProps,\n items,\n isReady,\n waiting,\n title,\n headerProps\n}) => {\n const isLoadingClassName: string = isReady ? 'showContainer' : 'notShowContainer';\n return (\n \n {title}\n {!isReady && waiting}\n \n \n );\n};\n\nexport default CheckoutExpressPaymentContainerView;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\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\n/**\n * SubmitHelpfulnessVote Input Action.\n */\nexport class SubmitHelpfulnessVoteInput implements IActionInput {\n public reviewId: string;\n\n public tenantId: string;\n\n public locale: string;\n\n public serviceEndpoint: string;\n\n public isHelpful: boolean;\n\n public authToken: string;\n\n constructor(reviewId: string, tenantId: string, locale: string, isHelpful: boolean, authToken: string, serviceEndpoint: string) {\n this.reviewId = reviewId;\n this.tenantId = tenantId;\n this.locale = locale;\n this.isHelpful = isHelpful;\n this.authToken = authToken;\n this.serviceEndpoint = serviceEndpoint;\n }\n\n public getCacheKey = () => 'SubmitHelpfulnessVote';\n\n public getCacheObjectType = () => 'SubmitHelpfulnessVote';\n\n public dataCacheType = (): CacheType => 'none';\n}\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport CheckoutSectionContainer from './checkout-section-container';\nimport CheckoutSectionContainerView from './checkout-section-container.view';\n\nexport * from './checkout-section-container';\nexport { ICheckoutSectionContainerConfig, ICheckoutSectionContainerProps, width } from './checkout-section-container.props.autogenerated';\nexport * from './checkout-section-container.view';\nexport * from './components/loading';\n\nexport { CheckoutSectionContainer, CheckoutSectionContainerView };\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\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 CheckoutGiftCard from './checkout-gift-card';\nimport CheckoutGiftCardView from './checkout-gift-card.view';\n\nexport * from './checkout-gift-card';\nexport * from './checkout-gift-card.data';\nexport * from './checkout-gift-card.props.autogenerated';\nexport * from './checkout-gift-card.view';\nexport * from './components';\n\nexport { CheckoutGiftCard, CheckoutGiftCardView };\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nexport * from './checkout-terms-and-conditions.check-box';\nexport * from './checkout-terms-and-conditions.error-message';\nexport * from './checkout-terms-and-conditions.error-title';\n","var baseProperty = require('./_baseProperty'),\n basePropertyDeep = require('./_basePropertyDeep'),\n isKey = require('./_isKey'),\n toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\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","var castPath = require('./_castPath'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isIndex = require('./_isIndex'),\n isLength = require('./isLength'),\n toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\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","/*!\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","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\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 ICheckoutTermsAndConditionsErrorMessageProps {\n message?: string;\n}\n\n/**\n * AddPaymentForm SFC.\n * @param root0\n * @param root0.message\n * @extends {React.FC}\n */\nconst CheckoutTermsAndConditionsErrorMessage: React.FC = ({ message }) => {\n if (!message) {\n return null;\n }\n\n return

{message}

;\n};\n\nexport default CheckoutTermsAndConditionsErrorMessage;\n","var isStrictComparable = require('./_isStrictComparable'),\n keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nmodule.exports = getMatchData;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport CheckoutGuestProfile from './checkout-guest-profile';\nimport CheckoutGuestProfileView from './checkout-guest-profile.view';\n\nexport * from './checkout-guest-profile';\nexport * from './checkout-guest-profile.data';\nexport {\n ICheckoutGuestProfileConfig,\n ICheckoutGuestProfileProps,\n ICheckoutGuestProfileResources\n} from './checkout-guest-profile.props.autogenerated';\nexport * from './checkout-guest-profile.view';\nexport * from './components';\n\nexport { CheckoutGuestProfile, CheckoutGuestProfileView };\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Button, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nexport interface IAddContactInfoInput {\n inputRef?: React.RefObject;\n hasError: boolean;\n email: string;\n resources: {\n emailLabel: string;\n emailErrortext: string;\n saveBtnLabel: string;\n cancelBtnLabel: string;\n };\n canSubmit: boolean;\n canCancel: boolean;\n onChange(email: string): void;\n onSubmit(): void;\n onCancel(): void;\n}\n\nexport interface IAddContactInfo {\n addFormProps: INodeProps;\n submitButton: React.ReactNode;\n cancelButton: React.ReactNode;\n inputGroupProps: INodeProps;\n label: React.ReactNode;\n error: React.ReactNode;\n input: React.ReactNode;\n}\n\n/**\n * On Input change handler function.\n * @param onChange -On change input function.\n * @returns Call of onChange function.\n */\nconst onInputChangeHandler = (onChange: (email: string) => void) => (event: React.ChangeEvent): void => {\n onChange(event.target.value || '');\n};\n\nconst getAddContactInfo = ({\n hasError,\n inputRef,\n email,\n canSubmit,\n canCancel,\n onChange,\n onSubmit,\n onCancel,\n resources: { emailLabel, emailErrortext, saveBtnLabel, cancelBtnLabel }\n}: IAddContactInfoInput): IAddContactInfo => {\n const onInputChange = onInputChangeHandler(onChange);\n\n return {\n addFormProps: { className: 'ms-checkout-guest-profile__add-contact-info' },\n submitButton: canSubmit && (\n \n ),\n cancelButton: canCancel && (\n \n ),\n inputGroupProps: { className: classnames('ms-checkout-guest-profile__input', { 'is-invalid': hasError }) },\n label: (\n \n ),\n error: hasError && (\n \n {emailErrortext}\n \n ),\n input: (\n \n )\n };\n};\n\nexport default getAddContactInfo;\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","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nmodule.exports = matchesStrictComparable;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\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","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\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","var isStrictComparable = require('./_isStrictComparable'),\n keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nmodule.exports = getMatchData;\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 CheckoutLoyalty from './checkout-loyalty';\nimport CheckoutLoyaltyView from './checkout-loyalty.view';\n\nexport * from './checkout-loyalty';\nexport * from './checkout-loyalty.data';\nexport * from './checkout-loyalty.props.autogenerated';\nexport * from './checkout-loyalty.view';\nexport * from './components';\n\nexport { CheckoutLoyalty, CheckoutLoyaltyView };\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 * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\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 { IPromoBannerViewProps } from './promo-banner';\n\nconst PromoBannerView: React.FC = props => {\n const {\n promoBannerProps,\n contentProps,\n closeButton,\n bannerMessages,\n promoBannerTextProps,\n promoBannerLinksProps,\n carouselProps,\n promoBannerText,\n handleLinks,\n handleText\n } = props;\n\n const slides =\n bannerMessages &&\n bannerMessages.map((message, index) => {\n return (\n \n {promoBannerText}\n {message.text && }\n {message.links && message.links.length > 0 && (\n \n )}\n \n );\n });\n\n return (\n \n \n {closeButton}\n \n );\n};\nexport default PromoBannerView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IVideoPlayerAdditionalContentViewProps } from './components/additional-content';\nimport { IVideoPlayerViewProps } from './video-player';\n\n/**\n * Render Additional Content.\n * @param additionalContent - Additional content view props.\n * @returns JSX Element.\n */\nconst renderAdditionalContent = (additionalContent: IVideoPlayerAdditionalContentViewProps) => {\n if (additionalContent.additionalContentItems) {\n return (\n \n <>\n {additionalContent.additionalContentItems.heading}\n \n {additionalContent.additionalContentItems.text}\n \n {additionalContent.additionalContentItems.links}\n \n \n \n \n );\n }\n\n return null;\n};\n\nconst VideoPlayerView: React.FC = props => {\n return (\n
\n {props.player}\n \n {props.title}\n {props.text}\n {props.additionalContent && renderAdditionalContent(props.additionalContent)}\n \n {props.links}\n \n \n
\n );\n};\n\nexport default VideoPlayerView;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\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","var Symbol = require('./_Symbol'),\n Uint8Array = require('./_Uint8Array'),\n eq = require('./eq'),\n equalArrays = require('./_equalArrays'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\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 { IAddContactInfo, ICheckoutGuestProfileViewProps, IShowContactInfo } from './checkout-guest-profile';\n\nexport const ShowContactInfo: React.FC = ({ showInfoProps, email, editButton }) => (\n \n {email}\n {editButton}\n \n);\n\nexport const AddContactInfo: React.FC = ({\n addFormProps,\n submitButton,\n cancelButton,\n inputGroupProps,\n label,\n error,\n input\n}) => (\n \n \n {label}\n {error}\n {input}\n \n {submitButton}\n {cancelButton}\n \n);\n\nconst CheckoutGuestProfileView: React.FC = ({\n moduleProps,\n checkoutErrorRef,\n alert,\n showContactInfo,\n addContactInfo\n}) => {\n return (\n \n {alert}\n {showContactInfo && }\n {addContactInfo && }\n \n );\n};\n\nexport default CheckoutGuestProfileView;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = baseProperty;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","var baseKeys = require('./_baseKeys'),\n getTag = require('./_getTag'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isArrayLike = require('./isArrayLike'),\n isBuffer = require('./isBuffer'),\n isPrototype = require('./_isPrototype'),\n isTypedArray = require('./isTypedArray');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n setTag = '[object Set]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\nfunction isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n}\n\nmodule.exports = isEmpty;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\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","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\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, StringExtensions, 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 * Confirmed Ship Date Label.\n */\n confirmedShipDateLabel?: 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 * Sales line confirmed ship date.\n */\n confirmedShipDate?: 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 renderConfirmedShipDate: (props: ICartLineProps) => {\n if (!props.isSalesLine || props.confirmedShipDate === undefined || StringExtensions.isNullOrEmpty(props.confirmedShipDate)) {\n return null;\n }\n return (\n
\n {props.resources.confirmedShipDateLabel}\n {props.confirmedShipDate}\n
\n );\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 renderConfirmedShipDate = cartLineItemFunctions.renderConfirmedShipDate(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 {renderConfirmedShipDate}\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","var baseMatches = require('./_baseMatches'),\n baseMatchesProperty = require('./_baseMatchesProperty'),\n identity = require('./identity'),\n isArray = require('./isArray'),\n property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nmodule.exports = baseIteratee;\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 * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","var isArrayLike = require('./isArrayLike');\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\nmodule.exports = createBaseEach;\n","/**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n}\n\nmodule.exports = arrayAggregator;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = createBaseFor;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\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 * as Msdyn365 from '@msdyn365-commerce/core';\nimport { IModuleStateProps, EnabledPaymentsForOBO } from '@msdyn365-commerce-modules/checkout-utilities';\nimport { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\nimport classname from 'classnames';\n\nimport { reaction } from 'mobx';\nimport { ICheckoutExpressPaymentContainerData } from './checkout-express-payment-container.data';\nimport {\n ICheckoutExpressPaymentContainerProps,\n ICheckoutExpressPaymentContainerHeadingData\n} from './checkout-express-payment-container.props.autogenerated';\nimport { WaitingComponent } from '../../common/waiting';\n\n/**\n * ICheckoutExpressPaymentContainerModuleProps interface.\n */\nexport interface ICheckoutExpressPaymentContainerModuleProps\n extends ICheckoutExpressPaymentContainerProps,\n IModuleStateProps {}\n\nexport interface ICheckoutExpressPaymentContainerViewProps\n extends ICheckoutExpressPaymentContainerProps<{}>,\n ICheckoutExpressPaymentContainerState {\n checkoutPlainContainerProps: IModuleProps;\n items: React.ReactNode[];\n isReady?: boolean;\n waiting?: React.ReactNode;\n title?: React.ReactNode;\n headerProps: INodeProps;\n}\n\n/**\n * Checkout Express Payment Container State.\n */\nexport interface ICheckoutExpressPaymentContainerState {\n isReady?: boolean;\n shouldHideExpressPaymentContainer?: boolean;\n}\n\n/**\n *\n * CheckoutExpressPaymentContainer component\n * @extends {React.PureComponent>}\n */\n@observer\nexport class CheckoutExpressPaymentContainer extends React.PureComponent<\n ICheckoutExpressPaymentContainerProps,\n ICheckoutExpressPaymentContainerState\n> {\n private readonly moduleClassName: string = 'ms-checkout-express-section-container';\n\n public constructor(props: ICheckoutExpressPaymentContainerModuleProps) {\n super(props);\n this.state = {\n isReady: false,\n shouldHideExpressPaymentContainer: this.props.data.checkout.result?.shippingAddressFromExpressCheckout ? true : false\n };\n }\n\n public componentDidMount(): void {\n reaction(\n () => this.props.data.checkout.result?.isExpressPaymentModulesReady,\n () => {\n const items = this._getItems();\n if (items.length === 0) {\n this.props.context.telemetry.error('Checkout express payment container content is empty, module wont render');\n } else {\n let isReady = true;\n\n for (const item of items) {\n // @ts-ignore\n if (item.key.includes('checkout-express')) {\n // @ts-ignore\n const extensionPropertyKey = `is${item.props.config.paymentTenderType}ExpressModuleReady`;\n\n const isModuleReady =\n this.props.data.checkout.result?.isExpressPaymentModulesReady?.find(\n property => property.Key === extensionPropertyKey\n )?.Value?.BooleanValue ?? false;\n isReady = isReady && isModuleReady;\n }\n }\n this.setState({ isReady });\n }\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.isExpressCheckoutApplied,\n isExpressCheckoutApplied => {\n this.setState({ shouldHideExpressPaymentContainer: isExpressCheckoutApplied });\n }\n );\n }\n\n public render(): JSX.Element | null {\n const {\n config: { checkoutExpressPaymentContainerHeading },\n resources: { checkoutExpressPaymentSectionLoadingMessage },\n data: { checkout }\n } = this.props;\n\n if (!checkout.result || checkout.result?.isExpressCheckoutApplied || checkout.result?.isPaymentVerificationRedirection) {\n this.props.context.telemetry.information('Other payment is applied, checkout express payment container module wont render');\n return null;\n }\n\n if (this.props.context.request.user.isOBORequest && EnabledPaymentsForOBO.ExpressPayment === 0) {\n this.props.context.telemetry.information('isOBORequest is enabled, Checkout express payment container module wont render');\n return null;\n }\n\n const items = this._getItems();\n if (items.length === 0) {\n this.props.context.telemetry.error('Checkout express payment container content is empty, module wont render');\n return null;\n }\n\n const shouldHideExpressPaymentContainerClassName: string = this.state.shouldHideExpressPaymentContainer ? 'hide' : '';\n\n const moduleClassName = classname(\n 'ms-checkout-express-payment-container',\n this.props.config.className,\n shouldHideExpressPaymentContainerClassName\n );\n\n const viewProps: ICheckoutExpressPaymentContainerViewProps = {\n ...this.props,\n\n checkoutPlainContainerProps: {\n moduleProps: this.props,\n className: moduleClassName\n },\n items: items,\n isReady: this.state.isReady,\n waiting: ,\n title: checkoutExpressPaymentContainerHeading && this._renderMsdyn365Text(checkoutExpressPaymentContainerHeading),\n headerProps: { className: 'ms-checkout-express-payment-container__head' }\n };\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private readonly _getItems = (): React.ReactNode[] => {\n const { slots } = this.props;\n return (slots && slots.primary && slots.primary.length && slots.primary) || [];\n };\n\n /**\n * Renders heading.\n * @param checkoutExpressPaymentContainerHeading - The checkout express container heading.\n * @returns React node.\n */\n private _renderMsdyn365Text(checkoutExpressPaymentContainerHeading: ICheckoutExpressPaymentContainerHeadingData): 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 private _handleCheckoutExpressContainerHeadingChange = (event: Msdyn365.ContentEditableEvent) =>\n (this.props.config.checkoutExpressPaymentContainerHeading!.text = event.target.value);\n}\n\nexport default CheckoutExpressPaymentContainer;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\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 CheckoutTermsAndConditions from './checkout-terms-and-conditions';\nimport CheckoutTermsAndConditionsView from './checkout-terms-and-conditions.view';\n\nexport * from './checkout-terms-and-conditions';\nexport * from './checkout-terms-and-conditions.data';\nexport {\n ICheckoutTermsAndConditionsConfig,\n ICheckoutTermsAndConditionsProps,\n ICheckoutTermsAndConditionsResources\n} from './checkout-terms-and-conditions.props.autogenerated';\nexport * from './checkout-terms-and-conditions.view';\nexport * from './components';\n\nexport { CheckoutTermsAndConditions, CheckoutTermsAndConditionsView };\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","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\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","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\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 ICheckoutLoyaltyInput {\n className: string;\n type: string;\n value: string | number;\n min: number;\n max: number;\n ariaValueMax: number;\n ariaValueMin: number;\n ariaValueNow: number;\n id: string;\n step: string;\n onChange(event: React.ChangeEvent): void;\n onBlur(event: React.FocusEvent): void;\n}\n\nconst AdressInput: React.FC = ({\n className,\n type,\n value,\n min,\n max,\n step,\n ariaValueMax,\n ariaValueMin,\n ariaValueNow,\n onChange,\n onBlur,\n id\n}) => (\n \n);\n\nexport default AdressInput;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var Stack = require('./_Stack'),\n baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nmodule.exports = baseIsMatch;\n","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nexport * from './get-add-contact-info';\nexport * from './get-show-contact-info';\n","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\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","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\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","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\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","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nmodule.exports = baseAssignValue;\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 IPromoBannerCloseButton {\n closeButtonAriaLabel?: string;\n label?: string;\n telemetryContent?: ITelemetryContent;\n onClose(): void;\n}\n\nexport const PromoBannerCloseButton: React.FC = ({ closeButtonAriaLabel, label, telemetryContent, onClose }) => {\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PromoBannerClose);\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 * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILinksData } from '../promo-banner.props.autogenerated';\n\nexport interface IPromoBannerLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n telemetryContent: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\nexport const PromoBannerLinks: React.FC = ({ links, requestContext, onTextChange, telemetryContent }) => {\n const editableLinks = _mapEditableLinks(links, telemetryContent);\n return (\n \n {editableLinks && editableLinks.length > 0 ? (\n \n ) : null}\n \n );\n};\n\nconst _mapEditableLinks = (linkdata: ILinksData[], telemetryContent: ITelemetryContent): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n linkdata.forEach((link, index) => {\n // Construct telemetry attribute to render\n const payLoad = getPayloadObject('click', telemetryContent, '', '');\n const linkText = link.linkText ? link.linkText : '';\n payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(telemetryContent, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-promo-banner__link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes,\n onClick: onTelemetryClick(telemetryContent, payLoad, linkText)\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\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 * as React from 'react';\n\nexport interface IPromoBannerText {\n text: string;\n requestContext: Msdyn365.IRequestContext;\n onTextChange(event: Msdyn365.ContentEditableEvent): void;\n}\n\nexport const PromoBannerText: React.FC = ({ text, onTextChange, requestContext }) => {\n return ;\n};\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 * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { PromoBannerCloseButton, PromoBannerLinks, PromoBannerText } from './components';\nimport { IBannerMessagesData, IPromoBannerProps, IPromoBannerResources } from './promo-banner.props.autogenerated';\n\nexport interface IPromoBannerState {\n animating: boolean;\n isVisible: boolean;\n activeIndex: number;\n}\n\nexport interface IPromoBannerViewProps extends IPromoBannerProps<{}>, IPromoBannerState {\n promoBannerProps: IModuleProps;\n contentProps: INodeProps;\n bannerMessages: IBannerMessagesData[];\n promoBannerTextProps: INodeProps;\n promoBannerLinksProps: INodeProps;\n carouselProps: INodeProps;\n closeButton?: React.ReactNode;\n className: string;\n promoBannerText: string;\n resources: IPromoBannerResources;\n onDismiss(): void;\n handleText(): void;\n handleLinks(): void;\n}\n\n/**\n *\n * PromoBannerModule component.\n * @extends {React.PureComponent>}\n */\nclass PromoBanner extends React.PureComponent, IPromoBannerState> {\n public state: IPromoBannerState = {\n animating: false,\n isVisible: true,\n activeIndex: 0\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 public render(): JSX.Element | null {\n const { bannerMessages, dismissEnabled, interval, hideFlipper, autoplay, className = '' } = this.props.config;\n const { closeButtonAriaLabel, closeButtonLabel, bannerText, bannerAriaLabel } = this.props.resources;\n const { isVisible, activeIndex } = this.state;\n\n if (!isVisible) {\n this.props.context.telemetry.error('Promo banner content is empty, module wont render.');\n return null;\n }\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 className: classnames('ms-promo-banner', className),\n isVisible, // State data\n onDismiss: this._onDismiss, // Methods\n handleLinks: this.handleLinkTextChange,\n handleText: this.handleTextChange,\n\n promoBannerProps: {\n className: classnames('ms-promo-banner', className),\n moduleProps: this.props,\n role: 'banner',\n 'aria-label': bannerAriaLabel\n },\n promoBannerTextProps: {\n tag: PromoBannerText\n },\n promoBannerLinksProps: {\n tag: PromoBannerLinks,\n telemetryContent: this.telemetryContent\n },\n contentProps: { className: 'ms-promo-banner__content' },\n promoBannerText: bannerText,\n bannerMessages,\n activeIndex,\n carouselProps: {\n tag: Carousel,\n className: 'ms-promo-banner__carousel',\n activeIndex,\n next: this._next,\n previous: this._previous,\n onIndicatorsClickHandler: this._goToIndex,\n hideIndicator: hideFlipper,\n interval,\n hideFlipper,\n autoplay\n },\n closeButton: dismissEnabled && (\n \n )\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleTextChange = (event: Msdyn365.ContentEditableEvent) => {\n if (this.props.config.bannerMessages && this.props.config.bannerMessages[0]) {\n this.props.config.bannerMessages[0].text = event.target.value;\n }\n };\n\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent) => {\n if (this.props.config.bannerMessages && this.props.config.bannerMessages[1]) {\n const links = this.props.config.bannerMessages[1].links;\n if (links) {\n links[linkIndex].linkText = event.target.value;\n }\n }\n };\n\n private readonly _next = (): void => {\n const nextIndex = this._isLastItem() ? 0 : this.state.activeIndex + 1;\n this._goToIndex(nextIndex);\n };\n\n private readonly _previous = (): void => {\n const nextIndex = this._isFirstItem()\n ? this.props.config.bannerMessages\n ? this.props.config.bannerMessages.length - 1\n : 0\n : this.state.activeIndex - 1;\n this._goToIndex(nextIndex);\n };\n\n private readonly _goToIndex = (index: number): void => {\n if (this.state.animating) {\n return;\n }\n this.setState({ activeIndex: index });\n };\n\n private readonly _isFirstItem = () => this.state.activeIndex === 0;\n\n private readonly _isLastItem = () =>\n this.props.config.bannerMessages && this.state.activeIndex === this.props.config.bannerMessages.length - 1;\n\n private readonly _onDismiss = (): void => {\n this.setState({ isVisible: false });\n };\n}\n\nexport default PromoBanner;\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\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\nconst Loading: React.FC = () =>
;\n\nexport default Loading;\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 Amount = 'msax-cc-amount'\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\nexport function paymentConnectorAmountMessage(amount: number): IPaymentConnectorPostMessage {\n return paymentConnectorMessage(`${amount}`, PaymentConnectorPostMessageType.Amount);\n}\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\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","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var baseHasIn = require('./_baseHasIn'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\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","var baseIsMatch = require('./_baseIsMatch'),\n getMatchData = require('./_getMatchData');\n\n/**\n * Performs a partial deep comparison between `object` and `source` to\n * determine if `object` contains equivalent property values.\n *\n * **Note:** This method is equivalent to `_.matches` when `source` is\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.isMatch(object, { 'b': 2 });\n * // => true\n *\n * _.isMatch(object, { 'b': 1 });\n * // => false\n */\nfunction isMatch(object, source) {\n return object === source || baseIsMatch(object, source, getMatchData(source));\n}\n\nmodule.exports = isMatch;\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 { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICheckoutSectionContainerItem, ICheckoutSectionContainerViewProps } from './checkout-section-container';\n\nconst ItemComponent: React.FC = ({ loading, itemProps, item }) => (\n <>\n {loading}\n {item}\n \n);\n\nconst CheckoutSectionContainerView: React.FC = ({ checkoutPlainContainerProps, items }) => (\n \n {items.map(item => (\n \n ))}\n \n);\n\nexport default CheckoutSectionContainerView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { 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 * as Msdyn365 from '@msdyn365-commerce/core';\nimport { IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\nimport { EmailRegex, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport { CheckoutModule, ErrorLocation } from '@msdyn365-commerce/global-state';\nimport classnames from 'classnames';\nimport { action, computed, reaction, when } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\nimport { focusOnCheckoutError } from '../../checkout-errors';\nimport { ErrorComponent } from '../../common';\n\nimport { ICheckoutGuestProfileData } from './checkout-guest-profile.data';\nimport { ICheckoutGuestProfileProps } from './checkout-guest-profile.props.autogenerated';\nimport getAddContactInfo, { IAddContactInfo } from './components/get-add-contact-info';\nimport getShowContactInfo, { IShowContactInfo } from './components/get-show-contact-info';\n\nexport * from './components/get-add-contact-info';\nexport * from './components/get-show-contact-info';\n\ninterface ICheckoutGuestProfileState {\n email: string;\n hasCheckoutError?: boolean;\n errorMessage?: string;\n}\n\nexport interface ICheckoutGuestProfileModuleProps extends ICheckoutGuestProfileProps, IModuleStateProps {}\n\nexport interface ICheckoutGuestProfileViewProps extends ICheckoutGuestProfileProps, ICheckoutGuestProfileState {\n moduleProps: IModuleProps;\n showContactInfo?: IShowContactInfo;\n addContactInfo?: IAddContactInfo;\n alert?: React.ReactNode;\n checkoutErrorRef?: React.RefObject;\n\n onChange?(email: string): void;\n onEdit?(): void;\n onSubmit?(): void;\n onCancel?(): void;\n}\n\n/**\n *\n * CheckoutGuestProfile component.\n * @extends {React.PureComponent, ICheckoutGuestProfileState>}\n */\n// @ts-expect-error\n@withModuleState\n@observer\nclass CheckoutGuestProfile extends React.Component {\n public state: ICheckoutGuestProfileState = {\n email:\n (this.props.context &&\n this.props.context.request &&\n this.props.context.request.user &&\n this.props.context.request.user.isAuthenticated &&\n this.props.context.request.user.emailAddress) ||\n ''\n };\n\n private readonly inputRef: 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 hasEmailError(): boolean {\n return this.props.moduleState.hasError && !this.state.hasCheckoutError;\n }\n\n public componentDidMount(): void {\n when(\n () => this.isDataReady,\n async () => {\n await this.init();\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.isExpressCheckoutApplied,\n async isExpressCheckoutApplied => {\n const emailAddressFromExpressCheckout = this.props.data.checkout.result?.emailAddressFromExpressCheckout ?? '';\n const isEmailFromExpressCheckoutDifferent =\n !StringExtensions.isNullOrEmpty(emailAddressFromExpressCheckout) &&\n emailAddressFromExpressCheckout !== this.state.email;\n\n if (\n isExpressCheckoutApplied &&\n (!this.props.data.checkout.result?.isExpressAddressApplied || isEmailFromExpressCheckoutDifferent)\n ) {\n await this.submitEmail(emailAddressFromExpressCheckout);\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 (checkoutError && checkoutError.errorLocation === ErrorLocation.CheckoutGuestProfile && checkoutError.errorMessage) {\n this._setErrorMessage(checkoutError.errorMessage);\n }\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.checkoutErrorFocus,\n checkoutErrorFocus => {\n if (checkoutErrorFocus === CheckoutModule.CheckoutGuestProfile) {\n focusOnCheckoutError(this.checkoutErrorRef, this.props.context.actionContext);\n }\n }\n );\n }\n }\n\n public shouldComponentUpdate(nextProps: ICheckoutGuestProfileModuleProps, nextState: ICheckoutGuestProfileState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element {\n const {\n config: { className },\n resources,\n moduleState: { isReady, hasExternalSubmitGroup }\n } = this.props;\n const { hasCheckoutError, errorMessage } = this.state;\n const email = this.props.data.checkout.result?.guestCheckoutEmail ?? '';\n\n const viewProps: ICheckoutGuestProfileViewProps = {\n ...this.props,\n ...this.state,\n checkoutErrorRef: this.checkoutErrorRef,\n onChange: this.onChange,\n onEdit: this.onEdit,\n onCancel: this.onCancel,\n onSubmit: this.onSubmit,\n\n moduleProps: {\n moduleProps: this.props,\n className: classnames('ms-checkout-guest-profile', className, isReady ? 'show' : 'add')\n },\n alert: hasCheckoutError && errorMessage && (\n \n ),\n showContactInfo: isReady\n ? getShowContactInfo({\n canEdit: !hasExternalSubmitGroup,\n email,\n resources,\n onEdit: this.onEdit\n })\n : undefined,\n addContactInfo: !isReady\n ? getAddContactInfo({\n email: this.state.email,\n hasError: this.hasEmailError,\n resources,\n inputRef: this.inputRef,\n onChange: this.onChange,\n canSubmit: !hasExternalSubmitGroup,\n onSubmit: this.onSubmit,\n canCancel: !hasExternalSubmitGroup && !!email,\n onCancel: this.onCancel\n })\n : undefined\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private readonly init = async (): Promise => {\n const checkoutState = this.props.data.checkout.result;\n const customerAccountInformation = this.props.data.accountInformation?.result;\n\n const hasInvoiceLine = checkoutState?.checkoutCart.hasInvoiceLine;\n let updateEmail: string = '';\n\n // if obo enabled and profile selected, we need to send the order status to obo user not store manager.\n if (Msdyn365.isOboRequest(this.props.context.request)) {\n updateEmail =\n customerAccountInformation && customerAccountInformation.Email !== undefined\n ? customerAccountInformation.Email\n : this.setErrorMsgOboUserEmailEmpty();\n } else {\n updateEmail = this.state.email;\n }\n\n const emailOnCart = checkoutState?.checkoutCart.cart.ReceiptEmail;\n const email = hasInvoiceLine\n ? this.props.context.request.user.emailAddress ?? ''\n : emailOnCart ??\n (checkoutState?.isExpressCheckoutApplied && !StringExtensions.isNullOrEmpty(checkoutState.emailAddressFromExpressCheckout)\n ? checkoutState.emailAddressFromExpressCheckout\n : undefined) ??\n updateEmail;\n\n const isEmailValid = this.isEmailValid(email);\n this.props.moduleState.init({\n onEdit: this.onEdit,\n onCancel: this.onCancel,\n onSubmit: this.onSubmit,\n status: hasInvoiceLine ? 'disabled' : email && isEmailValid ? 'ready' : 'updating',\n hasError: !!email && !isEmailValid\n });\n\n if (email) {\n await this.updateGuestProfile(email);\n checkoutState?.updateHasGuestCheckoutEmail({ newHasGuestCheckoutEmail: true });\n } else {\n checkoutState?.updateHasGuestCheckoutEmail({ newHasGuestCheckoutEmail: false });\n }\n };\n\n private readonly onChange = (rowEmail: string): void => {\n const email = (rowEmail || '').replace(new RegExp('[<>]', 'gi'), '');\n this.setState({ email });\n if (this.props.moduleState.hasError) {\n // Clear error during user updating the email\n this.props.moduleState.setHasError(false);\n this.setState({\n hasCheckoutError: false\n });\n }\n };\n\n private readonly setErrorMsgOboUserEmailEmpty = (): string => {\n // Clear prior error\n this.props.moduleState.setHasError(false);\n this.setState({\n hasCheckoutError: false\n });\n return '';\n };\n\n private readonly isEmailValid = (email: string): boolean => {\n return EmailRegex.defaultRegex.test(email);\n };\n\n private readonly updateGuestProfile = async (newGuestCheckoutEmail: string): Promise => {\n if (this.props.data.checkout.result) {\n await this.props.data.checkout.result.updateGuestCheckoutEmail({ newGuestCheckoutEmail });\n this.setState({ email: newGuestCheckoutEmail });\n }\n };\n\n private readonly onEdit = (): void => {\n this.props.telemetry.information('Guest profile onEdit is called.');\n\n this.props.moduleState.onUpdating();\n };\n\n private readonly onSubmit = async (): Promise => {\n this.props.telemetry.information('Guest profile onSubmit is called.');\n\n const { email } = this.state;\n await this.submitEmail(email);\n };\n\n /**\n * Submit the email address.\n * @param email - The email to be submitted.\n *\n */\n private readonly submitEmail = async (email: string): Promise => {\n const isValid = this.isEmailValid(email);\n if (!isValid) {\n this.props.moduleState.setHasError(true);\n\n const input = this.inputRef.current?.focus && (this.inputRef.current as HTMLElement);\n input?.focus();\n } else {\n this.props.moduleState.onReady();\n await this.updateGuestProfile(email);\n }\n };\n\n private readonly onCancel = (): void => {\n this.props.telemetry.information('Guest profile onCancel is called.');\n\n // Reset to the saved value\n if (!this.props.data.checkout.result) {\n return;\n }\n\n const email = this.props.data.checkout.result.guestCheckoutEmail;\n if (!email) {\n // It has no saved email, set to status updating and request user to fill the email form\n this.props.moduleState.onUpdating();\n } else {\n // It has saved email, set to status ready\n this.setState({\n email\n });\n this.props.moduleState.setHasError(false);\n this.setState({\n hasCheckoutError: false\n });\n this.props.moduleState.onReady();\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 hasCheckoutError: true,\n errorMessage\n });\n };\n}\n\nexport default CheckoutGuestProfile;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","var Stack = require('./_Stack'),\n baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nmodule.exports = baseIsMatch;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IModuleStateManager, IModuleStateProps, withModuleState } from '@msdyn365-commerce-modules/checkout-utilities';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport get from 'lodash/get';\nimport { computed, reaction } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { ICheckoutSectionContainerData } from './checkout-section-container.data';\nimport { ICheckoutSectionContainerProps } from './checkout-section-container.props.autogenerated';\nimport LoadingComponent from './components/loading';\n\n/**\n * ICheckoutSectionContainerModuleProps interface.\n */\nexport interface ICheckoutSectionContainerModuleProps\n extends ICheckoutSectionContainerProps,\n IModuleStateProps {\n enableControl: boolean;\n}\n\ninterface ICheckoutSectionContainerState {\n isCollapse?: boolean;\n}\n\nexport interface ICheckoutSectionContainerItem {\n id: string;\n loading?: React.ReactNode;\n itemProps: INodeProps;\n item: React.ReactNode;\n}\n\nexport interface ICheckoutSectionContainerViewProps extends ICheckoutSectionContainerProps<{}> {\n className: string;\n checkoutPlainContainerProps: IModuleProps;\n items: ICheckoutSectionContainerItem[];\n}\n\nconst paymentInstrumentModuleId = 'payment-instrument';\n\nconst zeroAmount = 0;\n\n/**\n *\n * CheckoutPlainContainer component.\n * @extends {React.Component>}\n */\n@observer\nexport class CheckoutPlainContainer extends React.Component {\n @computed public get amountDue(): number {\n const {\n data: { checkout }\n } = this.props;\n if (!checkout?.result) {\n return 0;\n }\n\n const checkoutResult = checkout.result;\n const cart = checkoutResult.checkoutCart?.cart;\n if (!cart || !cart.CartLines || !ArrayExtensions.hasElements(cart.CartLines)) {\n return 0;\n }\n\n return cart.TotalAmount ?? zeroAmount;\n }\n\n public constructor(props: ICheckoutSectionContainerModuleProps) {\n super(props);\n this.state = { isCollapse: false };\n }\n\n public componentDidMount(): void {\n const items = this.getItems();\n const childIds = items.map((item: React.ReactNode) => get(item, 'props.id'));\n const shouldEnableSinglePaymentAuthorizationCheckout: boolean =\n this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout ?? false;\n\n this.props.moduleState.init({\n onEdit: this.onEdit,\n onCancel: shouldEnableSinglePaymentAuthorizationCheckout ? undefined : this.onCancel,\n onSubmit: shouldEnableSinglePaymentAuthorizationCheckout ? undefined : this.onSubmit,\n childIds\n });\n\n reaction(\n () => this.props.moduleState.isReady,\n () => {\n this.onContainerReady();\n }\n );\n\n reaction(\n () => this.props.moduleState.shouldSubmitContainer,\n () => {\n this.onSubmit();\n }\n );\n\n // Reaction to collapse the payment section for new checkout flow.\n reaction(\n () => this.props.data.checkout.result?.shouldCollapsePaymentSection,\n shouldCollapsePaymentSection => {\n const isPaymentSectionContainer = ArrayExtensions.hasElements(\n this.props.moduleState.childIds.filter(childId => childId.includes(paymentInstrumentModuleId))\n );\n\n if (shouldEnableSinglePaymentAuthorizationCheckout && isPaymentSectionContainer) {\n this.setState({ isCollapse: shouldCollapsePaymentSection });\n }\n }\n );\n\n // Reaction to submit section container for new checkout flow\n reaction(\n () => this.props.data.checkout.result?.shouldTriggerPaymentWithPlaceOrder,\n () => {\n const isPaymentSectionContainer = ArrayExtensions.hasElements(\n this.props.moduleState.childIds.filter(childId => childId.includes(paymentInstrumentModuleId))\n );\n\n if (shouldEnableSinglePaymentAuthorizationCheckout && isPaymentSectionContainer) {\n this.onSubmit();\n }\n }\n );\n\n // Reaction to set isPaymentSectionContainerReady for new checkout flow.\n reaction(\n () => this.props.moduleState.isReady,\n async isReady => {\n const isPaymentSectionContainer = ArrayExtensions.hasElements(\n this.props.moduleState.childIds.filter(childId => childId.includes(paymentInstrumentModuleId))\n );\n\n if (shouldEnableSinglePaymentAuthorizationCheckout && isPaymentSectionContainer && this.amountDue > zeroAmount) {\n await this.props.data.checkout.result?.updateIsPaymentSectionContainerReady({\n newIsPaymentSectionContainerReady: isReady\n });\n }\n }\n );\n\n // Reaction to set isPaymentSectionContainerHasError for new checkout flow.\n reaction(\n () => this.props.moduleState.hasError,\n async hasError => {\n const isPaymentSectionContainer = ArrayExtensions.hasElements(\n this.props.moduleState.childIds.filter(childId => childId.includes(paymentInstrumentModuleId))\n );\n\n if (shouldEnableSinglePaymentAuthorizationCheckout && isPaymentSectionContainer) {\n await this.props.data.checkout.result?.updateIsPaymentSectionContainerHasError({\n newIsPaymentSectionContainerHasError: hasError\n });\n }\n }\n );\n\n reaction(\n () => this.props.data.checkout.result?.isCheckoutCallFailed,\n async () => {\n const isPaymentSectionContainer = ArrayExtensions.hasElements(\n this.props.moduleState.childIds.filter(childId => childId.includes(paymentInstrumentModuleId))\n );\n\n if (isPaymentSectionContainer && this.props.data.checkout.result?.isCheckoutCallFailed) {\n this.onEdit();\n await this.props.data.checkout.result.updateIsCheckoutCallFailed({ newIsCheckoutCallFailed: true });\n }\n }\n );\n }\n\n public componentDidUpdate(): void {\n if (!this.props.moduleState.hasExternalSubmitGroup) {\n return;\n }\n\n /**\n * Review all modules to updating status if one of the modules has error.\n */\n const { childIds, hasError, getModule } = this.props.moduleState;\n const hasReadyOrSkippedItems = childIds.some((childId: string) => {\n const state = getModule(childId);\n return !!state && (state.isReady || state.isSkipped);\n });\n if (hasReadyOrSkippedItems && hasError) {\n this.onEdit();\n }\n }\n\n public shouldComponentUpdate(nextProps: ICheckoutSectionContainerModuleProps, nextState: ICheckoutSectionContainerState): 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 enableControl,\n moduleState,\n config: { width }\n } = this.props;\n\n const items = this.getItems();\n if (items.length === 0) {\n this.props.context.telemetry.error('Checkout section content is empty, module wont render');\n return null;\n }\n\n const moduleClassName = classname(\n 'ms-checkout-section-container',\n {\n 'has-initialized': moduleState.hasInitialized,\n 'is-ready': moduleState.isReady,\n 'is-updating': !moduleState.isReady,\n container: width === 'container',\n 'col-12 fullwidth': width === 'fluid'\n },\n this.props.config.className\n );\n\n const viewProps: ICheckoutSectionContainerViewProps = {\n ...this.props,\n\n className: moduleClassName,\n checkoutPlainContainerProps: {\n moduleProps: this.props,\n className: moduleClassName\n },\n items: items.map((item: React.ReactNode) => {\n const childId = get(item, 'props.id');\n const state = moduleState.getModule(childId);\n\n // Modules has not completed initializing or it's disable\n const hidden =\n this.state.isCollapse || (state.hasModuleState && (!state.hasInitialized || state.isDisabled || state.isSkipped));\n return {\n id: childId,\n loading: state.hasModuleState && !state.hasInitialized && ,\n itemProps: {\n 'data-type-name': state.typeName,\n className: classname('ms-checkout-section-container__item', {\n hidden,\n initialized: state.hasInitialized,\n disabled: state.isDisabled,\n skipped: state.isSkipped,\n ready: state.isReady,\n updating: state.isUpdating,\n pending: state.isPending\n })\n },\n item: React.cloneElement(item as React.ReactElement, { enableControl })\n };\n })\n };\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private readonly getItems = (): React.ReactNode[] => {\n const { slots } = this.props;\n return (slots && slots.primary && slots.primary.length && slots.primary) || [];\n };\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 private readonly clearError = (): void => {\n // Clear error before action, otherwise it will rise conflict;\n this.getActiveChildModuleStates().forEach(state => {\n state.hasError && state.setHasError(false);\n });\n };\n\n private readonly onSubmit = (): void => {\n const isPaymentSectionContainer = ArrayExtensions.hasElements(\n this.props.moduleState.childIds.filter(childId => childId.includes(paymentInstrumentModuleId))\n );\n\n this.props.telemetry.information('Section container onSubmit is called.');\n\n this.clearError();\n this.getActiveChildModuleStates().forEach(state => {\n !state.isReady && state.onSubmit && state.onSubmit();\n });\n\n // Handle when the amount due is zero\n if (\n this.props.data.checkout.result?.shouldEnableSinglePaymentAuthorizationCheckout &&\n isPaymentSectionContainer &&\n this.amountDue === zeroAmount\n ) {\n this.props.data.checkout.result?.updateIsPaymentSectionContainerReady({\n newIsPaymentSectionContainerReady: true\n });\n }\n };\n\n private readonly onCancel = (): void => {\n this.props.telemetry.information('Section container onCancel is called.');\n\n this.clearError();\n this.getActiveChildModuleStates().forEach(state => {\n !state.isReady && state.onCancel && state.onCancel();\n });\n };\n\n private readonly onEdit = (): void => {\n this.props.telemetry.information('Section container onEdit is called.');\n\n this.getActiveChildModuleStates().forEach(state => {\n (state.isReady || state.isSkipped) && state.onEdit && state.onEdit();\n });\n };\n\n private readonly onContainerReady = (): void => {\n this.props.telemetry.information('Section container onContainerReady is called.');\n\n this.getActiveChildModuleStates().forEach(state => {\n state.isReady && state.onContainerReady && state.onContainerReady();\n });\n };\n}\n\nexport default withModuleState(CheckoutPlainContainer);\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 * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\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","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nexport * from './get-form';\nexport * from './get-item';\nexport * from './get-list';\nexport * from './title';\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\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","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\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