{"version":3,"file":"static/js/a6ca13e1f7c20a6ee9e6.bundle.js","mappings":"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","sources":["webpack://Dobbies.Commerce/./src/modules/dobbies-add-product-to-cart/components/add-product-to-cart.tsx?b960","webpack://Dobbies.Commerce/./src/modules/dobbies-add-product-to-cart/dobbies-add-product-to-cart.tsx?073e","webpack://Dobbies.Commerce/./src/modules/dobbies-add-product-to-cart/dobbies-add-product-to-cart.view.tsx?26b3","webpack://Dobbies.Commerce/./lib/dobbies-add-product-to-cart/module-registration.js?b229","webpack://Dobbies.Commerce/external var \"React\"?0d3b","webpack://Dobbies.Commerce/external var \"ReactDOM\"?853b"],"sourcesContent":["/* tslint:disable:max-func-body-length */\r\n\r\nimport { Waiting } from '@msdyn365-commerce-modules/utilities';\r\n// import * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { getCartState } from '@msdyn365-commerce/global-state';\r\nimport * as React from 'react';\r\nimport { IDobbiesAddProductToCartViewProps } from '../dobbies-add-product-to-cart';\r\n\r\nimport { getSelectedVariant, SelectedVariantInput } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy';\r\n\r\nexport enum TierType {\r\n Club = 'club',\r\n ClubPlus = 'club-plus',\r\n ClubPremium = 'club-premium',\r\n ClubPlusFreeTrial = 'club-plus-trial',\r\n ClubPlusBoltons = 'club-plus-bolton'\r\n}\r\n\r\nexport interface IDobbiesProductAddToCartProps {\r\n props: IDobbiesAddProductToCartViewProps;\r\n}\r\n\r\ninterface ISelectedProduct extends SimpleProduct {\r\n productVariant?: SimpleProduct;\r\n}\r\n\r\nconst DobbiesProductAddToCart: React.FC = props => {\r\n const [itemAdded, setItemAdded] = React.useState(false);\r\n const { isAuthenticated } = props.props.context.request.user;\r\n const { authenticationMessage, loadingDobbiesExperienceMessage } = props.props.resources;\r\n\r\n const { clubPremiumTierId, clubPlusTierId, clubPlusTrialTierId, clubPlusBoltOnId, clubPlusBoltOnSecondId } = props.props.config;\r\n\r\n const getTier = (props: IDobbiesProductAddToCartProps) => {\r\n const loyaltyGroup = props.props.data.loyaltyCard.result?.LoyaltyGroups && props.props.data.loyaltyCard.result?.LoyaltyGroups[0];\r\n // highestLoyaltCardTier\r\n const highestActiveLoyaltyCardTier = loyaltyGroup && loyaltyGroup.HighestActiveLoyaltyCardTier;\r\n const loyaltyCardTiers = loyaltyGroup && loyaltyGroup.LoyaltyCardTiers;\r\n // Get TierId based on the active cardTier\r\n if (loyaltyCardTiers && loyaltyCardTiers?.length > 0) {\r\n for (const [_, loyaltyCardTier] of loyaltyCardTiers.entries()) {\r\n if (loyaltyCardTier.RecordId === highestActiveLoyaltyCardTier) {\r\n return loyaltyCardTier;\r\n }\r\n }\r\n }\r\n return;\r\n };\r\n\r\n React.useEffect(() => {\r\n const addProductToCart = async () => {\r\n // get product from data that we want to add into cart.\r\n\r\n // VSI CUSTOMIZATION - START\r\n const context = props.props.context.actionContext;\r\n // props.props.context.request.channel!.RecordId\r\n\r\n // Clear cart on page load\r\n const cartState = await getCartState(props.props.context.actionContext);\r\n\r\n const lineItemIdsToRemove = [];\r\n let productToAdd: ISelectedProduct | null;\r\n\r\n const activeCart = cartState.cart;\r\n for (const activeCartLine of activeCart.CartLines || []) {\r\n lineItemIdsToRemove.push(activeCartLine.LineId!);\r\n }\r\n\r\n if (lineItemIdsToRemove.length > 0) {\r\n try {\r\n await cartState.removeCartLines({ cartLineIds: lineItemIdsToRemove });\r\n } catch (error) {\r\n throw error;\r\n }\r\n }\r\n\r\n if (!props.props.context.request.query?.tier) {\r\n return;\r\n }\r\n\r\n const tier = props.props.context.request.query.tier.toLowerCase();\r\n const boltonProductToAdd = props.props.context.request.query.productNumber;\r\n\r\n if (tier === TierType.ClubPremium) {\r\n const variantInput = new SelectedVariantInput(clubPremiumTierId!, props.props.context.request.channel!.RecordId);\r\n const newProduct = await getSelectedVariant(variantInput, context);\r\n\r\n productToAdd = newProduct;\r\n } else if (tier === TierType.ClubPlusFreeTrial) {\r\n const variantInput = new SelectedVariantInput(clubPlusTrialTierId!, props.props.context.request.channel!.RecordId);\r\n const newProduct = await getSelectedVariant(variantInput, context);\r\n\r\n productToAdd = newProduct;\r\n } else if (tier === 'club-plus-bolton') {\r\n const loyaltGroups = props.props.data.loyaltyCard.result?.LoyaltyGroups![0];\r\n if (loyaltGroups) {\r\n const highestActiveLoyaltyCardTier = loyaltGroups.HighestActiveLoyaltyCardTier;\r\n const activatedTier = loyaltGroups.LoyaltyCardTiers!.find(card => card.RecordId === highestActiveLoyaltyCardTier);\r\n console.log('activeTier', activatedTier);\r\n if (activatedTier?.TierId === 'Club Plus') {\r\n if (boltonProductToAdd && boltonProductToAdd === '2') {\r\n const variantInput = new SelectedVariantInput(\r\n clubPlusBoltOnSecondId!,\r\n props.props.context.request.channel!.RecordId\r\n );\r\n const newProduct = await getSelectedVariant(variantInput, context);\r\n productToAdd = newProduct;\r\n } else {\r\n const variantInput = new SelectedVariantInput(clubPlusBoltOnId!, props.props.context.request.channel!.RecordId);\r\n const newProduct = await getSelectedVariant(variantInput, context);\r\n productToAdd = newProduct;\r\n }\r\n } else if (\r\n activatedTier?.TierId === 'Club Plus Free Trial' &&\r\n props.props.config.allowBoltonsPurcharseForClubPlusFreeTrial\r\n ) {\r\n if (boltonProductToAdd && boltonProductToAdd === '2') {\r\n const variantInput = new SelectedVariantInput(\r\n clubPlusBoltOnSecondId!,\r\n props.props.context.request.channel!.RecordId\r\n );\r\n const newProduct = await getSelectedVariant(variantInput, context);\r\n productToAdd = newProduct;\r\n } else {\r\n const variantInput = new SelectedVariantInput(clubPlusBoltOnId!, props.props.context.request.channel!.RecordId);\r\n const newProduct = await getSelectedVariant(variantInput, context);\r\n productToAdd = newProduct;\r\n }\r\n } else {\r\n if (\r\n props.props.context.request.query?.tier &&\r\n props.props.context.request.query?.tier.toLowerCase() === 'club-plus-bolton'\r\n ) {\r\n window.location.assign('/checkout?tier=club-plus');\r\n return;\r\n }\r\n window.location.assign('/loyalty');\r\n }\r\n }\r\n } else {\r\n const variantInput = new SelectedVariantInput(clubPlusTierId!, props.props.context.request.channel!.RecordId);\r\n const newProduct = await getSelectedVariant(variantInput, context);\r\n\r\n productToAdd = newProduct;\r\n }\r\n\r\n // if cartLines is empty add product to cart\r\n if (cartState.cart.CartLines && cartState.cart.CartLines.length === 0) {\r\n await cartState.addProductToCart({ product: productToAdd!, count: 1, enableStockCheck: false });\r\n // After adding product to cart redirects user to checkout page\r\n setItemAdded(true);\r\n }\r\n const checkoutLink = props.props.config.newSignupJourneyURL; // Msdyn365.getUrlSync('checkout', props.props.context.actionContext) || '';\r\n\r\n if (tier === TierType.ClubPremium) {\r\n window.location.assign(`${checkoutLink}?tier=club-premium`);\r\n } else if (tier === TierType.ClubPlus) {\r\n window.location.assign(`${checkoutLink}?tier=club-plus`);\r\n } else if (tier === 'club-plus-bolton') {\r\n window.location.assign(`${checkoutLink}?tier=club-plus-bolton`);\r\n } else {\r\n window.location.assign(`${checkoutLink}`);\r\n }\r\n };\r\n\r\n const loyaltyGroups = props.props.data.loyaltyCard.result?.LoyaltyGroups;\r\n const tier =\r\n loyaltyGroups &&\r\n loyaltyGroups.length > 0 &&\r\n loyaltyGroups[0].LoyaltyCardTiers &&\r\n loyaltyGroups[0].LoyaltyCardTiers.length > 0 &&\r\n loyaltyGroups[0].LoyaltyCardTiers[0].TierId;\r\n // If user is authenticated\r\n if (isAuthenticated) {\r\n const userActiveTier = getTier(props);\r\n let shouldRedirectToBoltonsLandingPage = false;\r\n if (\r\n userActiveTier &&\r\n userActiveTier.TierId &&\r\n userActiveTier.TierId.toLowerCase() === 'club' &&\r\n props.props.context.request.query?.tier &&\r\n props.props.context.request.query?.tier.toLowerCase() === 'club-plus-bolton'\r\n ) {\r\n shouldRedirectToBoltonsLandingPage = true;\r\n }\r\n if (\r\n (!userActiveTier || !userActiveTier.TierId) &&\r\n props.props.context.request.query?.tier.toLowerCase() === 'club-plus-bolton'\r\n ) {\r\n shouldRedirectToBoltonsLandingPage = true;\r\n }\r\n if (shouldRedirectToBoltonsLandingPage) {\r\n const boltons_url_path = props.props.context.request.cookies.get('boltons_url_path');\r\n if (boltons_url_path && boltons_url_path.value) {\r\n window.location.assign(`/${boltons_url_path.value}`);\r\n return;\r\n }\r\n window.location.assign('/loyalty_boltons-copy');\r\n return;\r\n }\r\n // if user tierId is not 'club plus' add product to cart and redirect to checkout\r\n if (!props.props.data.loyaltyCard.result?.LoyaltyGroups) {\r\n // redirect user to loyalty page\r\n if (\r\n props.props.context.request.query?.tier &&\r\n props.props.context.request.query?.tier.toLowerCase() === 'club-plus-bolton'\r\n ) {\r\n window.location.assign('/checkout?tier=club-plus');\r\n return;\r\n }\r\n // const loyaltyJoinLink = props.props.context?.app?.config?.loyaltyJoinLink;\r\n !itemAdded && addProductToCart();\r\n // window.location.assign(loyaltyJoinLink);\r\n } else {\r\n // check if loyalty tier is club free then proceed\r\n if (tier && tier.toLowerCase() !== props.props.config.clubPlusText?.toLowerCase()) {\r\n !itemAdded && addProductToCart();\r\n // TODO: if tier is expired what to do\r\n } else if (\r\n tier &&\r\n tier.toLowerCase() === props.props.config.clubPlusText?.toLowerCase() &&\r\n loyaltyGroups &&\r\n loyaltyGroups.length &&\r\n loyaltyGroups[0].LoyaltyCardTiers &&\r\n loyaltyGroups[0].LoyaltyCardTiers.length\r\n ) {\r\n const validToDate = loyaltyGroups && loyaltyGroups[0].LoyaltyCardTiers[0].ValidTo;\r\n const endDate = new Date(validToDate ?? '');\r\n const today = new Date();\r\n const timeDifference = endDate.getTime() - today.getTime() + 24 * 60 * 60 * 1000;\r\n const remainingDays = Math.ceil(timeDifference / (1000 * 60 * 60 * 24));\r\n const daysLimit = props.props.context?.app?.config?.clubPlusRenewalDays || 30;\r\n if (\r\n remainingDays <= daysLimit ||\r\n (props.props.context.request.query?.tier &&\r\n props.props.context.request.query?.tier.toLowerCase() === 'club-plus-bolton')\r\n ) {\r\n !itemAdded && addProductToCart();\r\n } else {\r\n // if (\r\n // props.props.context.request.query?.tier &&\r\n // props.props.context.request.query?.tier.toLowerCase() === 'club-plus-bolton'\r\n // ) {\r\n // // window.location.assign('/checkout?tier=club-plus');\r\n // // return;\r\n // !itemAdded && addProductToCart();\r\n // }\r\n const loyaltyLink = props.props.context?.app?.config?.loyaltyLink;\r\n window.location.assign(loyaltyLink);\r\n }\r\n } else {\r\n // redirects user to loyalty page (so he can view his points)\r\n if (\r\n props.props.context.request.query?.tier &&\r\n props.props.context.request.query?.tier.toLowerCase() === 'club-plus-bolton'\r\n ) {\r\n window.location.assign('/checkout?tier=club-plus');\r\n return;\r\n }\r\n const loyaltyLink = props.props.context?.app?.config?.loyaltyLink;\r\n window.location.assign(loyaltyLink);\r\n }\r\n }\r\n } else {\r\n // if user is not authenticated redirects to checkout\r\n const signinLink = props.props.context.request.user.signInUrl;\r\n setItemAdded(true);\r\n window.location.assign(signinLink!);\r\n }\r\n }, [itemAdded]);\r\n // If user is not authenticated show him/her message with loader and redirects him to signin page\r\n if (isAuthenticated) {\r\n return (\r\n
\r\n
\r\n \r\n {authenticationMessage}\r\n
\r\n
\r\n );\r\n // If user is authenticated display him/her custom message please wait while we're loading club experience\r\n } else {\r\n return (\r\n
\r\n
\r\n \r\n {loadingDobbiesExperienceMessage}\r\n
\r\n
\r\n );\r\n }\r\n};\r\n\r\nexport default DobbiesProductAddToCart;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport * as React from 'react';\r\n\r\nimport { IDobbiesAddProductToCartData } from './dobbies-add-product-to-cart.data';\r\nimport { IDobbiesAddProductToCartProps } from './dobbies-add-product-to-cart.props.autogenerated';\r\n\r\nexport interface IDobbiesAddProductToCartViewProps extends IDobbiesAddProductToCartProps {}\r\n\r\n/**\r\n *\r\n * DobbiesAddProductToCart component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass DobbiesAddProductToCart extends React.PureComponent> {\r\n public render(): JSX.Element | null {\r\n return this.props.renderView(this.props);\r\n }\r\n}\r\n\r\nexport default DobbiesAddProductToCart;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport * as React from 'react';\r\nimport DobbiesProductAddToCart from './components/add-product-to-cart';\r\nimport { IDobbiesAddProductToCartViewProps } from './dobbies-add-product-to-cart';\r\n\r\nexport default (props: IDobbiesAddProductToCartViewProps) => {\r\n return (\r\n /* VSI-Customization -- START Pass props to custom component */\r\n \r\n /* VSI-Customization -- END */\r\n );\r\n};\r\n","const binding = { modules: {}, dataActions: {} };\n\n const registerActionId = (actionPath) => {\n if (binding.dataActions[actionPath] &&\n binding.dataActions[actionPath].default &&\n binding.dataActions[actionPath].default.prototype &&\n binding.dataActions[actionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[actionPath].default.prototype.id] = binding.dataActions[actionPath];\n } else {\n Object.keys(binding.dataActions[actionPath] || {}).forEach(exportName => {\n if (binding.dataActions[actionPath][exportName] &&\n binding.dataActions[actionPath][exportName].prototype &&\n binding.dataActions[actionPath][exportName].prototype.Action) {\n binding.dataActions[binding.dataActions[actionPath][exportName].prototype.id] = binding.dataActions[actionPath][exportName];\n }\n })\n }\n };\n\n const registerSanitizedActionPath = (sanitizedActionPath, dataAction) => {\n if (process.env.NODE_ENV === 'development') {\n if (!dataAction.default) {\n throw new Error('Data action path does not have a default export');\n }\n if (!(dataAction.default.prototype.id && binding.dataActions[dataAction.default.prototype.id]) || !binding.dataActions[sanitizedActionPath]) {\n binding.dataActions[sanitizedActionPath] = dataAction;\n }\n } else {\n binding.dataActions[sanitizedActionPath] = dataAction;\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n };\n \n\n (binding.modules['dobbies-add-product-to-cart'] = {\n c: () => require('partner/modules/dobbies-add-product-to-cart/dobbies-add-product-to-cart.tsx'),\n $type: 'contentModule',\n da: [{name:'loyaltyCard', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card', runOn: 0}],\n \n iNM: false,\n ns: '__local__',\n n: 'dobbies-add-product-to-cart',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/dobbies-add-product-to-cart'\n });\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n \n window.__bindings__ = window.__bindings__ || {};\n window.__bindings__.modules = {\n ...window.__bindings__.modules || {},\n ...binding.modules\n };\n \n window.__bindings__.dataActions = {\n ...window.__bindings__.dataActions || {},\n ...binding.dataActions\n };\n export const viewDictionary = {};\n viewDictionary['__local__|__local__|modules|dobbies-add-product-to-cart|dobbies-add-product-to-cart'] = {\n c: () => require('partner/modules/dobbies-add-product-to-cart/dobbies-add-product-to-cart.view.tsx'),\n cn: '__local__-__local__-dobbies-add-product-to-cart'\n };\nwindow.__bindings__ = window.__bindings__ || {};\nwindow.__bindings__.viewDictionary = {\n ...window.__bindings__.viewDictionary || {},\n ...viewDictionary\n };","module.exports = React;","module.exports = ReactDOM;"],"names":["TierType","props","itemAdded","setItemAdded","React","isAuthenticated","context","request","user","authenticationMessage","loadingDobbiesExperienceMessage","resources","clubPremiumTierId","clubPlusTierId","clubPlusTrialTierId","clubPlusBoltOnId","clubPlusBoltOnSecondId","config","_props$props$data$loy4","addProductToCart","async","_props$props$context$","actionContext","cartState","getCartState","lineItemIdsToRemove","productToAdd","activeCart","cart","activeCartLine","CartLines","push","LineId","length","removeCartLines","cartLineIds","error","query","tier","toLowerCase","boltonProductToAdd","productNumber","ClubPremium","variantInput","SelectedVariantInput","channel","RecordId","getSelectedVariant","ClubPlusFreeTrial","_props$props$data$loy3","loyaltGroups","data","loyaltyCard","result","LoyaltyGroups","highestActiveLoyaltyCardTier","HighestActiveLoyaltyCardTier","activatedTier","LoyaltyCardTiers","find","card","console","log","TierId","allowBoltonsPurcharseForClubPlusFreeTrial","_props$props$context$2","_props$props$context$3","window","location","assign","product","count","enableStockCheck","checkoutLink","newSignupJourneyURL","ClubPlus","loyaltyGroups","_props$props$context$4","_props$props$context$5","_props$props$context$6","_props$props$data$loy5","userActiveTier","_props$props$data$loy","_props$props$data$loy2","loyaltyGroup","loyaltyCardTiers","_","loyaltyCardTier","entries","getTier","shouldRedirectToBoltonsLandingPage","boltons_url_path","cookies","get","value","_props$props$config$c","_props$props$config$c2","clubPlusText","_props$props$context","_props$props$context$9","_props$props$context$10","validToDate","ValidTo","endDate","Date","today","timeDifference","getTime","Math","ceil","app","clubPlusRenewalDays","_props$props$context2","loyaltyLink","_props$props$context$11","_props$props$context$12","_props$props$context3","_props$props$context$7","_props$props$context$8","signinLink","signInUrl","className","Waiting","DobbiesAddProductToCart","render","this","renderView","DobbiesProductAddToCart","binding","modules","dataActions","c","require","$type","da","name","path","runOn","iNM","ns","n","p","pdp","md","registerSanitizedActionPath","sanitizedActionPath","dataAction","default","Error","prototype","RegistrationId","id","__bindings__","_objectSpread","viewDictionary","cn","module","exports","ReactDOM"],"sourceRoot":""}