@sunrise-upc/mobile-prod-card 12.2.2 → 12.3.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (186) hide show
  1. package/README.md +62 -62
  2. package/dist/esm/Analytics/AnalyticsConstants.js.map +1 -1
  3. package/dist/esm/Analytics/items.js.map +1 -1
  4. package/dist/esm/components/Accessories/Accessory-card/AccessoryCard.js.map +1 -1
  5. package/dist/esm/components/Accessories/Accessory-card/AccessoryModal.js.map +1 -1
  6. package/dist/esm/components/Accessories/AccessoryPreviewCardLoader/AccessoryPreviewCardLoader.js.map +1 -1
  7. package/dist/esm/components/Accessories/AccessoryPreviewCardSkeletonBody/AccessoryPreviewCardSkeletonBody.js.map +1 -1
  8. package/dist/esm/components/Accessories/AccessoryUpdateCartDotloader/AccessoryUpdateCartDotloader.js.map +1 -1
  9. package/dist/esm/components/Accessories/DeviceCarouselComponent.js.map +1 -1
  10. package/dist/esm/components/Accessories/MultiItemAccessories/MultiItemAccessoriesPage.js.map +1 -1
  11. package/dist/esm/components/Accessories/PaymentTypeTabs/PaymentTypeTabs.js.map +1 -1
  12. package/dist/esm/components/Accessories/ProgressionBar/progressionBar.js.map +1 -1
  13. package/dist/esm/components/Accessories/multiItemAccessoryStore/MultiAccessoryProvider.js.map +1 -1
  14. package/dist/esm/components/Accessories/multiItemAccessoryStore/useMultiAccessoryActions.js.map +1 -1
  15. package/dist/esm/components/Accessories/multiItemAccessoryStore/useMultiAccessoryContext.js.map +1 -1
  16. package/dist/esm/components/Accessories/multiItemAccessoryStore/useMultiAccessoryUpdateCartActions.js.map +1 -1
  17. package/dist/esm/components/BenefitWrapper/BenefitValidate.js.map +1 -1
  18. package/dist/esm/components/BenefitWrapper/BenefitWrapper.js.map +1 -1
  19. package/dist/esm/components/BenefitWrapper/Benefits.js.map +1 -1
  20. package/dist/esm/components/BenefitWrapper/BenefitsValidateWrapper.js.map +1 -1
  21. package/dist/esm/components/Breadcrumb/Breadcrumb.js.map +1 -1
  22. package/dist/esm/components/Breadcrumb/useScrollCheck.js.map +1 -1
  23. package/dist/esm/components/CardComp/Card.js.map +1 -1
  24. package/dist/esm/components/CardEntitlement/CardEntitlement.js.map +1 -1
  25. package/dist/esm/components/CountryOverlays/CountryOverlays.js.map +1 -1
  26. package/dist/esm/components/CountryOverlays/OverlayModal.js.map +1 -1
  27. package/dist/esm/components/DeviceCardWrapper/DeviceCards/DeviceCards.js.map +1 -1
  28. package/dist/esm/components/DeviceCardWrapper/DevicePrice/DevicePrice.js.map +1 -1
  29. package/dist/esm/components/DeviceCardWrapper/DevicePriceWrapper/DevicePriceWrapper.js.map +1 -1
  30. package/dist/esm/components/Dotloader/Dotloader.js.map +1 -1
  31. package/dist/esm/components/DynamicPriceComp/DynamicPrice.js.map +1 -1
  32. package/dist/esm/components/FalconAccordionList/FalconAccordion.js.map +1 -1
  33. package/dist/esm/components/FalconAccordionList/FalconAccordionList.js.map +1 -1
  34. package/dist/esm/components/FalconButtonV2/FalconButtonV2.js.map +1 -1
  35. package/dist/esm/components/FalconDescription/FalconDescription.js.map +1 -1
  36. package/dist/esm/components/FalconMessage/FalconMessage.js.map +1 -1
  37. package/dist/esm/components/FalconTitle/FalconTitle.js.map +1 -1
  38. package/dist/esm/components/GenericMessage/GenericMessage.js.map +1 -1
  39. package/dist/esm/components/GenericPopup/GenericPopup.js.map +1 -1
  40. package/dist/esm/components/Gift/ChooseGiftV2.js.map +1 -1
  41. package/dist/esm/components/Gift/GiftConfigV2.js.map +1 -1
  42. package/dist/esm/components/GlobalDotLoader/GlobalDotLoader.css +1 -0
  43. package/dist/esm/components/GlobalDotLoader/GlobalDotLoader.js +2 -0
  44. package/dist/esm/components/GlobalDotLoader/GlobalDotLoader.js.map +1 -0
  45. package/dist/esm/components/GlobalDotLoader/GlobalDotLoader.module.scss.js +3 -0
  46. package/dist/esm/components/GlobalDotLoader/GlobalDotLoader.module.scss.js.map +1 -0
  47. package/dist/esm/components/HeroLogin/HeroLogin.css +1 -1
  48. package/dist/esm/components/HeroLogin/HeroLogin.js.map +1 -1
  49. package/dist/esm/components/LineCheckV3/APIResourceConstants.js.map +1 -1
  50. package/dist/esm/components/LineCheckV3/AutoComplete.js.map +1 -1
  51. package/dist/esm/components/LineCheckV3/GenericModal.js.map +1 -1
  52. package/dist/esm/components/LineCheckV3/IndividualLineCheck.js.map +1 -1
  53. package/dist/esm/components/LineCheckV3/LineCheckInput.js.map +1 -1
  54. package/dist/esm/components/LineCheckV3/LineCheckOverlay.js.map +1 -1
  55. package/dist/esm/components/LineCheckV3/LineCheckV3.js.map +1 -1
  56. package/dist/esm/components/LineCheckV3/LinecheckModal.js.map +1 -1
  57. package/dist/esm/components/LineCheckV3/LinecheckService.js.map +1 -1
  58. package/dist/esm/components/LineCheckV3/Success.js.map +1 -1
  59. package/dist/esm/components/LineCheckV3/api-constants.js.map +1 -1
  60. package/dist/esm/components/NewLineCheck/AdvanceSearch.js.map +1 -1
  61. package/dist/esm/components/NewLineCheck/CheckCoverage.js.map +1 -1
  62. package/dist/esm/components/NewLineCheck/CoverCheckWrapper.js.map +1 -1
  63. package/dist/esm/components/NewLineCheck/CoverageCheckModal.js.map +1 -1
  64. package/dist/esm/components/NewLineCheck/CoverageCheckUtils.js.map +1 -1
  65. package/dist/esm/components/NewLineCheck/GenericModal.js.map +1 -1
  66. package/dist/esm/components/NewLineCheck/LocationFinder.js.map +1 -1
  67. package/dist/esm/components/NewLineCheck/NewLCInput.js.map +1 -1
  68. package/dist/esm/components/NewLineCheck/SuccessCoverage.js.map +1 -1
  69. package/dist/esm/components/NotificationToast/NotificationToast.js.map +1 -1
  70. package/dist/esm/components/OttMiniSummaryCard/OttMiniSummaryCard.js.map +1 -1
  71. package/dist/esm/components/PretoPost/PreToPostSubsPopup.js.map +1 -1
  72. package/dist/esm/components/ProductDetailsComp/ProductDetails.js.map +1 -1
  73. package/dist/esm/components/ProductDetailsModal/ProductDetailsModal.js.map +1 -1
  74. package/dist/esm/components/ProductDetailsV3/BenefitsSectionV3.js.map +1 -1
  75. package/dist/esm/components/ProductDetailsV3/CashBackV2/CashbackV2.js.map +1 -1
  76. package/dist/esm/components/ProductDetailsV3/ChooseGiftV2.js.map +1 -1
  77. package/dist/esm/components/ProductDetailsV3/GiftConfigV2.js.map +1 -1
  78. package/dist/esm/components/ProductDetailsV3/ProductDetailsModal/ProductDetailsModal.js.map +1 -1
  79. package/dist/esm/components/ProductDetailsV3/ProductDetailsModal/ProductDetailsV2.js.map +1 -1
  80. package/dist/esm/components/ProductDetailsV3/ProductEntitlement.js.map +1 -1
  81. package/dist/esm/components/ProductDetailsV3/ProductPriceV3.js.map +1 -1
  82. package/dist/esm/components/ProductDetailsV3/ReactInputSelectV2/ReactInputSelectV2.js.map +1 -1
  83. package/dist/esm/components/ProductDetailsV3/tv/EntertainmentOptionsV2/EntertainmentOptionsV2.js.map +1 -1
  84. package/dist/esm/components/ProductDetailsV3/tv/TVChannelOfferV2.js.map +1 -1
  85. package/dist/esm/components/ProductTeaser/ProductTeaser.js.map +1 -1
  86. package/dist/esm/components/ProductTeaser/ProductTeaserSlides.js.map +1 -1
  87. package/dist/esm/components/ProgressionBar/ProgressionBar.js.map +1 -1
  88. package/dist/esm/components/ReactInputSelect/ReactInputSelect.js.map +1 -1
  89. package/dist/esm/components/RecommendedOptions/RecommendedOptions.js.map +1 -1
  90. package/dist/esm/components/RecommendedOptions/RecommendedOptionsUtils.js.map +1 -1
  91. package/dist/esm/components/RecommendedOptions/ServiceOption/ServiceOptionCard/ItemsCounter.js.map +1 -1
  92. package/dist/esm/components/RecommendedOptions/ServiceOption/ServiceOptionCard/ServiceDetailSection.js.map +1 -1
  93. package/dist/esm/components/RecommendedOptions/ServiceOption/ServiceOptionCard/ServiceOptionCard.js.map +1 -1
  94. package/dist/esm/components/RecommendedOptions/ServiceOption/ServiceOptionLoader.js.map +1 -1
  95. package/dist/esm/components/RecommendedOptions/ServiceOption/ServiceOptionPrice/ServiceOptionPrice.js.map +1 -1
  96. package/dist/esm/components/ResponsiveRow/row.js.map +1 -1
  97. package/dist/esm/components/SkeletonLoader/SkeletonLoader.js.map +1 -1
  98. package/dist/esm/components/Spacer/Spacer.js.map +1 -1
  99. package/dist/esm/components/StaticLineTable/CheckoutButton.js.map +1 -1
  100. package/dist/esm/components/StaticLineTable/DynamicPriceSection.js.map +1 -1
  101. package/dist/esm/components/StaticLineTable/ExsistingSubscriptionCards.js.map +1 -1
  102. package/dist/esm/components/StaticLineTable/ExsistingSubscriptionModal.js.map +1 -1
  103. package/dist/esm/components/StaticLineTable/OttServiceOptions/OttServiceOptionsLoader/OttServiceOptionsLoader.js.map +1 -1
  104. package/dist/esm/components/StaticLineTable/OttServiceOptions/OttServiceOptionsModal.js.map +1 -1
  105. package/dist/esm/components/StaticLineTable/OttServiceOptions/OttServiceOptionsPopup.js.map +1 -1
  106. package/dist/esm/components/StaticLineTable/OttServiceOptions/OttServiceOptionsSmallPopup.js.map +1 -1
  107. package/dist/esm/components/StaticLineTable/Product.utils.js.map +1 -1
  108. package/dist/esm/components/StaticLineTable/ProductCardBadgeProvider.js.map +1 -1
  109. package/dist/esm/components/StaticLineTable/StaticBenefit.js.map +1 -1
  110. package/dist/esm/components/StaticLineTable/StaticExclusiveBenefit.js.map +1 -1
  111. package/dist/esm/components/StaticLineTable/StaticLineTabelTimer/StaticLineTabelTimer.js.map +1 -1
  112. package/dist/esm/components/StaticLineTable/StaticLineTabelTimer/util.js.map +1 -1
  113. package/dist/esm/components/StaticLineTable/StaticLineTable.js.map +1 -1
  114. package/dist/esm/components/StaticLineTable/StaticLineTableStore/StaticLineTableProvider.js.map +1 -1
  115. package/dist/esm/components/StaticLineTable/StaticProduct.js.map +1 -1
  116. package/dist/esm/components/StaticLineTable/StaticProductCashback.js.map +1 -1
  117. package/dist/esm/components/StaticLineTable/StaticProductContainer.js +1 -1
  118. package/dist/esm/components/StaticLineTable/StaticProductContainer.js.map +1 -1
  119. package/dist/esm/components/StaticLineTable/StaticProductDetails.js.map +1 -1
  120. package/dist/esm/components/StaticLineTable/StaticProductDetailsModal.js.map +1 -1
  121. package/dist/esm/components/StaticLineTable/StaticProductEntitlement.js.map +1 -1
  122. package/dist/esm/components/StaticLineTable/TVChannelModal.js.map +1 -1
  123. package/dist/esm/components/StaticLineTable/TvOptionsContainer.js.map +1 -1
  124. package/dist/esm/components/StaticLineTable/WorldPassPopup.js.map +1 -1
  125. package/dist/esm/components/StaticPriceComp/StaticPriceComp.js.map +1 -1
  126. package/dist/esm/components/StickyBottomSheet/StickyBottomSheet.js.map +1 -1
  127. package/dist/esm/components/StickyProductAnchor/StickyProductAnchor.js.map +1 -1
  128. package/dist/esm/components/Table/table.js.map +1 -1
  129. package/dist/esm/components/ToolTip/ToolTip.js.map +1 -1
  130. package/dist/esm/components/UltimateBundleLinetable/DpDetailsModal/DpDetailsModal.js.map +1 -1
  131. package/dist/esm/components/UltimateBundleLinetable/DpLinetableContainer.js.map +1 -1
  132. package/dist/esm/components/UltimateBundleLinetable/DpProduct.js.map +1 -1
  133. package/dist/esm/components/UltimateBundleLinetable/DpTabContainer.js.map +1 -1
  134. package/dist/esm/components/UltimateBundleLinetable/DpTableDeviceSection/DpTableDeviceSection.js.map +1 -1
  135. package/dist/esm/components/UltimateBundleLinetable/DpTableFlexSection/DpTableFlexSection.js.map +1 -1
  136. package/dist/esm/components/UltimateBundleLinetable/DpTableMobileSection/DpTableMobileSection.js.map +1 -1
  137. package/dist/esm/components/UltimateBundleLinetable/DpTableUtils.js.map +1 -1
  138. package/dist/esm/components/UltimateBundleLinetable/checkoutRedirectionPopup/checkoutRedirectionPopup.js.map +1 -1
  139. package/dist/esm/components/UserLoggedPricesToggle/UserLoggedPricesToggle.js.map +1 -1
  140. package/dist/esm/components/button/Button.js.map +1 -1
  141. package/dist/esm/components/freshProductBanner/FreshProductDetails.js.map +1 -1
  142. package/dist/esm/components/freshProductBanner/ProductDetailsModal.js.map +1 -1
  143. package/dist/esm/components/freshProductBanner/Timer/ExpiredTimer.js.map +1 -1
  144. package/dist/esm/components/freshProductBanner/Timer/Timer.js.map +1 -1
  145. package/dist/esm/components/freshProductBanner/Timer/util.js.map +1 -1
  146. package/dist/esm/components/freshProductBanner/freshProductBanner.js.map +1 -1
  147. package/dist/esm/components/index.js +1 -1
  148. package/dist/esm/components/lineTable/BundleProductsV3.js.map +1 -1
  149. package/dist/esm/components/lineTable/LineTableV3.utils.js.map +1 -1
  150. package/dist/esm/components/lineTable/OrderButton.js.map +1 -1
  151. package/dist/esm/components/lineTable/ProductContainerV3.js.map +1 -1
  152. package/dist/esm/components/lineTable/ProductTableV3.js.map +1 -1
  153. package/dist/esm/components/lineTable/ProductV3.js.map +1 -1
  154. package/dist/esm/components/login/LoginModalV2.js.map +1 -1
  155. package/dist/esm/components/login/LoginV2.js.map +1 -1
  156. package/dist/esm/components/login/MfaPhase2/DepricatingChannels.js.map +1 -1
  157. package/dist/esm/components/login/MfaPhase2/NewNumber.js.map +1 -1
  158. package/dist/esm/components/login/MfaPhase2/OtpValidation.js.map +1 -1
  159. package/dist/esm/components/login/MfaPhase2/ResetPwdModal.js.map +1 -1
  160. package/dist/esm/components/login/ReusableLogin.css +1 -1
  161. package/dist/esm/components/richtext.js.map +1 -1
  162. package/dist/esm/components/sharedCarousel/CarouselComponent.js.map +1 -1
  163. package/dist/esm/index.js +1 -1
  164. package/dist/esm/models/Analytics/items.js.map +1 -1
  165. package/dist/esm/services/DevicePropConfig.js.map +1 -1
  166. package/dist/esm/services/DeviceService.js.map +1 -1
  167. package/dist/esm/services/LineTableBasicPropConfig.js.map +1 -1
  168. package/dist/esm/services/LineTableService.js.map +1 -1
  169. package/dist/esm/services/LinecheckBasicPropConfig.js.map +1 -1
  170. package/dist/esm/services/LoginBasicPropConfig.js.map +1 -1
  171. package/dist/esm/services/LoginServiceV2.js.map +1 -1
  172. package/dist/esm/services/MultiItemAccessories/multiItemAccessoryService.js.map +1 -1
  173. package/dist/esm/services/MultiItemAccessories/multiitemAccessoriesUpdateCartService.js.map +1 -1
  174. package/dist/esm/services/MultiItemAccessories/storyBlokService.js.map +1 -1
  175. package/dist/esm/services/ProductTeaserPropsConfig.js.map +1 -1
  176. package/dist/esm/services/ServiceOptionsPropConfig.js.map +1 -1
  177. package/dist/esm/services/StickyBottomSheetConfig.js.map +1 -1
  178. package/dist/esm/services/api-constants.js.map +1 -1
  179. package/dist/esm/utils/AnalyticsUtils.js.map +1 -1
  180. package/dist/esm/utils/DeviceUtils.js.map +1 -1
  181. package/dist/esm/utils/constants.js.map +1 -1
  182. package/dist/esm/utils/global.js.map +1 -1
  183. package/dist/esm/utils/store/card-context.js.map +1 -1
  184. package/dist/esm/utils/utils.js.map +1 -1
  185. package/dist/index.d.ts +16 -1
  186. package/package.json +86 -85
