{"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:///./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:///src/modules/social-share-item/social-share-item.tsx?e01b","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/bulk-purchase/bulk-purchase.view.tsx?2550","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/product-collection/product-collection.view.tsx?9eb3","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:///src/modules/product-collection/product-collection.tsx?b9b8","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/themes/nile-theme/views/components/cartlineitem.component.tsx?e56a","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/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:///src/modules/adventureworks/views/ratings-histogram.view.tsx?1adf","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/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:///./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/social-share-item/social-share-item.view.tsx?ce9b","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/bulk-purchase/bulk-purchase.tsx?d704","webpack:///src/modules/checkout/components/place-order-button.tsx?c8b4","webpack:///../../../src/module-state-manager/index.ts?8e3a","webpack:///./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","nativeKeys","overArg","baseIsMatch","getMatchData","matchesStrictComparable","source","matchData","WeakMap","getNative","arrayAggregator","baseAggregator","baseIteratee","setter","initializer","collection","iteratee","accumulator","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","SubmitUserReviewInput","channelId","userReviewData","authorization","getCacheKey","getCacheObjectType","dataCacheType","n","Array","SocialShareItem","_getSocialShareItem","bind","viewprops","SocialShareItemElement","src","icon","socialMedia","SocialMediaComponent","SocialMedia","Facebook","postUrl","document","Twitter","Pinterest","Linkedin","Mail","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","_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","BulkPurchaseViewComponent","container","content","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","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","_renderCarousel","carouselContainer","_renderProduct","_renderGrid","gridContainer","ProductContainer","productComponent","ProductCollectionView","ProductCollectionContainer","SingleSlideCarouselComponentProps","GridComponentProps","isCarousel","seeAllButton","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","CarouselView","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","ProductCollection","_getProductsDimensionsAvailabilities","dimensionsToDisplayOnProductCard","app","dimensionsInProductCard","dimensionsToDisplayAsSwatch","dimensionsAsSwatchType","validProducts","ArrayExtensions","validValues","hasElements","DimensionTypes","none","productsDimensionAvailabilities","getDimensionAvailabilitiesForProductSearchResultAction","DimensionAvailabilitiesForProductSearchResultInput","DimensionSwatchDisplayTypes","initProductState","productCollectionProducts","productCollection","equals","_getProduct","_this$state$productsD","allowBackNavigation","breaCrumbType","breadcrumbType","allowBack","quickviewSlot","quickview","productComparisonButtonSlot","productComparisonButton","reviewCountAriaLabelValue","TotalRatings","ratingCountAriaLabel","ratingCountAriaLabelSingleUser","isPriceMinMaxEnabled","priceResources","priceRangeSeparator","ProductComponent","ratingAriaLabel","quickViewButton","dimensionAvailabilities","dimensionAvailability","_product$MasterProduc","masterProductId","MasterProductId","_getActivePrice","productsList","getPriceForProductSearchResult","PriceForProductSearchResultInput","_getSeeAllButton","recommendation","headingLabel","catalogId","getCatalogId","validateCatalogId","searchPageLink","seeAllButtonText","productPrices","enableAffiliationBasedPricing","shouldDisplaySeeAllButton","recommendationListId","layout","headingComponent","updatedProducts","getProductData","ObjectExtensions","isNullOrUndefined","productCollectionViewProps","SingleSlideCarousel","flipperPrevLabel","flipperNextLabel","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","childId","_isPaymentSectionContainer","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","CartLineItemFunctions","renderProductDimensions","Product","DimensionStrings","Dimensions","productDimension","DimensionTypeValue","DimensionValue","IsGiftCard","OfferId","OfferName","isSalesLine","PeriodicDiscount","EffectiveAmount","BasePrice","EffectivePercentage","inventoryInformationLabel","inventoryCssName","inventoryLabelClassName","IsInvoiceLine","unitOfMeasureDisplayType","DefaultUnitOfMeasure","_props$context$reques","cartline","shippingChargeLines","ChargeLines","chargeLine","IsShipping","chargeTotal","CalculatedAmount","priceComponent","_cartline$ChargeLines","otherCharges","chargeline","CartLine","_props$data$product","_props$data$product2","_props$data$product3","_props$data$product4","_props$data$product5","_props$primaryImageUr","destructDimensionStrings","fallbackImageUrl","getFallbackImageUrl","ItemId","apiSettings","productDimensions","cropFocalRegion","renderDisountLines","renderInventoryLabel","renderUnitOfMeasure","renderShippingLabel","renderOtherCharges","productAttribute","productName","imgeClassName","newValue","quantityOnChange","lineIndex","prodUrlData","articleLabel","Price","AdjustedPrice","MaxVariantPrice","MinVariantPrice","Image","fallBackSrc","altText","loadFailureBehavior","NetAmount","nodes","isOutOfStock","console","log","IncrementalQuantity","max","maxQuantity","currentCount","currentQuantity","decrementButtonAriaLabel","incrementButtonAriaLabel","isCartStateReady","isGiftCard","classNames","NetAmountWithAllInclusiveTax","DiscountAmountWithoutTax","_generateQuantityandPrice","priceEditorResources","CartLinePriceEditor","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","VideoPlayerView","Uint8Array","eq","mapToArray","setToArray","symbolProto","symbolValueOf","valueOf","byteLength","byteOffset","buffer","convert","stacked","ShowContactInfo","AddContactInfo","CheckoutGuestProfileView","_ref3","showContactInfo","addContactInfo","RatingsHistogramView","componentId","_data$ratingsSummary$","_data$ratingsSummary$2","_data$ratingsSummary$3","_data$ratingsSummary$4","_data$ratingsSummary$5","_data$ratingsSummary$6","reviewsCountString","numberOfReviewsString","buttonProps","starLabel","bar","histogramItem","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","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","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","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","toFixed","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","roundedRating","getRatingAriaLabel","ActiveProductComponent","savingsText","Fragment","imageUrl","imgData","imageProps","renderProductPlacementImage","basePrice","adjustedPrice","renderPrice","hideRating","AverageRating","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","_product$Name","_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","Loading","withVisibilityObserver","VisibilityObserver","isVisible","selfRef","initMutationObserver","targetNode","getElementsByTagName","MutationObserver","mutationObserver","handleVisibilityChange","observe","childList","subtree","stopMutationObserver","_this$state$observer","disconnect","offsetWidth","offsetHeight","visibilityObserver","SocialShareItemView","renderItem","star5Count","star4Count","star3Count","star2Count","star1Count","totalCount","percentage","formattedPercent","NumberFormat","barItemAriaLabel","Progress","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","hidden","LoadingComponent","initialized","skipped","ready","updating","pending","BulkPurchase","collapseRef","_dimensionDropDownChange","_this$collapseRef$cur","reEvaluateHeight","_toggleCollapse","isExpanded","_this$props$data$prod","hasDimensionsInProps","hasDimensionsInData","_renderCollapseContent","_renderCollapseButton","_renderCollapse","bulkPurchaseHeaderTitle","Collapse","_renderMainContent","RichTextComponent","bulkPurchaseDescriptionText","_renderMatrix","_this$props$data$orde","_this$props$data$cust","isMultipleCatalogsFeatureEnabled","ProductDimensionsMatrix","dimensions","orderTemplates","dimensionOnChange","isMultipleCatalogFeatureEnabledInHq","buttonsStates","onPlaceOrderHandler","isBusy","buttonSetState","CheckoutPlaceOrderButton","setIsBusy","useState","payload","TelemetryEvent","Purchase","CarouselModule","_handleDismissCarousel","dismissCarousel","_next","nextIndex","animating","closeNow","_previous","_onExiting","_onExited","_goToIndex","newIndex","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","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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MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,M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","file":"static/js/13.68381e6f1c4c33a27b5f.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","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","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { SocialMedia, SocialMediaComponent } from '@msdyn365-commerce/components';\nimport MsDyn365 from '@msdyn365-commerce/core';\nimport { IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ISocialShareItemConfig, ISocialShareItemProps, socialMedia } from './social-share-item.props.autogenerated';\n\nexport interface ISocialShareItemViewProps extends ISocialShareItemProps {\n SocialShareItemElement: React.ReactNode | null;\n SocialShareItem: IModuleProps;\n}\n\n/**\n *\n * SocialShareItem component.\n * @extends {React.PureComponent>}\n */\nclass SocialShareItem extends React.PureComponent> {\n constructor(props: ISocialShareItemProps) {\n super(props);\n\n this._getSocialShareItem = this._getSocialShareItem.bind(this);\n }\n\n public render(): JSX.Element | null {\n const viewprops = {\n ...this.props,\n SocialShareItem: {\n moduleProps: this.props,\n className: 'ms-social-share-item'\n },\n SocialShareItemElement: this._getSocialShareItem()\n };\n\n return this.props.renderView(viewprops) as React.ReactElement;\n }\n\n private _getSocialShareItem(): React.ReactNode | null {\n const src = this.props.config.icon;\n if (MsDyn365.isBrowser) {\n switch (this.props.config.socialMedia) {\n case socialMedia.facebook:\n return (\n \n );\n case socialMedia.twitter:\n return (\n \n );\n case socialMedia.pinterest:\n return (\n \n );\n case socialMedia.linkedin:\n return (\n \n );\n case socialMedia.mail:\n return (\n \n );\n default:\n return null;\n }\n }\n return null;\n }\n}\n\nexport default SocialShareItem;\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 { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IBulkPurchaseViewProps } from './bulk-purchase';\n\n/**\n * Bulk purchase view.\n * @param props - Bulk purchase view props.\n * @returns React node with a module.\n */\nexport const BulkPurchaseViewComponent: React.FC = props => {\n return {props.content};\n};\n\nexport default BulkPurchaseViewComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * 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 { INodeProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IProductCollectionViewProps, IProductComponentViewProps } from './product-collection';\n\nconst ProductCollectionView: React.FC = props => {\n const {\n heading,\n ProductCollectionContainer,\n products,\n SingleSlideCarouselComponentProps,\n GridComponentProps,\n isCarousel,\n seeAllButton\n } = props;\n\n if (products) {\n return (\n \n {heading}\n {seeAllButton}\n {isCarousel ? _renderCarousel(SingleSlideCarouselComponentProps, products) : _renderGrid(GridComponentProps, products)}\n \n );\n }\n props.context.telemetry.error('Product collection content is empty, module wont render.');\n return null;\n};\n\nconst _renderCarousel = (carouselContainer: INodeProps, items: IProductComponentViewProps[]): JSX.Element => {\n return {items && items.map(_renderProduct)};\n};\n\nconst _renderGrid = (gridContainer: INodeProps, items: IProductComponentViewProps[]): JSX.Element => {\n return {items && items.map(_renderProduct)};\n};\n\nconst _renderProduct = (product: IProductComponentViewProps): JSX.Element => {\n const { ProductContainer, productComponent } = product;\n\n return {productComponent};\n};\n\nexport default ProductCollectionView;\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","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IProductsDimensionsAvailabilities } from '@msdyn365-commerce/commerce-entities';\nimport { IPriceComponentResources, ProductComponent } from '@msdyn365-commerce/components';\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getCatalogId, getUrlSync, ICoreContext } from '@msdyn365-commerce/core';\nimport { ProductPrice, ProductSearchResult } from '@msdyn365-commerce/retail-proxy';\nimport {\n ArrayExtensions,\n DimensionAvailabilitiesForProductSearchResultInput,\n DimensionTypes,\n DimensionSwatchDisplayTypes,\n getDimensionAvailabilitiesForProductSearchResultAction,\n getPriceForProductSearchResult,\n IDimensionsApp,\n ObjectExtensions,\n PriceForProductSearchResultInput,\n validateCatalogId\n} from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getTelemetryObject,\n IComponentNodeProps,\n IModuleProps,\n INodeProps,\n ISingleSlideCarouselProps,\n ITelemetryContent,\n NodeTag,\n SingleSlideCarousel\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IProductCollectionData } from './product-collection.data';\nimport { IProductCollectionProps, layout } from './product-collection.props.autogenerated';\n\nexport interface IProductCollectionViewProps extends IProductCollectionProps {\n heading?: React.ReactNode;\n ProductCollectionContainer: IModuleProps;\n SingleSlideCarouselComponentProps: INodeProps;\n GridComponentProps: INodeProps;\n products: IProductComponentViewProps[];\n isCarousel: boolean;\n productPrices?: ProductPrice[];\n seeAllButton?: React.ReactNode;\n}\n\nexport interface IProductComponentViewProps {\n ProductContainer: INodeProps;\n productComponent: React.ReactNode;\n}\nexport interface IProductComponentState {\n products: ProductSearchResult[];\n productsDimensionAvailabilities?: IProductsDimensionsAvailabilities[][];\n}\n\n/**\n * ProductCollection component.\n */\nclass ProductCollection extends React.PureComponent, IProductComponentState> {\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly productPrices: ProductPrice[];\n\n constructor(props: IProductCollectionProps) {\n super(props);\n this.productPrices = [];\n this.state = {\n products: this.props.config.productCollection.products || []\n };\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public async componentDidMount(): Promise {\n if (this.props.config.enableAffiliationBasedPricing && this.props.context.actionContext.requestContext.user.isAuthenticated) {\n await this._getActivePrice();\n }\n }\n\n public render(): JSX.Element | null {\n const { heading, className, shouldDisplaySeeAllButton } = this.props.config;\n const { resources } = this.props;\n const recommendation = this.props.config.productCollection.recommendationListId;\n\n // Initialize state in case if the products were not found during initial module render\n // eslint-disable-next-line @typescript-eslint/no-floating-promises -- Initialize data if not there.\n this.initProductState(this.props.config.productCollection);\n\n const products = this.state.products;\n const isCarousel = this.props.config.layout === layout.carousel;\n const headingLabel = heading ? heading.text : '';\n const headingComponent = heading && (\n \n );\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- product check for safety.\n const updatedProducts = products?.map((item: ProductSearchResult, index: number) => {\n const getProductData = this._getProduct(item, index);\n return !ObjectExtensions.isNullOrUndefined(getProductData) ? getProductData : undefined;\n });\n\n const productCollectionViewProps = {\n ...this.props,\n heading: headingComponent,\n SingleSlideCarouselComponentProps: {\n tag: SingleSlideCarousel,\n className: '',\n flipperPrevLabel: `${headingLabel} ${resources.flipperPrevious}`,\n flipperNextLabel: `${headingLabel} ${resources.flipperNext}`,\n parentId: this.props.id,\n telemetryContent: this.telemetryContent\n } as IComponentNodeProps,\n ProductCollectionContainer: {\n moduleProps: this.props,\n className: classnames('ms-product-collection', className)\n },\n GridComponentProps: {\n tag: 'ul' as NodeTag,\n className: 'ms-product-collection__items'\n },\n isCarousel,\n\n products:\n ArrayExtensions.hasElements(updatedProducts) &&\n updatedProducts.filter(item => {\n return item !== undefined;\n }),\n productPrices: this.productPrices,\n seeAllButton:\n recommendation && shouldDisplaySeeAllButton && ArrayExtensions.hasElements(updatedProducts)\n ? this._getSeeAllButton(recommendation, headingLabel)\n : undefined\n };\n return this.props.renderView(productCollectionViewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading!.text = event.target.value);\n\n /**\n * Get products dimension availabilities.\n * @param products - Products.\n * @returns Promise.\n */\n private readonly _getProductsDimensionsAvailabilities = async (products: ProductSearchResult[]): Promise => {\n const context = this.props.context as ICoreContext;\n const dimensionsToDisplayOnProductCard = context.app.config.dimensionsInProductCard;\n const dimensionsToDisplayAsSwatch = context.app.config.dimensionsAsSwatchType;\n const validProducts = ArrayExtensions.validValues(products);\n if (\n ArrayExtensions.hasElements(validProducts) &&\n ArrayExtensions.hasElements(dimensionsToDisplayOnProductCard) &&\n !dimensionsToDisplayOnProductCard.includes(DimensionTypes.none) &&\n ArrayExtensions.hasElements(dimensionsToDisplayAsSwatch) &&\n !dimensionsToDisplayAsSwatch.includes(DimensionTypes.none)\n ) {\n const productsDimensionAvailabilities = await getDimensionAvailabilitiesForProductSearchResultAction(\n new DimensionAvailabilitiesForProductSearchResultInput(\n validProducts,\n this.props.context as ICoreContext,\n DimensionSwatchDisplayTypes.productCard\n ),\n this.props.context.actionContext\n );\n\n if (ArrayExtensions.hasElements(productsDimensionAvailabilities)) {\n this.setState({ productsDimensionAvailabilities });\n }\n }\n };\n\n /**\n * Helper method to initialize products state.\n * @param productCollection - List of products.\n */\n private readonly initProductState = async (productCollection: Msdyn365.IProductList) => {\n let products = this.state.products;\n const productCollectionProducts = productCollection.products;\n if (!ArrayExtensions.hasElements(products) && ArrayExtensions.hasElements(productCollectionProducts)) {\n products = productCollectionProducts;\n this.setState({ products });\n } else if (\n ArrayExtensions.hasElements(products) &&\n ArrayExtensions.hasElements(productCollectionProducts) &&\n !ArrayExtensions.equals(products, productCollectionProducts)\n ) {\n products = productCollectionProducts;\n this.setState({ products });\n } else if (productCollectionProducts === undefined && ArrayExtensions.hasElements(this.state.products)) {\n products = [];\n this.setState({ products: products });\n }\n\n if (Msdyn365.msdyn365Commerce.isBrowser && !ArrayExtensions.hasElements(this.state.productsDimensionAvailabilities)) {\n await this._getProductsDimensionsAvailabilities(products);\n }\n };\n\n private readonly _getProduct = (product: ProductSearchResult, index: number): IProductComponentViewProps | null => {\n if (!product || !product.Name) {\n this.props.telemetry.trace('[product-collection] Product or product name is null');\n return null;\n }\n const telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n const { imageSettings, allowBackNavigation } = this.props.config;\n const resources = this.props.resources;\n const breaCrumbType = this.props.context.app.config.breadcrumbType;\n const allowBack = allowBackNavigation && (breaCrumbType === 'back' || breaCrumbType === 'categoryAndBack');\n const quickviewSlot =\n this.props.slots && this.props.slots.quickview && this.props.slots.quickview.length > 0 ? this.props.slots.quickview[0] : null;\n const productComparisonButtonSlot = ArrayExtensions.hasElements(this.props.slots.productComparisonButton)\n ? this.props.slots.productComparisonButton[0]\n : null;\n\n const reviewCount = 1;\n const reviewTotalRatings = Number(product.TotalRatings);\n const reviewCountAriaLabelValue =\n reviewTotalRatings > reviewCount ? resources.ratingCountAriaLabel : resources.ratingCountAriaLabelSingleUser;\n const isPriceMinMaxEnabled = this.props.data.featureState.result?.find(\n featureState => featureState.Name === 'Dynamics.AX.Application.RetailSearchPriceRangeFeature'\n );\n const priceResources: IPriceComponentResources = {\n priceRangeSeparator: resources.priceRangeSeparator\n };\n return {\n ProductContainer: {\n tag: 'li' as NodeTag,\n className: 'ms-product-collection__item',\n role: 'listitem',\n key: index\n },\n productComponent: (\n \n ArrayExtensions.hasElements(dimensionAvailability) &&\n dimensionAvailability[0].masterProductId === (product.MasterProductId ?? product.RecordId)\n )}\n />\n )\n };\n };\n\n /**\n * Get the active price for products.\n */\n private readonly _getActivePrice = async (): Promise => {\n const productsList = this.state.products;\n const products = await getPriceForProductSearchResult(\n new PriceForProductSearchResultInput(productsList),\n this.props.context.actionContext\n );\n if (Msdyn365.msdyn365Commerce.isBrowser) {\n await this._getProductsDimensionsAvailabilities(products);\n }\n\n this.setState({ products });\n };\n\n /**\n * Get the see all button.\n * @param recommendation - Recommendation.\n * @param headingLabel - Heading label.\n * @returns IProductComponentSeeAllViewProps - Product component see all view props.\n */\n private readonly _getSeeAllButton = (recommendation: string, headingLabel: string): React.ReactNode => {\n if (!Msdyn365.msdyn365Commerce.isBrowser) {\n return null;\n }\n\n const catalogId = getCatalogId(this.props.context.request);\n validateCatalogId(catalogId);\n const searchPageLink = getUrlSync('search', this.props.context.actionContext);\n if (!searchPageLink) {\n return null;\n }\n\n const url = new URL(searchPageLink, window.location.href);\n url.searchParams.set('recommendation', recommendation);\n url.searchParams.set('title', headingLabel);\n url.searchParams.set('catalogid', `${catalogId}`);\n\n return (\n \n {this.props.resources.seeAllButtonText}\n \n );\n };\n}\n\nexport default ProductCollection;\n","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","/*--------------------------------------------------------------\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 { CartLinePriceEditor, ICartLinePriceEditorResources, PriceComponent } from '@msdyn365-commerce/components';\r\nimport { IComponentProps, IGridSettings, IImageSettings, Image } from '@msdyn365-commerce/core';\r\nimport { ICartState } from '@msdyn365-commerce/global-state';\r\nimport { ChannelDeliveryOptionConfiguration, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\r\nimport { CartLine, ProductPrice, SalesLine } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport { ArrayExtensions, getFallbackImageUrl } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { getPayloadObject, getTelemetryAttributes, IncrementalQuantity, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport classNames from 'classnames';\r\nimport * as React from 'react';\r\n//import { remove } from 'fs-extra';\r\n\r\n/**\r\n * ICartlineResourceString: Interface for specifying the\r\n * resource strings that the component needs.\r\n */\r\nexport interface ICartlineResourceString {\r\n /**\r\n * Display string for discount label\r\n */\r\n discountStringText: string;\r\n\r\n /**\r\n * String for size key\r\n */\r\n sizeString: string;\r\n\r\n /**\r\n * String for color key\r\n */\r\n colorString: string;\r\n\r\n /**\r\n * String associated with the configuration product dimension\r\n */\r\n configString: string;\r\n\r\n /**\r\n * String for style key\r\n */\r\n styleString: string;\r\n\r\n /**\r\n * String for amount key\r\n */\r\n amountString?: string;\r\n\r\n /**\r\n * Display string for quantity label\r\n */\r\n quantityDisplayString: string;\r\n\r\n /**\r\n * Display string for quantity label\r\n */\r\n inputQuantityAriaLabel: string;\r\n\r\n /**\r\n * Aria label for the decrement button in quantity component\r\n */\r\n decrementButtonAriaLabel: string;\r\n\r\n /**\r\n * Aria label for the increment button in quantity component\r\n */\r\n incrementButtonAriaLabel: string;\r\n\r\n /**\r\n * Original text screenreader\r\n */\r\n originalPriceText: string;\r\n\r\n /**\r\n * Current text screenreader\r\n */\r\n currentPriceText: string;\r\n\r\n /**\r\n * Shipping Charges Text\r\n */\r\n shippingChargesText: string;\r\n\r\n priceEditorResources?: ICartLinePriceEditorResources;\r\n articleLabel: string;\r\n}\r\n\r\ninterface ICartLineData {\r\n cartLine: CartLine | SalesLine;\r\n cartState?: ICartState;\r\n product?: SimpleProduct;\r\n}\r\n\r\n/**\r\n * ICartLineProps: The props required to render cartLineitem.\r\n */\r\nexport interface ICartLineProps extends IComponentProps {\r\n /**\r\n * The flag to change the quantity component from intractable to static.\r\n */\r\n disableQuantityInteractivity?: boolean;\r\n\r\n /**\r\n * The primary image url.\r\n */\r\n primaryImageUrl?: string;\r\n\r\n /**\r\n * The product url.\r\n */\r\n productUrl?: string;\r\n\r\n /**\r\n * GridSettings for the product image in cartLine.\r\n */\r\n gridSettings: IGridSettings;\r\n\r\n /**\r\n * ImageSettings for the product image in cartLine.\r\n */\r\n imageSettings: IImageSettings;\r\n\r\n /**\r\n * Boolean flag to indicate if the item is out of stock.\r\n */\r\n isOutOfStock?: boolean;\r\n\r\n /**\r\n * Flag to make quantity section editable.\r\n */\r\n isQuantityEditable?: boolean;\r\n\r\n /**\r\n * Max quantity for line item.\r\n */\r\n maxQuantity?: number;\r\n\r\n /**\r\n * Current quantity for line item.\r\n */\r\n currentQuantity?: number;\r\n\r\n /**\r\n * Resource string for the component.\r\n */\r\n resources: ICartlineResourceString;\r\n\r\n /**\r\n * SalesLine flag.\r\n */\r\n isSalesLine?: boolean;\r\n\r\n /**\r\n * Error message to show in place of quantity.\r\n */\r\n errorMessage?: string;\r\n\r\n /**\r\n * Inventory information label.\r\n */\r\n inventoryInformationLabel?: string;\r\n\r\n /**\r\n * Inventory information class name.\r\n */\r\n inventoryLabelClassName?: string;\r\n\r\n /**\r\n * Flag to show/hide shipping charges for line items.\r\n */\r\n showShippingChargesForLineItems?: boolean;\r\n\r\n /**\r\n * Boolean flag to indicate if cart state status is ready.\r\n */\r\n isCartStateReady?: boolean;\r\n\r\n /**\r\n * Chanel Delivery Option configuration is from api.\r\n */\r\n channelDeliveryOptionConfig?: ChannelDeliveryOptionConfiguration;\r\n\r\n /**\r\n * The telemetry content.\r\n */\r\n telemetryContent?: ITelemetryContent;\r\n\r\n /**\r\n * The cart line index.\r\n */\r\n lineIndex?: number;\r\n\r\n /**\r\n * Quantity onChange callback.\r\n */\r\n quantityOnChange?(cartLine: CartLine, newQuantity: number, lineIndex?: number): boolean;\r\n}\r\n\r\ninterface IDimensionStrings {\r\n /**\r\n * String for size key.\r\n */\r\n sizeString: string;\r\n\r\n /**\r\n * String for color key.\r\n */\r\n colorString: string;\r\n\r\n /**\r\n * String associated with the configuration product dimension.\r\n */\r\n configString: string;\r\n\r\n /**\r\n * String for style key.\r\n */\r\n styleString: string;\r\n\r\n /**\r\n * String for amount key.\r\n */\r\n amountString?: string;\r\n}\r\n\r\nconst CartLineItemFunctions = {\r\n renderProductDimensions: (Product: SimpleProduct, DimensionStrings: IDimensionStrings) => {\r\n if (!Product || !Product.Dimensions) {\r\n return [];\r\n }\r\n\r\n return Product.Dimensions.map(productDimension => {\r\n if (productDimension.DimensionTypeValue === 1) {\r\n return (\r\n

\r\n \r\n {DimensionStrings.colorString}:\r\n {productDimension.DimensionValue && productDimension.DimensionValue.Value}\r\n \r\n
\r\n );\r\n }\r\n\r\n if (productDimension.DimensionTypeValue === 2) {\r\n return (\r\n
\r\n \r\n {DimensionStrings.configString}:\r\n {productDimension.DimensionValue && productDimension.DimensionValue.Value}\r\n \r\n
\r\n );\r\n }\r\n\r\n if (productDimension.DimensionTypeValue === 3) {\r\n return (\r\n
\r\n \r\n {DimensionStrings.sizeString}:\r\n {productDimension.DimensionValue && productDimension.DimensionValue.Value}\r\n \r\n
\r\n );\r\n }\r\n\r\n if (productDimension.DimensionTypeValue === 4) {\r\n return (\r\n
\r\n \r\n {Product.IsGiftCard ? DimensionStrings.amountString : DimensionStrings.styleString}:\r\n {productDimension.DimensionValue && productDimension.DimensionValue.Value}\r\n \r\n
\r\n );\r\n }\r\n return null;\r\n });\r\n },\r\n\r\n renderDiscountLines: (props: ICartLineProps) => {\r\n if (!props.data.cartLine.DiscountLines || props.data.cartLine.DiscountLines.length === 0) {\r\n return null;\r\n }\r\n\r\n return props.data.cartLine.DiscountLines.map((discountLine, index) => {\r\n return (\r\n
\r\n \r\n {discountLine.OfferName ? discountLine.OfferName : ''}:{` ${props.resources.discountStringText || 'Discount'} `}\r\n \r\n \r\n \r\n \r\n {` (${discountLine.EffectivePercentage !== undefined ? discountLine.EffectivePercentage : ''}%)`}\r\n
\r\n );\r\n });\r\n },\r\n renderInventoryLabel: (props: ICartLineProps) => {\r\n if (!props.inventoryInformationLabel) {\r\n return null;\r\n }\r\n const inventoryCssName = props.inventoryLabelClassName\r\n ? `msc-cart-line__product-inventory-label ${props.inventoryLabelClassName}`\r\n : 'msc-cart-line__product-inventory-label';\r\n return {props.inventoryInformationLabel};\r\n },\r\n\r\n /**\r\n * Gets the react node for product unit of measure display.\r\n * @param props - Icartline props.\r\n * @returns The node representing markup for unit of measure component.\r\n */\r\n renderUnitOfMeasure: (props: ICartLineProps) => {\r\n if (props.data.cartLine.IsInvoiceLine) {\r\n return null;\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- Do not need type check for appsettings\r\n if (!props.context.app.config.unitOfMeasureDisplayType || props.context.app.config.unitOfMeasureDisplayType === 'none') {\r\n return undefined;\r\n }\r\n\r\n const product = props.data.product;\r\n if (!product || !product.DefaultUnitOfMeasure) {\r\n return undefined;\r\n }\r\n\r\n return (\r\n
\r\n {product.DefaultUnitOfMeasure}\r\n
\r\n );\r\n },\r\n renderShippingLabel: (props: ICartLineProps) => {\r\n const pickupDeliveryModeCode = props.context.request.channel?.PickupDeliveryModeCode;\r\n const channelDeliveryOptionConfig = props.channelDeliveryOptionConfig;\r\n const cartline = props.data.cartLine;\r\n let hasShippingMethod = false;\r\n if (channelDeliveryOptionConfig !== undefined) {\r\n hasShippingMethod = !!(\r\n cartline.DeliveryMode &&\r\n channelDeliveryOptionConfig.PickupDeliveryModeCodes?.some(deliveryMode => deliveryMode !== cartline.DeliveryMode)\r\n );\r\n } else {\r\n hasShippingMethod = !!(cartline.DeliveryMode && cartline.DeliveryMode !== pickupDeliveryModeCode);\r\n }\r\n if (!hasShippingMethod) {\r\n return undefined;\r\n }\r\n\r\n const shippingChargeLines = (cartline.ChargeLines || []).filter(chargeLine => chargeLine.IsShipping);\r\n\r\n if (shippingChargeLines.length === 0) {\r\n return undefined;\r\n }\r\n\r\n const freightFee = shippingChargeLines.reduce((chargeTotal, chargeLine) => {\r\n return chargeTotal + (chargeLine.CalculatedAmount || 0);\r\n }, 0);\r\n\r\n const priceComponent = (\r\n \r\n );\r\n return (\r\n <>\r\n \r\n {priceComponent}\r\n \r\n );\r\n },\r\n renderOtherCharges: (props: ICartLineProps) => {\r\n const cartline = props.data.cartLine;\r\n const otherCharges = cartline.ChargeLines?.filter(chargeline => !chargeline.IsShipping);\r\n\r\n return (\r\n (otherCharges &&\r\n otherCharges.map((otherCharge, key) => {\r\n return otherCharge && otherCharge.CalculatedAmount ? (\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n ) : (\r\n ''\r\n );\r\n })) ||\r\n undefined\r\n );\r\n }\r\n};\r\n\r\nconst CartLine: React.FC = (props: ICartLineProps) => {\r\n const { isSalesLine, productUrl, resources } = props;\r\n const { product, cartLine } = props.data;\r\n\r\n const destructDimensionStrings = {\r\n sizeString: resources.sizeString,\r\n colorString: resources.colorString,\r\n styleString: resources.styleString,\r\n configString: resources.configString,\r\n amountString: resources.amountString\r\n };\r\n\r\n const fallbackImageUrl = product && getFallbackImageUrl(product.ItemId, props.context.actionContext.requestContext.apiSettings);\r\n const productDimensions = product && CartLineItemFunctions.renderProductDimensions(product, destructDimensionStrings);\r\n const imageSettings = props.imageSettings;\r\n if (imageSettings) {\r\n imageSettings.cropFocalRegion = true;\r\n }\r\n const renderDisountLines = CartLineItemFunctions.renderDiscountLines(props);\r\n const renderInventoryLabel = CartLineItemFunctions.renderInventoryLabel(props);\r\n const renderUnitOfMeasure = CartLineItemFunctions.renderUnitOfMeasure(props);\r\n const renderShippingLabel = CartLineItemFunctions.renderShippingLabel(props);\r\n const renderOtherCharges = CartLineItemFunctions.renderOtherCharges(props);\r\n const payLoad = getPayloadObject('click', props.telemetryContent!, '', product?.RecordId.toString());\r\n const productAttribute = getTelemetryAttributes(props.telemetryContent!, payLoad);\r\n const productName = product?.Name || cartLine.Description;\r\n const imgeClassName = props.data.cartLine.IsInvoiceLine ? 'msc-cart-line__invoice-image' : 'msc-cart-line__product-image';\r\n\r\n const onChange = (newValue: number): boolean => {\r\n if (props.quantityOnChange) {\r\n return props.quantityOnChange(props.data.cartLine, newValue, props.lineIndex);\r\n }\r\n return true;\r\n };\r\n\r\n const _generateErrorMessage = (): JSX.Element | null => {\r\n if (props.errorMessage) {\r\n return (\r\n
\r\n \r\n {props.errorMessage}\r\n
\r\n );\r\n }\r\n\r\n return null;\r\n };\r\n\r\n const _generateQuantityandPrice = (price: ProductPrice): JSX.Element[] | null => {\r\n const nodes = [];\r\n if (props.isOutOfStock) {\r\n return null;\r\n }\r\n console.log('IsSalesLine');\r\n console.log(isSalesLine);\r\n // No quantity selector for invoice line\r\n if (!props.data.cartLine.IsInvoiceLine) {\r\n if (props.data.product && props.isQuantityEditable) {\r\n nodes.push(\r\n
\r\n
{resources.quantityDisplayString}
\r\n \r\n
\r\n );\r\n } else {\r\n nodes.push(\r\n
\r\n \r\n {props.data.cartLine.Quantity}\r\n
\r\n );\r\n }\r\n }\r\n nodes.push(\r\n
\r\n {isSalesLine && (\r\n \r\n )}\r\n \r\n {(props.data.cartLine.DiscountAmount && props.data.cartLine.DiscountAmount > 0 && (\r\n <>\r\n \r\n {` ${props.resources.discountStringText || 'Discount'} `}\r\n \r\n \r\n \r\n )) ||\r\n null}\r\n
\r\n );\r\n\r\n return nodes;\r\n };\r\n let prodUrlData = productUrl;\r\n const articleLabel = props.context.request.locale !== 'de-CH' ? 'Article' : 'Artikel';\r\n\r\n const price: ProductPrice = {\r\n BasePrice: props.data.product?.Price,\r\n AdjustedPrice: props.data.product?.AdjustedPrice,\r\n CustomerContextualPrice: props.data.product?.AdjustedPrice,\r\n MaxVariantPrice: props.data.product?.AdjustedPrice,\r\n MinVariantPrice: props.data.product?.AdjustedPrice\r\n };\r\n return (\r\n <>\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n {productName}\r\n \r\n
\r\n {`${articleLabel}: `}\r\n {`${props.data.cartLine.ItemId}`}\r\n
\r\n
\r\n
\r\n\r\n {ArrayExtensions.hasElements(productDimensions) ? (\r\n
{productDimensions}
\r\n ) : (\r\n ''\r\n )}\r\n {/* \r\n
\r\n {`${articleLabel}: `}\r\n {`${props.data.cartLine.ItemId}`}\r\n
\r\n
*/}\r\n
\r\n\r\n {renderUnitOfMeasure}\r\n
\r\n \r\n
\r\n\r\n {renderDisountLines}\r\n {renderInventoryLabel}\r\n {props.showShippingChargesForLineItems &&
{renderShippingLabel}
}\r\n {renderOtherCharges}\r\n
\r\n\r\n {_generateQuantityandPrice(price)}\r\n {props.data.cartLine.IsInvoiceLine && props.data.cartState && props.resources.priceEditorResources && (\r\n \r\n )}\r\n
\r\n {_generateErrorMessage()}\r\n \r\n );\r\n};\r\n\r\nexport default CartLine;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { 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 { 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","/*!\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 { ICoreContext } from '@msdyn365-commerce/core';\nimport { IHistogramItemViewProps, IRatingsHistogramData, IRatingsHistogramViewProps } from '@msdyn365-commerce-modules/ratings-reviews';\nimport { format, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IRatingsHistogramProps, IRatingsHistogramResources } from '../definition-extensions/ratings-histogram.ext.props.autogenerated';\n\n/**\n * Histogram item.\n * @param props - Histogram Item ViewProps.\n * @returns Histogram Item node.\n */\nconst histogramItem = (props: IHistogramItemViewProps) => {\n return (\n \n {props.starLabel}\n {props.bar}\n \n );\n};\n\n/**\n * Average ratings.\n * @param data - Props data.\n * @param context - Histogram Item ViewProps.\n * @param typeName - Histogram Item ViewProps.\n * @param componentId - Histogram Item ViewProps.\n * @param resources - Module resource strings.\n * @returns Average ratings.\n */\nconst averageRating = (\n data: IRatingsHistogramData,\n context: ICoreContext,\n typeName: string,\n componentId: string,\n resources: IRatingsHistogramResources\n) => {\n const defaultAverageRating: number = 0;\n const reviewsCount = data.ratingsSummary.result?.reviewsCount ?? defaultAverageRating;\n const reviewsCountString = resources.numberOfReviewsString\n ? format(resources.numberOfReviewsString, reviewsCount)\n : `${reviewsCount} reviews`;\n\n return (\n
\n
{data.ratingsSummary.result?.averageRating}
\n
\n \n
\n
{reviewsCountString}
\n
\n );\n};\n\n/**\n * Histogram view.\n * @param props - Ratings HistogramV iewProps.\n * @returns Histogram view module.\n */\nconst RatingsHistogramView: React.FC> = props => {\n const { heading, histogramItems, histogramProps, moduleProps, data, resources } = props;\n const context = props.context;\n const typeName = props.typeName;\n const moduleId = props.id;\n\n return (\n \n {heading}\n
\n {averageRating(data, context, typeName, moduleId, resources)}\n \n {histogramItems.map(item => {\n return histogramItem(item);\n })}\n \n
\n
\n );\n};\n\nexport default RatingsHistogramView;\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 { 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","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 { Module } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { ISocialShareItemViewProps } from './social-share-item';\n\nexport const SocialShareItemView: React.FC = props => {\n const { SocialShareItem, SocialShareItemElement } = props;\n\n if (!SocialShareItemElement) {\n props.context.telemetry.error('Social media is not valid, module wont render');\n return null;\n }\n return {SocialShareItemElement};\n};\n\nexport default SocialShareItemView;\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 { IProductDimensionsWithAvailabilitiesFull } from '@msdyn365-commerce/commerce-entities';\nimport { ProductDimensionsMatrix } from '@msdyn365-commerce/components';\nimport { RichTextComponent } from '@msdyn365-commerce/core';\nimport { ICoreContext, getCatalogId } from '@msdyn365-commerce/core-internal';\nimport { ArrayExtensions, IDimensionsApp, validateCatalogId } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, Collapse, IModuleProps, isMobile, VariantType } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { FeatureState } from '@msdyn365-commerce/retail-proxy';\nimport { IBulkPurchaseData } from './bulk-purchase.data';\nimport { IBulkPurchaseProps } from './bulk-purchase.props.autogenerated';\n\n/**\n * Additional optional props for the bulk purchase.\n */\nexport interface IBulkPurchaseExtendedProps extends IBulkPurchaseProps {\n productDimensions?: IProductDimensionsWithAvailabilitiesFull[];\n}\n\n/**\n * View for the bulk purchase module.\n */\nexport interface IBulkPurchaseViewProps extends IBulkPurchaseProps {\n container: IModuleProps;\n content: React.ReactElement;\n}\n\n/**\n * View for the bulk purchase module.\n */\nexport interface IBulkPurchaseState {\n isExpanded: boolean;\n}\n\n/**\n * Bulk-purchase module.\n */\nexport class BulkPurchase extends React.PureComponent {\n public static readonly className = 'ms-bulk-purchase';\n private readonly collapseRef: React.RefObject = React.createRef();\n\n public constructor(props: IBulkPurchaseExtendedProps) {\n super(props);\n\n this.state = {\n isExpanded: false\n };\n }\n\n public render(): React.ReactElement | null {\n const hasDimensionsInProps = ArrayExtensions.hasElements(this.props.productDimensions);\n const hasDimensionsInData = ArrayExtensions.hasElements(this.props.data.productDimensions?.result);\n if (!hasDimensionsInProps && !hasDimensionsInData) {\n return null;\n }\n\n const viewProps: IBulkPurchaseViewProps = {\n ...this.props,\n container: {\n moduleProps: this.props,\n className: classnames(BulkPurchase.className, this.props.config.className)\n },\n content: this._renderCollapseContent(`${BulkPurchase.className}__content`)\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private _renderCollapseContent(className: string): React.ReactElement {\n return (\n
\n {this._renderCollapseButton(`${className}__collapse-button`)}\n {this._renderCollapse(`${className}__collapse`)}\n
\n );\n }\n\n private _renderCollapseButton(className: string): React.ReactElement {\n return (\n \n {this.props.resources.bulkPurchaseHeaderTitle}\n \n );\n }\n\n /**\n *This function is being used to handel variant change dropdown.\n */\n private _dimensionDropDownChange = () => {\n this.collapseRef.current?.reEvaluateHeight();\n };\n\n private _renderCollapse(className: string): React.ReactElement {\n return (\n \n {this._renderMainContent(`${className}__main-content`)}\n \n );\n }\n\n private _renderMainContent(className: string): React.ReactElement {\n const isMobileDevice = isMobile({ variant: VariantType.Viewport, context: this.props.context.request }) === 'xs';\n\n return (\n
\n {!isMobileDevice && (\n
\n \n
\n )}\n {this._renderMatrix(`${className}__matrix-container`)}\n
\n );\n }\n\n private _renderMatrix(className: string): React.ReactElement {\n const hasDimensionsInProps = ArrayExtensions.hasElements(this.props.productDimensions);\n const channelMultipleCatalogsFeature = 'Dynamics.AX.Application.ChannelMultipleCatalogsFeature';\n const { featureState } = this.props.data;\n const isMultipleCatalogsFeatureEnabled =\n featureState?.result?.find((item: FeatureState) => item.Name === channelMultipleCatalogsFeature)?.IsEnabled || false;\n const catalogId = getCatalogId(this.props.context.request);\n validateCatalogId(catalogId);\n return (\n }\n data={{\n dimensions: hasDimensionsInProps ? this.props.productDimensions! : this.props.data.productDimensions!.result!,\n orderTemplates: this.props.data.orderTemplates?.result,\n customerInformation: this.props.data.customerInformation?.result\n }}\n resources={this.props.resources}\n dimensionOnChange={this._dimensionDropDownChange}\n isMultipleCatalogFeatureEnabledInHq={isMultipleCatalogsFeatureEnabled}\n catalogId={catalogId}\n />\n );\n }\n\n /**\n * Callback which toggles collapse mode.\n */\n private readonly _toggleCollapse = () => {\n this.setState(state => ({\n isExpanded: !state.isExpanded\n }));\n };\n}\n\nexport default BulkPurchase;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { TelemetryEvent } from '@msdyn365-commerce/core';\nimport { Button, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport React, { useState } from 'react';\n\ninterface ICheckoutPlaceOrderButtonProps {\n canPlaceOrder: boolean;\n checkoutBtnText: string;\n telemetryContent?: ITelemetryContent;\n shouldEnableSinglePaymentAuthorizationCheckout?: boolean;\n isPlaceOrderLoading?: boolean;\n isExpressCheckoutApplied?: boolean;\n isPaymentVerificationRedirection?: boolean;\n placeOrder(): Promise;\n}\n\nconst buttonsStates: React.Dispatch>[] = [];\n\n/**\n * On place order function.\n * @param isBusy -Check is busy.\n * @param canPlaceOrder -Check can place order.\n * @param placeOrder -Place order function.\n * @returns Set state of button.\n */\nconst onPlaceOrderHandler = (isBusy: boolean, canPlaceOrder: boolean, placeOrder: () => Promise) => async () => {\n if (isBusy || !canPlaceOrder) {\n return;\n }\n buttonsStates.map(buttonSetState => {\n buttonSetState(true);\n return true;\n });\n await placeOrder();\n};\n\nconst CheckoutPlaceOrderButton: React.FC = ({\n checkoutBtnText,\n canPlaceOrder,\n placeOrder,\n telemetryContent,\n shouldEnableSinglePaymentAuthorizationCheckout,\n isPlaceOrderLoading,\n isExpressCheckoutApplied,\n isPaymentVerificationRedirection\n}) => {\n const [isBusy, setIsBusy] = useState(false);\n buttonsStates.push(setIsBusy);\n const payload = getPayloadObject(TelemetryEvent.Purchase, telemetryContent!, checkoutBtnText, '');\n const attributes = getTelemetryAttributes(telemetryContent!, payload);\n\n if (shouldEnableSinglePaymentAuthorizationCheckout && (!isExpressCheckoutApplied || isPaymentVerificationRedirection)) {\n return (\n \n {checkoutBtnText}\n \n );\n }\n\n return (\n \n {checkoutBtnText}\n \n );\n};\n\nexport default CheckoutPlaceOrderButton;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport withModuleState from './with-module-state';\n\nexport * from './module-state';\nexport * from './module-state.data';\n\nexport { withModuleState };\n","/**\n * 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