@@ -1 +1 @@
1
- {"version":3,"file":"AccessoryUpdateCartDotloader.js","sources":["../../../../../src/components/Accessories/AccessoryUpdateCartDotloader/AccessoryUpdateCartDotloader.tsx"],"sourcesContent":["import React, { useEffect, useState, FC } from \"react\";\nimport \"./AccessoryUpdateCartDotloader.css\";\nimport { SBCONSTANT } from \"../../../utils/constants\";\nimport { getLocalStorageWithExpiry } from \"../../../utils/utils\";\nimport { MultiItemAccessoriesSchema } from \"../MultiItemAccessories/MultiItemAccessoriesSchema\";\n\ninterface DotLoaderSchema {\n content: MultiItemAccessoriesSchema;\n keyParams?: string;\n}\nconst AccessoryUpdateCartDotloader: FC<DotLoaderSchema> = ({ content, keyParams }) => {\n const [index, setIndex] = useState<number>(0);\n const [constKeys, setConstKeys] = useState<Record<string, string>>({});\n const loaderValues: any = {\n checkout: [\n content?.updatingCartBundling\n ],\n loading: [constKeys?.loading],\n };\n const contentArray = keyParams\n ? loaderValues[`${keyParams}`]\n : loaderValues[\"checkout\"];\n\n useEffect(() => {\n setConstKeys(getLocalStorageWithExpiry(SBCONSTANT));\n }, []);\n\n useEffect(() => {\n let i = contentArray.length - 1;\n setIndex(i);\n const timerInterval = setInterval(() => {\n setIndex(i--);\n if (i < 0) {\n i = contentArray.length - 1;\n }\n }, 2000);\n return () => {\n clearTimeout(timerInterval);\n };\n }, []);\n return (\n <div\n className={`d-flex align-items-center justify-content-center linetable-dotLoader-loaderParent`}\n >\n <div className=\"linetable-dotLoader-dotClass\">\n <div className=\"linetable-dotLoader-dots\"></div>\n <div className=\"linetable-dotLoader-dots\"></div>\n <div className=\"linetable-dotLoader-dots\"></div>\n <div className=\"linetable-dotLoader-dots\"></div>\n </div>\n <div>\n <h4 className=\"linetable-dotLoader-dotContent\">{contentArray[index]} </h4>\n </div>\n </div>\n );\n};\nexport default AccessoryUpdateCartDotloader;\n"],"names":["AccessoryUpdateCartDotloader","content","keyParams","index","setIndex","useState","constKeys","setConstKeys","loaderValues","checkout","updatingCartBundling","loading","contentArray","useEffect","getLocalStorageWithExpiry","SBCONSTANT","i","length","timerInterval","setInterval","clearTimeout","React","createElement","className"],"mappings":"gLAUA,MAAMA,EAAoD,EAAGC,UAASC,gBACpE,MAAOC,EAAOC,GAAYC,EAAiB,IACpCC,EAAWC,GAAgBF,EAAiC,CAAA,GAC7DG,EAAoB,CACxBC,SAAU,CACRR,aAAO,EAAPA,EAASS,sBAEXC,QAAS,CAACL,aAAS,EAATA,EAAWK,UAEjBC,EAAeV,EACjBM,EAAa,GAAGN,KAChBM,EAAuB,SAmB3B,OAjBAK,EAAU,KACRN,EAAaO,EAA0BC,KACtC,IAEHF,EAAU,KACR,IAAIG,EAAIJ,EAAaK,OAAS,EAC9Bb,EAASY,GACT,MAAME,EAAgBC,YAAY,KAChCf,EAASY,KACLA,EAAI,IACNA,EAAIJ,EAAaK,OAAS,IAE3B,KACH,MAAO,KACLG,aAAaF,KAEd,IAEDG,EAAAC,cAAA,MAAA,CACEC,UAAW,qFAEXF,EAAAC,cAAA,MAAA,CAAKC,UAAU,gCACbF,EAAAC,cAAA,MAAA,CAAKC,UAAU,6BACfF,EAAAC,cAAA,MAAA,CAAKC,UAAU,6BACfF,EAAAC,cAAA,MAAA,CAAKC,UAAU,6BACfF,EAAAC,cAAA,MAAA,CAAKC,UAAU,8BAEjBF,EAAAC,cAAA,MAAA,KACED,EAAAC,cAAA,KAAA,CAAIC,UAAU,kCAAkCX,EAAaT"}
1
+ {"version":3,"file":"AccessoryUpdateCartDotloader.js","sources":["../../../../../src/components/Accessories/AccessoryUpdateCartDotloader/AccessoryUpdateCartDotloader.tsx"],"sourcesContent":["import React, { useEffect, useState, FC } from \"react\";\r\nimport \"./AccessoryUpdateCartDotloader.css\";\r\nimport { SBCONSTANT } from \"../../../utils/constants\";\r\nimport { getLocalStorageWithExpiry } from \"../../../utils/utils\";\r\nimport { MultiItemAccessoriesSchema } from \"../MultiItemAccessories/MultiItemAccessoriesSchema\";\r\n\r\ninterface DotLoaderSchema {\r\n content: MultiItemAccessoriesSchema;\r\n keyParams?: string;\r\n}\r\nconst AccessoryUpdateCartDotloader: FC<DotLoaderSchema> = ({ content, keyParams }) => {\r\n const [index, setIndex] = useState<number>(0);\r\n const [constKeys, setConstKeys] = useState<Record<string, string>>({});\r\n const loaderValues: any = {\r\n checkout: [\r\n content?.updatingCartBundling\r\n ],\r\n loading: [constKeys?.loading],\r\n };\r\n const contentArray = keyParams\r\n ? loaderValues[`${keyParams}`]\r\n : loaderValues[\"checkout\"];\r\n\r\n useEffect(() => {\r\n setConstKeys(getLocalStorageWithExpiry(SBCONSTANT));\r\n }, []);\r\n\r\n useEffect(() => {\r\n let i = contentArray.length - 1;\r\n setIndex(i);\r\n const timerInterval = setInterval(() => {\r\n setIndex(i--);\r\n if (i < 0) {\r\n i = contentArray.length - 1;\r\n }\r\n }, 2000);\r\n return () => {\r\n clearTimeout(timerInterval);\r\n };\r\n }, []);\r\n return (\r\n <div\r\n className={`d-flex align-items-center justify-content-center linetable-dotLoader-loaderParent`}\r\n >\r\n <div className=\"linetable-dotLoader-dotClass\">\r\n <div className=\"linetable-dotLoader-dots\"></div>\r\n <div className=\"linetable-dotLoader-dots\"></div>\r\n <div className=\"linetable-dotLoader-dots\"></div>\r\n <div className=\"linetable-dotLoader-dots\"></div>\r\n </div>\r\n <div>\r\n <h4 className=\"linetable-dotLoader-dotContent\">{contentArray[index]} </h4>\r\n </div>\r\n </div>\r\n );\r\n};\r\nexport default AccessoryUpdateCartDotloader;\r\n"],"names":["AccessoryUpdateCartDotloader","content","keyParams","index","setIndex","useState","constKeys","setConstKeys","loaderValues","checkout","updatingCartBundling","loading","contentArray","useEffect","getLocalStorageWithExpiry","SBCONSTANT","i","length","timerInterval","setInterval","clearTimeout","React","createElement","className"],"mappings":"gLAUA,MAAMA,EAAoD,EAAGC,UAASC,gBACpE,MAAOC,EAAOC,GAAYC,EAAiB,IACpCC,EAAWC,GAAgBF,EAAiC,CAAA,GAC7DG,EAAoB,CACxBC,SAAU,CACRR,aAAO,EAAPA,EAASS,sBAEXC,QAAS,CAACL,aAAS,EAATA,EAAWK,UAEjBC,EAAeV,EACjBM,EAAa,GAAGN,KAChBM,EAAuB,SAmB3B,OAjBAK,EAAU,KACRN,EAAaO,EAA0BC,KACtC,IAEHF,EAAU,KACR,IAAIG,EAAIJ,EAAaK,OAAS,EAC9Bb,EAASY,GACT,MAAME,EAAgBC,YAAY,KAChCf,EAASY,KACLA,EAAI,IACNA,EAAIJ,EAAaK,OAAS,IAE3B,KACH,MAAO,KACLG,aAAaF,KAEd,IAEDG,EAAAC,cAAA,MAAA,CACEC,UAAW,qFAEXF,EAAAC,cAAA,MAAA,CAAKC,UAAU,gCACbF,EAAAC,cAAA,MAAA,CAAKC,UAAU,6BACfF,EAAAC,cAAA,MAAA,CAAKC,UAAU,6BACfF,EAAAC,cAAA,MAAA,CAAKC,UAAU,6BACfF,EAAAC,cAAA,MAAA,CAAKC,UAAU,8BAEjBF,EAAAC,cAAA,MAAA,KACED,EAAAC,cAAA,KAAA,CAAIC,UAAU,kCAAkCX,EAAaT"}
@@ -1 +1 @@
1
- {"version":3,"file":"DeviceCarouselComponent.js","sources":["../../../../src/components/Accessories/DeviceCarouselComponent.tsx"],"sourcesContent":["import React ,{ JSX, useState, useEffect } from 'react';\nimport { viewportMultiItem } from '../../utils/utils';\nimport Carousel from 'react-multi-carousel';\n// NOTE: The consuming application should import 'react-multi-carousel/lib/styles.css' in their _app.js or global styles\n// Do not import global CSS in library components to avoid Next.js conflicts\n\nconst DeviceCarouselComponent = (props: any): JSX.Element => {\n const responsive: any = {\n desktopLarge: {\n breakpoint: { max: 7000, min: 1440 },\n items: 4,\n slidesToSlide: 3\n },\n desktop: {\n breakpoint: { max: 1439, min: 1024 },\n items: 3,\n slidesToSlide: 3\n },\n tabletMedium: {\n breakpoint: { max: 1023, min: 768 },\n items: 2,\n slidesToSlide: 2\n },\n mobile: {\n breakpoint: { max: 767, min: 0 },\n items: 1,\n partialVisibilityGutter: 40,\n },\n };\n\n // Use isMounted to avoid any SSR/client mismatch for viewport-dependent props\n const [isMounted, setIsMounted] = useState(false);\n useEffect(() => { setIsMounted(true); }, []);\n\n const viewPort = viewportMultiItem();\n // Only compute viewport-dependent props after mount (client-only)\n const showDots = isMounted && props?.children?.length > responsive?.[viewPort]?.items;\n const showArrows = isMounted ? viewPort !== 'mobile' : false;\n\n return (\n <Carousel\n responsive={responsive}\n renderButtonGroupOutside={true}\n partialVisible={true}\n swipeable={true}\n autoPlay={false}\n shouldResetAutoplay={false}\n arrows={showArrows}\n showDots={showDots}\n >\n {props.children}\n </Carousel>\n );\n};\n\nexport default DeviceCarouselComponent;\n"],"names":["DeviceCarouselComponent","props","responsive","desktopLarge","breakpoint","max","min","items","slidesToSlide","desktop","tabletMedium","mobile","partialVisibilityGutter","isMounted","setIsMounted","useState","useEffect","viewPort","viewportMultiItem","showDots","_a","children","length","_b","showArrows","React","createElement","Carousel","renderButtonGroupOutside","partialVisible","swipeable","autoPlay","shouldResetAutoplay","arrows"],"mappings":"gJAMA,MAAMA,EAA2BC,YAC/B,MAAMC,EAAkB,CACtBC,aAAc,CACZC,WAAY,CAAEC,IAAK,IAAMC,IAAK,MAC9BC,MAAO,EACPC,cAAe,GAEjBC,QAAS,CACPL,WAAY,CAAEC,IAAK,KAAMC,IAAK,MAC9BC,MAAO,EACPC,cAAe,GAEjBE,aAAc,CACZN,WAAY,CAAEC,IAAK,KAAMC,IAAK,KAC9BC,MAAO,EACPC,cAAe,GAEjBG,OAAQ,CACNP,WAAY,CAAEC,IAAK,IAAKC,IAAK,GAC7BC,MAAO,EACPK,wBAAyB,MAKtBC,EAAWC,GAAgBC,GAAS,GAC3CC,EAAU,KAAQF,GAAa,IAAU,IAEzC,MAAMG,EAAWC,IAEXC,EAAWN,IAA4B,QAAfO,EAAAnB,aAAK,EAALA,EAAOoB,gBAAQ,IAAAD,OAAA,EAAAA,EAAEE,SAA+B,QAAtBC,EAAArB,aAAU,EAAVA,EAAae,UAAS,IAAAM,OAAA,EAAAA,EAAEhB,OAC1EiB,IAAaX,GAAyB,WAAbI,EAE/B,OACEQ,EAAAC,cAACC,GACCzB,WAAYA,EACZ0B,0BAA0B,EAC1BC,gBAAgB,EAChBC,WAAW,EACXC,UAAU,EACVC,qBAAqB,EACrBC,OAAQT,EACRL,SAAUA,GAETlB,EAAMoB"}
1
+ {"version":3,"file":"DeviceCarouselComponent.js","sources":["../../../../src/components/Accessories/DeviceCarouselComponent.tsx"],"sourcesContent":["import React ,{ JSX, useState, useEffect } from 'react';\r\nimport { viewportMultiItem } from '../../utils/utils';\r\nimport Carousel from 'react-multi-carousel';\r\n// NOTE: The consuming application should import 'react-multi-carousel/lib/styles.css' in their _app.js or global styles\r\n// Do not import global CSS in library components to avoid Next.js conflicts\r\n\r\nconst DeviceCarouselComponent = (props: any): JSX.Element => {\r\n const responsive: any = {\r\n desktopLarge: {\r\n breakpoint: { max: 7000, min: 1440 },\r\n items: 4,\r\n slidesToSlide: 3\r\n },\r\n desktop: {\r\n breakpoint: { max: 1439, min: 1024 },\r\n items: 3,\r\n slidesToSlide: 3\r\n },\r\n tabletMedium: {\r\n breakpoint: { max: 1023, min: 768 },\r\n items: 2,\r\n slidesToSlide: 2\r\n },\r\n mobile: {\r\n breakpoint: { max: 767, min: 0 },\r\n items: 1,\r\n partialVisibilityGutter: 40,\r\n },\r\n };\r\n\r\n // Use isMounted to avoid any SSR/client mismatch for viewport-dependent props\r\n const [isMounted, setIsMounted] = useState(false);\r\n useEffect(() => { setIsMounted(true); }, []);\r\n\r\n const viewPort = viewportMultiItem();\r\n // Only compute viewport-dependent props after mount (client-only)\r\n const showDots = isMounted && props?.children?.length > responsive?.[viewPort]?.items;\r\n const showArrows = isMounted ? viewPort !== 'mobile' : false;\r\n\r\n return (\r\n <Carousel\r\n responsive={responsive}\r\n renderButtonGroupOutside={true}\r\n partialVisible={true}\r\n swipeable={true}\r\n autoPlay={false}\r\n shouldResetAutoplay={false}\r\n arrows={showArrows}\r\n showDots={showDots}\r\n >\r\n {props.children}\r\n </Carousel>\r\n );\r\n};\r\n\r\nexport default DeviceCarouselComponent;\r\n"],"names":["DeviceCarouselComponent","props","responsive","desktopLarge","breakpoint","max","min","items","slidesToSlide","desktop","tabletMedium","mobile","partialVisibilityGutter","isMounted","setIsMounted","useState","useEffect","viewPort","viewportMultiItem","showDots","_a","children","length","_b","showArrows","React","createElement","Carousel","renderButtonGroupOutside","partialVisible","swipeable","autoPlay","shouldResetAutoplay","arrows"],"mappings":"gJAMA,MAAMA,EAA2BC,YAC/B,MAAMC,EAAkB,CACtBC,aAAc,CACZC,WAAY,CAAEC,IAAK,IAAMC,IAAK,MAC9BC,MAAO,EACPC,cAAe,GAEjBC,QAAS,CACPL,WAAY,CAAEC,IAAK,KAAMC,IAAK,MAC9BC,MAAO,EACPC,cAAe,GAEjBE,aAAc,CACZN,WAAY,CAAEC,IAAK,KAAMC,IAAK,KAC9BC,MAAO,EACPC,cAAe,GAEjBG,OAAQ,CACNP,WAAY,CAAEC,IAAK,IAAKC,IAAK,GAC7BC,MAAO,EACPK,wBAAyB,MAKtBC,EAAWC,GAAgBC,GAAS,GAC3CC,EAAU,KAAQF,GAAa,IAAU,IAEzC,MAAMG,EAAWC,IAEXC,EAAWN,IAA4B,QAAfO,EAAAnB,aAAK,EAALA,EAAOoB,gBAAQ,IAAAD,OAAA,EAAAA,EAAEE,SAA+B,QAAtBC,EAAArB,aAAU,EAAVA,EAAae,UAAS,IAAAM,OAAA,EAAAA,EAAEhB,OAC1EiB,IAAaX,GAAyB,WAAbI,EAE/B,OACEQ,EAAAC,cAACC,GACCzB,WAAYA,EACZ0B,0BAA0B,EAC1BC,gBAAgB,EAChBC,WAAW,EACXC,UAAU,EACVC,qBAAqB,EACrBC,OAAQT,EACRL,SAAUA,GAETlB,EAAMoB"}
@@ -1 +1 @@
1
- {"version":3,"file":"MultiItemAccessoriesPage.js","sources":["../../../../../src/components/Accessories/MultiItemAccessories/MultiItemAccessoriesPage.tsx"],"sourcesContent":["import React , { JSX } from 'react';\nimport ProgressionBar from '../ProgressionBar/progressionBar';\nimport { ComponentWithContentProps } from '../../types';\nimport Styles from './MultiItemAccessoriesPageStyle.module.scss';\nimport RichText from '../../richtext';\nimport { useEffect, useState, useRef } from 'react';\nimport AccessoryCard from '../Accessory-card/AccessoryCard';\nimport AccessoryPreviewCardLoader from '../AccessoryPreviewCardLoader/AccessoryPreviewCardLoader';\nimport PaymentTypeTabs from '../PaymentTypeTabs/PaymentTypeTabs';\nimport storyBlokService from '../../../services/MultiItemAccessories/storyBlokService';\nimport { getCookie } from 'cookies-next';\nimport { ACCESSORY, BASE, CONTRACT, HARDWARE, INTERNETFLOW, MOBILERATEPLAN, ONE_ECOMMERCE_HARDWARE_SUMMARY, TABLETS, TV, WATCHES } from '../../../utils/constants';\nimport Row from '../../ResponsiveRow/row';\nimport { MOBILEACCESSORIES, MONTHLY } from '../../../utils/constants';\nimport { setMmcItemTracker, trackNewDatalayerEvent, trackViewItem } from '../../..//utils/AnalyticsUtils';\nimport { CONTENT, CONTINUE, CTABUTTONCLICK, CTATEXTCLICK, GAEVENT, INFO, LEARNMORE, LINK, OPENPOPUP, POPUP, TABCLICK, VIEWEACHITEM } from '../../../Analytics/AnalyticsConstants';\nimport { useMultiAccessoryContext } from '../multiItemAccessoryStore/useMultiAccessoryContext';\nimport { useMultiAccessoryActions } from '../multiItemAccessoryStore/useMultiAccessoryActions';\nimport MultiAccessoryProvider from '../multiItemAccessoryStore/MultiAccessoryProvider';\nimport { MultiItemAccessoriesSchema } from './MultiItemAccessoriesSchema';\nimport { useMultiAccessoryUpdateCartActions } from '../multiItemAccessoryStore/useMultiAccessoryUpdateCartActions';\nimport Dotloader from '../../Dotloader/Dotloader';\nimport { countZero, getSBAssetUrl, replacePlaceholder, rp_lastcartItemWithParentPOType, viewport } from '../../../utils/utils';\nimport AccessoryModal from '../Accessory-card/AccessoryModal';\nimport FalconButtonV2 from '../../FalconButtonV2/FalconButtonV2';\nimport { AssetPathPropConfig } from '../../../services';\nimport AccessoryUpdateCartDotloader from '../AccessoryUpdateCartDotloader/AccessoryUpdateCartDotloader';\n\n// Export the schema for backward compatibility\n// export type { MultiItemAccessoriesSchema } from './MultiItemAccessoriesSchema';\n\n// Extended props interface to include setAccessoriesSelected as a separate prop\nexport interface MultiItemAccessoriesProps extends ComponentWithContentProps<MultiItemAccessoriesSchema> {\n setAccessoriesSelected?: (accessories: any[]) => void;\n}\n\n// eslint-disable-next-line max-lines-per-function\nconst MultiItemAccessories = ({ content, metadata }: MultiItemAccessoriesProps): JSX.Element => {\n const activelocaleId: string | undefined = metadata?.lang;\n const [deviceLoader, setDeviceLoader] = useState<boolean>(false);\n const [isMounted, setIsMounted] = useState<boolean>(false);\n const [showInfoModal, setShowInfoModal] = useState<string | null>(null); // 'WATCHES' or 'TABLETS' or null\n const cartId = getCookie('one-commerce-cartId');\n const [hardwareName, setHardwareName] = useState('');\n const [isSubscriptionFlow, setIsSubscriptionFlow] = useState<boolean>(false);\n // useRef: read sessionStorage once client-side — synchronously available everywhere,\n // avoids SSR hydration mismatch and async state-update timing issues\n const hardwareSessionObjRef = useRef<any>({});\n const { store, dispatch } = useMultiAccessoryContext();\n const actions = useMultiAccessoryActions(dispatch);\n const cartActions = useMultiAccessoryUpdateCartActions();\n const { recommendedAccessories, isFetchingRecommendedAccessories, deviceSessionValues, multiItemAccessoriessList, loading, isLoadingCartData , cartData, previousTab } = store;\n // Todo Get the correct data based on selected tab - for ACCESSORY use direct data, for others use hardwares property\n const selectedTabData = recommendedAccessories?.[store?.selectedTab]?.hardware;\n const basicConfigUrl = AssetPathPropConfig?.getInstance()?.getAssetPath();\n // Helper function to get modal popup content based on tab type\n const getModalContent = () => {\n return showInfoModal === WATCHES ? content?.watchesPopup?.[0] : content?.tabletsPopup?.[0];\n };\n \n const sbRecommendations: any[] = content?.recommendationType;\n // Create recommendationType object based on filteredSbRecommendations\n const recommendationType: any = {};\n \n // Single effect: read sessionStorage first, then kick off all init logic\nuseEffect(() => {\n setIsMounted(true);\n // Read sessionStorage client-side only to avoid SSR/hydration mismatch\n const sessionStr = sessionStorage?.getItem(ONE_ECOMMERCE_HARDWARE_SUMMARY);\n const sessionObj = sessionStr ? JSON.parse(sessionStr) : {};\n // Store in ref for synchronous access throughout the component lifecycle\n hardwareSessionObjRef.current = sessionObj;\n const deviceSessionValue = { ...sessionObj, cartId: cartId };\n actions.setDeviceSessionValues(deviceSessionValue);\n actions?.setSelectedTab(content?.defaultTabSelection);\n setHardwareName(sessionObj?.hardwareVariant?.note?.filter((item: any) => item.author === 'hardwareGroupName')?.[0]?.text);\n // Kick off TUA data load after session is ready\n setDeviceLoader(true);\n if (cartId) {\n fetchandSetRecommendations(undefined, sessionObj);\n }\n}, []);\n\n const fetchandSetRecommendations = (tabKey?: any, sessionObj?: any) => {\n // Use passed sessionObj (on initial load) or fall back to ref (on tab switch)\n const currentSessionObj = sessionObj ?? hardwareSessionObjRef.current;\n if (tabKey) {\n actions.setPreviousTab(store?.selectedTab); // Update previousTab in store before changing tab\n actions.setSelectedTab(tabKey);\n }\n if (tabKey) {\n if((recommendedAccessories?.[tabKey]?.hardware || [])?.length <= 0)\n {\n setDeviceLoader(true);\n actions.getRecommendedAccessory({ cartId, recommendationsType: tabKey });\n }\n if (loading) return; // Prevent new API calls if one is already running\n } else {\n cartActions.fetchCartData(cartId).then((res: any) => {\n const cartRecommendationsType = res?.cartRecommendationsType ?? [content?.defaultTabSelection];\n const selectedContractType = currentSessionObj?.hardwareVariant?.selectedContractType;\n const structuredCartData = rp_lastcartItemWithParentPOType(res?.cartItem ?? [],{},{},{});\n const subscriptionFlow = !(structuredCartData?.MOBILE_ORDER?.HARDWARE || structuredCartData?.STANDALONE_HARDWARE);\n setIsSubscriptionFlow(subscriptionFlow)\n const contractTerm = Number.parseFloat(structuredCartData?.MOBILE_ORDER?.HARDWARE?.itemTerm?.[0]?.duration?.amount) || 0\n // Filter sbRecommendations based on contract type(only for monthly) and for new subcriptions\n const filteredSbRecommendations = (\n // selectedContractType === CONTRACT\n contractTerm > 0\n && ((res?.cartItem?.[0]?.processType?.id === \"DEVICE_RENEWAL\" || res?.cartItem?.[0]?.processType?.id === \"DEVICE_RP_RENEWAL\") ? content?.enableExistingSubscription : true))\n ? sbRecommendations?.filter((item: string) => cartRecommendationsType.includes(item))\n : sbRecommendations?.filter((item: string) => item === ACCESSORY && cartRecommendationsType.includes(item));\n filteredSbRecommendations?.forEach((type: string) => {\n recommendationType[type] = [];\n });\n // Store recommendationType in state or ref if needed elsewhere\n actions.setRecommendedAccessories(recommendationType);\n const defaultTab = \n selectedContractType === CONTRACT ? filteredSbRecommendations?.includes(content?.defaultTabSelection) \n ? content?.defaultTabSelection \n : filteredSbRecommendations[0] : ACCESSORY;\n actions?.setSelectedTab(defaultTab);\n actions.getRecommendedAccessory({ cartId, recommendationsType: tabKey ? tabKey : defaultTab});\n }).catch(() => {\n // Redirect to summary page if getCart fails, same as recommendations failure\n const localIsSubscriptionFlow = [MOBILERATEPLAN, INTERNETFLOW, TV]?.includes?.(selectedTabData?.[0]?.recommendationProcessingType) ? true : (currentSessionObj?.hardwareVariant ? false : true);\n if (typeof window !== \"undefined\") {\n window.location.href = localIsSubscriptionFlow ? content?.winCheckoutUrl?.cached_url : content?.multiItemCheckoutUrl?.url;\n }\n });\n }\n }\n // to map storyblok and api data in store\n useEffect(() => {\n if ((recommendedAccessories?.[recommendedAccessories?.tabkey]?.hardware?.length) > 0) {\n if (recommendedAccessories?.tabkey === ACCESSORY) {\n // mapping of accessories according to recommendation api response\n storyBlokService?.getStoryBlokData(\n activelocaleId,\n recommendedAccessories?.[recommendedAccessories?.tabkey]?.hardware?.map((value: any) => value?.baseProducts),\n content?.parentSlugUrl\n ).then((res: any) => {\n sbRecommendationMapping(res,recommendedAccessories?.tabkey);\n });\n } else {\n const masterlst = recommendedAccessories?.tabkey === WATCHES ? content?.watchMasterList?.[0]?.reference?.content :\n content?.tabletMasterList?.[0]?.reference?.content\n sbRecommendationMapping(masterlst,recommendedAccessories?.tabkey);\n }\n } else {\n // redirect to summary page if no accessories are returned from backend\n if ((!isFetchingRecommendedAccessories || !cartId) && !isLoadingCartData && typeof window !== \"undefined\") {\n window.location.href = isSubscriptionFlow ? content?.winCheckoutUrl?.cached_url : content?.multiItemCheckoutUrl?.url;\n }\n }\n }, [recommendedAccessories])\n\n const sbRecommendationMapping = (response: any,tabKey: any) => {\n const accessoryList = (recommendedAccessories?.[tabKey]?.hardware || [])\n ?.filter((item: any) =>\n deviceSessionValues?.hardwareVariant?.selectedContractType === CONTRACT\n ? item?.recurringPrice?.monthlyInstallment > 0\n : item\n )\n ?.reduce((acc: any, value: any, currentIndex: number) => {\n const deviceDetails = {\n image: '',\n type: MOBILEACCESSORIES\n };\n let accessoryMappingSb;\n if(tabKey === ACCESSORY)\n {\n accessoryMappingSb = \n response?.sbStory?.data?.stories?.filter((val: any) => value?.baseProducts === val?.content?.productId)?.[0];\n const requestedVariant = accessoryMappingSb?.content?.body?.[0]?.deviceList?.find((deviceVariant: any) => deviceVariant?.devicePlanId === value?.id);\n deviceDetails.image = requestedVariant?.promoImageGallery?.[0]?.slideImages?.[0]\n ? requestedVariant?.promoImageGallery?.[0]?.slideImages?.[0]?.image?.filename\n : requestedVariant?.imageGallery?.[0]?.slideImages?.[0]?.image?.filename;\n deviceDetails.type = value?.content?.type ?? MOBILEACCESSORIES;\n }\n else{\n accessoryMappingSb = response?.body?.filter((val: any) => value?.baseProducts === val?.m_p_id)?.[0];\n deviceDetails.image = accessoryMappingSb?.images?.[0]?.filename\n deviceDetails.type = value?.content?.type ?? MOBILEACCESSORIES;\n }\n if (accessoryMappingSb) {\n acc.push({ sbStoryItem: accessoryMappingSb, imageData: deviceDetails, recomApiResponse: value });\n trackViewItem(VIEWEACHITEM, VIEWEACHITEM, {\n displayName: value?.name,\n productId: value?.id,\n priceValue: value?.oneTimePrice?.base,\n index: currentIndex,\n variant: value?.variantCategory?.color,\n storage: value?.variantCategory?.storage,\n });\n }\n return acc;\n }, []);\n if (accessoryList?.length > 0 && (response?.sbStory?.data?.stories || response?.body)?.length > 0) {\n actions.setMultiItemAccessoriessList({...multiItemAccessoriessList, [tabKey]: accessoryList });\n } else {\n // redirect to summary page if no accessories is eligbile\n window.location.href = isSubscriptionFlow ? content?.winCheckoutUrl?.cached_url : content?.multiItemCheckoutUrl?.url\n }\n setDeviceLoader(false);\n trackViewItemList(accessoryList);\n }\n\n //select first payment option as default initially unless provided in recommendation api\n useEffect(() => {\n (multiItemAccessoriessList?.[store?.selectedTab] || [])?.filter((item: any) => {\n if (item?.recomApiResponse?.paymentType?.toLowerCase()) {\n actions.setSelectedPaymentType(item?.recomApiResponse?.paymentType.toLowerCase() === MONTHLY ? CONTRACT : BASE);\n }\n }\n )\n }, [multiItemAccessoriessList]);\n\n const checkingviewPort = viewport();\n const findView = () => {\n //function to return no of cards in a row based on view\n if (checkingviewPort === 'large-desktop') {\n return 3;\n } else if (checkingviewPort === 'desktop') {\n return 3;\n } else if (checkingviewPort === 'tablet') {\n return 2;\n } else if (checkingviewPort === 'mobile') {\n return 1;\n }\n return 0;\n };\n const view: any = findView();\n\n const selectedRatePlan = recommendedAccessories?.[store?.selectedTab]?.ratePlan;\n const infoBannerPriceRaw = selectedRatePlan?.derivedPrice ?? selectedRatePlan?.listPrice ?? 0;\n\n // this is for structuring the event tracking data\n const trackViewItemList = (accessoryList: any) => {\n const itemList = accessoryList?.map((item: any, index: number) => {\n return ({\n displayName: item?.recomApiResponse?.name,\n productId: item?.recomApiResponse?.id,\n priceValue: item?.recomApiResponse?.oneTimePrice?.base,\n index: index,\n variant: item?.recomApiResponse?.variantCategory?.color,\n storage: item?.recomApiResponse?.variantCategory?.storage,\n })\n })\n setMmcItemTracker(itemList);\n }\n\n // Todod tab title should always be in english\n const handleTabClick = (tabKey: string, tabTitle: string) => {\n // Determine analytics tab title based on selection and Storyblok content\n let analyticsTabTitle = tabTitle;\n if (tabKey === ACCESSORY && content?.accessoryAnalyticsTitle) {\n analyticsTabTitle = content.accessoryAnalyticsTitle;\n } else if (tabKey === TABLETS && content?.tabletsAnalyticsTitle) {\n analyticsTabTitle = content.tabletsAnalyticsTitle;\n } else if (tabKey === WATCHES && content?.watchesAnalyticsTitle) {\n analyticsTabTitle = content.watchesAnalyticsTitle;\n } \n trackNewDatalayerEvent(GAEVENT, TABCLICK, {\n component: CONTENT,\n click_text: analyticsTabTitle\n });\n fetchandSetRecommendations(tabKey);\n };\n\n return (\n <>\n {loading && (store?.selectedTab === previousTab ? <Dotloader /> : <AccessoryUpdateCartDotloader content={content} />)}\n {/* Only render the main page container when mounted client-side and data is loading/ready */}\n {(isMounted && content && (multiItemAccessoriessList?.[store?.selectedTab]?.length > 0 || deviceLoader)) && (\n <div className={`${Styles.mainPage}`}>\n {content?.progressionBar?.[0] && (\n <ProgressionBar\n content={content?.progressionBar?.[0]}\n />\n )}\n <Row>\n <div>\n <div className={`${Styles.title}`}>\n <RichText content={content?.recommendationLabel} />\n </div>\n {Object.keys(recommendedAccessories || {}).filter((key: string) => sbRecommendations?.includes(key)).length <= 1 && !isSubscriptionFlow && (\n <div className={`${Styles.deviceText}`}>\n {content?.compatibleText}\n <span className={Styles.deviceName}>{hardwareName}</span>\n </div>\n )}\n </div>\n </Row>\n {/* Tabs based on recommendedAccessories, ordered by recommendationType from Storyblok */}\n {(Object.keys(recommendedAccessories || {}).filter((key: string) => sbRecommendations?.includes(key)).length > 1) && (\n <div className={Styles.tabsContainer}>\n {(content?.recommendationType || [])\n ?.filter((tabKey: string) => recommendedAccessories?.[tabKey])\n ?.map((tabKey: string) => {\n // Count from cartData (real-time source of truth)\n const totalCount = Object.keys(cartData?.[tabKey] || {}).length;\n\n // Get tab title from Storyblok content\n const tabTitle = tabKey === ACCESSORY ? content?.accessoryTitle\n : tabKey === WATCHES ? content?.watchesTitle\n : tabKey === TABLETS ? content?.tabletsTitle\n : tabKey;\n return (\n <button\n key={tabKey}\n className={`${Styles.tabButton} ${store.selectedTab === tabKey ? Styles.activeTab : ''}`}\n onClick={() => {\n if (store.selectedTab !== tabKey) {\n handleTabClick(tabKey, tabTitle);\n }\n }}\n disabled={!recommendedAccessories?.[tabKey]}\n >\n {tabTitle}\n {totalCount > 0 && (\n <span className={Styles.tabCount}>\n {totalCount}\n </span>\n )}\n </button>\n );\n })}\n </div>\n )}\n {/* Information banner below tabs - for Smartwatches and Tablets */}\n {((store.selectedTab === WATCHES && content?.watchesInfoBannerText) || \n (store.selectedTab === TABLETS && content?.tabletsInfoBannerText)) && (\n <div className={Styles.infoBanner}>\n <div className={Styles.infoBannerContent}>\n <img className={Styles.infoIcon} src={content?.esimIcon?.filename} />\n <span>\n <span>\n {replacePlaceholder(\n store.selectedTab === WATCHES ? content?.watchesInfoBannerText : content?.tabletsInfoBannerText,\n [countZero(infoBannerPriceRaw)]\n )}\n </span>\n <span className={Styles.learnMoreText} onClick={() => {\n trackNewDatalayerEvent(GAEVENT, CTATEXTCLICK, {\n component: LINK,\n click_text: LEARNMORE\n });\n setShowInfoModal(store.selectedTab);\n }}>\n {content?.learnMoreText}\n </span>\n </span>\n </div>\n </div>\n )}\n\n\n {isSubscriptionFlow && (\n <PaymentTypeTabs\n content={{\n paymentHeadingText: content?.paymentHeadingText,\n paymentOptions: content?.paymentOptions,\n paymentTypeChngePopup: content?.paymentTypeChngePopup?.[0],\n paymentTypeChngePopupOnetime: content?.paymentTypeChngePopupOnetime?.[0],\n }}\n />\n )}\n {(deviceLoader && !multiItemAccessoriessList?.[store?.selectedTab]?.length) ? (\n <AccessoryPreviewCardLoader cards={view} />\n ) : (\n <AccessoryCard\n content={content}\n tabIndex={1}\n checkingviewPort={checkingviewPort}\n\t\t\t\t isSubscriptionFlow={isSubscriptionFlow}\n />\n )}\n </div>\n )}\n \n {/* Info Modal for Watches and Tablets */}\n {showInfoModal && (() => {\n const modalContent = getModalContent();\n trackNewDatalayerEvent(GAEVENT, OPENPOPUP, {\n component: POPUP,\n message_title: modalContent?.heading?.content?.[0]?.content?.[0]?.text?.slice(0, 100),\n message_description: modalContent?.description?.content?.[0]?.content?.[0]?.text?.slice(0, 100),\n message_type: INFO,\n });\n return (\n <AccessoryModal\n modalState={!!showInfoModal}\n handler={() => setShowInfoModal(null)}\n showFooter={false}\n height={'auto'}\n fixedWidth={(checkingviewPort === 'large-desktop' || checkingviewPort === 'desktop' || checkingviewPort === 'tablet') ? '624px' : ''}\n noCloseButton={false}\n backDrop={true}\n >\n <div className={Styles.watchInfoModal}>\n {modalContent?.heading && (\n <div className={Styles.modalHeading}>\n <RichText content={modalContent.heading} />\n </div>\n )}\n \n {modalContent?.description && (\n <div className={Styles.modalDescription}>\n <RichText content={modalContent.description} />\n </div>\n )}\n \n <div className={Styles.modalButtons}>\n {modalContent?.link && (\n <a \n href={getSBAssetUrl(basicConfigUrl, modalContent.link?.cached_url || modalContent.link?.url)} \n target=\"_blank\" \n rel=\"noopener noreferrer\"\n className={Styles.factSheetLink}\n >\n {modalContent.linkText}\n </a>\n )}\n \n {modalContent?.button?.length > 0 && (\n <FalconButtonV2\n content={modalContent.button[0]}\n onClick={() => {\n trackNewDatalayerEvent(GAEVENT, CTABUTTONCLICK, {\n component: LINK,\n click_text: CONTINUE\n });\n setShowInfoModal(null)\n }}\n metadata={undefined}\n wafIdentifier={''}\n />\n )}\n </div>\n </div>\n </AccessoryModal>\n );\n })()}\n </>\n );\n}\n\n// HOC Pattern: Wrap the component with provider at export\nconst MultiItemAccessoriesWithProvider = (props: MultiItemAccessoriesProps) => (\n <MultiAccessoryProvider>\n <MultiItemAccessories {...props} />\n </MultiAccessoryProvider>\n);\n\nexport default MultiItemAccessoriesWithProvider;"],"names":["MultiItemAccessories","content","metadata","activelocaleId","lang","deviceLoader","setDeviceLoader","useState","isMounted","setIsMounted","showInfoModal","setShowInfoModal","cartId","getCookie","hardwareName","setHardwareName","isSubscriptionFlow","setIsSubscriptionFlow","hardwareSessionObjRef","useRef","store","dispatch","useMultiAccessoryContext","actions","useMultiAccessoryActions","cartActions","useMultiAccessoryUpdateCartActions","recommendedAccessories","isFetchingRecommendedAccessories","deviceSessionValues","multiItemAccessoriessList","loading","isLoadingCartData","cartData","previousTab","selectedTabData","_a","selectedTab","hardware","basicConfigUrl","_b","AssetPathPropConfig","getInstance","getAssetPath","sbRecommendations","recommendationType","useEffect","sessionStr","sessionStorage","getItem","ONE_ECOMMERCE_HARDWARE_SUMMARY","sessionObj","JSON","parse","current","deviceSessionValue","setDeviceSessionValues","setSelectedTab","defaultTabSelection","_d","_c","hardwareVariant","note","filter","item","author","text","fetchandSetRecommendations","undefined","tabKey","currentSessionObj","setPreviousTab","length","getRecommendedAccessory","recommendationsType","fetchCartData","then","res","cartRecommendationsType","selectedContractType","structuredCartData","rp_lastcartItemWithParentPOType","cartItem","subscriptionFlow","MOBILE_ORDER","HARDWARE","STANDALONE_HARDWARE","filteredSbRecommendations","Number","parseFloat","_j","_h","_g","_f","_e","itemTerm","duration","amount","_m","_l","_k","processType","id","_q","_p","_o","enableExistingSubscription","includes","ACCESSORY","forEach","type","setRecommendedAccessories","defaultTab","CONTRACT","catch","localIsSubscriptionFlow","MOBILERATEPLAN","INTERNETFLOW","TV","call","recommendationProcessingType","window","location","href","winCheckoutUrl","cached_url","multiItemCheckoutUrl","url","tabkey","storyBlokService","getStoryBlokData","map","value","baseProducts","parentSlugUrl","sbRecommendationMapping","masterlst","WATCHES","watchMasterList","reference","tabletMasterList","response","accessoryList","recurringPrice","monthlyInstallment","reduce","acc","currentIndex","deviceDetails","image","MOBILEACCESSORIES","accessoryMappingSb","sbStory","data","stories","val","productId","requestedVariant","body","deviceList","find","deviceVariant","devicePlanId","promoImageGallery","slideImages","_r","filename","_w","_v","_u","_t","imageGallery","_s","_y","_x","_0","_z","m_p_id","_2","_1","images","_4","_3","push","sbStoryItem","imageData","recomApiResponse","trackViewItem","VIEWEACHITEM","displayName","name","priceValue","_5","oneTimePrice","base","index","variant","_6","variantCategory","color","storage","_7","setMultiItemAccessoriessList","Object","assign","trackViewItemList","paymentType","toLowerCase","setSelectedPaymentType","MONTHLY","BASE","checkingviewPort","viewport","view","selectedRatePlan","ratePlan","infoBannerPriceRaw","derivedPrice","listPrice","itemList","setMmcItemTracker","React","createElement","Fragment","Dotloader","AccessoryUpdateCartDotloader","className","Styles","mainPage","progressionBar","ProgressionBar","Row","title","RichText","recommendationLabel","keys","key","deviceText","compatibleText","deviceName","tabsContainer","totalCount","tabTitle","accessoryTitle","watchesTitle","TABLETS","tabletsTitle","tabButton","activeTab","onClick","analyticsTabTitle","accessoryAnalyticsTitle","tabletsAnalyticsTitle","watchesAnalyticsTitle","trackNewDatalayerEvent","GAEVENT","TABCLICK","component","CONTENT","click_text","handleTabClick","disabled","tabCount","watchesInfoBannerText","tabletsInfoBannerText","infoBanner","infoBannerContent","infoIcon","src","esimIcon","replacePlaceholder","countZero","learnMoreText","CTATEXTCLICK","LINK","LEARNMORE","PaymentTypeTabs","paymentHeadingText","paymentOptions","paymentTypeChngePopup","paymentTypeChngePopupOnetime","AccessoryPreviewCardLoader","cards","AccessoryCard","tabIndex","modalContent","watchesPopup","tabletsPopup","getModalContent","OPENPOPUP","POPUP","message_title","heading","slice","message_description","description","message_type","INFO","AccessoryModal","modalState","handler","showFooter","height","fixedWidth","noCloseButton","backDrop","watchInfoModal","modalHeading","modalDescription","modalButtons","link","getSBAssetUrl","target","rel","factSheetLink","linkText","button","FalconButtonV2","CTABUTTONCLICK","CONTINUE","wafIdentifier","MultiItemAccessoriesWithProvider","props","MultiAccessoryProvider"],"mappings":"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"}
1
+ {"version":3,"file":"MultiItemAccessoriesPage.js","sources":["../../../../../src/components/Accessories/MultiItemAccessories/MultiItemAccessoriesPage.tsx"],"sourcesContent":["import React , { JSX } from 'react';\r\nimport ProgressionBar from '../ProgressionBar/progressionBar';\r\nimport { ComponentWithContentProps } from '../../types';\r\nimport Styles from './MultiItemAccessoriesPageStyle.module.scss';\r\nimport RichText from '../../richtext';\r\nimport { useEffect, useState, useRef } from 'react';\r\nimport AccessoryCard from '../Accessory-card/AccessoryCard';\r\nimport AccessoryPreviewCardLoader from '../AccessoryPreviewCardLoader/AccessoryPreviewCardLoader';\r\nimport PaymentTypeTabs from '../PaymentTypeTabs/PaymentTypeTabs';\r\nimport storyBlokService from '../../../services/MultiItemAccessories/storyBlokService';\r\nimport { getCookie } from 'cookies-next';\r\nimport { ACCESSORY, BASE, CONTRACT, HARDWARE, INTERNETFLOW, MOBILERATEPLAN, ONE_ECOMMERCE_HARDWARE_SUMMARY, TABLETS, TV, WATCHES } from '../../../utils/constants';\r\nimport Row from '../../ResponsiveRow/row';\r\nimport { MOBILEACCESSORIES, MONTHLY } from '../../../utils/constants';\r\nimport { setMmcItemTracker, trackNewDatalayerEvent, trackViewItem } from '../../..//utils/AnalyticsUtils';\r\nimport { CONTENT, CONTINUE, CTABUTTONCLICK, CTATEXTCLICK, GAEVENT, INFO, LEARNMORE, LINK, OPENPOPUP, POPUP, TABCLICK, VIEWEACHITEM } from '../../../Analytics/AnalyticsConstants';\r\nimport { useMultiAccessoryContext } from '../multiItemAccessoryStore/useMultiAccessoryContext';\r\nimport { useMultiAccessoryActions } from '../multiItemAccessoryStore/useMultiAccessoryActions';\r\nimport MultiAccessoryProvider from '../multiItemAccessoryStore/MultiAccessoryProvider';\r\nimport { MultiItemAccessoriesSchema } from './MultiItemAccessoriesSchema';\r\nimport { useMultiAccessoryUpdateCartActions } from '../multiItemAccessoryStore/useMultiAccessoryUpdateCartActions';\r\nimport Dotloader from '../../Dotloader/Dotloader';\r\nimport { countZero, getSBAssetUrl, replacePlaceholder, rp_lastcartItemWithParentPOType, viewport } from '../../../utils/utils';\r\nimport AccessoryModal from '../Accessory-card/AccessoryModal';\r\nimport FalconButtonV2 from '../../FalconButtonV2/FalconButtonV2';\r\nimport { AssetPathPropConfig } from '../../../services';\r\nimport AccessoryUpdateCartDotloader from '../AccessoryUpdateCartDotloader/AccessoryUpdateCartDotloader';\r\n\r\n// Export the schema for backward compatibility\r\n// export type { MultiItemAccessoriesSchema } from './MultiItemAccessoriesSchema';\r\n\r\n// Extended props interface to include setAccessoriesSelected as a separate prop\r\nexport interface MultiItemAccessoriesProps extends ComponentWithContentProps<MultiItemAccessoriesSchema> {\r\n setAccessoriesSelected?: (accessories: any[]) => void;\r\n}\r\n\r\n// eslint-disable-next-line max-lines-per-function\r\nconst MultiItemAccessories = ({ content, metadata }: MultiItemAccessoriesProps): JSX.Element => {\r\n const activelocaleId: string | undefined = metadata?.lang;\r\n const [deviceLoader, setDeviceLoader] = useState<boolean>(false);\r\n const [isMounted, setIsMounted] = useState<boolean>(false);\r\n const [showInfoModal, setShowInfoModal] = useState<string | null>(null); // 'WATCHES' or 'TABLETS' or null\r\n const cartId = getCookie('one-commerce-cartId');\r\n const [hardwareName, setHardwareName] = useState('');\r\n const [isSubscriptionFlow, setIsSubscriptionFlow] = useState<boolean>(false);\r\n // useRef: read sessionStorage once client-side — synchronously available everywhere,\r\n // avoids SSR hydration mismatch and async state-update timing issues\r\n const hardwareSessionObjRef = useRef<any>({});\r\n const { store, dispatch } = useMultiAccessoryContext();\r\n const actions = useMultiAccessoryActions(dispatch);\r\n const cartActions = useMultiAccessoryUpdateCartActions();\r\n const { recommendedAccessories, isFetchingRecommendedAccessories, deviceSessionValues, multiItemAccessoriessList, loading, isLoadingCartData , cartData, previousTab } = store;\r\n // Todo Get the correct data based on selected tab - for ACCESSORY use direct data, for others use hardwares property\r\n const selectedTabData = recommendedAccessories?.[store?.selectedTab]?.hardware;\r\n const basicConfigUrl = AssetPathPropConfig?.getInstance()?.getAssetPath();\r\n // Helper function to get modal popup content based on tab type\r\n const getModalContent = () => {\r\n return showInfoModal === WATCHES ? content?.watchesPopup?.[0] : content?.tabletsPopup?.[0];\r\n };\r\n \r\n const sbRecommendations: any[] = content?.recommendationType;\r\n // Create recommendationType object based on filteredSbRecommendations\r\n const recommendationType: any = {};\r\n \r\n // Single effect: read sessionStorage first, then kick off all init logic\r\nuseEffect(() => {\r\n setIsMounted(true);\r\n // Read sessionStorage client-side only to avoid SSR/hydration mismatch\r\n const sessionStr = sessionStorage?.getItem(ONE_ECOMMERCE_HARDWARE_SUMMARY);\r\n const sessionObj = sessionStr ? JSON.parse(sessionStr) : {};\r\n // Store in ref for synchronous access throughout the component lifecycle\r\n hardwareSessionObjRef.current = sessionObj;\r\n const deviceSessionValue = { ...sessionObj, cartId: cartId };\r\n actions.setDeviceSessionValues(deviceSessionValue);\r\n actions?.setSelectedTab(content?.defaultTabSelection);\r\n setHardwareName(sessionObj?.hardwareVariant?.note?.filter((item: any) => item.author === 'hardwareGroupName')?.[0]?.text);\r\n // Kick off TUA data load after session is ready\r\n setDeviceLoader(true);\r\n if (cartId) {\r\n fetchandSetRecommendations(undefined, sessionObj);\r\n }\r\n}, []);\r\n\r\n const fetchandSetRecommendations = (tabKey?: any, sessionObj?: any) => {\r\n // Use passed sessionObj (on initial load) or fall back to ref (on tab switch)\r\n const currentSessionObj = sessionObj ?? hardwareSessionObjRef.current;\r\n if (tabKey) {\r\n actions.setPreviousTab(store?.selectedTab); // Update previousTab in store before changing tab\r\n actions.setSelectedTab(tabKey);\r\n }\r\n if (tabKey) {\r\n if((recommendedAccessories?.[tabKey]?.hardware || [])?.length <= 0)\r\n {\r\n setDeviceLoader(true);\r\n actions.getRecommendedAccessory({ cartId, recommendationsType: tabKey });\r\n }\r\n if (loading) return; // Prevent new API calls if one is already running\r\n } else {\r\n cartActions.fetchCartData(cartId).then((res: any) => {\r\n const cartRecommendationsType = res?.cartRecommendationsType ?? [content?.defaultTabSelection];\r\n const selectedContractType = currentSessionObj?.hardwareVariant?.selectedContractType;\r\n const structuredCartData = rp_lastcartItemWithParentPOType(res?.cartItem ?? [],{},{},{});\r\n const subscriptionFlow = !(structuredCartData?.MOBILE_ORDER?.HARDWARE || structuredCartData?.STANDALONE_HARDWARE);\r\n setIsSubscriptionFlow(subscriptionFlow)\r\n const contractTerm = Number.parseFloat(structuredCartData?.MOBILE_ORDER?.HARDWARE?.itemTerm?.[0]?.duration?.amount) || 0\r\n // Filter sbRecommendations based on contract type(only for monthly) and for new subcriptions\r\n const filteredSbRecommendations = (\r\n // selectedContractType === CONTRACT\r\n contractTerm > 0\r\n && ((res?.cartItem?.[0]?.processType?.id === \"DEVICE_RENEWAL\" || res?.cartItem?.[0]?.processType?.id === \"DEVICE_RP_RENEWAL\") ? content?.enableExistingSubscription : true))\r\n ? sbRecommendations?.filter((item: string) => cartRecommendationsType.includes(item))\r\n : sbRecommendations?.filter((item: string) => item === ACCESSORY && cartRecommendationsType.includes(item));\r\n filteredSbRecommendations?.forEach((type: string) => {\r\n recommendationType[type] = [];\r\n });\r\n // Store recommendationType in state or ref if needed elsewhere\r\n actions.setRecommendedAccessories(recommendationType);\r\n const defaultTab = \r\n selectedContractType === CONTRACT ? filteredSbRecommendations?.includes(content?.defaultTabSelection) \r\n ? content?.defaultTabSelection \r\n : filteredSbRecommendations[0] : ACCESSORY;\r\n actions?.setSelectedTab(defaultTab);\r\n actions.getRecommendedAccessory({ cartId, recommendationsType: tabKey ? tabKey : defaultTab});\r\n }).catch(() => {\r\n // Redirect to summary page if getCart fails, same as recommendations failure\r\n const localIsSubscriptionFlow = [MOBILERATEPLAN, INTERNETFLOW, TV]?.includes?.(selectedTabData?.[0]?.recommendationProcessingType) ? true : (currentSessionObj?.hardwareVariant ? false : true);\r\n if (typeof window !== \"undefined\") {\r\n window.location.href = localIsSubscriptionFlow ? content?.winCheckoutUrl?.cached_url : content?.multiItemCheckoutUrl?.url;\r\n }\r\n });\r\n }\r\n }\r\n // to map storyblok and api data in store\r\n useEffect(() => {\r\n if ((recommendedAccessories?.[recommendedAccessories?.tabkey]?.hardware?.length) > 0) {\r\n if (recommendedAccessories?.tabkey === ACCESSORY) {\r\n // mapping of accessories according to recommendation api response\r\n storyBlokService?.getStoryBlokData(\r\n activelocaleId,\r\n recommendedAccessories?.[recommendedAccessories?.tabkey]?.hardware?.map((value: any) => value?.baseProducts),\r\n content?.parentSlugUrl\r\n ).then((res: any) => {\r\n sbRecommendationMapping(res,recommendedAccessories?.tabkey);\r\n });\r\n } else {\r\n const masterlst = recommendedAccessories?.tabkey === WATCHES ? content?.watchMasterList?.[0]?.reference?.content :\r\n content?.tabletMasterList?.[0]?.reference?.content\r\n sbRecommendationMapping(masterlst,recommendedAccessories?.tabkey);\r\n }\r\n } else {\r\n // redirect to summary page if no accessories are returned from backend\r\n if ((!isFetchingRecommendedAccessories || !cartId) && !isLoadingCartData && typeof window !== \"undefined\") {\r\n window.location.href = isSubscriptionFlow ? content?.winCheckoutUrl?.cached_url : content?.multiItemCheckoutUrl?.url;\r\n }\r\n }\r\n }, [recommendedAccessories])\r\n\r\n const sbRecommendationMapping = (response: any,tabKey: any) => {\r\n const accessoryList = (recommendedAccessories?.[tabKey]?.hardware || [])\r\n ?.filter((item: any) =>\r\n deviceSessionValues?.hardwareVariant?.selectedContractType === CONTRACT\r\n ? item?.recurringPrice?.monthlyInstallment > 0\r\n : item\r\n )\r\n ?.reduce((acc: any, value: any, currentIndex: number) => {\r\n const deviceDetails = {\r\n image: '',\r\n type: MOBILEACCESSORIES\r\n };\r\n let accessoryMappingSb;\r\n if(tabKey === ACCESSORY)\r\n {\r\n accessoryMappingSb = \r\n response?.sbStory?.data?.stories?.filter((val: any) => value?.baseProducts === val?.content?.productId)?.[0];\r\n const requestedVariant = accessoryMappingSb?.content?.body?.[0]?.deviceList?.find((deviceVariant: any) => deviceVariant?.devicePlanId === value?.id);\r\n deviceDetails.image = requestedVariant?.promoImageGallery?.[0]?.slideImages?.[0]\r\n ? requestedVariant?.promoImageGallery?.[0]?.slideImages?.[0]?.image?.filename\r\n : requestedVariant?.imageGallery?.[0]?.slideImages?.[0]?.image?.filename;\r\n deviceDetails.type = value?.content?.type ?? MOBILEACCESSORIES;\r\n }\r\n else{\r\n accessoryMappingSb = response?.body?.filter((val: any) => value?.baseProducts === val?.m_p_id)?.[0];\r\n deviceDetails.image = accessoryMappingSb?.images?.[0]?.filename\r\n deviceDetails.type = value?.content?.type ?? MOBILEACCESSORIES;\r\n }\r\n if (accessoryMappingSb) {\r\n acc.push({ sbStoryItem: accessoryMappingSb, imageData: deviceDetails, recomApiResponse: value });\r\n trackViewItem(VIEWEACHITEM, VIEWEACHITEM, {\r\n displayName: value?.name,\r\n productId: value?.id,\r\n priceValue: value?.oneTimePrice?.base,\r\n index: currentIndex,\r\n variant: value?.variantCategory?.color,\r\n storage: value?.variantCategory?.storage,\r\n });\r\n }\r\n return acc;\r\n }, []);\r\n if (accessoryList?.length > 0 && (response?.sbStory?.data?.stories || response?.body)?.length > 0) {\r\n actions.setMultiItemAccessoriessList({...multiItemAccessoriessList, [tabKey]: accessoryList });\r\n } else {\r\n // redirect to summary page if no accessories is eligbile\r\n window.location.href = isSubscriptionFlow ? content?.winCheckoutUrl?.cached_url : content?.multiItemCheckoutUrl?.url\r\n }\r\n setDeviceLoader(false);\r\n trackViewItemList(accessoryList);\r\n }\r\n\r\n //select first payment option as default initially unless provided in recommendation api\r\n useEffect(() => {\r\n (multiItemAccessoriessList?.[store?.selectedTab] || [])?.filter((item: any) => {\r\n if (item?.recomApiResponse?.paymentType?.toLowerCase()) {\r\n actions.setSelectedPaymentType(item?.recomApiResponse?.paymentType.toLowerCase() === MONTHLY ? CONTRACT : BASE);\r\n }\r\n }\r\n )\r\n }, [multiItemAccessoriessList]);\r\n\r\n const checkingviewPort = viewport();\r\n const findView = () => {\r\n //function to return no of cards in a row based on view\r\n if (checkingviewPort === 'large-desktop') {\r\n return 3;\r\n } else if (checkingviewPort === 'desktop') {\r\n return 3;\r\n } else if (checkingviewPort === 'tablet') {\r\n return 2;\r\n } else if (checkingviewPort === 'mobile') {\r\n return 1;\r\n }\r\n return 0;\r\n };\r\n const view: any = findView();\r\n\r\n const selectedRatePlan = recommendedAccessories?.[store?.selectedTab]?.ratePlan;\r\n const infoBannerPriceRaw = selectedRatePlan?.derivedPrice ?? selectedRatePlan?.listPrice ?? 0;\r\n\r\n // this is for structuring the event tracking data\r\n const trackViewItemList = (accessoryList: any) => {\r\n const itemList = accessoryList?.map((item: any, index: number) => {\r\n return ({\r\n displayName: item?.recomApiResponse?.name,\r\n productId: item?.recomApiResponse?.id,\r\n priceValue: item?.recomApiResponse?.oneTimePrice?.base,\r\n index: index,\r\n variant: item?.recomApiResponse?.variantCategory?.color,\r\n storage: item?.recomApiResponse?.variantCategory?.storage,\r\n })\r\n })\r\n setMmcItemTracker(itemList);\r\n }\r\n\r\n // Todod tab title should always be in english\r\n const handleTabClick = (tabKey: string, tabTitle: string) => {\r\n // Determine analytics tab title based on selection and Storyblok content\r\n let analyticsTabTitle = tabTitle;\r\n if (tabKey === ACCESSORY && content?.accessoryAnalyticsTitle) {\r\n analyticsTabTitle = content.accessoryAnalyticsTitle;\r\n } else if (tabKey === TABLETS && content?.tabletsAnalyticsTitle) {\r\n analyticsTabTitle = content.tabletsAnalyticsTitle;\r\n } else if (tabKey === WATCHES && content?.watchesAnalyticsTitle) {\r\n analyticsTabTitle = content.watchesAnalyticsTitle;\r\n } \r\n trackNewDatalayerEvent(GAEVENT, TABCLICK, {\r\n component: CONTENT,\r\n click_text: analyticsTabTitle\r\n });\r\n fetchandSetRecommendations(tabKey);\r\n };\r\n\r\n return (\r\n <>\r\n {loading && (store?.selectedTab === previousTab ? <Dotloader /> : <AccessoryUpdateCartDotloader content={content} />)}\r\n {/* Only render the main page container when mounted client-side and data is loading/ready */}\r\n {(isMounted && content && (multiItemAccessoriessList?.[store?.selectedTab]?.length > 0 || deviceLoader)) && (\r\n <div className={`${Styles.mainPage}`}>\r\n {content?.progressionBar?.[0] && (\r\n <ProgressionBar\r\n content={content?.progressionBar?.[0]}\r\n />\r\n )}\r\n <Row>\r\n <div>\r\n <div className={`${Styles.title}`}>\r\n <RichText content={content?.recommendationLabel} />\r\n </div>\r\n {Object.keys(recommendedAccessories || {}).filter((key: string) => sbRecommendations?.includes(key)).length <= 1 && !isSubscriptionFlow && (\r\n <div className={`${Styles.deviceText}`}>\r\n {content?.compatibleText}\r\n <span className={Styles.deviceName}>{hardwareName}</span>\r\n </div>\r\n )}\r\n </div>\r\n </Row>\r\n {/* Tabs based on recommendedAccessories, ordered by recommendationType from Storyblok */}\r\n {(Object.keys(recommendedAccessories || {}).filter((key: string) => sbRecommendations?.includes(key)).length > 1) && (\r\n <div className={Styles.tabsContainer}>\r\n {(content?.recommendationType || [])\r\n ?.filter((tabKey: string) => recommendedAccessories?.[tabKey])\r\n ?.map((tabKey: string) => {\r\n // Count from cartData (real-time source of truth)\r\n const totalCount = Object.keys(cartData?.[tabKey] || {}).length;\r\n\r\n // Get tab title from Storyblok content\r\n const tabTitle = tabKey === ACCESSORY ? content?.accessoryTitle\r\n : tabKey === WATCHES ? content?.watchesTitle\r\n : tabKey === TABLETS ? content?.tabletsTitle\r\n : tabKey;\r\n return (\r\n <button\r\n key={tabKey}\r\n className={`${Styles.tabButton} ${store.selectedTab === tabKey ? Styles.activeTab : ''}`}\r\n onClick={() => {\r\n if (store.selectedTab !== tabKey) {\r\n handleTabClick(tabKey, tabTitle);\r\n }\r\n }}\r\n disabled={!recommendedAccessories?.[tabKey]}\r\n >\r\n {tabTitle}\r\n {totalCount > 0 && (\r\n <span className={Styles.tabCount}>\r\n {totalCount}\r\n </span>\r\n )}\r\n </button>\r\n );\r\n })}\r\n </div>\r\n )}\r\n {/* Information banner below tabs - for Smartwatches and Tablets */}\r\n {((store.selectedTab === WATCHES && content?.watchesInfoBannerText) || \r\n (store.selectedTab === TABLETS && content?.tabletsInfoBannerText)) && (\r\n <div className={Styles.infoBanner}>\r\n <div className={Styles.infoBannerContent}>\r\n <img className={Styles.infoIcon} src={content?.esimIcon?.filename} />\r\n <span>\r\n <span>\r\n {replacePlaceholder(\r\n store.selectedTab === WATCHES ? content?.watchesInfoBannerText : content?.tabletsInfoBannerText,\r\n [countZero(infoBannerPriceRaw)]\r\n )}\r\n </span>\r\n <span className={Styles.learnMoreText} onClick={() => {\r\n trackNewDatalayerEvent(GAEVENT, CTATEXTCLICK, {\r\n component: LINK,\r\n click_text: LEARNMORE\r\n });\r\n setShowInfoModal(store.selectedTab);\r\n }}>\r\n {content?.learnMoreText}\r\n </span>\r\n </span>\r\n </div>\r\n </div>\r\n )}\r\n\r\n\r\n {isSubscriptionFlow && (\r\n <PaymentTypeTabs\r\n content={{\r\n paymentHeadingText: content?.paymentHeadingText,\r\n paymentOptions: content?.paymentOptions,\r\n paymentTypeChngePopup: content?.paymentTypeChngePopup?.[0],\r\n paymentTypeChngePopupOnetime: content?.paymentTypeChngePopupOnetime?.[0],\r\n }}\r\n />\r\n )}\r\n {(deviceLoader && !multiItemAccessoriessList?.[store?.selectedTab]?.length) ? (\r\n <AccessoryPreviewCardLoader cards={view} />\r\n ) : (\r\n <AccessoryCard\r\n content={content}\r\n tabIndex={1}\r\n checkingviewPort={checkingviewPort}\r\n\t\t\t\t isSubscriptionFlow={isSubscriptionFlow}\r\n />\r\n )}\r\n </div>\r\n )}\r\n \r\n {/* Info Modal for Watches and Tablets */}\r\n {showInfoModal && (() => {\r\n const modalContent = getModalContent();\r\n trackNewDatalayerEvent(GAEVENT, OPENPOPUP, {\r\n component: POPUP,\r\n message_title: modalContent?.heading?.content?.[0]?.content?.[0]?.text?.slice(0, 100),\r\n message_description: modalContent?.description?.content?.[0]?.content?.[0]?.text?.slice(0, 100),\r\n message_type: INFO,\r\n });\r\n return (\r\n <AccessoryModal\r\n modalState={!!showInfoModal}\r\n handler={() => setShowInfoModal(null)}\r\n showFooter={false}\r\n height={'auto'}\r\n fixedWidth={(checkingviewPort === 'large-desktop' || checkingviewPort === 'desktop' || checkingviewPort === 'tablet') ? '624px' : ''}\r\n noCloseButton={false}\r\n backDrop={true}\r\n >\r\n <div className={Styles.watchInfoModal}>\r\n {modalContent?.heading && (\r\n <div className={Styles.modalHeading}>\r\n <RichText content={modalContent.heading} />\r\n </div>\r\n )}\r\n \r\n {modalContent?.description && (\r\n <div className={Styles.modalDescription}>\r\n <RichText content={modalContent.description} />\r\n </div>\r\n )}\r\n \r\n <div className={Styles.modalButtons}>\r\n {modalContent?.link && (\r\n <a \r\n href={getSBAssetUrl(basicConfigUrl, modalContent.link?.cached_url || modalContent.link?.url)} \r\n target=\"_blank\" \r\n rel=\"noopener noreferrer\"\r\n className={Styles.factSheetLink}\r\n >\r\n {modalContent.linkText}\r\n </a>\r\n )}\r\n \r\n {modalContent?.button?.length > 0 && (\r\n <FalconButtonV2\r\n content={modalContent.button[0]}\r\n onClick={() => {\r\n trackNewDatalayerEvent(GAEVENT, CTABUTTONCLICK, {\r\n component: LINK,\r\n click_text: CONTINUE\r\n });\r\n setShowInfoModal(null)\r\n }}\r\n metadata={undefined}\r\n wafIdentifier={''}\r\n />\r\n )}\r\n </div>\r\n </div>\r\n </AccessoryModal>\r\n );\r\n })()}\r\n </>\r\n );\r\n}\r\n\r\n// HOC Pattern: Wrap the component with provider at export\r\nconst MultiItemAccessoriesWithProvider = (props: MultiItemAccessoriesProps) => (\r\n <MultiAccessoryProvider>\r\n <MultiItemAccessories {...props} />\r\n </MultiAccessoryProvider>\r\n);\r\n\r\nexport default MultiItemAccessoriesWithProvider;"],"names":["MultiItemAccessories","content","metadata","activelocaleId","lang","deviceLoader","setDeviceLoader","useState","isMounted","setIsMounted","showInfoModal","setShowInfoModal","cartId","getCookie","hardwareName","setHardwareName","isSubscriptionFlow","setIsSubscriptionFlow","hardwareSessionObjRef","useRef","store","dispatch","useMultiAccessoryContext","actions","useMultiAccessoryActions","cartActions","useMultiAccessoryUpdateCartActions","recommendedAccessories","isFetchingRecommendedAccessories","deviceSessionValues","multiItemAccessoriessList","loading","isLoadingCartData","cartData","previousTab","selectedTabData","_a","selectedTab","hardware","basicConfigUrl","_b","AssetPathPropConfig","getInstance","getAssetPath","sbRecommendations","recommendationType","useEffect","sessionStr","sessionStorage","getItem","ONE_ECOMMERCE_HARDWARE_SUMMARY","sessionObj","JSON","parse","current","deviceSessionValue","setDeviceSessionValues","setSelectedTab","defaultTabSelection","_d","_c","hardwareVariant","note","filter","item","author","text","fetchandSetRecommendations","undefined","tabKey","currentSessionObj","setPreviousTab","length","getRecommendedAccessory","recommendationsType","fetchCartData","then","res","cartRecommendationsType","selectedContractType","structuredCartData","rp_lastcartItemWithParentPOType","cartItem","subscriptionFlow","MOBILE_ORDER","HARDWARE","STANDALONE_HARDWARE","filteredSbRecommendations","Number","parseFloat","_j","_h","_g","_f","_e","itemTerm","duration","amount","_m","_l","_k","processType","id","_q","_p","_o","enableExistingSubscription","includes","ACCESSORY","forEach","type","setRecommendedAccessories","defaultTab","CONTRACT","catch","localIsSubscriptionFlow","MOBILERATEPLAN","INTERNETFLOW","TV","call","recommendationProcessingType","window","location","href","winCheckoutUrl","cached_url","multiItemCheckoutUrl","url","tabkey","storyBlokService","getStoryBlokData","map","value","baseProducts","parentSlugUrl","sbRecommendationMapping","masterlst","WATCHES","watchMasterList","reference","tabletMasterList","response","accessoryList","recurringPrice","monthlyInstallment","reduce","acc","currentIndex","deviceDetails","image","MOBILEACCESSORIES","accessoryMappingSb","sbStory","data","stories","val","productId","requestedVariant","body","deviceList","find","deviceVariant","devicePlanId","promoImageGallery","slideImages","_r","filename","_w","_v","_u","_t","imageGallery","_s","_y","_x","_0","_z","m_p_id","_2","_1","images","_4","_3","push","sbStoryItem","imageData","recomApiResponse","trackViewItem","VIEWEACHITEM","displayName","name","priceValue","_5","oneTimePrice","base","index","variant","_6","variantCategory","color","storage","_7","setMultiItemAccessoriessList","Object","assign","trackViewItemList","paymentType","toLowerCase","setSelectedPaymentType","MONTHLY","BASE","checkingviewPort","viewport","view","selectedRatePlan","ratePlan","infoBannerPriceRaw","derivedPrice","listPrice","itemList","setMmcItemTracker","React","createElement","Fragment","Dotloader","AccessoryUpdateCartDotloader","className","Styles","mainPage","progressionBar","ProgressionBar","Row","title","RichText","recommendationLabel","keys","key","deviceText","compatibleText","deviceName","tabsContainer","totalCount","tabTitle","accessoryTitle","watchesTitle","TABLETS","tabletsTitle","tabButton","activeTab","onClick","analyticsTabTitle","accessoryAnalyticsTitle","tabletsAnalyticsTitle","watchesAnalyticsTitle","trackNewDatalayerEvent","GAEVENT","TABCLICK","component","CONTENT","click_text","handleTabClick","disabled","tabCount","watchesInfoBannerText","tabletsInfoBannerText","infoBanner","infoBannerContent","infoIcon","src","esimIcon","replacePlaceholder","countZero","learnMoreText","CTATEXTCLICK","LINK","LEARNMORE","PaymentTypeTabs","paymentHeadingText","paymentOptions","paymentTypeChngePopup","paymentTypeChngePopupOnetime","AccessoryPreviewCardLoader","cards","AccessoryCard","tabIndex","modalContent","watchesPopup","tabletsPopup","getModalContent","OPENPOPUP","POPUP","message_title","heading","slice","message_description","description","message_type","INFO","AccessoryModal","modalState","handler","showFooter","height","fixedWidth","noCloseButton","backDrop","watchInfoModal","modalHeading","modalDescription","modalButtons","link","getSBAssetUrl","target","rel","factSheetLink","linkText","button","FalconButtonV2","CTABUTTONCLICK","CONTINUE","wafIdentifier","MultiItemAccessoriesWithProvider","props","MultiAccessoryProvider"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"PaymentTypeTabs.js","sources":["../../../../../src/components/Accessories/PaymentTypeTabs/PaymentTypeTabs.tsx"],"sourcesContent":["import React, { useEffect, JSX, useState }from 'react';\nimport Styles from './PaymentTypeTabs.module.scss';\nimport Row from '../../ResponsiveRow/row';\nimport { useMultiAccessoryContext } from '../multiItemAccessoryStore/useMultiAccessoryContext';\nimport { useMultiAccessoryActions } from '../multiItemAccessoryStore/useMultiAccessoryActions';\nimport { useMultiAccessoryUpdateCartActions } from '../multiItemAccessoryStore/useMultiAccessoryUpdateCartActions';\nimport { trackNewDatalayerEvent } from '../../../utils/AnalyticsUtils';\nimport { CONTENT, GAEVENT, TABCLICK } from '../../../Analytics/AnalyticsConstants';\nimport { ACCESSORY, BASE, INTERNETFLOW, MOBILERATEPLAN, TV } from '../../../utils/constants';\nimport { getCookie } from 'cookies-next';\nimport { viewport } from '../../../utils/utils';\nimport RichText from '../../richtext';\nimport FalconButtonV2 from '../../FalconButtonV2/FalconButtonV2';\nimport GenericModal from '../../NewLineCheck/GenericModal';\n\nexport interface paymentOptionSchema {\n paymentSubText: string;\n paymentText: string;\n type: string;\n}\ninterface PaymentTypeTabsProps {\n content: {\n paymentHeadingText: string;\n paymentOptions: paymentOptionSchema[];\n paymentTypeChngePopup: any;\n paymentTypeChngePopupOnetime: any;\n };\n}\n\nconst PaymentTypeTabs = ({ content }: PaymentTypeTabsProps): JSX.Element => {\n const {store, dispatch} = useMultiAccessoryContext();\n const actions = useMultiAccessoryActions(dispatch);\n const cartActions = useMultiAccessoryUpdateCartActions();\n const cartId = getCookie('one-commerce-cartId');\n const { selectedPaymentType, recommendedAccessories, cartData } = store;\n const internetFlow = [INTERNETFLOW, TV ]?.includes?.(recommendedAccessories?.[0]?.recommendationProcessingType) ? true : false;\n const ratePlanFlow = [MOBILERATEPLAN ]?.includes?.(recommendedAccessories?.[0]?.recommendationProcessingType) ? true : false;\n const [showInfoModal, setShowInfoModal] = useState(false);\n const checkingviewPort = viewport()\n // Popup content depends on the currently selected payment type:\n // BASE (one-time) → paymentTypeChngePopupOnetime, CONTRACT (monthly) → paymentTypeChngePopup\n const activePaymentPopupContent = selectedPaymentType === BASE\n ? content?.paymentTypeChngePopupOnetime\n : content?.paymentTypeChngePopup;\n\n // Track default selection when component mounts or when selectedPaymentType is set for event Tracking\n useEffect(() => {\n if (selectedPaymentType && content?.paymentOptions?.length > 0) {\n const selectedOption = content?.paymentOptions?.find(option => option.type === selectedPaymentType);\n if (selectedOption) {\n trackNewDatalayerEvent(GAEVENT, TABCLICK, {\n click_text: selectedOption?.paymentText,\n headline: internetFlow ? INTERNETFLOW : ratePlanFlow ? MOBILERATEPLAN : '',\n });\n }\n }\n }, [selectedPaymentType, content?.paymentOptions, internetFlow, ratePlanFlow]);\n\n const handleTabClick = async (selectedOption: paymentOptionSchema) => {\n // Do nothing if the tab is already selected\n if (selectedOption.type === selectedPaymentType) return;\n trackNewDatalayerEvent(GAEVENT, TABCLICK, {\n component: CONTENT,\n click_text: selectedOption?.paymentText\n });\n const previousPaymentType = selectedPaymentType;\n actions.setSelectedPaymentType(selectedOption.type);\n // Call cart API with payment term change only if there are items in the cart.\n // Pass newPaymentType explicitly to avoid stale storeRef (state hasn't committed yet).\n const hasItemsInCart = Object.keys(cartData?.[ACCESSORY] || {}).length > 0;\n\n if (cartId && hasItemsInCart) {\n const response = await cartActions.multiItemAccessorycreateCartRequest({\n id: cartId,\n redirectUrl: '',\n paymentTermOnly: true,\n skipRedirect: true,\n newPaymentType: selectedOption.type,\n });\n if (response) {\n // Show the payment change modal only when the API call succeeded\n setShowInfoModal(true);\n } else {\n // Revert tab selection if the API call failed\n actions.setSelectedPaymentType(previousPaymentType);\n }\n }\n };\n\n return (\n <>\n {content?.paymentOptions?.length > 1 && <Row>\n <div className={Styles.paymentTypeContainer}>\n <div className={Styles.paymentQuestion}>\n {content.paymentHeadingText}\n </div>\n <div className={Styles.tabsContainer}>\n {(content?.paymentOptions || []).map((item) => {\n return (\n <button\n className={`${Styles.tabButton} ${selectedPaymentType === item?.type ? Styles.activeTab : ''}`}\n onClick={() => handleTabClick(item)}\n >\n <span className={`${Styles.paymentText}`} >{item?.paymentText}</span> <span className={`${Styles.paymentSubText}`}>{item?.paymentSubText && item?.paymentSubText}</span>\n </button>\n )\n })}\n\n {/* Modal whn the payment type is changed */}\n {showInfoModal && (\n <GenericModal\n modalState={showInfoModal}\n handler={() => setShowInfoModal(false)}\n showFooter={false}\n width={'624px'}\n height='auto'\n noCloseButton={false}\n backDrop={true}\n bodyPadding={checkingviewPort === 'mobile' ? '16px' : '24px'}\n >\n <div className={Styles.paymentPopupContent}>\n <div className={Styles.paymentPopupHeading}>\n <RichText content={activePaymentPopupContent?.heading} />\n </div>\n <div className={Styles.paymentPopupDescription}>\n <RichText content={activePaymentPopupContent?.description} />\n </div>\n {activePaymentPopupContent?.button?.length > 0 && (\n <div className={Styles.paymentPopupButton}>\n <FalconButtonV2\n content={activePaymentPopupContent?.button?.[0]}\n onClick={() => {\n setShowInfoModal(false);\n }}\n metadata={undefined}\n wafIdentifier={''}\n />\n </div>\n )}\n </div>\n </GenericModal>\n )}\n </div>\n </div>\n </Row>}\n </>\n );\n};\n\nexport default PaymentTypeTabs;"],"names":["PaymentTypeTabs","content","store","dispatch","useMultiAccessoryContext","actions","useMultiAccessoryActions","cartActions","useMultiAccessoryUpdateCartActions","cartId","getCookie","selectedPaymentType","recommendedAccessories","cartData","internetFlow","_b","INTERNETFLOW","TV","_a","includes","call","recommendationProcessingType","ratePlanFlow","_e","_d","MOBILERATEPLAN","_f","showInfoModal","setShowInfoModal","useState","checkingviewPort","viewport","activePaymentPopupContent","BASE","paymentTypeChngePopupOnetime","paymentTypeChngePopup","useEffect","paymentOptions","length","selectedOption","find","option","type","trackNewDatalayerEvent","GAEVENT","TABCLICK","click_text","paymentText","headline","React","createElement","Fragment","_g","Row","className","Styles","paymentTypeContainer","paymentQuestion","paymentHeadingText","tabsContainer","map","item","tabButton","activeTab","onClick","handleTabClick","__awaiter","component","CONTENT","previousPaymentType","setSelectedPaymentType","hasItemsInCart","Object","keys","ACCESSORY","multiItemAccessorycreateCartRequest","id","redirectUrl","paymentTermOnly","skipRedirect","newPaymentType","paymentSubText","GenericModal","modalState","handler","showFooter","width","height","noCloseButton","backDrop","bodyPadding","paymentPopupContent","paymentPopupHeading","RichText","heading","paymentPopupDescription","description","button","_h","paymentPopupButton","FalconButtonV2","_j","metadata","undefined","wafIdentifier"],"mappings":"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"}
1
+ {"version":3,"file":"PaymentTypeTabs.js","sources":["../../../../../src/components/Accessories/PaymentTypeTabs/PaymentTypeTabs.tsx"],"sourcesContent":["import React, { useEffect, JSX, useState }from 'react';\r\nimport Styles from './PaymentTypeTabs.module.scss';\r\nimport Row from '../../ResponsiveRow/row';\r\nimport { useMultiAccessoryContext } from '../multiItemAccessoryStore/useMultiAccessoryContext';\r\nimport { useMultiAccessoryActions } from '../multiItemAccessoryStore/useMultiAccessoryActions';\r\nimport { useMultiAccessoryUpdateCartActions } from '../multiItemAccessoryStore/useMultiAccessoryUpdateCartActions';\r\nimport { trackNewDatalayerEvent } from '../../../utils/AnalyticsUtils';\r\nimport { CONTENT, GAEVENT, TABCLICK } from '../../../Analytics/AnalyticsConstants';\r\nimport { ACCESSORY, BASE, INTERNETFLOW, MOBILERATEPLAN, TV } from '../../../utils/constants';\r\nimport { getCookie } from 'cookies-next';\r\nimport { viewport } from '../../../utils/utils';\r\nimport RichText from '../../richtext';\r\nimport FalconButtonV2 from '../../FalconButtonV2/FalconButtonV2';\r\nimport GenericModal from '../../NewLineCheck/GenericModal';\r\n\r\nexport interface paymentOptionSchema {\r\n paymentSubText: string;\r\n paymentText: string;\r\n type: string;\r\n}\r\ninterface PaymentTypeTabsProps {\r\n content: {\r\n paymentHeadingText: string;\r\n paymentOptions: paymentOptionSchema[];\r\n paymentTypeChngePopup: any;\r\n paymentTypeChngePopupOnetime: any;\r\n };\r\n}\r\n\r\nconst PaymentTypeTabs = ({ content }: PaymentTypeTabsProps): JSX.Element => {\r\n const {store, dispatch} = useMultiAccessoryContext();\r\n const actions = useMultiAccessoryActions(dispatch);\r\n const cartActions = useMultiAccessoryUpdateCartActions();\r\n const cartId = getCookie('one-commerce-cartId');\r\n const { selectedPaymentType, recommendedAccessories, cartData } = store;\r\n const internetFlow = [INTERNETFLOW, TV ]?.includes?.(recommendedAccessories?.[0]?.recommendationProcessingType) ? true : false;\r\n const ratePlanFlow = [MOBILERATEPLAN ]?.includes?.(recommendedAccessories?.[0]?.recommendationProcessingType) ? true : false;\r\n const [showInfoModal, setShowInfoModal] = useState(false);\r\n const checkingviewPort = viewport()\r\n // Popup content depends on the currently selected payment type:\r\n // BASE (one-time) → paymentTypeChngePopupOnetime, CONTRACT (monthly) → paymentTypeChngePopup\r\n const activePaymentPopupContent = selectedPaymentType === BASE\r\n ? content?.paymentTypeChngePopupOnetime\r\n : content?.paymentTypeChngePopup;\r\n\r\n // Track default selection when component mounts or when selectedPaymentType is set for event Tracking\r\n useEffect(() => {\r\n if (selectedPaymentType && content?.paymentOptions?.length > 0) {\r\n const selectedOption = content?.paymentOptions?.find(option => option.type === selectedPaymentType);\r\n if (selectedOption) {\r\n trackNewDatalayerEvent(GAEVENT, TABCLICK, {\r\n click_text: selectedOption?.paymentText,\r\n headline: internetFlow ? INTERNETFLOW : ratePlanFlow ? MOBILERATEPLAN : '',\r\n });\r\n }\r\n }\r\n }, [selectedPaymentType, content?.paymentOptions, internetFlow, ratePlanFlow]);\r\n\r\n const handleTabClick = async (selectedOption: paymentOptionSchema) => {\r\n // Do nothing if the tab is already selected\r\n if (selectedOption.type === selectedPaymentType) return;\r\n trackNewDatalayerEvent(GAEVENT, TABCLICK, {\r\n component: CONTENT,\r\n click_text: selectedOption?.paymentText\r\n });\r\n const previousPaymentType = selectedPaymentType;\r\n actions.setSelectedPaymentType(selectedOption.type);\r\n // Call cart API with payment term change only if there are items in the cart.\r\n // Pass newPaymentType explicitly to avoid stale storeRef (state hasn't committed yet).\r\n const hasItemsInCart = Object.keys(cartData?.[ACCESSORY] || {}).length > 0;\r\n\r\n if (cartId && hasItemsInCart) {\r\n const response = await cartActions.multiItemAccessorycreateCartRequest({\r\n id: cartId,\r\n redirectUrl: '',\r\n paymentTermOnly: true,\r\n skipRedirect: true,\r\n newPaymentType: selectedOption.type,\r\n });\r\n if (response) {\r\n // Show the payment change modal only when the API call succeeded\r\n setShowInfoModal(true);\r\n } else {\r\n // Revert tab selection if the API call failed\r\n actions.setSelectedPaymentType(previousPaymentType);\r\n }\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n {content?.paymentOptions?.length > 1 && <Row>\r\n <div className={Styles.paymentTypeContainer}>\r\n <div className={Styles.paymentQuestion}>\r\n {content.paymentHeadingText}\r\n </div>\r\n <div className={Styles.tabsContainer}>\r\n {(content?.paymentOptions || []).map((item) => {\r\n return (\r\n <button\r\n className={`${Styles.tabButton} ${selectedPaymentType === item?.type ? Styles.activeTab : ''}`}\r\n onClick={() => handleTabClick(item)}\r\n >\r\n <span className={`${Styles.paymentText}`} >{item?.paymentText}</span> <span className={`${Styles.paymentSubText}`}>{item?.paymentSubText && item?.paymentSubText}</span>\r\n </button>\r\n )\r\n })}\r\n\r\n {/* Modal whn the payment type is changed */}\r\n {showInfoModal && (\r\n <GenericModal\r\n modalState={showInfoModal}\r\n handler={() => setShowInfoModal(false)}\r\n showFooter={false}\r\n width={'624px'}\r\n height='auto'\r\n noCloseButton={false}\r\n backDrop={true}\r\n bodyPadding={checkingviewPort === 'mobile' ? '16px' : '24px'}\r\n >\r\n <div className={Styles.paymentPopupContent}>\r\n <div className={Styles.paymentPopupHeading}>\r\n <RichText content={activePaymentPopupContent?.heading} />\r\n </div>\r\n <div className={Styles.paymentPopupDescription}>\r\n <RichText content={activePaymentPopupContent?.description} />\r\n </div>\r\n {activePaymentPopupContent?.button?.length > 0 && (\r\n <div className={Styles.paymentPopupButton}>\r\n <FalconButtonV2\r\n content={activePaymentPopupContent?.button?.[0]}\r\n onClick={() => {\r\n setShowInfoModal(false);\r\n }}\r\n metadata={undefined}\r\n wafIdentifier={''}\r\n />\r\n </div>\r\n )}\r\n </div>\r\n </GenericModal>\r\n )}\r\n </div>\r\n </div>\r\n </Row>}\r\n </>\r\n );\r\n};\r\n\r\nexport default PaymentTypeTabs;"],"names":["PaymentTypeTabs","content","store","dispatch","useMultiAccessoryContext","actions","useMultiAccessoryActions","cartActions","useMultiAccessoryUpdateCartActions","cartId","getCookie","selectedPaymentType","recommendedAccessories","cartData","internetFlow","_b","INTERNETFLOW","TV","_a","includes","call","recommendationProcessingType","ratePlanFlow","_e","_d","MOBILERATEPLAN","_f","showInfoModal","setShowInfoModal","useState","checkingviewPort","viewport","activePaymentPopupContent","BASE","paymentTypeChngePopupOnetime","paymentTypeChngePopup","useEffect","paymentOptions","length","selectedOption","find","option","type","trackNewDatalayerEvent","GAEVENT","TABCLICK","click_text","paymentText","headline","React","createElement","Fragment","_g","Row","className","Styles","paymentTypeContainer","paymentQuestion","paymentHeadingText","tabsContainer","map","item","tabButton","activeTab","onClick","handleTabClick","__awaiter","component","CONTENT","previousPaymentType","setSelectedPaymentType","hasItemsInCart","Object","keys","ACCESSORY","multiItemAccessorycreateCartRequest","id","redirectUrl","paymentTermOnly","skipRedirect","newPaymentType","paymentSubText","GenericModal","modalState","handler","showFooter","width","height","noCloseButton","backDrop","bodyPadding","paymentPopupContent","paymentPopupHeading","RichText","heading","paymentPopupDescription","description","button","_h","paymentPopupButton","FalconButtonV2","_j","metadata","undefined","wafIdentifier"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"progressionBar.js","sources":["../../../../../src/components/Accessories/ProgressionBar/progressionBar.tsx"],"sourcesContent":["import Row from '../../ResponsiveRow/row';\nimport React , { JSX } from 'react';\nimport Styles from './progressionBar.module.scss';\nimport { ACCESSORYLABEL, VASSTEPPERLABEL } from '../../../utils/constants';\nimport { ComponentWithContentProps, GenericSBProps } from '../../types';\nimport { useMultiAccessoryContext } from '../multiItemAccessoryStore/useMultiAccessoryContext';\n\ninterface ProgressionBarProps extends GenericSBProps {\n pickYourDeviceLabel: string;\n customizeDeviceLabel: string;\n yourSubscriptionLabel: string;\n vasStepperLabel: string;\n checkoutLabel: string;\n accessoriesLabel: string;\n selectedStep?: string;\n optionalLabelText: string;\n}\n\nconst ProgressionBar = ({\n content\n}: ComponentWithContentProps<ProgressionBarProps>): JSX.Element => {\n /**not needed here in prod-card as it will open only MIA page */\n // const deviceStore = useSelector(deviceSelector);\n // const { multiItemAccessory } = deviceStore;\n const { store } = useMultiAccessoryContext();\n const { deviceSessionValues } = store;\n // Check if internet summary session exists\n const hasInternetSummarySession =\n typeof window !== 'undefined' &&\n sessionStorage.getItem('one-ecommerce-internetSummary') !== null;\n\n //progression bar titles\n const steps: any = {};\n if (content?.pickYourDeviceLabel && deviceSessionValues?.hardwareVariant) steps.pickYourDeviceLabel = content.pickYourDeviceLabel;\n if (content?.customizeDeviceLabel && deviceSessionValues?.hardwareVariant) steps.customizeDeviceLabel = content.customizeDeviceLabel;\n if (content?.yourSubscriptionLabel) steps.yourSubscriptionLabel = content.yourSubscriptionLabel;\n if (content?.vasStepperLabel && hasInternetSummarySession)\n steps.vasStepperLabel = content.vasStepperLabel;\n if (content?.accessoriesLabel) steps.accessoriesLabel = content.accessoriesLabel;\n if (content?.checkoutLabel) steps.checkoutLabel = content.checkoutLabel;\n const selectedStep = content?.selectedStep;\n let selectedIndex: number;\n Object.entries(steps).forEach(([key], index) => {\n if (key === selectedStep) {\n selectedIndex = index;\n }\n });\n\n return (\n <Row>\n <div className={Styles.steps}>\n <div className={Styles.numbers}>\n {Object.entries(steps)\n .filter((value) => value[1] !== '')\n .filter((value) => {\n if (value[1] === content?.accessoriesLabel) {\n return (selectedStep === ACCESSORYLABEL); // to show accesories label only when recommend accessory is present or if the selected step is accessory\n }\n else {\n return value;\n }\n })\n .map(([key, value]: any, index) => {\n return (\n <div key={key} className={`d-flex ${Styles.step} ${key === selectedStep ? Styles.active : ''} ${selectedStep === ACCESSORYLABEL ? Styles.accessorybackground : Styles.progressbarBackground} `} >\n <div\n className={`${Styles.stepCount} ${key === selectedStep ? Styles.active : ''} ${selectedIndex > index ? Styles.finished : ''\n }`}\n >\n {index + 1}\n </div>\n <span>{value}</span>\n {key === ACCESSORYLABEL && <div className={`${selectedStep === ACCESSORYLABEL ? Styles.accesoriesOptionalText : Styles.optionalText}`}>{content?.optionalLabelText}</div>}\n {key === VASSTEPPERLABEL && <div className={`${selectedStep === VASSTEPPERLABEL ? Styles.accesoriesOptionalText : Styles.optionalText}`}>{content?.optionalLabelText}</div>}\n </div>\n );\n })}\n </div>\n </div>\n </Row>\n );\n};\n\nexport default ProgressionBar;\n"],"names":["ProgressionBar","content","store","useMultiAccessoryContext","deviceSessionValues","hasInternetSummarySession","window","sessionStorage","getItem","steps","pickYourDeviceLabel","hardwareVariant","customizeDeviceLabel","yourSubscriptionLabel","vasStepperLabel","accessoriesLabel","checkoutLabel","selectedStep","selectedIndex","Object","entries","forEach","key","index","React","Row","createElement","className","Styles","numbers","filter","value","ACCESSORYLABEL","map","step","active","accessorybackground","progressbarBackground","stepCount","finished","accesoriesOptionalText","optionalText","optionalLabelText","VASSTEPPERLABEL"],"mappings":"kSAkBA,MAAMA,EAAiB,EACrBC,cAKA,MAAMC,MAAEA,GAAUC,KACZC,oBAAGA,GAAwBF,EAE3BG,EACc,oBAAXC,QACqD,OAA5DC,eAAeC,QAAQ,iCAGnBC,EAAa,CAAA,GACfR,aAAO,EAAPA,EAASS,uBAAuBN,aAAmB,EAAnBA,EAAqBO,mBAAiBF,EAAMC,oBAAsBT,EAAQS,sBAC1GT,aAAO,EAAPA,EAASW,wBAAyBR,aAAmB,EAAnBA,EAAqBO,mBAAiBF,EAAMG,qBAAuBX,EAAQW,uBAC7GX,aAAO,EAAPA,EAASY,yBAAuBJ,EAAMI,sBAAwBZ,EAAQY,wBACtEZ,eAAAA,EAASa,kBAAmBT,IAC9BI,EAAMK,gBAAkBb,EAAQa,kBAC9Bb,aAAO,EAAPA,EAASc,oBAAkBN,EAAMM,iBAAmBd,EAAQc,mBAC5Dd,aAAO,EAAPA,EAASe,iBAAeP,EAAMO,cAAgBf,EAAQe,eAC1D,MAAMC,EAAehB,aAAO,EAAPA,EAASgB,aAC9B,IAAIC,EAOJ,OANAC,OAAOC,QAAQX,GAAOY,QAAQ,EAAEC,GAAMC,KAChCD,IAAQL,IACVC,EAAgBK,KAKlBC,gBAACC,EAAG,KACFD,EAAAE,cAAA,MAAA,CAAKC,UAAWC,EAAOnB,OACrBe,EAAAE,cAAA,MAAA,CAAKC,UAAWC,EAAOC,SACpBV,OAAOC,QAAQX,GACbqB,OAAQC,GAAuB,KAAbA,EAAM,IACxBD,OAAQC,GACHA,EAAM,MAAO9B,aAAO,EAAPA,EAASc,kBAChBE,IAAiBe,EAGlBD,GAGVE,IAAI,EAAEX,EAAKS,GAAaR,IAErBC,EAAAE,cAAA,MAAA,CAAKJ,IAAKA,EAAKK,UAAW,UAAUC,EAAOM,SAASZ,IAAQL,EAAeW,EAAOO,OAAS,MAAMlB,IAAiBe,EAAiBJ,EAAOQ,oBAAsBR,EAAOS,0BACrKb,EAAAE,cAAA,MAAA,CACEC,UAAW,GAAGC,EAAOU,aAAahB,IAAQL,EAAeW,EAAOO,OAAS,MAAMjB,EAAgBK,EAAQK,EAAOW,SAAW,MAGxHhB,EAAQ,GAEXC,EAAAE,cAAA,OAAA,KAAOK,GACNT,IAAQU,GAAkBR,EAAAE,cAAA,MAAA,CAAKC,UAAW,GAAGV,IAAiBe,EAAiBJ,EAAOY,uBAAyBZ,EAAOa,gBAAiBxC,aAAO,EAAPA,EAASyC,mBAChJpB,IAAQqB,GAAmBnB,EAAAE,cAAA,MAAA,CAAKC,UAAW,GAAGV,IAAiB0B,EAAkBf,EAAOY,uBAAyBZ,EAAOa,gBAAiBxC,aAAO,EAAPA,EAASyC"}
1
+ {"version":3,"file":"progressionBar.js","sources":["../../../../../src/components/Accessories/ProgressionBar/progressionBar.tsx"],"sourcesContent":["import Row from '../../ResponsiveRow/row';\r\nimport React , { JSX } from 'react';\r\nimport Styles from './progressionBar.module.scss';\r\nimport { ACCESSORYLABEL, VASSTEPPERLABEL } from '../../../utils/constants';\r\nimport { ComponentWithContentProps, GenericSBProps } from '../../types';\r\nimport { useMultiAccessoryContext } from '../multiItemAccessoryStore/useMultiAccessoryContext';\r\n\r\ninterface ProgressionBarProps extends GenericSBProps {\r\n pickYourDeviceLabel: string;\r\n customizeDeviceLabel: string;\r\n yourSubscriptionLabel: string;\r\n vasStepperLabel: string;\r\n checkoutLabel: string;\r\n accessoriesLabel: string;\r\n selectedStep?: string;\r\n optionalLabelText: string;\r\n}\r\n\r\nconst ProgressionBar = ({\r\n content\r\n}: ComponentWithContentProps<ProgressionBarProps>): JSX.Element => {\r\n /**not needed here in prod-card as it will open only MIA page */\r\n // const deviceStore = useSelector(deviceSelector);\r\n // const { multiItemAccessory } = deviceStore;\r\n const { store } = useMultiAccessoryContext();\r\n const { deviceSessionValues } = store;\r\n // Check if internet summary session exists\r\n const hasInternetSummarySession =\r\n typeof window !== 'undefined' &&\r\n sessionStorage.getItem('one-ecommerce-internetSummary') !== null;\r\n\r\n //progression bar titles\r\n const steps: any = {};\r\n if (content?.pickYourDeviceLabel && deviceSessionValues?.hardwareVariant) steps.pickYourDeviceLabel = content.pickYourDeviceLabel;\r\n if (content?.customizeDeviceLabel && deviceSessionValues?.hardwareVariant) steps.customizeDeviceLabel = content.customizeDeviceLabel;\r\n if (content?.yourSubscriptionLabel) steps.yourSubscriptionLabel = content.yourSubscriptionLabel;\r\n if (content?.vasStepperLabel && hasInternetSummarySession)\r\n steps.vasStepperLabel = content.vasStepperLabel;\r\n if (content?.accessoriesLabel) steps.accessoriesLabel = content.accessoriesLabel;\r\n if (content?.checkoutLabel) steps.checkoutLabel = content.checkoutLabel;\r\n const selectedStep = content?.selectedStep;\r\n let selectedIndex: number;\r\n Object.entries(steps).forEach(([key], index) => {\r\n if (key === selectedStep) {\r\n selectedIndex = index;\r\n }\r\n });\r\n\r\n return (\r\n <Row>\r\n <div className={Styles.steps}>\r\n <div className={Styles.numbers}>\r\n {Object.entries(steps)\r\n .filter((value) => value[1] !== '')\r\n .filter((value) => {\r\n if (value[1] === content?.accessoriesLabel) {\r\n return (selectedStep === ACCESSORYLABEL); // to show accesories label only when recommend accessory is present or if the selected step is accessory\r\n }\r\n else {\r\n return value;\r\n }\r\n })\r\n .map(([key, value]: any, index) => {\r\n return (\r\n <div key={key} className={`d-flex ${Styles.step} ${key === selectedStep ? Styles.active : ''} ${selectedStep === ACCESSORYLABEL ? Styles.accessorybackground : Styles.progressbarBackground} `} >\r\n <div\r\n className={`${Styles.stepCount} ${key === selectedStep ? Styles.active : ''} ${selectedIndex > index ? Styles.finished : ''\r\n }`}\r\n >\r\n {index + 1}\r\n </div>\r\n <span>{value}</span>\r\n {key === ACCESSORYLABEL && <div className={`${selectedStep === ACCESSORYLABEL ? Styles.accesoriesOptionalText : Styles.optionalText}`}>{content?.optionalLabelText}</div>}\r\n {key === VASSTEPPERLABEL && <div className={`${selectedStep === VASSTEPPERLABEL ? Styles.accesoriesOptionalText : Styles.optionalText}`}>{content?.optionalLabelText}</div>}\r\n </div>\r\n );\r\n })}\r\n </div>\r\n </div>\r\n </Row>\r\n );\r\n};\r\n\r\nexport default ProgressionBar;\r\n"],"names":["ProgressionBar","content","store","useMultiAccessoryContext","deviceSessionValues","hasInternetSummarySession","window","sessionStorage","getItem","steps","pickYourDeviceLabel","hardwareVariant","customizeDeviceLabel","yourSubscriptionLabel","vasStepperLabel","accessoriesLabel","checkoutLabel","selectedStep","selectedIndex","Object","entries","forEach","key","index","React","Row","createElement","className","Styles","numbers","filter","value","ACCESSORYLABEL","map","step","active","accessorybackground","progressbarBackground","stepCount","finished","accesoriesOptionalText","optionalText","optionalLabelText","VASSTEPPERLABEL"],"mappings":"kSAkBA,MAAMA,EAAiB,EACrBC,cAKA,MAAMC,MAAEA,GAAUC,KACZC,oBAAGA,GAAwBF,EAE3BG,EACc,oBAAXC,QACqD,OAA5DC,eAAeC,QAAQ,iCAGnBC,EAAa,CAAA,GACfR,aAAO,EAAPA,EAASS,uBAAuBN,aAAmB,EAAnBA,EAAqBO,mBAAiBF,EAAMC,oBAAsBT,EAAQS,sBAC1GT,aAAO,EAAPA,EAASW,wBAAyBR,aAAmB,EAAnBA,EAAqBO,mBAAiBF,EAAMG,qBAAuBX,EAAQW,uBAC7GX,aAAO,EAAPA,EAASY,yBAAuBJ,EAAMI,sBAAwBZ,EAAQY,wBACtEZ,eAAAA,EAASa,kBAAmBT,IAC9BI,EAAMK,gBAAkBb,EAAQa,kBAC9Bb,aAAO,EAAPA,EAASc,oBAAkBN,EAAMM,iBAAmBd,EAAQc,mBAC5Dd,aAAO,EAAPA,EAASe,iBAAeP,EAAMO,cAAgBf,EAAQe,eAC1D,MAAMC,EAAehB,aAAO,EAAPA,EAASgB,aAC9B,IAAIC,EAOJ,OANAC,OAAOC,QAAQX,GAAOY,QAAQ,EAAEC,GAAMC,KAChCD,IAAQL,IACVC,EAAgBK,KAKlBC,gBAACC,EAAG,KACFD,EAAAE,cAAA,MAAA,CAAKC,UAAWC,EAAOnB,OACrBe,EAAAE,cAAA,MAAA,CAAKC,UAAWC,EAAOC,SACpBV,OAAOC,QAAQX,GACbqB,OAAQC,GAAuB,KAAbA,EAAM,IACxBD,OAAQC,GACHA,EAAM,MAAO9B,aAAO,EAAPA,EAASc,kBAChBE,IAAiBe,EAGlBD,GAGVE,IAAI,EAAEX,EAAKS,GAAaR,IAErBC,EAAAE,cAAA,MAAA,CAAKJ,IAAKA,EAAKK,UAAW,UAAUC,EAAOM,SAASZ,IAAQL,EAAeW,EAAOO,OAAS,MAAMlB,IAAiBe,EAAiBJ,EAAOQ,oBAAsBR,EAAOS,0BACrKb,EAAAE,cAAA,MAAA,CACEC,UAAW,GAAGC,EAAOU,aAAahB,IAAQL,EAAeW,EAAOO,OAAS,MAAMjB,EAAgBK,EAAQK,EAAOW,SAAW,MAGxHhB,EAAQ,GAEXC,EAAAE,cAAA,OAAA,KAAOK,GACNT,IAAQU,GAAkBR,EAAAE,cAAA,MAAA,CAAKC,UAAW,GAAGV,IAAiBe,EAAiBJ,EAAOY,uBAAyBZ,EAAOa,gBAAiBxC,aAAO,EAAPA,EAASyC,mBAChJpB,IAAQqB,GAAmBnB,EAAAE,cAAA,MAAA,CAAKC,UAAW,GAAGV,IAAiB0B,EAAkBf,EAAOY,uBAAyBZ,EAAOa,gBAAiBxC,aAAO,EAAPA,EAASyC"}
@@ -1 +1 @@
1
- {"version":3,"file":"MultiAccessoryProvider.js","sources":["../../../../../src/components/Accessories/multiItemAccessoryStore/MultiAccessoryProvider.tsx"],"sourcesContent":["import React, { createContext, useReducer } from 'react';\nimport { ACCESSORY, CONTRACT } from '../../../utils/constants';\nimport { recommendationSliceStore, UpdateCartSliceStore, AppProviderSchema, ActionSchema,\n AppContextType } from './types';\n\nconst initialState: recommendationSliceStore & UpdateCartSliceStore = {\n isFetchingRecommendedAccessories: true,\n recommendedAccessories: [],\n multiItemAccessoriessList: {},\n deviceSessionValues: {},\n selectedPaymentType: CONTRACT,\n selectedTab: ACCESSORY, // Initialize selectedTab with default value\n previousTab: ACCESSORY, // Initialize previousTab with default value\n showMiniCart: false, // Initialize mini cart collapsed\n loading: false,\n updateAccessoryCartFailure: {},\n cartData: null, // Real-time source of truth\n isLoadingCartData: false, // Initialize loading state\n cartDataError: null, // Initialize error state\n};\n\nexport const actionTypes = {\n recommendedAccessories: 'setRecommendedAccessories',\n multiItemAccessoriessList: 'setMultiItemAccessoriessList',\n deviceSessionValues: 'setDeviceSessionValues',\n selectedPaymentType: 'setSelectedPaymentType',\n selectedTab: 'setSelectedTab',\n previousTab: 'setPreviousTab',\n showMiniCart: 'setShowMiniCart',\n recommendedAccessoriesStart: 'FETCH_RECOMMENDED_ACCESSORIES_START',\n RecommendedAccessoriesSuccess: 'FETCH_RECOMMENDED_ACCESSORIES_SUCCESS',\n recommendedAccessoriesFailure: 'FETCH_RECOMMENDED_ACCESSORIES_FAILURE',\n updateAccessoryCartFailure: 'setupdateAccessoryCartFailure',\n updateAccessoryCartStart: 'UPDATE_ACCESSORY_CART_START',\n updateAccessoryCartSuccess: 'UPDATE_ACCESSORY_CART_SUCCESS',\n getCartStart: 'GET_CART_START',\n getCartSuccess: 'GET_CART_SUCCESS',\n getCartFailure: 'GET_CART_FAILURE',\n};\n\nexport const AppContext = createContext<AppContextType | undefined>(undefined);\n\nconst appReducer = (store: recommendationSliceStore & UpdateCartSliceStore, action: ActionSchema) => {\n switch (action.type) {\n case actionTypes?.recommendedAccessories:\n return { ...store, recommendedAccessories: action?.payload };\n case actionTypes?.multiItemAccessoriessList:\n return { ...store, multiItemAccessoriessList: action?.payload };\n case actionTypes?.deviceSessionValues:\n return { ...store, deviceSessionValues: action?.payload };\n case actionTypes?.selectedPaymentType:\n return { ...store, selectedPaymentType: action?.payload };\n case actionTypes?.selectedTab:\n return { ...store, selectedTab: action?.payload };\n case actionTypes?.previousTab:\n return { ...store, previousTab: action?.payload };\n case actionTypes?.showMiniCart:\n return { ...store, showMiniCart: action?.payload };\n case actionTypes?.recommendedAccessoriesStart:\n return { ...store, isFetchingRecommendedAccessories: true };\n case actionTypes?.RecommendedAccessoriesSuccess:\n return { \n ...store, \n isFetchingRecommendedAccessories: false, \n recommendedAccessories: {\n ...store.recommendedAccessories,\n ...action.payload\n }\n };\n case actionTypes?.recommendedAccessoriesFailure:\n return { ...store, isFetchingRecommendedAccessories: false, recommendedAccessories: [] };\n case actionTypes?.updateAccessoryCartSuccess:\n return { ...store, loading: false };\n case actionTypes?.updateAccessoryCartFailure:\n return { ...store, updateAccessoryCartFailure: action?.payload, loading: false };\n case actionTypes?.updateAccessoryCartStart:\n return { ...store, loading: true };\n case actionTypes?.getCartStart:\n return { ...store, isLoadingCartData: true, cartDataError: null };\n case actionTypes?.getCartSuccess:\n // processType and subscribedInfo are stored inside cartData itself\n // (preserved by mergeCartData helper in useMultiAccessoryUpdateCartActions)\n return { ...store, isLoadingCartData: false, cartData: action?.payload };\n case actionTypes?.getCartFailure:\n return { ...store, isLoadingCartData: false, cartDataError: action?.payload };\n default:\n return store;\n }\n};\n\nconst MultiAccessoryProvider = ({ children }: AppProviderSchema) => {\n const [store, dispatch] = useReducer(appReducer, initialState);\n return <AppContext.Provider value={{ store, dispatch }}>{children}</AppContext.Provider>;\n};\n\nexport default MultiAccessoryProvider;"],"names":["initialState","isFetchingRecommendedAccessories","recommendedAccessories","multiItemAccessoriessList","deviceSessionValues","selectedPaymentType","CONTRACT","selectedTab","ACCESSORY","previousTab","showMiniCart","loading","updateAccessoryCartFailure","cartData","isLoadingCartData","cartDataError","actionTypes","recommendedAccessoriesStart","RecommendedAccessoriesSuccess","recommendedAccessoriesFailure","updateAccessoryCartStart","updateAccessoryCartSuccess","getCartStart","getCartSuccess","getCartFailure","AppContext","createContext","undefined","appReducer","store","action","type","Object","assign","payload","MultiAccessoryProvider","children","dispatch","useReducer","React","createElement","Provider","value"],"mappings":"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"}
1
+ {"version":3,"file":"MultiAccessoryProvider.js","sources":["../../../../../src/components/Accessories/multiItemAccessoryStore/MultiAccessoryProvider.tsx"],"sourcesContent":["import React, { createContext, useReducer } from 'react';\r\nimport { ACCESSORY, CONTRACT } from '../../../utils/constants';\r\nimport { recommendationSliceStore, UpdateCartSliceStore, AppProviderSchema, ActionSchema,\r\n AppContextType } from './types';\r\n\r\nconst initialState: recommendationSliceStore & UpdateCartSliceStore = {\r\n isFetchingRecommendedAccessories: true,\r\n recommendedAccessories: [],\r\n multiItemAccessoriessList: {},\r\n deviceSessionValues: {},\r\n selectedPaymentType: CONTRACT,\r\n selectedTab: ACCESSORY, // Initialize selectedTab with default value\r\n previousTab: ACCESSORY, // Initialize previousTab with default value\r\n showMiniCart: false, // Initialize mini cart collapsed\r\n loading: false,\r\n updateAccessoryCartFailure: {},\r\n cartData: null, // Real-time source of truth\r\n isLoadingCartData: false, // Initialize loading state\r\n cartDataError: null, // Initialize error state\r\n};\r\n\r\nexport const actionTypes = {\r\n recommendedAccessories: 'setRecommendedAccessories',\r\n multiItemAccessoriessList: 'setMultiItemAccessoriessList',\r\n deviceSessionValues: 'setDeviceSessionValues',\r\n selectedPaymentType: 'setSelectedPaymentType',\r\n selectedTab: 'setSelectedTab',\r\n previousTab: 'setPreviousTab',\r\n showMiniCart: 'setShowMiniCart',\r\n recommendedAccessoriesStart: 'FETCH_RECOMMENDED_ACCESSORIES_START',\r\n RecommendedAccessoriesSuccess: 'FETCH_RECOMMENDED_ACCESSORIES_SUCCESS',\r\n recommendedAccessoriesFailure: 'FETCH_RECOMMENDED_ACCESSORIES_FAILURE',\r\n updateAccessoryCartFailure: 'setupdateAccessoryCartFailure',\r\n updateAccessoryCartStart: 'UPDATE_ACCESSORY_CART_START',\r\n updateAccessoryCartSuccess: 'UPDATE_ACCESSORY_CART_SUCCESS',\r\n getCartStart: 'GET_CART_START',\r\n getCartSuccess: 'GET_CART_SUCCESS',\r\n getCartFailure: 'GET_CART_FAILURE',\r\n};\r\n\r\nexport const AppContext = createContext<AppContextType | undefined>(undefined);\r\n\r\nconst appReducer = (store: recommendationSliceStore & UpdateCartSliceStore, action: ActionSchema) => {\r\n switch (action.type) {\r\n case actionTypes?.recommendedAccessories:\r\n return { ...store, recommendedAccessories: action?.payload };\r\n case actionTypes?.multiItemAccessoriessList:\r\n return { ...store, multiItemAccessoriessList: action?.payload };\r\n case actionTypes?.deviceSessionValues:\r\n return { ...store, deviceSessionValues: action?.payload };\r\n case actionTypes?.selectedPaymentType:\r\n return { ...store, selectedPaymentType: action?.payload };\r\n case actionTypes?.selectedTab:\r\n return { ...store, selectedTab: action?.payload };\r\n case actionTypes?.previousTab:\r\n return { ...store, previousTab: action?.payload };\r\n case actionTypes?.showMiniCart:\r\n return { ...store, showMiniCart: action?.payload };\r\n case actionTypes?.recommendedAccessoriesStart:\r\n return { ...store, isFetchingRecommendedAccessories: true };\r\n case actionTypes?.RecommendedAccessoriesSuccess:\r\n return { \r\n ...store, \r\n isFetchingRecommendedAccessories: false, \r\n recommendedAccessories: {\r\n ...store.recommendedAccessories,\r\n ...action.payload\r\n }\r\n };\r\n case actionTypes?.recommendedAccessoriesFailure:\r\n return { ...store, isFetchingRecommendedAccessories: false, recommendedAccessories: [] };\r\n case actionTypes?.updateAccessoryCartSuccess:\r\n return { ...store, loading: false };\r\n case actionTypes?.updateAccessoryCartFailure:\r\n return { ...store, updateAccessoryCartFailure: action?.payload, loading: false };\r\n case actionTypes?.updateAccessoryCartStart:\r\n return { ...store, loading: true };\r\n case actionTypes?.getCartStart:\r\n return { ...store, isLoadingCartData: true, cartDataError: null };\r\n case actionTypes?.getCartSuccess:\r\n // processType and subscribedInfo are stored inside cartData itself\r\n // (preserved by mergeCartData helper in useMultiAccessoryUpdateCartActions)\r\n return { ...store, isLoadingCartData: false, cartData: action?.payload };\r\n case actionTypes?.getCartFailure:\r\n return { ...store, isLoadingCartData: false, cartDataError: action?.payload };\r\n default:\r\n return store;\r\n }\r\n};\r\n\r\nconst MultiAccessoryProvider = ({ children }: AppProviderSchema) => {\r\n const [store, dispatch] = useReducer(appReducer, initialState);\r\n return <AppContext.Provider value={{ store, dispatch }}>{children}</AppContext.Provider>;\r\n};\r\n\r\nexport default MultiAccessoryProvider;"],"names":["initialState","isFetchingRecommendedAccessories","recommendedAccessories","multiItemAccessoriessList","deviceSessionValues","selectedPaymentType","CONTRACT","selectedTab","ACCESSORY","previousTab","showMiniCart","loading","updateAccessoryCartFailure","cartData","isLoadingCartData","cartDataError","actionTypes","recommendedAccessoriesStart","RecommendedAccessoriesSuccess","recommendedAccessoriesFailure","updateAccessoryCartStart","updateAccessoryCartSuccess","getCartStart","getCartSuccess","getCartFailure","AppContext","createContext","undefined","appReducer","store","action","type","Object","assign","payload","MultiAccessoryProvider","children","dispatch","useReducer","React","createElement","Provider","value"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useMultiAccessoryActions.js","sources":["../../../../../src/components/Accessories/multiItemAccessoryStore/useMultiAccessoryActions.ts"],"sourcesContent":["import { useCallback } from 'react';\nimport multiItemAccessoryServices from '../../../services/MultiItemAccessories/multiItemAccessoryService';\nimport { ActionSchema, } from './types';\nimport { actionTypes } from './MultiAccessoryProvider';\n/**\n * Custom hook that provides action creators for Multi Accessory Context\n * @param dispatch - Dispatch function from the MultiAccessoryContext\n * @returns Object containing all action creator functions\n */\nexport const useMultiAccessoryActions = (dispatch: React.Dispatch<ActionSchema>) => {\n\n // Action: Set Recommended Accessories\n const setRecommendedAccessories = useCallback((payload: any) => {\n dispatch({ type: actionTypes.recommendedAccessories, payload });\n }, [dispatch]);\n // Action: Set Multi Item Accessories List\n const setMultiItemAccessoriessList = useCallback((payload: any) => {\n // Ensure this function is only called in response to user actions or effects, not during render\n dispatch({ type: actionTypes.multiItemAccessoriessList, payload });\n }, [dispatch]);\n // Action: Set Device Session Values\n const setDeviceSessionValues = useCallback((payload: any) => {\n dispatch({ type: actionTypes.deviceSessionValues, payload });\n }, [dispatch]);\n // Action: Set Selected Payment Type\n const setSelectedPaymentType = useCallback((payload: string) => {\n dispatch({ type: actionTypes.selectedPaymentType, payload });\n }, [dispatch]);\n \n // Action: Set Selected Tab\n const setSelectedTab = useCallback((payload: string) => {\n dispatch({ type: actionTypes.selectedTab, payload });\n }, [dispatch]);\n\n // Action: Set Previous Tab\n const setPreviousTab = useCallback((payload: string) => {\n dispatch({ type: actionTypes.previousTab, payload });\n }, [dispatch]);\n\n // Action: Set Show Mini Cart\n const setShowMiniCart = useCallback((payload: boolean) => {\n dispatch({ type: actionTypes.showMiniCart, payload });\n }, [dispatch]);\n\n /**\n * Async Action: Get Recommended Accessories\n * @param cartId - The cart ID to fetch recommended accessories for\n */\n const getRecommendedAccessory = useCallback(async ({cartId, recommendationsType}: any) => {\n try {\n // Dispatch START action to set loading state\n dispatch({ type: actionTypes.recommendedAccessoriesStart, payload: null });\n const response: any = await multiItemAccessoryServices.getRecommendedAccessoryData(cartId,recommendationsType);\n\n // Dispatch SUCCESS action with the response data\n dispatch({\n type: actionTypes.RecommendedAccessoriesSuccess,\n payload: { [recommendationsType]: response , tabkey: recommendationsType}\n });\n\n return response;\n } catch (error) {\n // Dispatch FAILURE action on error\n dispatch({ type: actionTypes.recommendedAccessoriesFailure, payload: null });\n }\n }, [dispatch]);\n\n // Return all action creators\n return {\n setRecommendedAccessories,\n setMultiItemAccessoriessList,\n setDeviceSessionValues,\n setSelectedPaymentType,\n setSelectedTab,\n setPreviousTab,\n setShowMiniCart,\n getRecommendedAccessory,\n };\n};\n"],"names":["useMultiAccessoryActions","dispatch","setRecommendedAccessories","useCallback","payload","type","actionTypes","recommendedAccessories","setMultiItemAccessoriessList","multiItemAccessoriessList","setDeviceSessionValues","deviceSessionValues","setSelectedPaymentType","selectedPaymentType","setSelectedTab","selectedTab","setPreviousTab","previousTab","setShowMiniCart","showMiniCart","getRecommendedAccessory","_a","__awaiter","cartId","recommendationsType","recommendedAccessoriesStart","response","multiItemAccessoryServices","getRecommendedAccessoryData","RecommendedAccessoriesSuccess","tabkey","error","recommendedAccessoriesFailure"],"mappings":"yOASO,MAAMA,EAA4BC,IA2DhC,CACLC,0BAzDgCC,EAAaC,IAC7CH,EAAS,CAAEI,KAAMC,EAAYC,uBAAwBH,aACpD,CAACH,IAwDFO,6BAtDmCL,EAAaC,IAEhDH,EAAS,CAAEI,KAAMC,EAAYG,0BAA2BL,aACvD,CAACH,IAoDFS,uBAlD6BP,EAAaC,IAC1CH,EAAS,CAAEI,KAAMC,EAAYK,oBAAqBP,aACjD,CAACH,IAiDFW,uBA/C6BT,EAAaC,IAC1CH,EAAS,CAAEI,KAAMC,EAAYO,oBAAqBT,aACjD,CAACH,IA8CFa,eA3CqBX,EAAaC,IAClCH,EAAS,CAAEI,KAAMC,EAAYS,YAAaX,aACzC,CAACH,IA0CFe,eAvCqBb,EAAaC,IAClCH,EAAS,CAAEI,KAAMC,EAAYW,YAAab,aACzC,CAACH,IAsCFiB,gBAnCsBf,EAAaC,IACnCH,EAAS,CAAEI,KAAMC,EAAYa,aAAcf,aAC1C,CAACH,IAkCFmB,wBA5B8BjB,EAAYkB,GAA6CC,OAAA,EAAA,CAAAD,QAAA,EAAA,WAAtCE,OAACA,EAAMC,oBAAEA,IAC1D,IAEEvB,EAAS,CAAEI,KAAMC,EAAYmB,4BAA6BrB,QAAS,OACnE,MAAMsB,QAAsBC,EAA2BC,4BAA4BL,EAAOC,GAQ1F,OALAvB,EAAS,CACPI,KAAMC,EAAYuB,8BAClBzB,QAAS,CAAEoB,CAACA,GAAsBE,EAAWI,OAAQN,KAGhDE,CACT,CAAE,MAAOK,GAEP9B,EAAS,CAAEI,KAAMC,EAAY0B,8BAA+B5B,QAAS,MACvE,CACF,GAAG,CAACH"}
1
+ {"version":3,"file":"useMultiAccessoryActions.js","sources":["../../../../../src/components/Accessories/multiItemAccessoryStore/useMultiAccessoryActions.ts"],"sourcesContent":["import { useCallback } from 'react';\r\nimport multiItemAccessoryServices from '../../../services/MultiItemAccessories/multiItemAccessoryService';\r\nimport { ActionSchema, } from './types';\r\nimport { actionTypes } from './MultiAccessoryProvider';\r\n/**\r\n * Custom hook that provides action creators for Multi Accessory Context\r\n * @param dispatch - Dispatch function from the MultiAccessoryContext\r\n * @returns Object containing all action creator functions\r\n */\r\nexport const useMultiAccessoryActions = (dispatch: React.Dispatch<ActionSchema>) => {\r\n\r\n // Action: Set Recommended Accessories\r\n const setRecommendedAccessories = useCallback((payload: any) => {\r\n dispatch({ type: actionTypes.recommendedAccessories, payload });\r\n }, [dispatch]);\r\n // Action: Set Multi Item Accessories List\r\n const setMultiItemAccessoriessList = useCallback((payload: any) => {\r\n // Ensure this function is only called in response to user actions or effects, not during render\r\n dispatch({ type: actionTypes.multiItemAccessoriessList, payload });\r\n }, [dispatch]);\r\n // Action: Set Device Session Values\r\n const setDeviceSessionValues = useCallback((payload: any) => {\r\n dispatch({ type: actionTypes.deviceSessionValues, payload });\r\n }, [dispatch]);\r\n // Action: Set Selected Payment Type\r\n const setSelectedPaymentType = useCallback((payload: string) => {\r\n dispatch({ type: actionTypes.selectedPaymentType, payload });\r\n }, [dispatch]);\r\n \r\n // Action: Set Selected Tab\r\n const setSelectedTab = useCallback((payload: string) => {\r\n dispatch({ type: actionTypes.selectedTab, payload });\r\n }, [dispatch]);\r\n\r\n // Action: Set Previous Tab\r\n const setPreviousTab = useCallback((payload: string) => {\r\n dispatch({ type: actionTypes.previousTab, payload });\r\n }, [dispatch]);\r\n\r\n // Action: Set Show Mini Cart\r\n const setShowMiniCart = useCallback((payload: boolean) => {\r\n dispatch({ type: actionTypes.showMiniCart, payload });\r\n }, [dispatch]);\r\n\r\n /**\r\n * Async Action: Get Recommended Accessories\r\n * @param cartId - The cart ID to fetch recommended accessories for\r\n */\r\n const getRecommendedAccessory = useCallback(async ({cartId, recommendationsType}: any) => {\r\n try {\r\n // Dispatch START action to set loading state\r\n dispatch({ type: actionTypes.recommendedAccessoriesStart, payload: null });\r\n const response: any = await multiItemAccessoryServices.getRecommendedAccessoryData(cartId,recommendationsType);\r\n\r\n // Dispatch SUCCESS action with the response data\r\n dispatch({\r\n type: actionTypes.RecommendedAccessoriesSuccess,\r\n payload: { [recommendationsType]: response , tabkey: recommendationsType}\r\n });\r\n\r\n return response;\r\n } catch (error) {\r\n // Dispatch FAILURE action on error\r\n dispatch({ type: actionTypes.recommendedAccessoriesFailure, payload: null });\r\n }\r\n }, [dispatch]);\r\n\r\n // Return all action creators\r\n return {\r\n setRecommendedAccessories,\r\n setMultiItemAccessoriessList,\r\n setDeviceSessionValues,\r\n setSelectedPaymentType,\r\n setSelectedTab,\r\n setPreviousTab,\r\n setShowMiniCart,\r\n getRecommendedAccessory,\r\n };\r\n};\r\n"],"names":["useMultiAccessoryActions","dispatch","setRecommendedAccessories","useCallback","payload","type","actionTypes","recommendedAccessories","setMultiItemAccessoriessList","multiItemAccessoriessList","setDeviceSessionValues","deviceSessionValues","setSelectedPaymentType","selectedPaymentType","setSelectedTab","selectedTab","setPreviousTab","previousTab","setShowMiniCart","showMiniCart","getRecommendedAccessory","_a","__awaiter","cartId","recommendationsType","recommendedAccessoriesStart","response","multiItemAccessoryServices","getRecommendedAccessoryData","RecommendedAccessoriesSuccess","tabkey","error","recommendedAccessoriesFailure"],"mappings":"yOASO,MAAMA,EAA4BC,IA2DhC,CACLC,0BAzDgCC,EAAaC,IAC7CH,EAAS,CAAEI,KAAMC,EAAYC,uBAAwBH,aACpD,CAACH,IAwDFO,6BAtDmCL,EAAaC,IAEhDH,EAAS,CAAEI,KAAMC,EAAYG,0BAA2BL,aACvD,CAACH,IAoDFS,uBAlD6BP,EAAaC,IAC1CH,EAAS,CAAEI,KAAMC,EAAYK,oBAAqBP,aACjD,CAACH,IAiDFW,uBA/C6BT,EAAaC,IAC1CH,EAAS,CAAEI,KAAMC,EAAYO,oBAAqBT,aACjD,CAACH,IA8CFa,eA3CqBX,EAAaC,IAClCH,EAAS,CAAEI,KAAMC,EAAYS,YAAaX,aACzC,CAACH,IA0CFe,eAvCqBb,EAAaC,IAClCH,EAAS,CAAEI,KAAMC,EAAYW,YAAab,aACzC,CAACH,IAsCFiB,gBAnCsBf,EAAaC,IACnCH,EAAS,CAAEI,KAAMC,EAAYa,aAAcf,aAC1C,CAACH,IAkCFmB,wBA5B8BjB,EAAYkB,GAA6CC,OAAA,EAAA,CAAAD,QAAA,EAAA,WAAtCE,OAACA,EAAMC,oBAAEA,IAC1D,IAEEvB,EAAS,CAAEI,KAAMC,EAAYmB,4BAA6BrB,QAAS,OACnE,MAAMsB,QAAsBC,EAA2BC,4BAA4BL,EAAOC,GAQ1F,OALAvB,EAAS,CACPI,KAAMC,EAAYuB,8BAClBzB,QAAS,CAAEoB,CAACA,GAAsBE,EAAWI,OAAQN,KAGhDE,CACT,CAAE,MAAOK,GAEP9B,EAAS,CAAEI,KAAMC,EAAY0B,8BAA+B5B,QAAS,MACvE,CACF,GAAG,CAACH"}
@@ -1 +1 @@
1
- {"version":3,"file":"useMultiAccessoryContext.js","sources":["../../../../../src/components/Accessories/multiItemAccessoryStore/useMultiAccessoryContext.ts"],"sourcesContent":["import { useContext } from 'react';\nimport { AppContext } from './MultiAccessoryProvider';\nimport { AppContextType } from './types';\n\n/**\n * Custom hook to consume the MultiAccessoryContext\n * @returns Context value containing store (state) and dispatch\n * @throws Error if used outside of MultiAccessoryProvider\n * @example\n * ```tsx\n * const { store, dispatch } = useMultiAccessoryContext();\n * const { recommendedAccessories, selectedAccessories } = store;\n * ```\n */\nexport const useMultiAccessoryContext = (): AppContextType => {\n const context = useContext(AppContext);\n if (context === undefined) {\n throw new Error(\n 'useMultiAccessoryContext must be used within a MultiAccessoryProvider. ' +\n 'Make sure your component is wrapped with <MultiAccessoryProvider>.'\n );\n }\n return context;\n};\n\n/**\n * Custom hook that combines context and actions\n * Provides both state and action creators in one hook for convenience\n * @returns Object containing store (state), dispatch, and all action creators\n * @example\n * ```tsx\n * const { store, actions } = useMultiAccessory();\n * // Access state\n * const { recommendedAccessories, selectedAccessories } = store;\n * // Call actions\n * actions.setSelectedAccessories(data);\n * actions.getRecommendedAccessory(cartId);\n * ```\n */\nexport const useMultiAccessory = () => {\n const { store, dispatch } = useMultiAccessoryContext();\n \n // Lazy load the actions hook to avoid circular dependencies\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const { useMultiAccessoryActions } = require('./useMultiAccessoryActions');\n const actions = useMultiAccessoryActions(dispatch);\n\n return {\n store,\n dispatch,\n actions,\n };\n};\n"],"names":["useMultiAccessoryContext","context","useContext","AppContext","undefined","Error"],"mappings":"4FAcO,MAAMA,EAA2B,KACtC,MAAMC,EAAUC,EAAWC,GAC3B,QAAgBC,IAAZH,EACF,MAAM,IAAII,MACR,6IAIJ,OAAOJ"}
1
+ {"version":3,"file":"useMultiAccessoryContext.js","sources":["../../../../../src/components/Accessories/multiItemAccessoryStore/useMultiAccessoryContext.ts"],"sourcesContent":["import { useContext } from 'react';\r\nimport { AppContext } from './MultiAccessoryProvider';\r\nimport { AppContextType } from './types';\r\n\r\n/**\r\n * Custom hook to consume the MultiAccessoryContext\r\n * @returns Context value containing store (state) and dispatch\r\n * @throws Error if used outside of MultiAccessoryProvider\r\n * @example\r\n * ```tsx\r\n * const { store, dispatch } = useMultiAccessoryContext();\r\n * const { recommendedAccessories, selectedAccessories } = store;\r\n * ```\r\n */\r\nexport const useMultiAccessoryContext = (): AppContextType => {\r\n const context = useContext(AppContext);\r\n if (context === undefined) {\r\n throw new Error(\r\n 'useMultiAccessoryContext must be used within a MultiAccessoryProvider. ' +\r\n 'Make sure your component is wrapped with <MultiAccessoryProvider>.'\r\n );\r\n }\r\n return context;\r\n};\r\n\r\n/**\r\n * Custom hook that combines context and actions\r\n * Provides both state and action creators in one hook for convenience\r\n * @returns Object containing store (state), dispatch, and all action creators\r\n * @example\r\n * ```tsx\r\n * const { store, actions } = useMultiAccessory();\r\n * // Access state\r\n * const { recommendedAccessories, selectedAccessories } = store;\r\n * // Call actions\r\n * actions.setSelectedAccessories(data);\r\n * actions.getRecommendedAccessory(cartId);\r\n * ```\r\n */\r\nexport const useMultiAccessory = () => {\r\n const { store, dispatch } = useMultiAccessoryContext();\r\n \r\n // Lazy load the actions hook to avoid circular dependencies\r\n // eslint-disable-next-line @typescript-eslint/no-var-requires\r\n const { useMultiAccessoryActions } = require('./useMultiAccessoryActions');\r\n const actions = useMultiAccessoryActions(dispatch);\r\n\r\n return {\r\n store,\r\n dispatch,\r\n actions,\r\n };\r\n};\r\n"],"names":["useMultiAccessoryContext","context","useContext","AppContext","undefined","Error"],"mappings":"4FAcO,MAAMA,EAA2B,KACtC,MAAMC,EAAUC,EAAWC,GAC3B,QAAgBC,IAAZH,EACF,MAAM,IAAII,MACR,6IAIJ,OAAOJ"}
@@ -1 +1 @@
1
- {"version":3,"file":"useMultiAccessoryUpdateCartActions.js","sources":["../../../../../src/components/Accessories/multiItemAccessoryStore/useMultiAccessoryUpdateCartActions.ts"],"sourcesContent":["import { useCallback, useRef, useEffect } from 'react';\nimport multiItemAccessoryUpdateCartService from '../../../services/MultiItemAccessories/multiitemAccessoriesUpdateCartService';\nimport { actionTypes } from './MultiAccessoryProvider';\nimport { CONTRACT, DATA_POSTPAID, HARDWARE, HARDWAREGROUPNAME, INTERNETFLOW, MOBILERATEPLAN, NONE, RATEPLAN, TABLETS, TV, WATCHES, HARDWARE_CONFIGURATION, HARDWARE_IMAGE_URL, HARDWARE_CATEGORY, UPFRONT, SMARTWATCH, TABLET_CATEGORY, UPDATE } from '../../../utils/constants';\nimport { countZeros } from '../../../utils/utils';\nimport { ACCESSORY, ADD, FLOWINTITIATED, MONTHLYFLASHDISCOUNT, REMOVE, TOTALFLASHDISCOUNT, MONTHLY } from '../../../utils/constants';\nimport { updateCreatecartItemData } from './types';\nimport { findAllCartItemsByCategory } from '../../../utils/DeviceUtils';\nimport { useMultiAccessoryContext } from './useMultiAccessoryContext';\n\n/**\n * Custom hook that provides action creators for Multi Accessory Context\n * Reads state directly from MultiAccessoryContext — no need to pass dispatch or state from parent\n * @returns Object containing all action creator functions\n */\nexport const useMultiAccessoryUpdateCartActions = () => {\n const { store, dispatch } = useMultiAccessoryContext();\n const storeRef = useRef(store);\n\n useEffect(() => {\n storeRef.current = store;\n }, [store]);\n\n // Action: Set Update Cart Failure\n const setupdateAccessoryCartFailure = useCallback((payload: any) => {\n dispatch({ type: actionTypes.updateAccessoryCartFailure, payload });\n }, [dispatch]);\n\n /**\n * Parses the update-cart response as the latest authoritative cart state.\n * Only preserves subscribedInfo and processType from existing cartData if missing.\n */\n const mergeCartData = (responseCartItems: any[]): Record<string, any> => {\n const updatedCartData = findAllCartItemsByCategory(responseCartItems);\n const existingCartData = storeRef.current.cartData;\n \n // Preserve only metadata that's not part of the cart structure itself\n if (!updatedCartData.subscribedInfo && existingCartData?.subscribedInfo) {\n updatedCartData.subscribedInfo = existingCartData.subscribedInfo;\n }\n if (!updatedCartData.processType && existingCartData?.processType) {\n updatedCartData.processType = existingCartData.processType;\n }\n return updatedCartData;\n };\n\n /**\n * @param redirectUrl => redirection url for checkout page\n */\n\n const multiItemAccessorycreateCartRequest = useCallback(async (\n updateCreatecartItemData: updateCreatecartItemData,\n ) => {\n try {\n const multiAccessoryState = storeRef.current;\n const { selectedPaymentType , recommendedAccessories , selectedTab, deviceSessionValues} = multiAccessoryState;\n //check for WIN/rateplan flow\n const isSubscriptionFlow = [MOBILERATEPLAN, INTERNETFLOW, TV ]?.includes?.(recommendedAccessories?.[selectedTab]?.hardware?.[0]?.recommendationProcessingType) ? true : (deviceSessionValues?.hardwareVariant ? false : true);\n\n let updateCartRequest: any;\n\n if (updateCreatecartItemData?.paymentTermOnly) {\n // Payment term change only — no cartItem array.\n // Use newPaymentType if provided (avoids stale storeRef when called right after setSelectedPaymentType).\n const effectivePaymentType = updateCreatecartItemData?.newPaymentType ?? selectedPaymentType;\n updateCartRequest = {\n ...(isSubscriptionFlow && { recommendationItemTerm: effectivePaymentType === CONTRACT ? MONTHLY : NONE }),\n };\n } else if (updateCreatecartItemData?.cartItems) {\n // Explicit cart items provided (per-item add/remove) — use them directly\n updateCartRequest = {\n ...(isSubscriptionFlow && { recommendationItemTerm: selectedPaymentType === CONTRACT ? MONTHLY : NONE }),\n ...(updateCreatecartItemData.cartItems?.length > 0 ? { cartItem: updateCreatecartItemData.cartItems } : {})\n };\n } else {\n // No cart items — only send recommendationItemTerm (e.g. redirect-only call)\n updateCartRequest = {\n ...(isSubscriptionFlow && { recommendationItemTerm: selectedPaymentType === CONTRACT ? MONTHLY : NONE }),\n };\n }\n\n dispatch({ type: actionTypes.updateAccessoryCartStart, payload: null });\n // Determine usecase: use previousTab only for tab-switch, otherwise use current selectedTab\n const tabForUsecase = updateCreatecartItemData?.previousTab || selectedTab;\n const usecase = (tabForUsecase === TABLETS || tabForUsecase === WATCHES) ? tabForUsecase : undefined;\n // Call the service to make the API request with the prepared requestBody\n const response = updateCartRequest && await multiItemAccessoryUpdateCartService?.getUpdateCartData(\n updateCreatecartItemData?.id,\n updateCartRequest,\n usecase\n );\n if (response) {\n dispatch({ type: actionTypes.updateAccessoryCartSuccess, payload: response });\n dispatch({ type: actionTypes.getCartSuccess, payload: mergeCartData(response?.cartItem) });\n\n if (!updateCreatecartItemData?.skipRedirect) {\n window.location.href = updateCreatecartItemData?.redirectUrl;\n }\n }\n return response; // Return the response from the API\n } catch (error) {\n dispatch({\n type: actionTypes.updateAccessoryCartFailure,\n payload: { Error: error instanceof Error ? error.message : String(error) }\n });\n }\n }, [dispatch]);\n\n /**\n * Function to fetch cart data and store in state\n * @param cartId - The cart ID to fetch\n */\n const fetchCartData = useCallback(async (cartId: any) => {\n try {\n dispatch({ type: actionTypes.getCartStart, payload: null });\n \n // Call the service to fetch cart data\n const response = await multiItemAccessoryUpdateCartService?.getCart(cartId);\n \n if (response && !response.error) {\n dispatch({\n type: actionTypes.getCartSuccess,\n payload: findAllCartItemsByCategory(response?.cartItem)\n });\n return response;\n } else {\n throw new Error(response?.error || 'Failed to fetch cart data');\n }\n } catch (error) {\n dispatch({\n type: actionTypes.getCartFailure,\n payload: { Error: error instanceof Error ? error.message : String(error) }\n });\n throw error;\n }\n }, [dispatch]);\n\n /**\n * Remove a single item from cart via direct API call.\n * Builds the payload from the passed item directly — does not rely on store state.\n */\n const removeItemFromCart = useCallback(async (cartId: any, item: any) => {\n try {\n const tabKey = item?.tabKey;\n const multiAccessoryState = storeRef.current;\n const { selectedPaymentType, recommendedAccessories, deviceSessionValues } = multiAccessoryState;\n const isSubscriptionFlow = [MOBILERATEPLAN, INTERNETFLOW, TV]?.includes?.(\n recommendedAccessories?.[tabKey]?.hardware?.[0]?.recommendationProcessingType\n ) ? true : (deviceSessionValues?.hardwareVariant ? false : true);\n\n // Build the remove item\n const items: any = [];\n if (tabKey === WATCHES || tabKey === TABLETS) {\n items.push({\n itemType: HARDWARE,\n action: REMOVE,\n id: item?.recomApiResponse?.id,\n });\n } else if (tabKey === ACCESSORY) {\n items.push({\n action: REMOVE,\n id: item?.recomApiResponse?.id,\n });\n }\n\n if (items.length === 0) return;\n const promotionId = recommendedAccessories?.[tabKey]?.ratePlan?.promotionInfo?.id ?? 'defaultMBBExtraSimBundle'; // Todo with cart response\n const updateCartRequest = {\n ...(isSubscriptionFlow && { recommendationItemTerm: selectedPaymentType === CONTRACT ? MONTHLY : NONE }),\n cartItem: [{\n itemType: tabKey === ACCESSORY ? ACCESSORY : DATA_POSTPAID,\n promotionId: promotionId,\n items: items,\n }],\n };\n\n dispatch({ type: actionTypes.updateAccessoryCartStart, payload: null });\n\n const usecase = (tabKey === TABLETS || tabKey === WATCHES) ? tabKey : undefined;\n const response = await multiItemAccessoryUpdateCartService?.getUpdateCartData(\n cartId,\n updateCartRequest,\n usecase\n );\n\n if (response) {\n dispatch({ type: actionTypes.updateAccessoryCartSuccess, payload: response });\n dispatch({ type: actionTypes.getCartSuccess, payload: mergeCartData(response?.cartItem) });\n }\n return response;\n } catch (error) {\n dispatch({\n type: actionTypes.updateAccessoryCartFailure,\n payload: { Error: error instanceof Error ? error.message : String(error) },\n });\n }\n }, [dispatch]);\n\n // Return all action creators\n return {\n setupdateAccessoryCartFailure,\n multiItemAccessorycreateCartRequest,\n fetchCartData,\n removeItemFromCart,\n };\n};\n\n/**\n * Builds a single-item cart payload for immediate per-item add/remove API calls.\n * Reuses the same note/discount/RATEPLAN logic as accesoryUpdateCartItemList.\n * @param item - The accessory item (with recomApiResponse, imageData, etc.)\n * @param action - 'ADD' or 'REMOVE'\n * @param tabKey - The tab key (ACCESSORY, WATCHES, TABLETS)\n * @param storeState - Current store state snapshot\n * @returns cartItem array ready for the API request body\n */\nexport const buildSingleItemCartPayload = (item: any, action: string, tabKey: string, storeState: any): any[] => {\n const { deviceSessionValues, selectedPaymentType, recommendedAccessories, cartData } = storeState;\n const isDeviceRenewal = cartData?.processType === 'DEVICE_RENEWAL' || cartData?.processType === 'DEVICE_RP_RENEWAL';\n const isAlreadyInCart = Object.keys(cartData?.[tabKey] || {})?.length > 0;\n const items: any = [];\n\n if (action === ADD) {\n if (tabKey === WATCHES || tabKey === TABLETS) {\n const cartAction = isAlreadyInCart ? UPDATE : ADD;\n const cartItemNote: any = [\n { author: FLOWINTITIATED, text: HARDWARE },\n { author: HARDWARE_CONFIGURATION, text: item?.recomApiResponse?.variantCategory?.color || '' },\n { author: HARDWARE_IMAGE_URL, text: item?.imageData?.image || '' },\n { author: HARDWAREGROUPNAME, text: item?.recomApiResponse?.baseProducts || item?.recomApiResponse?.name },\n { author: HARDWARE_CATEGORY, text: tabKey === WATCHES ? SMARTWATCH : TABLET_CATEGORY },\n { author: 'isWorldPassBundle', text: 'true' },\n { author: 'enableHardwareBundling', text: 'true' },\n ];\n if (deviceSessionValues?.hardwareVariant?.selectedContractType === CONTRACT || selectedPaymentType === CONTRACT) {\n cartItemNote.push({ author: UPFRONT, text: '1.0' });\n }\n const ratePlanId = recommendedAccessories?.[tabKey]?.ratePlan?.id;\n if (!isAlreadyInCart && ratePlanId) {\n const ratePlanItem: any = { itemType: RATEPLAN, action: ADD, id: ratePlanId };\n if (isDeviceRenewal && cartData?.subscribedInfo) {\n ratePlanItem.subscribedInfo = {\n id: cartData.subscribedInfo?.id,\n installedPlan: cartData.subscribedInfo?.installedPlan,\n };\n }\n items.push(ratePlanItem);\n }\n items.push({\n itemType: HARDWARE,\n action: cartAction,\n id: item?.recomApiResponse?.id,\n contractTerm: (deviceSessionValues?.hardwareVariant?.selectedContractType === CONTRACT || selectedPaymentType === CONTRACT) ? 24 : 0,\n note: cartItemNote\n });\n } else {\n // ACCESSORY flow\n const discounts: any = {\n monthlyFlashDiscountPrice: item?.recomApiResponse?.recurringPrice?.marketMonthlyInstallment\n ? countZeros((parseFloat(item?.recomApiResponse?.recurringPrice?.marketMonthlyInstallment) - parseFloat(item?.recomApiResponse?.recurringPrice?.monthlyInstallment)))\n : countZeros(0),\n totalFlashDiscountPrice: item?.recomApiResponse?.oneTimePrice?.market\n ? countZeros(parseFloat(item?.recomApiResponse?.oneTimePrice?.market) - parseFloat(item?.recomApiResponse?.oneTimePrice?.base))\n : countZeros(0)\n };\n const cartItemNote: any = [\n { author: FLOWINTITIATED, text: HARDWARE },\n { author: HARDWARE_IMAGE_URL, text: item?.imageData?.image || '' },\n { author: MONTHLYFLASHDISCOUNT, text: discounts?.monthlyFlashDiscountPrice },\n { author: TOTALFLASHDISCOUNT, text: discounts?.totalFlashDiscountPrice },\n { author: HARDWAREGROUPNAME, text: item?.recomApiResponse?.baseProducts }\n ];\n if (deviceSessionValues?.hardwareVariant?.selectedContractType === CONTRACT || selectedPaymentType === CONTRACT) {\n cartItemNote.push({ author: UPFRONT, text: 1.0 });\n }\n items.push({\n action: ADD,\n id: item?.recomApiResponse?.id,\n contractTerm: (deviceSessionValues?.hardwareVariant?.selectedContractType === CONTRACT || selectedPaymentType === CONTRACT) ? 24 : 0,\n note: cartItemNote\n });\n }\n } else if (action === REMOVE) {\n if (tabKey === WATCHES || tabKey === TABLETS) {\n items.push({ itemType: HARDWARE, action: REMOVE, id: item?.recomApiResponse?.id });\n } else if (tabKey === ACCESSORY) {\n items.push({ action: REMOVE, id: item?.recomApiResponse?.id });\n }\n }\n\n if (items.length === 0) return [];\n\n const promotionId = recommendedAccessories?.[tabKey]?.ratePlan?.promotionInfo?.id;\n return [{\n itemType: tabKey === ACCESSORY ? ACCESSORY : DATA_POSTPAID,\n promotionId: promotionId,\n items: items\n }];\n};\n"],"names":["useMultiAccessoryUpdateCartActions","store","dispatch","useMultiAccessoryContext","storeRef","useRef","useEffect","current","setupdateAccessoryCartFailure","useCallback","payload","type","actionTypes","updateAccessoryCartFailure","mergeCartData","responseCartItems","updatedCartData","findAllCartItemsByCategory","existingCartData","cartData","subscribedInfo","processType","multiItemAccessorycreateCartRequest","updateCreatecartItemData","__awaiter","multiAccessoryState","selectedPaymentType","recommendedAccessories","selectedTab","deviceSessionValues","isSubscriptionFlow","_b","_a","MOBILERATEPLAN","INTERNETFLOW","TV","includes","call","_e","_d","_c","hardware","recommendationProcessingType","hardwareVariant","updateCartRequest","paymentTermOnly","effectivePaymentType","_f","newPaymentType","Object","assign","recommendationItemTerm","CONTRACT","MONTHLY","NONE","cartItems","_g","length","cartItem","updateAccessoryCartStart","tabForUsecase","previousTab","usecase","TABLETS","WATCHES","undefined","response","multiItemAccessoryUpdateCartService","getUpdateCartData","id","updateAccessoryCartSuccess","getCartSuccess","skipRedirect","window","location","href","redirectUrl","error","Error","message","String","fetchCartData","cartId","getCartStart","getCart","getCartFailure","removeItemFromCart","item","tabKey","items","push","itemType","HARDWARE","action","REMOVE","recomApiResponse","ACCESSORY","promotionId","_l","_k","_j","_h","ratePlan","promotionInfo","DATA_POSTPAID","buildSingleItemCartPayload","storeState","isDeviceRenewal","isAlreadyInCart","keys","ADD","cartAction","UPDATE","cartItemNote","author","FLOWINTITIATED","text","HARDWARE_CONFIGURATION","variantCategory","color","HARDWARE_IMAGE_URL","imageData","image","HARDWAREGROUPNAME","baseProducts","name","HARDWARE_CATEGORY","SMARTWATCH","TABLET_CATEGORY","selectedContractType","UPFRONT","ratePlanId","ratePlanItem","RATEPLAN","installedPlan","_m","contractTerm","_o","note","discounts","monthlyFlashDiscountPrice","_q","_p","recurringPrice","marketMonthlyInstallment","countZeros","parseFloat","_s","_r","_u","_t","monthlyInstallment","totalFlashDiscountPrice","_w","_v","oneTimePrice","market","_x","_y","_0","_z","base","_1","MONTHLYFLASHDISCOUNT","TOTALFLASHDISCOUNT","_2","_3","_4","_5","_6","_7","_10","_8"],"mappings":"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"}
1
+ {"version":3,"file":"useMultiAccessoryUpdateCartActions.js","sources":["../../../../../src/components/Accessories/multiItemAccessoryStore/useMultiAccessoryUpdateCartActions.ts"],"sourcesContent":["import { useCallback, useRef, useEffect } from 'react';\r\nimport multiItemAccessoryUpdateCartService from '../../../services/MultiItemAccessories/multiitemAccessoriesUpdateCartService';\r\nimport { actionTypes } from './MultiAccessoryProvider';\r\nimport { CONTRACT, DATA_POSTPAID, HARDWARE, HARDWAREGROUPNAME, INTERNETFLOW, MOBILERATEPLAN, NONE, RATEPLAN, TABLETS, TV, WATCHES, HARDWARE_CONFIGURATION, HARDWARE_IMAGE_URL, HARDWARE_CATEGORY, UPFRONT, SMARTWATCH, TABLET_CATEGORY, UPDATE } from '../../../utils/constants';\r\nimport { countZeros } from '../../../utils/utils';\r\nimport { ACCESSORY, ADD, FLOWINTITIATED, MONTHLYFLASHDISCOUNT, REMOVE, TOTALFLASHDISCOUNT, MONTHLY } from '../../../utils/constants';\r\nimport { updateCreatecartItemData } from './types';\r\nimport { findAllCartItemsByCategory } from '../../../utils/DeviceUtils';\r\nimport { useMultiAccessoryContext } from './useMultiAccessoryContext';\r\n\r\n/**\r\n * Custom hook that provides action creators for Multi Accessory Context\r\n * Reads state directly from MultiAccessoryContext — no need to pass dispatch or state from parent\r\n * @returns Object containing all action creator functions\r\n */\r\nexport const useMultiAccessoryUpdateCartActions = () => {\r\n const { store, dispatch } = useMultiAccessoryContext();\r\n const storeRef = useRef(store);\r\n\r\n useEffect(() => {\r\n storeRef.current = store;\r\n }, [store]);\r\n\r\n // Action: Set Update Cart Failure\r\n const setupdateAccessoryCartFailure = useCallback((payload: any) => {\r\n dispatch({ type: actionTypes.updateAccessoryCartFailure, payload });\r\n }, [dispatch]);\r\n\r\n /**\r\n * Parses the update-cart response as the latest authoritative cart state.\r\n * Only preserves subscribedInfo and processType from existing cartData if missing.\r\n */\r\n const mergeCartData = (responseCartItems: any[]): Record<string, any> => {\r\n const updatedCartData = findAllCartItemsByCategory(responseCartItems);\r\n const existingCartData = storeRef.current.cartData;\r\n \r\n // Preserve only metadata that's not part of the cart structure itself\r\n if (!updatedCartData.subscribedInfo && existingCartData?.subscribedInfo) {\r\n updatedCartData.subscribedInfo = existingCartData.subscribedInfo;\r\n }\r\n if (!updatedCartData.processType && existingCartData?.processType) {\r\n updatedCartData.processType = existingCartData.processType;\r\n }\r\n return updatedCartData;\r\n };\r\n\r\n /**\r\n * @param redirectUrl => redirection url for checkout page\r\n */\r\n\r\n const multiItemAccessorycreateCartRequest = useCallback(async (\r\n updateCreatecartItemData: updateCreatecartItemData,\r\n ) => {\r\n try {\r\n const multiAccessoryState = storeRef.current;\r\n const { selectedPaymentType , recommendedAccessories , selectedTab, deviceSessionValues} = multiAccessoryState;\r\n //check for WIN/rateplan flow\r\n const isSubscriptionFlow = [MOBILERATEPLAN, INTERNETFLOW, TV ]?.includes?.(recommendedAccessories?.[selectedTab]?.hardware?.[0]?.recommendationProcessingType) ? true : (deviceSessionValues?.hardwareVariant ? false : true);\r\n\r\n let updateCartRequest: any;\r\n\r\n if (updateCreatecartItemData?.paymentTermOnly) {\r\n // Payment term change only — no cartItem array.\r\n // Use newPaymentType if provided (avoids stale storeRef when called right after setSelectedPaymentType).\r\n const effectivePaymentType = updateCreatecartItemData?.newPaymentType ?? selectedPaymentType;\r\n updateCartRequest = {\r\n ...(isSubscriptionFlow && { recommendationItemTerm: effectivePaymentType === CONTRACT ? MONTHLY : NONE }),\r\n };\r\n } else if (updateCreatecartItemData?.cartItems) {\r\n // Explicit cart items provided (per-item add/remove) — use them directly\r\n updateCartRequest = {\r\n ...(isSubscriptionFlow && { recommendationItemTerm: selectedPaymentType === CONTRACT ? MONTHLY : NONE }),\r\n ...(updateCreatecartItemData.cartItems?.length > 0 ? { cartItem: updateCreatecartItemData.cartItems } : {})\r\n };\r\n } else {\r\n // No cart items — only send recommendationItemTerm (e.g. redirect-only call)\r\n updateCartRequest = {\r\n ...(isSubscriptionFlow && { recommendationItemTerm: selectedPaymentType === CONTRACT ? MONTHLY : NONE }),\r\n };\r\n }\r\n\r\n dispatch({ type: actionTypes.updateAccessoryCartStart, payload: null });\r\n // Determine usecase: use previousTab only for tab-switch, otherwise use current selectedTab\r\n const tabForUsecase = updateCreatecartItemData?.previousTab || selectedTab;\r\n const usecase = (tabForUsecase === TABLETS || tabForUsecase === WATCHES) ? tabForUsecase : undefined;\r\n // Call the service to make the API request with the prepared requestBody\r\n const response = updateCartRequest && await multiItemAccessoryUpdateCartService?.getUpdateCartData(\r\n updateCreatecartItemData?.id,\r\n updateCartRequest,\r\n usecase\r\n );\r\n if (response) {\r\n dispatch({ type: actionTypes.updateAccessoryCartSuccess, payload: response });\r\n dispatch({ type: actionTypes.getCartSuccess, payload: mergeCartData(response?.cartItem) });\r\n\r\n if (!updateCreatecartItemData?.skipRedirect) {\r\n window.location.href = updateCreatecartItemData?.redirectUrl;\r\n }\r\n }\r\n return response; // Return the response from the API\r\n } catch (error) {\r\n dispatch({\r\n type: actionTypes.updateAccessoryCartFailure,\r\n payload: { Error: error instanceof Error ? error.message : String(error) }\r\n });\r\n }\r\n }, [dispatch]);\r\n\r\n /**\r\n * Function to fetch cart data and store in state\r\n * @param cartId - The cart ID to fetch\r\n */\r\n const fetchCartData = useCallback(async (cartId: any) => {\r\n try {\r\n dispatch({ type: actionTypes.getCartStart, payload: null });\r\n \r\n // Call the service to fetch cart data\r\n const response = await multiItemAccessoryUpdateCartService?.getCart(cartId);\r\n \r\n if (response && !response.error) {\r\n dispatch({\r\n type: actionTypes.getCartSuccess,\r\n payload: findAllCartItemsByCategory(response?.cartItem)\r\n });\r\n return response;\r\n } else {\r\n throw new Error(response?.error || 'Failed to fetch cart data');\r\n }\r\n } catch (error) {\r\n dispatch({\r\n type: actionTypes.getCartFailure,\r\n payload: { Error: error instanceof Error ? error.message : String(error) }\r\n });\r\n throw error;\r\n }\r\n }, [dispatch]);\r\n\r\n /**\r\n * Remove a single item from cart via direct API call.\r\n * Builds the payload from the passed item directly — does not rely on store state.\r\n */\r\n const removeItemFromCart = useCallback(async (cartId: any, item: any) => {\r\n try {\r\n const tabKey = item?.tabKey;\r\n const multiAccessoryState = storeRef.current;\r\n const { selectedPaymentType, recommendedAccessories, deviceSessionValues } = multiAccessoryState;\r\n const isSubscriptionFlow = [MOBILERATEPLAN, INTERNETFLOW, TV]?.includes?.(\r\n recommendedAccessories?.[tabKey]?.hardware?.[0]?.recommendationProcessingType\r\n ) ? true : (deviceSessionValues?.hardwareVariant ? false : true);\r\n\r\n // Build the remove item\r\n const items: any = [];\r\n if (tabKey === WATCHES || tabKey === TABLETS) {\r\n items.push({\r\n itemType: HARDWARE,\r\n action: REMOVE,\r\n id: item?.recomApiResponse?.id,\r\n });\r\n } else if (tabKey === ACCESSORY) {\r\n items.push({\r\n action: REMOVE,\r\n id: item?.recomApiResponse?.id,\r\n });\r\n }\r\n\r\n if (items.length === 0) return;\r\n const promotionId = recommendedAccessories?.[tabKey]?.ratePlan?.promotionInfo?.id ?? 'defaultMBBExtraSimBundle'; // Todo with cart response\r\n const updateCartRequest = {\r\n ...(isSubscriptionFlow && { recommendationItemTerm: selectedPaymentType === CONTRACT ? MONTHLY : NONE }),\r\n cartItem: [{\r\n itemType: tabKey === ACCESSORY ? ACCESSORY : DATA_POSTPAID,\r\n promotionId: promotionId,\r\n items: items,\r\n }],\r\n };\r\n\r\n dispatch({ type: actionTypes.updateAccessoryCartStart, payload: null });\r\n\r\n const usecase = (tabKey === TABLETS || tabKey === WATCHES) ? tabKey : undefined;\r\n const response = await multiItemAccessoryUpdateCartService?.getUpdateCartData(\r\n cartId,\r\n updateCartRequest,\r\n usecase\r\n );\r\n\r\n if (response) {\r\n dispatch({ type: actionTypes.updateAccessoryCartSuccess, payload: response });\r\n dispatch({ type: actionTypes.getCartSuccess, payload: mergeCartData(response?.cartItem) });\r\n }\r\n return response;\r\n } catch (error) {\r\n dispatch({\r\n type: actionTypes.updateAccessoryCartFailure,\r\n payload: { Error: error instanceof Error ? error.message : String(error) },\r\n });\r\n }\r\n }, [dispatch]);\r\n\r\n // Return all action creators\r\n return {\r\n setupdateAccessoryCartFailure,\r\n multiItemAccessorycreateCartRequest,\r\n fetchCartData,\r\n removeItemFromCart,\r\n };\r\n};\r\n\r\n/**\r\n * Builds a single-item cart payload for immediate per-item add/remove API calls.\r\n * Reuses the same note/discount/RATEPLAN logic as accesoryUpdateCartItemList.\r\n * @param item - The accessory item (with recomApiResponse, imageData, etc.)\r\n * @param action - 'ADD' or 'REMOVE'\r\n * @param tabKey - The tab key (ACCESSORY, WATCHES, TABLETS)\r\n * @param storeState - Current store state snapshot\r\n * @returns cartItem array ready for the API request body\r\n */\r\nexport const buildSingleItemCartPayload = (item: any, action: string, tabKey: string, storeState: any): any[] => {\r\n const { deviceSessionValues, selectedPaymentType, recommendedAccessories, cartData } = storeState;\r\n const isDeviceRenewal = cartData?.processType === 'DEVICE_RENEWAL' || cartData?.processType === 'DEVICE_RP_RENEWAL';\r\n const isAlreadyInCart = Object.keys(cartData?.[tabKey] || {})?.length > 0;\r\n const items: any = [];\r\n\r\n if (action === ADD) {\r\n if (tabKey === WATCHES || tabKey === TABLETS) {\r\n const cartAction = isAlreadyInCart ? UPDATE : ADD;\r\n const cartItemNote: any = [\r\n { author: FLOWINTITIATED, text: HARDWARE },\r\n { author: HARDWARE_CONFIGURATION, text: item?.recomApiResponse?.variantCategory?.color || '' },\r\n { author: HARDWARE_IMAGE_URL, text: item?.imageData?.image || '' },\r\n { author: HARDWAREGROUPNAME, text: item?.recomApiResponse?.baseProducts || item?.recomApiResponse?.name },\r\n { author: HARDWARE_CATEGORY, text: tabKey === WATCHES ? SMARTWATCH : TABLET_CATEGORY },\r\n { author: 'isWorldPassBundle', text: 'true' },\r\n { author: 'enableHardwareBundling', text: 'true' },\r\n ];\r\n if (deviceSessionValues?.hardwareVariant?.selectedContractType === CONTRACT || selectedPaymentType === CONTRACT) {\r\n cartItemNote.push({ author: UPFRONT, text: '1.0' });\r\n }\r\n const ratePlanId = recommendedAccessories?.[tabKey]?.ratePlan?.id;\r\n if (!isAlreadyInCart && ratePlanId) {\r\n const ratePlanItem: any = { itemType: RATEPLAN, action: ADD, id: ratePlanId };\r\n if (isDeviceRenewal && cartData?.subscribedInfo) {\r\n ratePlanItem.subscribedInfo = {\r\n id: cartData.subscribedInfo?.id,\r\n installedPlan: cartData.subscribedInfo?.installedPlan,\r\n };\r\n }\r\n items.push(ratePlanItem);\r\n }\r\n items.push({\r\n itemType: HARDWARE,\r\n action: cartAction,\r\n id: item?.recomApiResponse?.id,\r\n contractTerm: (deviceSessionValues?.hardwareVariant?.selectedContractType === CONTRACT || selectedPaymentType === CONTRACT) ? 24 : 0,\r\n note: cartItemNote\r\n });\r\n } else {\r\n // ACCESSORY flow\r\n const discounts: any = {\r\n monthlyFlashDiscountPrice: item?.recomApiResponse?.recurringPrice?.marketMonthlyInstallment\r\n ? countZeros((parseFloat(item?.recomApiResponse?.recurringPrice?.marketMonthlyInstallment) - parseFloat(item?.recomApiResponse?.recurringPrice?.monthlyInstallment)))\r\n : countZeros(0),\r\n totalFlashDiscountPrice: item?.recomApiResponse?.oneTimePrice?.market\r\n ? countZeros(parseFloat(item?.recomApiResponse?.oneTimePrice?.market) - parseFloat(item?.recomApiResponse?.oneTimePrice?.base))\r\n : countZeros(0)\r\n };\r\n const cartItemNote: any = [\r\n { author: FLOWINTITIATED, text: HARDWARE },\r\n { author: HARDWARE_IMAGE_URL, text: item?.imageData?.image || '' },\r\n { author: MONTHLYFLASHDISCOUNT, text: discounts?.monthlyFlashDiscountPrice },\r\n { author: TOTALFLASHDISCOUNT, text: discounts?.totalFlashDiscountPrice },\r\n { author: HARDWAREGROUPNAME, text: item?.recomApiResponse?.baseProducts }\r\n ];\r\n if (deviceSessionValues?.hardwareVariant?.selectedContractType === CONTRACT || selectedPaymentType === CONTRACT) {\r\n cartItemNote.push({ author: UPFRONT, text: 1.0 });\r\n }\r\n items.push({\r\n action: ADD,\r\n id: item?.recomApiResponse?.id,\r\n contractTerm: (deviceSessionValues?.hardwareVariant?.selectedContractType === CONTRACT || selectedPaymentType === CONTRACT) ? 24 : 0,\r\n note: cartItemNote\r\n });\r\n }\r\n } else if (action === REMOVE) {\r\n if (tabKey === WATCHES || tabKey === TABLETS) {\r\n items.push({ itemType: HARDWARE, action: REMOVE, id: item?.recomApiResponse?.id });\r\n } else if (tabKey === ACCESSORY) {\r\n items.push({ action: REMOVE, id: item?.recomApiResponse?.id });\r\n }\r\n }\r\n\r\n if (items.length === 0) return [];\r\n\r\n const promotionId = recommendedAccessories?.[tabKey]?.ratePlan?.promotionInfo?.id;\r\n return [{\r\n itemType: tabKey === ACCESSORY ? ACCESSORY : DATA_POSTPAID,\r\n promotionId: promotionId,\r\n items: items\r\n }];\r\n};\r\n"],"names":["useMultiAccessoryUpdateCartActions","store","dispatch","useMultiAccessoryContext","storeRef","useRef","useEffect","current","setupdateAccessoryCartFailure","useCallback","payload","type","actionTypes","updateAccessoryCartFailure","mergeCartData","responseCartItems","updatedCartData","findAllCartItemsByCategory","existingCartData","cartData","subscribedInfo","processType","multiItemAccessorycreateCartRequest","updateCreatecartItemData","__awaiter","multiAccessoryState","selectedPaymentType","recommendedAccessories","selectedTab","deviceSessionValues","isSubscriptionFlow","_b","_a","MOBILERATEPLAN","INTERNETFLOW","TV","includes","call","_e","_d","_c","hardware","recommendationProcessingType","hardwareVariant","updateCartRequest","paymentTermOnly","effectivePaymentType","_f","newPaymentType","Object","assign","recommendationItemTerm","CONTRACT","MONTHLY","NONE","cartItems","_g","length","cartItem","updateAccessoryCartStart","tabForUsecase","previousTab","usecase","TABLETS","WATCHES","undefined","response","multiItemAccessoryUpdateCartService","getUpdateCartData","id","updateAccessoryCartSuccess","getCartSuccess","skipRedirect","window","location","href","redirectUrl","error","Error","message","String","fetchCartData","cartId","getCartStart","getCart","getCartFailure","removeItemFromCart","item","tabKey","items","push","itemType","HARDWARE","action","REMOVE","recomApiResponse","ACCESSORY","promotionId","_l","_k","_j","_h","ratePlan","promotionInfo","DATA_POSTPAID","buildSingleItemCartPayload","storeState","isDeviceRenewal","isAlreadyInCart","keys","ADD","cartAction","UPDATE","cartItemNote","author","FLOWINTITIATED","text","HARDWARE_CONFIGURATION","variantCategory","color","HARDWARE_IMAGE_URL","imageData","image","HARDWAREGROUPNAME","baseProducts","name","HARDWARE_CATEGORY","SMARTWATCH","TABLET_CATEGORY","selectedContractType","UPFRONT","ratePlanId","ratePlanItem","RATEPLAN","installedPlan","_m","contractTerm","_o","note","discounts","monthlyFlashDiscountPrice","_q","_p","recurringPrice","marketMonthlyInstallment","countZeros","parseFloat","_s","_r","_u","_t","monthlyInstallment","totalFlashDiscountPrice","_w","_v","oneTimePrice","market","_x","_y","_0","_z","base","_1","MONTHLYFLASHDISCOUNT","TOTALFLASHDISCOUNT","_2","_3","_4","_5","_6","_7","_10","_8"],"mappings":"w6BAeO,MAAMA,EAAqC,KAChD,MAAMC,MAAEA,EAAKC,SAAEA,GAAaC,IACtBC,EAAWC,EAAOJ,GAExBK,EAAU,KACRF,EAASG,QAAUN,GAClB,CAACA,IAGJ,MAAMO,EAAgCC,EAAaC,IACjDR,EAAS,CAAES,KAAMC,EAAYC,2BAA4BH,aACxD,CAACR,IAMEY,EAAiBC,IACrB,MAAMC,EAAkBC,EAA2BF,GAC7CG,EAAmBd,EAASG,QAAQY,SAS1C,OANKH,EAAgBI,iBAAkBF,aAAgB,EAAhBA,EAAkBE,kBACvDJ,EAAgBI,eAAiBF,EAAiBE,iBAE/CJ,EAAgBK,cAAeH,aAAgB,EAAhBA,EAAkBG,eACpDL,EAAgBK,YAAcH,EAAiBG,aAE1CL,GA4JT,MAAO,CACLR,gCACAc,oCAvJ0Cb,EAC1Cc,GACEC,OAAA,OAAA,OAAA,EAAA,8BACF,IACE,MAAMC,EAAsBrB,EAASG,SAC/BmB,oBAAEA,EAAmBC,uBAAGA,EAAsBC,YAAGA,EAAWC,oBAAEA,GAAuBJ,EAErFK,KAAkE,QAA7CC,EAAmC,QAAnCC,EAAA,CAACC,EAAgBC,EAAcC,UAAI,IAAAH,OAAA,EAAAA,EAAEI,gBAAQ,IAAAL,OAAA,EAAAA,EAAAM,KAAAL,EAAuD,QAApDM,EAA+C,QAA/CC,EAAqC,QAArCC,EAAAb,aAAsB,EAAtBA,EAAyBC,UAAY,IAAAY,OAAA,EAAAA,EAAEC,gBAAQ,IAAAF,OAAA,EAAAA,EAAG,UAAE,IAAAD,OAAA,EAAAA,EAAEI,kCAAwCb,aAAmB,EAAnBA,EAAqBc,iBAE9L,IAAIC,EAEJ,GAAIrB,aAAwB,EAAxBA,EAA0BsB,gBAAiB,CAG7C,MAAMC,EAA+D,QAAxCC,EAAAxB,aAAwB,EAAxBA,EAA0ByB,sBAAc,IAAAD,EAAAA,EAAIrB,EACzEkB,EAAiBK,OAAAC,OAAA,CAAA,EACXpB,GAAsB,CAAEqB,uBAAwBL,IAAyBM,EAAWC,EAAUC,GAEtG,MAEEV,GAFSrB,aAAwB,EAAxBA,EAA0BgC,WAElBN,OAAAC,OAAAD,OAAAC,OAAA,CAAA,EACXpB,GAAsB,CAAEqB,uBAAwBzB,IAAwB0B,EAAWC,EAAUC,KAC3D,UAAlC/B,EAAyBgC,iBAAS,IAAAC,OAAA,EAAAA,EAAEC,QAAS,EAAI,CAAEC,SAAUnC,EAAyBgC,WAAc,CAAA,GAIzFN,OAAAC,OAAA,CAAA,EACXpB,GAAsB,CAAEqB,uBAAwBzB,IAAwB0B,EAAWC,EAAUC,IAIrGpD,EAAS,CAAES,KAAMC,EAAY+C,yBAA0BjD,QAAS,OAEhE,MAAMkD,GAAgBrC,aAAwB,EAAxBA,EAA0BsC,cAAejC,EACzDkC,EAAWF,IAAkBG,GAAWH,IAAkBI,EAAWJ,OAAgBK,EAErFC,EAAWtB,UAA2BuB,aAAmC,EAAnCA,EAAqCC,kBAC/E7C,aAAwB,EAAxBA,EAA0B8C,GAC1BzB,EACAkB,IAUF,OARII,IACFhE,EAAS,CAAES,KAAMC,EAAY0D,2BAA4B5D,QAASwD,IAClEhE,EAAS,CAAES,KAAMC,EAAY2D,eAAgB7D,QAASI,EAAcoD,aAAQ,EAARA,EAAUR,aAEzEnC,aAAwB,EAAxBA,EAA0BiD,gBAC7BC,OAAOC,SAASC,KAAOpD,aAAwB,EAAxBA,EAA0BqD,cAG9CV,CACT,CAAE,MAAOW,GACP3E,EAAS,CACPS,KAAMC,EAAYC,2BAClBH,QAAS,CAAEoE,MAAOD,aAAiBC,MAAQD,EAAME,QAAUC,OAAOH,KAEtE,CACF,GAAG,CAAC3E,IAgGF+E,cA1FoBxE,EAAmByE,GAAe1D,OAAA,OAAA,OAAA,EAAA,YACtD,IACEtB,EAAS,CAAES,KAAMC,EAAYuE,aAAczE,QAAS,OAGpD,MAAMwD,QAAiBC,aAAmC,EAAnCA,EAAqCiB,QAAQF,GAEpE,GAAIhB,IAAaA,EAASW,MAKxB,OAJA3E,EAAS,CACPS,KAAMC,EAAY2D,eAClB7D,QAASO,EAA2BiD,aAAQ,EAARA,EAAUR,YAEzCQ,EAEP,MAAM,IAAIY,OAAMZ,aAAQ,EAARA,EAAUW,QAAS,4BAEvC,CAAE,MAAOA,GAKP,MAJA3E,EAAS,CACPS,KAAMC,EAAYyE,eAClB3E,QAAS,CAAEoE,MAAOD,aAAiBC,MAAQD,EAAME,QAAUC,OAAOH,MAE9DA,CACR,CACF,GAAG,CAAC3E,IAoEFoF,mBA9DyB7E,EAAY,CAAOyE,EAAaK,IAAa/D,OAAA,OAAA,OAAA,EAAA,sCACtE,IACE,MAAMgE,EAASD,aAAI,EAAJA,EAAMC,OACf/D,EAAsBrB,EAASG,SAC/BmB,oBAAEA,EAAmBC,uBAAEA,EAAsBE,oBAAEA,GAAwBJ,EACvEK,KAAiE,QAA5CC,EAAkC,QAAlCC,EAAA,CAACC,EAAgBC,EAAcC,UAAG,IAAAH,OAAA,EAAAA,EAAEI,gBAAQ,IAAAL,OAAA,EAAAA,EAAAM,KAAAL,EACtB,QAA/CM,EAA0C,QAA1CC,EAAgC,QAAhCC,EAAAb,aAAsB,EAAtBA,EAAyB6D,UAAO,IAAAhD,OAAA,EAAAA,EAAEC,gBAAQ,IAAAF,OAAA,EAAAA,EAAG,UAAE,IAAAD,OAAA,EAAAA,EAAEI,kCACvCb,aAAmB,EAAnBA,EAAqBc,iBAG3B8C,EAAa,GAcnB,GAbID,IAAWxB,GAAWwB,IAAWzB,EACnC0B,EAAMC,KAAK,CACTC,SAAUC,EACVC,OAAQC,EACRzB,GAA0B,QAAtBtB,EAAAwC,eAAAA,EAAMQ,wBAAgB,IAAAhD,OAAA,EAAAA,EAAEsB,KAErBmB,IAAWQ,GACpBP,EAAMC,KAAK,CACTG,OAAQC,EACRzB,GAA0B,QAAtBb,EAAA+B,eAAAA,EAAMQ,wBAAgB,IAAAvC,OAAA,EAAAA,EAAEa,KAIX,IAAjBoB,EAAMhC,OAAc,OACxB,MAAMwC,EAA2E,QAA7DC,EAAyD,QAAzDC,EAA0C,QAA1CC,EAAgC,UAAhCzE,aAAsB,EAAtBA,EAAyB6D,UAAO,IAAAa,OAAA,EAAAA,EAAEC,gBAAQ,IAAAF,OAAA,EAAAA,EAAEG,qBAAa,IAAAJ,OAAA,EAAAA,EAAE9B,UAAE,IAAA6B,EAAAA,EAAI,2BAC/EtD,EAAiBK,OAAAC,OAAAD,OAAAC,OAAA,CAAA,EACjBpB,GAAsB,CAAEqB,uBAAwBzB,IAAwB0B,EAAWC,EAAUC,IAAO,CACxGI,SAAU,CAAC,CACTiC,SAAUH,IAAWQ,EAAYA,EAAYQ,EAC7CP,YAAaA,EACbR,MAAOA,MAIXvF,EAAS,CAAES,KAAMC,EAAY+C,yBAA0BjD,QAAS,OAEhE,MAAMoD,EAAW0B,IAAWzB,GAAWyB,IAAWxB,EAAWwB,OAASvB,EAChEC,QAAiBC,aAAmC,EAAnCA,EAAqCC,kBAC1Dc,EACAtC,EACAkB,GAOF,OAJII,IACFhE,EAAS,CAAES,KAAMC,EAAY0D,2BAA4B5D,QAASwD,IAClEhE,EAAS,CAAES,KAAMC,EAAY2D,eAAgB7D,QAASI,EAAcoD,aAAQ,EAARA,EAAUR,aAEzEQ,CACT,CAAE,MAAOW,GACP3E,EAAS,CACPS,KAAMC,EAAYC,2BAClBH,QAAS,CAAEoE,MAAOD,aAAiBC,MAAQD,EAAME,QAAUC,OAAOH,KAEtE,CACF,GAAG,CAAC3E,MAoBOuG,EAA6B,CAAClB,EAAWM,EAAgBL,EAAgBkB,qFACpF,MAAM7E,oBAAEA,GAAmBH,oBAAEA,GAAmBC,uBAAEA,GAAsBR,SAAEA,IAAauF,EACjFC,GAA4C,oBAA1BxF,cAAQ,EAARA,GAAUE,cAA8D,uBAA1BF,cAAQ,EAARA,GAAUE,aAC1EuF,IAAuD,QAArC5E,EAAAiB,OAAO4D,MAAK1F,gBAAAA,GAAWqE,KAAW,CAAA,UAAG,IAAAxD,OAAA,EAAAA,EAAEyB,QAAS,EAClEgC,GAAa,GAEnB,GAAII,IAAWiB,EACb,GAAItB,IAAWxB,GAAWwB,IAAWzB,EAAS,CAC5C,MAAMgD,EAAaH,GAAkBI,EAASF,EACxCG,EAAoB,CACxB,CAAEC,OAAQC,EAAgBC,KAAMxB,GAChC,CAAEsB,OAAQG,EAAwBD,MAA6C,QAAvC5E,EAAsB,QAAtBT,EAAAwD,aAAI,EAAJA,EAAMQ,wBAAgB,IAAAhE,OAAA,EAAAA,EAAEuF,uBAAe,IAAA9E,OAAA,EAAAA,EAAE+E,QAAS,IAC1F,CAAEL,OAAQM,EAAoBJ,cAAM7E,EAAAgD,aAAI,EAAJA,EAAMkC,gCAAWC,QAAS,IAC9D,CAAER,OAAQS,EAAmBP,MAA4B,QAAtB9E,EAAAiD,aAAI,EAAJA,EAAMQ,wBAAgB,IAAAzD,OAAA,EAAAA,EAAEsF,gBAAsC,QAAtB7E,EAAAwC,aAAI,EAAJA,EAAMQ,wBAAgB,IAAAhD,OAAA,EAAAA,EAAE8E,OACnG,CAAEX,OAAQY,EAAmBV,KAAM5B,IAAWxB,EAAU+D,EAAaC,GACrE,CAAEd,OAAQ,oBAAqBE,KAAM,QACrC,CAAEF,OAAQ,yBAA0BE,KAAM,UAEJ,QAApC5D,EAAA3B,cAAmB,EAAnBA,GAAqBc,uBAAe,IAAAa,OAAA,EAAAA,EAAEyE,wBAAyB7E,GAAY1B,KAAwB0B,GACrG6D,EAAavB,KAAK,CAAEwB,OAAQgB,EAASd,KAAM,QAE7C,MAAMe,EAAuD,QAA1C/B,EAAgC,QAAhCC,EAAA1E,cAAsB,EAAtBA,GAAyB6D,UAAO,IAAAa,OAAA,EAAAA,EAAEC,gBAAQ,IAAAF,OAAA,EAAAA,EAAE/B,GAC/D,IAAKuC,IAAmBuB,EAAY,CAClC,MAAMC,EAAoB,CAAEzC,SAAU0C,EAAUxC,OAAQiB,EAAKzC,GAAI8D,GAC7DxB,KAAmBxF,cAAQ,EAARA,GAAUC,kBAC/BgH,EAAahH,eAAiB,CAC5BiD,WAAI8B,EAAAhF,GAASC,qCAAgBiD,GAC7BiE,sBAAepC,EAAA/E,GAASC,qCAAgBkH,gBAG5C7C,GAAMC,KAAK0C,EACb,CACA3C,GAAMC,KAAK,CACTC,SAAUC,EACVC,OAAQkB,EACR1C,GAA0B,QAAtBkE,EAAAhD,eAAAA,EAAMQ,wBAAgB,IAAAwC,OAAA,EAAAA,EAAElE,GAC5BmE,cAAmD,QAApCC,EAAA5G,cAAmB,EAAnBA,GAAqBc,uBAAe,IAAA8F,OAAA,EAAAA,EAAER,wBAAyB7E,GAAY1B,KAAwB0B,EAAY,GAAK,EACnIsF,KAAMzB,GAEV,KAAO,CAEL,MAAM0B,EAAiB,CACrBC,mCAA2BC,EAAsB,QAAtBC,EAAAvD,aAAI,EAAJA,EAAMQ,wBAAgB,IAAA+C,OAAA,EAAAA,EAAEC,qCAAgBC,0BAC/DC,EAAYC,WAAiD,QAAtCC,EAAsB,QAAtBC,EAAA7D,aAAI,EAAJA,EAAMQ,wBAAgB,IAAAqD,OAAA,EAAAA,EAAEL,sBAAc,IAAAI,OAAA,EAAAA,EAAEH,0BAA4BE,mBAAWG,EAAsB,QAAtBC,EAAA/D,aAAI,EAAJA,EAAMQ,wBAAgB,IAAAuD,OAAA,EAAAA,EAAEP,qCAAgBQ,qBAC9IN,EAAW,GACfO,iCAAyBC,EAAsB,QAAtBC,EAAAnE,aAAI,EAAJA,EAAMQ,wBAAgB,IAAA2D,OAAA,EAAAA,EAAEC,mCAAcC,QAC3DX,EAAWC,WAA+C,UAAd,QAAtBW,EAAAtE,eAAAA,EAAMQ,wBAAgB,IAAA8D,OAAA,EAAAA,EAAEF,oBAAY,IAAAG,OAAA,EAAAA,EAAEF,QAAUV,WAA+C,QAApCa,EAAsB,QAAtBC,EAAAzE,aAAI,EAAJA,EAAMQ,wBAAgB,IAAAiE,OAAA,EAAAA,EAAEL,oBAAY,IAAAI,OAAA,EAAAA,EAAEE,OACvHhB,EAAW,IAEXhC,EAAoB,CACxB,CAAEC,OAAQC,EAAgBC,KAAMxB,GAChC,CAAEsB,OAAQM,EAAoBJ,cAAM8C,EAAA3E,aAAI,EAAJA,EAAMkC,gCAAWC,QAAS,IAC9D,CAAER,OAAQiD,EAAsB/C,KAAMuB,aAAS,EAATA,EAAWC,2BACjD,CAAE1B,OAAQkD,EAAoBhD,KAAMuB,aAAS,EAATA,EAAWa,yBAC/C,CAAEtC,OAAQS,EAAmBP,KAA4B,QAAtBiD,EAAA9E,eAAAA,EAAMQ,wBAAgB,IAAAsE,OAAA,EAAAA,EAAEzC,gBAErB,QAApC0C,EAAAzI,cAAmB,EAAnBA,GAAqBc,uBAAe,IAAA2H,OAAA,EAAAA,EAAErC,wBAAyB7E,GAAY1B,KAAwB0B,GACrG6D,EAAavB,KAAK,CAAEwB,OAAQgB,EAASd,KAAM,IAE7C3B,GAAMC,KAAK,CACTG,OAAQiB,EACRzC,GAA0B,QAAtBkG,EAAAhF,eAAAA,EAAMQ,wBAAgB,IAAAwE,OAAA,EAAAA,EAAElG,GAC5BmE,cAAmD,QAApCgC,GAAA3I,cAAmB,EAAnBA,GAAqBc,uBAAe,IAAA6H,QAAA,EAAAA,GAAEvC,wBAAyB7E,GAAY1B,KAAwB0B,EAAY,GAAK,EACnIsF,KAAMzB,GAEV,MACSpB,IAAWC,IAChBN,IAAWxB,GAAWwB,IAAWzB,EACnC0B,GAAMC,KAAK,CAAEC,SAAUC,EAAUC,OAAQC,EAAQzB,GAA0B,QAAtBoG,GAAAlF,aAAI,EAAJA,EAAMQ,wBAAgB,IAAA0E,QAAA,EAAAA,GAAEpG,KACpEmB,IAAWQ,GACpBP,GAAMC,KAAK,CAAEG,OAAQC,EAAQzB,GAA0B,QAAtBqG,GAAAnF,eAAAA,EAAMQ,wBAAgB,IAAA2E,QAAA,EAAAA,GAAErG,MAI7D,GAAqB,IAAjBoB,GAAMhC,OAAc,MAAO,GAE/B,MAAMwC,GAAuE,QAAzD0E,cAAgC,QAAhCC,GAAAjJ,cAAsB,EAAtBA,GAAyB6D,UAAO,IAAAoF,QAAA,EAAAA,GAAEtE,iCAAUC,qBAAa,IAAAoE,QAAA,EAAAA,GAAEtG,GAC/E,MAAO,CAAC,CACNsB,SAAUH,IAAWQ,EAAYA,EAAYQ,EAC7CP,YAAaA,GACbR,MAAOA"}