@sentecacommerce-theme/lib 0.12.60 → 0.12.64

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 (80) hide show
  1. package/dist/cjs/api/myCartApi/index.js +2 -1
  2. package/dist/cjs/api/myCartApi/index.js.map +1 -1
  3. package/dist/cjs/basket/hooks/index.js +8 -0
  4. package/dist/cjs/basket/hooks/index.js.map +1 -1
  5. package/dist/cjs/basket/hooks/useBasketCrossSaleItems.js +57 -0
  6. package/dist/cjs/basket/hooks/useBasketCrossSaleItems.js.map +1 -0
  7. package/dist/cjs/contexts/CheckoutForm/index.js +1 -1
  8. package/dist/cjs/contexts/CheckoutForm/index.js.map +1 -1
  9. package/dist/cjs/hooks/useProduct/index.js +29 -1
  10. package/dist/cjs/hooks/useProduct/index.js.map +1 -1
  11. package/dist/cjs/hooks/useProduct/utils/index.js +21 -4
  12. package/dist/cjs/hooks/useProduct/utils/index.js.map +1 -1
  13. package/dist/cjs/listing/utils/buildCategoryQuery.js +10 -4
  14. package/dist/cjs/listing/utils/buildCategoryQuery.js.map +1 -1
  15. package/dist/cjs/order/api/mutations/index.js +8 -0
  16. package/dist/cjs/order/api/mutations/index.js.map +1 -1
  17. package/dist/cjs/order/api/mutations/useUpdateCustomLineItemMutation.js.map +1 -1
  18. package/dist/cjs/order/api/mutations/useUpdateOrderCustomFieldMutation.js +20 -0
  19. package/dist/cjs/order/api/mutations/useUpdateOrderCustomFieldMutation.js.map +1 -0
  20. package/dist/cjs/order/hooks/index.js +8 -0
  21. package/dist/cjs/order/hooks/index.js.map +1 -1
  22. package/dist/cjs/order/hooks/useUpdateCustomLineItem.js.map +1 -1
  23. package/dist/cjs/order/hooks/useUpdateOrderCustomField.js +13 -0
  24. package/dist/cjs/order/hooks/useUpdateOrderCustomField.js.map +1 -0
  25. package/dist/cjs/user/api/queries/index.js +8 -0
  26. package/dist/cjs/user/api/queries/index.js.map +1 -1
  27. package/dist/cjs/user/api/queries/useGetMyLoyaltyCardQuery.js +24 -0
  28. package/dist/cjs/user/api/queries/useGetMyLoyaltyCardQuery.js.map +1 -0
  29. package/dist/cjs/user/hooks/index.js +8 -0
  30. package/dist/cjs/user/hooks/index.js.map +1 -1
  31. package/dist/cjs/user/hooks/useGetMyLoyaltyCard.js +13 -0
  32. package/dist/cjs/user/hooks/useGetMyLoyaltyCard.js.map +1 -0
  33. package/dist/esm/api/myCartApi/index.js +2 -1
  34. package/dist/esm/api/myCartApi/index.js.map +1 -1
  35. package/dist/esm/basket/hooks/index.js +1 -0
  36. package/dist/esm/basket/hooks/index.js.map +1 -1
  37. package/dist/esm/basket/hooks/useBasketCrossSaleItems.js +25 -0
  38. package/dist/esm/basket/hooks/useBasketCrossSaleItems.js.map +1 -0
  39. package/dist/esm/contexts/CheckoutForm/index.js +1 -1
  40. package/dist/esm/contexts/CheckoutForm/index.js.map +1 -1
  41. package/dist/esm/hooks/useProduct/index.js +26 -2
  42. package/dist/esm/hooks/useProduct/index.js.map +1 -1
  43. package/dist/esm/hooks/useProduct/utils/index.js +16 -2
  44. package/dist/esm/hooks/useProduct/utils/index.js.map +1 -1
  45. package/dist/esm/listing/utils/buildCategoryQuery.js +10 -4
  46. package/dist/esm/listing/utils/buildCategoryQuery.js.map +1 -1
  47. package/dist/esm/order/api/mutations/index.js +1 -0
  48. package/dist/esm/order/api/mutations/index.js.map +1 -1
  49. package/dist/esm/order/api/mutations/useUpdateCustomLineItemMutation.js.map +1 -1
  50. package/dist/esm/order/api/mutations/useUpdateOrderCustomFieldMutation.js +9 -0
  51. package/dist/esm/order/api/mutations/useUpdateOrderCustomFieldMutation.js.map +1 -0
  52. package/dist/esm/order/hooks/index.js +1 -0
  53. package/dist/esm/order/hooks/index.js.map +1 -1
  54. package/dist/esm/order/hooks/useUpdateCustomLineItem.js.map +1 -1
  55. package/dist/esm/order/hooks/useUpdateOrderCustomField.js +5 -0
  56. package/dist/esm/order/hooks/useUpdateOrderCustomField.js.map +1 -0
  57. package/dist/esm/user/api/queries/index.js +1 -0
  58. package/dist/esm/user/api/queries/index.js.map +1 -1
  59. package/dist/esm/user/api/queries/useGetMyLoyaltyCardQuery.js +11 -0
  60. package/dist/esm/user/api/queries/useGetMyLoyaltyCardQuery.js.map +1 -0
  61. package/dist/esm/user/hooks/index.js +1 -0
  62. package/dist/esm/user/hooks/index.js.map +1 -1
  63. package/dist/esm/user/hooks/useGetMyLoyaltyCard.js +5 -0
  64. package/dist/esm/user/hooks/useGetMyLoyaltyCard.js.map +1 -0
  65. package/dist/types/api/myCartApi/index.d.ts +1 -0
  66. package/dist/types/basket/hooks/index.d.ts +1 -0
  67. package/dist/types/basket/hooks/useBasketCrossSaleItems.d.ts +9 -0
  68. package/dist/types/hooks/useProduct/index.d.ts +1 -0
  69. package/dist/types/hooks/useProduct/utils/index.d.ts +1 -0
  70. package/dist/types/order/api/mutations/index.d.ts +1 -0
  71. package/dist/types/order/api/mutations/useUpdateCustomLineItemMutation.d.ts +2 -5
  72. package/dist/types/order/api/mutations/useUpdateOrderCustomFieldMutation.d.ts +9 -0
  73. package/dist/types/order/hooks/index.d.ts +1 -0
  74. package/dist/types/order/hooks/useUpdateCustomLineItem.d.ts +2 -2
  75. package/dist/types/order/hooks/useUpdateOrderCustomField.d.ts +2 -0
  76. package/dist/types/user/api/queries/index.d.ts +1 -0
  77. package/dist/types/user/api/queries/useGetMyLoyaltyCardQuery.d.ts +5 -0
  78. package/dist/types/user/hooks/index.d.ts +1 -0
  79. package/dist/types/user/hooks/useGetMyLoyaltyCard.d.ts +2 -0
  80. package/package.json +3 -3
@@ -32,7 +32,8 @@ var myCartCacheKeys = {
32
32
  useGetShippingMethods: 'mycart-api-use-get-shippingmethods',
33
33
  useGetAllShippingMethods: 'mycart-api-use-get-all-shippingmethods',
34
34
  useGetPaymentMethods: 'mycart-api-use-get-paymentmethods',
35
- useIsExisting: 'mycart-api-is-existing'
35
+ useIsExisting: 'mycart-api-is-existing',
36
+ useGetCrossSaleItems: 'mycart-api-use-get-cross-sale-products'
36
37
  };
37
38
  exports.myCartCacheKeys = myCartCacheKeys;
38
39
  var LineItemType;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/api/myCartApi/index.ts"],"names":["BASKET_STORAGE_KEY","myCartCacheKeys","useGet","useGetCompact","useGetShippingMethods","useGetAllShippingMethods","useGetPaymentMethods","useIsExisting","LineItemType","MyCartApiFactory","instance","initialise","myCartApi","MyCartAPI","myOrdersApi","MyOrdersAPI","Object","freeze","useGetWithCookies","queryCache","cookies","get","data","setQueryData","usePrefetchCart","e","error","compact","retry","refetchOnMount","refetchOnWindowFocus","compactBasket","productId","variantId","collapseKey","parsedData","identifier","lineItems","getMyShippingMethods","getAvailableShippingMethods","enabled","getPaymentMethods","useAdd","onSuccess","query","values","addLineItem","onMutate","onError","_","__","rollback","params","product","find","p","variant","sku","quantity","offer","price","originalPrice","useAddCustom","addCustomLineItem","fields","customLineItems","useRemove","lineItemId","type","Regular","deleteLineItem","useRemoveCustom","deleteCustomLineItem","useSetQuantity","setLineItemQuantity","dto","useSetPlatformShippingMethod","setPlatformShippingMethod","useUnsetShippingMethod","unsetShippingMethods","useSync","sync","useSetMerchantsShippingMethod","setMerchantsShippingMethods","useSetShippingAddress","setShippingAddress","useSetBillingAddress","setBillingAddress","useAddDiscountCode","setDiscountCode","code","currentCode","discountCodes","c","discountCode","resource","status","codeData","name","promoCodeQueryKey","useRemoveDiscountCode","deleteDiscountCode","undefined","getInstance"],"mappings":"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","sourcesContent":["/* eslint-disable react-hooks/rules-of-hooks */\nimport {\n MyCartAPI,\n ShippingMethodsInfo,\n PaymentMethodsInfo,\n PlatformMethodUpdateDTO,\n OrderDTO,\n MerchantsMethodsUpdateDTO,\n AddressDTO,\n DiscountCodeUpdateDTO,\n LineItemDraftDTO,\n QuantityUpdateDTO,\n DiscountCodeInfoDTO,\n CustomLineItemDraftDTO,\n MyOrdersAPI,\n TaxedPriceDTO,\n CompactBasketDTO,\n} from '@sentecacommerce/sdk'\nimport {\n useQuery,\n QueryResult,\n useQueryCache,\n useMutation,\n MutationResultPair,\n QueryCache,\n} from 'react-query'\nimport { addToCart } from '../../analytics/addToCart'\n\nimport {\n readFromLocalStorage,\n writeToLocalStorage,\n getTranslatableField,\n} from '../../utils'\nimport { getSDKConfig } from '../getSDKConfig'\nimport { syncResponse, getLineItemId, onMutate } from './utils'\n\nimport { queryKey as promoCodeQueryKey } from '../../api.v2/core/misc/promo-code'\n\nexport const BASKET_STORAGE_KEY = '__BASKET__'\n\nexport const myCartCacheKeys = {\n useGet: 'mycart-api-useget',\n useGetCompact: 'mycart-api-use-get-compact',\n useGetShippingMethods: 'mycart-api-use-get-shippingmethods',\n useGetAllShippingMethods: 'mycart-api-use-get-all-shippingmethods',\n useGetPaymentMethods: 'mycart-api-use-get-paymentmethods',\n useIsExisting: 'mycart-api-is-existing',\n}\n\ntype myCartApiType = {\n readonly useGetWithCookies: (\n queryCache: QueryCache,\n cookies: any\n ) => Promise<OrderDTO>\n readonly usePrefetchCart: (\n queryCache: QueryCache\n ) => Promise<OrderDTO | { error: any }>\n readonly useGet: () => QueryResult<OrderDTO, unknown>\n readonly useGetCompact: () => QueryResult<CompactBasket, unknown>\n readonly useIsExisting: (\n productId: string,\n variantId?: string,\n collapseKey?: string\n ) => QueryResult<boolean, unknown>\n readonly useGetShippingMethods: () => QueryResult<\n ShippingMethodsInfo,\n unknown\n >\n readonly useGetAllShippingMethods: () => QueryResult<\n ShippingMethodsInfo,\n unknown\n >\n readonly useGetPaymentMethods: (data?: {\n enabled?: boolean\n }) => QueryResult<PaymentMethodsInfo, unknown>\n readonly useAdd: (\n onSuccess?: () => void,\n query?: {\n storeKey?: string | undefined\n currencyCode?: string | undefined\n languageCode?: string | undefined\n priceListKey?: string | undefined\n time?: number | undefined\n merchantKey?: string | undefined\n expand?: string | undefined\n project?: string | undefined\n }\n ) => MutationResultPair<OrderDTO, unknown, LineItemDraftDTO, unknown>\n readonly useAddCustom: (\n onSuccess?: () => void\n ) => MutationResultPair<OrderDTO, unknown, CustomLineItemDraftDTO, unknown>\n readonly useRemove: (\n onSuccess?: () => void\n ) => MutationResultPair<\n OrderDTO,\n unknown,\n { productId: string; variantId?: string; collapseKey?: string },\n unknown\n >\n readonly useRemoveCustom: (\n onSuccess?: () => void\n ) => MutationResultPair<\n OrderDTO,\n unknown,\n { lineItemId: string; productId: string; variantId: string },\n unknown\n >\n readonly useSetQuantity: (\n onSuccess?: () => void\n ) => MutationResultPair<\n OrderDTO,\n unknown,\n {\n productId: string\n variantId?: string\n dto: QuantityUpdateDTO\n collapseKey?: string\n },\n unknown\n >\n readonly useSync: (\n onSuccess?: (order: OrderDTO) => void\n ) => MutationResultPair<\n OrderDTO,\n unknown,\n {\n query?: {\n storeKey?: string\n currencyCode?: string\n languageCode?: string\n priceListKey?: string\n time?: number\n merchantKey?: string\n expand?: string\n project?: string\n }\n },\n unknown\n >\n readonly useSetPlatformShippingMethod: (\n onSuccess?: () => void\n ) => MutationResultPair<OrderDTO, unknown, PlatformMethodUpdateDTO, unknown>\n readonly useUnsetShippingMethod: (\n onSuccess?: () => void\n ) => MutationResultPair<OrderDTO, unknown, unknown, unknown>\n readonly useSetMerchantsShippingMethod: (\n onSuccess?: () => void\n ) => MutationResultPair<OrderDTO, unknown, MerchantsMethodsUpdateDTO, unknown>\n readonly useSetShippingAddress: (\n onSuccess?: () => void\n ) => MutationResultPair<OrderDTO, unknown, AddressDTO, unknown>\n readonly useSetBillingAddress: (\n onSuccess?: () => void\n ) => MutationResultPair<OrderDTO, unknown, AddressDTO, unknown>\n readonly useAddDiscountCode: (\n onSuccess?: () => void,\n onError?: (code: DiscountCodeInfoDTO) => void\n ) => MutationResultPair<OrderDTO, unknown, DiscountCodeUpdateDTO, unknown>\n readonly useRemoveDiscountCode: (\n onSuccess?: () => void\n ) => MutationResultPair<OrderDTO, unknown, DiscountCodeUpdateDTO, unknown>\n}\n\nexport type CompactBasket = CompactBasketDTO & {\n totalNet: {\n amount: number\n currency: string\n }\n totalGross: {\n amount: number\n currency: string\n }\n lineItems: {\n [productId: string]: {\n // Could be collapse key or variant id\n [identifier: string]: {\n quantity?: number\n lineItemId?: string\n }\n }\n }\n customLineItems: {\n [productId: string]: {\n [identifier: string]: number\n }\n }\n}\n\nenum LineItemType {\n Regular = 'lineItems',\n Custom = 'customLineItems',\n}\n\nexport const MyCartApiFactory = (function () {\n let instance: myCartApiType\n\n function initialise(): Readonly<myCartApiType> {\n const myCartApi = new MyCartAPI(getSDKConfig())\n const myOrdersApi = new MyOrdersAPI(getSDKConfig())\n\n return Object.freeze({\n myCartCacheKeys,\n useGetWithCookies: async (queryCache, cookies) => {\n const data = await new MyCartAPI(getSDKConfig({ cookies })).get()\n queryCache.setQueryData(myCartCacheKeys.useGet, data)\n return data\n },\n usePrefetchCart: async (queryCache) => {\n const data = await myCartApi.get().catch((e) => ({ error: e }))\n if (!(data as any).error) {\n queryCache.setQueryData(myCartCacheKeys.useGet, data)\n }\n return data\n },\n useGet: () => {\n const queryCache = useQueryCache()\n return useQuery(\n myCartCacheKeys.useGet,\n async () => {\n const data = await myCartApi.get()\n\n writeToLocalStorage(BASKET_STORAGE_KEY, data.compact)\n queryCache.setQueryData(myCartCacheKeys.useGetCompact, data.compact)\n return data\n },\n {\n retry: false,\n refetchOnMount: false,\n refetchOnWindowFocus: false,\n }\n )\n },\n useGetCompact: () => {\n return useQuery(myCartCacheKeys.useGetCompact, async () => {\n const compactBasket: CompactBasket = readFromLocalStorage(\n BASKET_STORAGE_KEY\n )\n\n return compactBasket\n })\n },\n useIsExisting: (\n productId: string,\n variantId?: string,\n collapseKey?: string\n ) => {\n return useQuery(\n [myCartCacheKeys.useIsExisting, productId, variantId],\n () => {\n const parsedData = readFromLocalStorage(BASKET_STORAGE_KEY)\n const identifier = (collapseKey ?? variantId) as string\n return !!parsedData?.lineItems?.[productId]?.[identifier]\n }\n )\n },\n useGetShippingMethods: () => {\n return useQuery(\n myCartCacheKeys.useGetShippingMethods,\n async () => myCartApi.getMyShippingMethods(),\n {\n retry: false,\n refetchOnMount: false,\n refetchOnWindowFocus: false,\n }\n )\n },\n useGetAllShippingMethods: () => {\n return useQuery(\n myCartCacheKeys.useGetAllShippingMethods,\n async () => myOrdersApi.getAvailableShippingMethods(),\n {\n retry: false,\n refetchOnMount: false,\n refetchOnWindowFocus: false,\n }\n )\n },\n useGetPaymentMethods: (data = {}) => {\n const { enabled } = data\n return useQuery(\n myCartCacheKeys.useGetPaymentMethods,\n async () => myCartApi.getPaymentMethods(),\n {\n retry: false,\n refetchOnMount: false,\n refetchOnWindowFocus: false,\n enabled,\n }\n )\n },\n useAdd: (onSuccess, query = {}) => {\n const queryCache = useQueryCache()\n\n return useMutation(async (values) => myCartApi.addLineItem(values), {\n onMutate: () => onMutate(queryCache),\n onError: (_, __, rollback) => rollback(),\n onSuccess: (data, params) => {\n // Analytics\n const product = data.lineItems.find(\n (p) => p.productId === params.productId\n )\n product &&\n addToCart(\n product.variant.sku,\n params.quantity,\n product.offer.price || product.offer.originalPrice\n )\n\n queryCache.setQueryData(\n [\n myCartCacheKeys.useIsExisting,\n params.productId,\n params.variantId,\n ],\n true\n )\n\n syncResponse(queryCache, data)\n onSuccess?.()\n },\n })\n },\n useAddCustom: (onSuccess) => {\n const queryCache = useQueryCache()\n\n return useMutation(\n async (values) => myCartApi.addCustomLineItem(values),\n {\n onMutate: () => onMutate(queryCache),\n onError: (_, __, rollback) => rollback(),\n onSuccess: (data, params) => {\n const compactBasket = data.compact as CompactBasket\n const productId = params.fields.productId as string\n const variantId = params.fields.variantId as string\n\n queryCache.setQueryData(\n [myCartCacheKeys.useIsExisting, productId, variantId],\n compactBasket.customLineItems[productId][variantId]\n )\n syncResponse(queryCache, data)\n onSuccess?.()\n },\n }\n )\n },\n useRemove: (onSuccess) => {\n const queryCache = useQueryCache()\n\n return useMutation(\n async (values) => {\n const lineItemId = getLineItemId({\n collapseKey: values?.collapseKey,\n productId: values?.productId,\n variantId: values?.variantId,\n type: LineItemType.Regular,\n })\n return myCartApi.deleteLineItem(lineItemId)\n },\n {\n onMutate: () => onMutate(queryCache),\n onError: (_, __, rollback) => rollback(),\n onSuccess: (data, params) => {\n syncResponse(queryCache, data)\n queryCache.setQueryData(\n [\n myCartCacheKeys.useIsExisting,\n params.productId,\n params.variantId,\n ],\n false\n )\n onSuccess?.()\n },\n }\n )\n },\n useRemoveCustom: (onSuccess) => {\n const queryCache = useQueryCache()\n\n return useMutation(\n async (values) => myCartApi.deleteCustomLineItem(values.lineItemId),\n {\n onMutate: () => onMutate(queryCache),\n onError: (_, __, rollback) => rollback(),\n onSuccess: (data, params) => {\n syncResponse(queryCache, data)\n queryCache.setQueryData(\n [\n myCartCacheKeys.useIsExisting,\n params.productId,\n params.variantId,\n ],\n 0\n )\n onSuccess?.()\n },\n }\n )\n },\n useSetQuantity: (onSuccess) => {\n const queryCache = useQueryCache()\n return useMutation(\n async (values) => {\n const lineItemId = getLineItemId({\n collapseKey: values?.collapseKey,\n productId: values?.productId,\n variantId: values?.variantId,\n type: LineItemType.Regular,\n })\n return myCartApi.setLineItemQuantity(lineItemId, values.dto)\n },\n {\n onMutate: () => onMutate(queryCache),\n onError: (_, __, rollback) => rollback(),\n onSuccess: (data) => {\n syncResponse(queryCache, data)\n onSuccess?.()\n },\n }\n )\n },\n useSetPlatformShippingMethod: (onSuccess) => {\n const queryCache = useQueryCache()\n return useMutation(\n (values) => myCartApi.setPlatformShippingMethod(values),\n {\n onMutate: () => onMutate(queryCache),\n onSuccess: (data) => {\n syncResponse(queryCache, data)\n onSuccess?.()\n },\n }\n )\n },\n useUnsetShippingMethod: (onSuccess) => {\n const queryCache = useQueryCache()\n return useMutation(() => myCartApi.unsetShippingMethods(), {\n onMutate: () => onMutate(queryCache),\n onSuccess: (data) => {\n syncResponse(queryCache, data)\n onSuccess?.()\n },\n })\n },\n useSync: (onSuccess) => {\n const queryCache = useQueryCache()\n return useMutation((values) => myCartApi.sync(values?.query), {\n onMutate: () => onMutate(queryCache),\n onSuccess: (data) => {\n syncResponse(queryCache, data)\n onSuccess?.(data)\n },\n })\n },\n useSetMerchantsShippingMethod: (onSuccess) => {\n const queryCache = useQueryCache()\n return useMutation(\n (values) => myCartApi.setMerchantsShippingMethods(values),\n {\n onMutate: () => onMutate(queryCache),\n onSuccess: (data) => {\n syncResponse(queryCache, data)\n onSuccess?.()\n },\n }\n )\n },\n useSetShippingAddress: (onSuccess) => {\n const queryCache = useQueryCache()\n return useMutation((values) => myCartApi.setShippingAddress(values), {\n onMutate: () => onMutate(queryCache),\n onSuccess: (data) => {\n syncResponse(queryCache, data)\n onSuccess?.()\n },\n })\n },\n useSetBillingAddress: (onSuccess) => {\n const queryCache = useQueryCache()\n return useMutation((values) => myCartApi.setBillingAddress(values), {\n onMutate: () => onMutate(queryCache),\n onSuccess: (data) => {\n syncResponse(queryCache, data)\n onSuccess?.()\n },\n })\n },\n useAddDiscountCode: (onSuccess, onError) => {\n const queryCache = useQueryCache()\n return useMutation((values) => myCartApi.setDiscountCode(values), {\n onSuccess: (data, code) => {\n queryCache.setQueryData(myCartCacheKeys.useGet, data)\n const currentCode = data.discountCodes.find(\n (c) => c.discountCode.resource?.code === code.code\n )\n\n // currentCode?.discountCode.resource\n // Not optional chained because TS doesn't recognize it can't be undefined\n if (currentCode && currentCode.status !== 'MatchesCart') {\n onError?.(currentCode)\n } else {\n const codeData = {\n code: code.code,\n name: getTranslatableField(\n currentCode?.discountCode.resource.name\n ),\n }\n writeToLocalStorage(promoCodeQueryKey, codeData)\n queryCache.setQueryData(promoCodeQueryKey, codeData)\n onSuccess?.()\n }\n },\n })\n },\n useRemoveDiscountCode: (onSuccess) => {\n const queryCache = useQueryCache()\n return useMutation((values) => myCartApi.deleteDiscountCode(values), {\n onMutate: () => onMutate(queryCache),\n onSuccess: (data) => {\n syncResponse(queryCache, data)\n writeToLocalStorage(promoCodeQueryKey, undefined)\n queryCache.setQueryData(promoCodeQueryKey, undefined)\n onSuccess?.()\n },\n })\n },\n })\n }\n\n return {\n getInstance: function () {\n if (!instance) {\n instance = initialise()\n }\n\n return instance\n },\n }\n})()\n\nexport const myCartApi = MyCartApiFactory.getInstance()\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../../../src/api/myCartApi/index.ts"],"names":["BASKET_STORAGE_KEY","myCartCacheKeys","useGet","useGetCompact","useGetShippingMethods","useGetAllShippingMethods","useGetPaymentMethods","useIsExisting","useGetCrossSaleItems","LineItemType","MyCartApiFactory","instance","initialise","myCartApi","MyCartAPI","myOrdersApi","MyOrdersAPI","Object","freeze","useGetWithCookies","queryCache","cookies","get","data","setQueryData","usePrefetchCart","e","error","compact","retry","refetchOnMount","refetchOnWindowFocus","compactBasket","productId","variantId","collapseKey","parsedData","identifier","lineItems","getMyShippingMethods","getAvailableShippingMethods","enabled","getPaymentMethods","useAdd","onSuccess","query","values","addLineItem","onMutate","onError","_","__","rollback","params","product","find","p","variant","sku","quantity","offer","price","originalPrice","useAddCustom","addCustomLineItem","fields","customLineItems","useRemove","lineItemId","type","Regular","deleteLineItem","useRemoveCustom","deleteCustomLineItem","useSetQuantity","setLineItemQuantity","dto","useSetPlatformShippingMethod","setPlatformShippingMethod","useUnsetShippingMethod","unsetShippingMethods","useSync","sync","useSetMerchantsShippingMethod","setMerchantsShippingMethods","useSetShippingAddress","setShippingAddress","useSetBillingAddress","setBillingAddress","useAddDiscountCode","setDiscountCode","code","currentCode","discountCodes","c","discountCode","resource","status","codeData","name","promoCodeQueryKey","useRemoveDiscountCode","deleteDiscountCode","undefined","getInstance"],"mappings":"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","sourcesContent":["/* eslint-disable react-hooks/rules-of-hooks */\nimport {\n MyCartAPI,\n ShippingMethodsInfo,\n PaymentMethodsInfo,\n PlatformMethodUpdateDTO,\n OrderDTO,\n MerchantsMethodsUpdateDTO,\n AddressDTO,\n DiscountCodeUpdateDTO,\n LineItemDraftDTO,\n QuantityUpdateDTO,\n DiscountCodeInfoDTO,\n CustomLineItemDraftDTO,\n MyOrdersAPI,\n TaxedPriceDTO,\n CompactBasketDTO,\n} from '@sentecacommerce/sdk'\nimport {\n useQuery,\n QueryResult,\n useQueryCache,\n useMutation,\n MutationResultPair,\n QueryCache,\n} from 'react-query'\nimport { addToCart } from '../../analytics/addToCart'\n\nimport {\n readFromLocalStorage,\n writeToLocalStorage,\n getTranslatableField,\n} from '../../utils'\nimport { getSDKConfig } from '../getSDKConfig'\nimport { syncResponse, getLineItemId, onMutate } from './utils'\n\nimport { queryKey as promoCodeQueryKey } from '../../api.v2/core/misc/promo-code'\n\nexport const BASKET_STORAGE_KEY = '__BASKET__'\n\nexport const myCartCacheKeys = {\n useGet: 'mycart-api-useget',\n useGetCompact: 'mycart-api-use-get-compact',\n useGetShippingMethods: 'mycart-api-use-get-shippingmethods',\n useGetAllShippingMethods: 'mycart-api-use-get-all-shippingmethods',\n useGetPaymentMethods: 'mycart-api-use-get-paymentmethods',\n useIsExisting: 'mycart-api-is-existing',\n useGetCrossSaleItems: 'mycart-api-use-get-cross-sale-products',\n}\n\ntype myCartApiType = {\n readonly useGetWithCookies: (\n queryCache: QueryCache,\n cookies: any\n ) => Promise<OrderDTO>\n readonly usePrefetchCart: (\n queryCache: QueryCache\n ) => Promise<OrderDTO | { error: any }>\n readonly useGet: () => QueryResult<OrderDTO, unknown>\n readonly useGetCompact: () => QueryResult<CompactBasket, unknown>\n readonly useIsExisting: (\n productId: string,\n variantId?: string,\n collapseKey?: string\n ) => QueryResult<boolean, unknown>\n readonly useGetShippingMethods: () => QueryResult<\n ShippingMethodsInfo,\n unknown\n >\n readonly useGetAllShippingMethods: () => QueryResult<\n ShippingMethodsInfo,\n unknown\n >\n readonly useGetPaymentMethods: (data?: {\n enabled?: boolean\n }) => QueryResult<PaymentMethodsInfo, unknown>\n readonly useAdd: (\n onSuccess?: () => void,\n query?: {\n storeKey?: string | undefined\n currencyCode?: string | undefined\n languageCode?: string | undefined\n priceListKey?: string | undefined\n time?: number | undefined\n merchantKey?: string | undefined\n expand?: string | undefined\n project?: string | undefined\n }\n ) => MutationResultPair<OrderDTO, unknown, LineItemDraftDTO, unknown>\n readonly useAddCustom: (\n onSuccess?: () => void\n ) => MutationResultPair<OrderDTO, unknown, CustomLineItemDraftDTO, unknown>\n readonly useRemove: (\n onSuccess?: () => void\n ) => MutationResultPair<\n OrderDTO,\n unknown,\n { productId: string; variantId?: string; collapseKey?: string },\n unknown\n >\n readonly useRemoveCustom: (\n onSuccess?: () => void\n ) => MutationResultPair<\n OrderDTO,\n unknown,\n { lineItemId: string; productId: string; variantId: string },\n unknown\n >\n readonly useSetQuantity: (\n onSuccess?: () => void\n ) => MutationResultPair<\n OrderDTO,\n unknown,\n {\n productId: string\n variantId?: string\n dto: QuantityUpdateDTO\n collapseKey?: string\n },\n unknown\n >\n readonly useSync: (\n onSuccess?: (order: OrderDTO) => void\n ) => MutationResultPair<\n OrderDTO,\n unknown,\n {\n query?: {\n storeKey?: string\n currencyCode?: string\n languageCode?: string\n priceListKey?: string\n time?: number\n merchantKey?: string\n expand?: string\n project?: string\n }\n },\n unknown\n >\n readonly useSetPlatformShippingMethod: (\n onSuccess?: () => void\n ) => MutationResultPair<OrderDTO, unknown, PlatformMethodUpdateDTO, unknown>\n readonly useUnsetShippingMethod: (\n onSuccess?: () => void\n ) => MutationResultPair<OrderDTO, unknown, unknown, unknown>\n readonly useSetMerchantsShippingMethod: (\n onSuccess?: () => void\n ) => MutationResultPair<OrderDTO, unknown, MerchantsMethodsUpdateDTO, unknown>\n readonly useSetShippingAddress: (\n onSuccess?: () => void\n ) => MutationResultPair<OrderDTO, unknown, AddressDTO, unknown>\n readonly useSetBillingAddress: (\n onSuccess?: () => void\n ) => MutationResultPair<OrderDTO, unknown, AddressDTO, unknown>\n readonly useAddDiscountCode: (\n onSuccess?: () => void,\n onError?: (code: DiscountCodeInfoDTO) => void\n ) => MutationResultPair<OrderDTO, unknown, DiscountCodeUpdateDTO, unknown>\n readonly useRemoveDiscountCode: (\n onSuccess?: () => void\n ) => MutationResultPair<OrderDTO, unknown, DiscountCodeUpdateDTO, unknown>\n}\n\nexport type CompactBasket = CompactBasketDTO & {\n totalNet: {\n amount: number\n currency: string\n }\n totalGross: {\n amount: number\n currency: string\n }\n lineItems: {\n [productId: string]: {\n // Could be collapse key or variant id\n [identifier: string]: {\n quantity?: number\n lineItemId?: string\n }\n }\n }\n customLineItems: {\n [productId: string]: {\n [identifier: string]: number\n }\n }\n}\n\nenum LineItemType {\n Regular = 'lineItems',\n Custom = 'customLineItems',\n}\n\nexport const MyCartApiFactory = (function () {\n let instance: myCartApiType\n\n function initialise(): Readonly<myCartApiType> {\n const myCartApi = new MyCartAPI(getSDKConfig())\n const myOrdersApi = new MyOrdersAPI(getSDKConfig())\n\n return Object.freeze({\n myCartCacheKeys,\n useGetWithCookies: async (queryCache, cookies) => {\n const data = await new MyCartAPI(getSDKConfig({ cookies })).get()\n queryCache.setQueryData(myCartCacheKeys.useGet, data)\n return data\n },\n usePrefetchCart: async (queryCache) => {\n const data = await myCartApi.get().catch((e) => ({ error: e }))\n if (!(data as any).error) {\n queryCache.setQueryData(myCartCacheKeys.useGet, data)\n }\n return data\n },\n useGet: () => {\n const queryCache = useQueryCache()\n return useQuery(\n myCartCacheKeys.useGet,\n async () => {\n const data = await myCartApi.get()\n\n writeToLocalStorage(BASKET_STORAGE_KEY, data.compact)\n queryCache.setQueryData(myCartCacheKeys.useGetCompact, data.compact)\n return data\n },\n {\n retry: false,\n refetchOnMount: false,\n refetchOnWindowFocus: false,\n }\n )\n },\n useGetCompact: () => {\n return useQuery(myCartCacheKeys.useGetCompact, async () => {\n const compactBasket: CompactBasket = readFromLocalStorage(\n BASKET_STORAGE_KEY\n )\n\n return compactBasket\n })\n },\n useIsExisting: (\n productId: string,\n variantId?: string,\n collapseKey?: string\n ) => {\n return useQuery(\n [myCartCacheKeys.useIsExisting, productId, variantId],\n () => {\n const parsedData = readFromLocalStorage(BASKET_STORAGE_KEY)\n const identifier = (collapseKey ?? variantId) as string\n return !!parsedData?.lineItems?.[productId]?.[identifier]\n }\n )\n },\n useGetShippingMethods: () => {\n return useQuery(\n myCartCacheKeys.useGetShippingMethods,\n async () => myCartApi.getMyShippingMethods(),\n {\n retry: false,\n refetchOnMount: false,\n refetchOnWindowFocus: false,\n }\n )\n },\n useGetAllShippingMethods: () => {\n return useQuery(\n myCartCacheKeys.useGetAllShippingMethods,\n async () => myOrdersApi.getAvailableShippingMethods(),\n {\n retry: false,\n refetchOnMount: false,\n refetchOnWindowFocus: false,\n }\n )\n },\n useGetPaymentMethods: (data = {}) => {\n const { enabled } = data\n return useQuery(\n myCartCacheKeys.useGetPaymentMethods,\n async () => myCartApi.getPaymentMethods(),\n {\n retry: false,\n refetchOnMount: false,\n refetchOnWindowFocus: false,\n enabled,\n }\n )\n },\n useAdd: (onSuccess, query = {}) => {\n const queryCache = useQueryCache()\n\n return useMutation(async (values) => myCartApi.addLineItem(values), {\n onMutate: () => onMutate(queryCache),\n onError: (_, __, rollback) => rollback(),\n onSuccess: (data, params) => {\n // Analytics\n const product = data.lineItems.find(\n (p) => p.productId === params.productId\n )\n product &&\n addToCart(\n product.variant.sku,\n params.quantity,\n product.offer.price || product.offer.originalPrice\n )\n\n queryCache.setQueryData(\n [\n myCartCacheKeys.useIsExisting,\n params.productId,\n params.variantId,\n ],\n true\n )\n\n syncResponse(queryCache, data)\n onSuccess?.()\n },\n })\n },\n useAddCustom: (onSuccess) => {\n const queryCache = useQueryCache()\n\n return useMutation(\n async (values) => myCartApi.addCustomLineItem(values),\n {\n onMutate: () => onMutate(queryCache),\n onError: (_, __, rollback) => rollback(),\n onSuccess: (data, params) => {\n const compactBasket = data.compact as CompactBasket\n const productId = params.fields.productId as string\n const variantId = params.fields.variantId as string\n\n queryCache.setQueryData(\n [myCartCacheKeys.useIsExisting, productId, variantId],\n compactBasket.customLineItems[productId][variantId]\n )\n syncResponse(queryCache, data)\n onSuccess?.()\n },\n }\n )\n },\n useRemove: (onSuccess) => {\n const queryCache = useQueryCache()\n\n return useMutation(\n async (values) => {\n const lineItemId = getLineItemId({\n collapseKey: values?.collapseKey,\n productId: values?.productId,\n variantId: values?.variantId,\n type: LineItemType.Regular,\n })\n return myCartApi.deleteLineItem(lineItemId)\n },\n {\n onMutate: () => onMutate(queryCache),\n onError: (_, __, rollback) => rollback(),\n onSuccess: (data, params) => {\n syncResponse(queryCache, data)\n queryCache.setQueryData(\n [\n myCartCacheKeys.useIsExisting,\n params.productId,\n params.variantId,\n ],\n false\n )\n onSuccess?.()\n },\n }\n )\n },\n useRemoveCustom: (onSuccess) => {\n const queryCache = useQueryCache()\n\n return useMutation(\n async (values) => myCartApi.deleteCustomLineItem(values.lineItemId),\n {\n onMutate: () => onMutate(queryCache),\n onError: (_, __, rollback) => rollback(),\n onSuccess: (data, params) => {\n syncResponse(queryCache, data)\n queryCache.setQueryData(\n [\n myCartCacheKeys.useIsExisting,\n params.productId,\n params.variantId,\n ],\n 0\n )\n onSuccess?.()\n },\n }\n )\n },\n useSetQuantity: (onSuccess) => {\n const queryCache = useQueryCache()\n return useMutation(\n async (values) => {\n const lineItemId = getLineItemId({\n collapseKey: values?.collapseKey,\n productId: values?.productId,\n variantId: values?.variantId,\n type: LineItemType.Regular,\n })\n return myCartApi.setLineItemQuantity(lineItemId, values.dto)\n },\n {\n onMutate: () => onMutate(queryCache),\n onError: (_, __, rollback) => rollback(),\n onSuccess: (data) => {\n syncResponse(queryCache, data)\n onSuccess?.()\n },\n }\n )\n },\n useSetPlatformShippingMethod: (onSuccess) => {\n const queryCache = useQueryCache()\n return useMutation(\n (values) => myCartApi.setPlatformShippingMethod(values),\n {\n onMutate: () => onMutate(queryCache),\n onSuccess: (data) => {\n syncResponse(queryCache, data)\n onSuccess?.()\n },\n }\n )\n },\n useUnsetShippingMethod: (onSuccess) => {\n const queryCache = useQueryCache()\n return useMutation(() => myCartApi.unsetShippingMethods(), {\n onMutate: () => onMutate(queryCache),\n onSuccess: (data) => {\n syncResponse(queryCache, data)\n onSuccess?.()\n },\n })\n },\n useSync: (onSuccess) => {\n const queryCache = useQueryCache()\n return useMutation((values) => myCartApi.sync(values?.query), {\n onMutate: () => onMutate(queryCache),\n onSuccess: (data) => {\n syncResponse(queryCache, data)\n onSuccess?.(data)\n },\n })\n },\n useSetMerchantsShippingMethod: (onSuccess) => {\n const queryCache = useQueryCache()\n return useMutation(\n (values) => myCartApi.setMerchantsShippingMethods(values),\n {\n onMutate: () => onMutate(queryCache),\n onSuccess: (data) => {\n syncResponse(queryCache, data)\n onSuccess?.()\n },\n }\n )\n },\n useSetShippingAddress: (onSuccess) => {\n const queryCache = useQueryCache()\n return useMutation((values) => myCartApi.setShippingAddress(values), {\n onMutate: () => onMutate(queryCache),\n onSuccess: (data) => {\n syncResponse(queryCache, data)\n onSuccess?.()\n },\n })\n },\n useSetBillingAddress: (onSuccess) => {\n const queryCache = useQueryCache()\n return useMutation((values) => myCartApi.setBillingAddress(values), {\n onMutate: () => onMutate(queryCache),\n onSuccess: (data) => {\n syncResponse(queryCache, data)\n onSuccess?.()\n },\n })\n },\n useAddDiscountCode: (onSuccess, onError) => {\n const queryCache = useQueryCache()\n return useMutation((values) => myCartApi.setDiscountCode(values), {\n onSuccess: (data, code) => {\n queryCache.setQueryData(myCartCacheKeys.useGet, data)\n const currentCode = data.discountCodes.find(\n (c) => c.discountCode.resource?.code === code.code\n )\n\n // currentCode?.discountCode.resource\n // Not optional chained because TS doesn't recognize it can't be undefined\n if (currentCode && currentCode.status !== 'MatchesCart') {\n onError?.(currentCode)\n } else {\n const codeData = {\n code: code.code,\n name: getTranslatableField(\n currentCode?.discountCode.resource.name\n ),\n }\n writeToLocalStorage(promoCodeQueryKey, codeData)\n queryCache.setQueryData(promoCodeQueryKey, codeData)\n onSuccess?.()\n }\n },\n })\n },\n useRemoveDiscountCode: (onSuccess) => {\n const queryCache = useQueryCache()\n return useMutation((values) => myCartApi.deleteDiscountCode(values), {\n onMutate: () => onMutate(queryCache),\n onSuccess: (data) => {\n syncResponse(queryCache, data)\n writeToLocalStorage(promoCodeQueryKey, undefined)\n queryCache.setQueryData(promoCodeQueryKey, undefined)\n onSuccess?.()\n },\n })\n },\n })\n }\n\n return {\n getInstance: function () {\n if (!instance) {\n instance = initialise()\n }\n\n return instance\n },\n }\n})()\n\nexport const myCartApi = MyCartApiFactory.getInstance()\n"],"file":"index.js"}
@@ -9,4 +9,12 @@ Object.keys(_useReplaceBasket).forEach(function (key) {
9
9
  if (key in exports && exports[key] === _useReplaceBasket[key]) return;
10
10
  exports[key] = _useReplaceBasket[key];
11
11
  });
12
+
13
+ var _useBasketCrossSaleItems = require("./useBasketCrossSaleItems");
14
+
15
+ Object.keys(_useBasketCrossSaleItems).forEach(function (key) {
16
+ if (key === "default" || key === "__esModule") return;
17
+ if (key in exports && exports[key] === _useBasketCrossSaleItems[key]) return;
18
+ exports[key] = _useBasketCrossSaleItems[key];
19
+ });
12
20
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/basket/hooks/index.ts"],"names":[],"mappings":";;;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA","sourcesContent":["export * from './useReplaceBasket'\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../../../src/basket/hooks/index.ts"],"names":[],"mappings":";;;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA","sourcesContent":["export * from './useReplaceBasket'\nexport * from './useBasketCrossSaleItems'\n"],"file":"index.js"}
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ exports.__esModule = true;
6
+ exports.useBasketCrossSaleItems = void 0;
7
+
8
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
+
10
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
11
+
12
+ var _react = require("react");
13
+
14
+ var _reactQuery = require("react-query");
15
+
16
+ var _sdk = require("@sentecacommerce/sdk");
17
+
18
+ var _index = require("../../index");
19
+
20
+ var useBasketCrossSaleItems = function useBasketCrossSaleItems() {
21
+ var crossSaleProducts = (0, _reactQuery.useQuery)(_index.myCartCacheKeys.useGetCrossSaleItems, /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
22
+ return _regenerator["default"].wrap(function _callee$(_context) {
23
+ while (1) {
24
+ switch (_context.prev = _context.next) {
25
+ case 0:
26
+ _context.next = 2;
27
+ return (0, _sdk.MyCartGetCrossSaleProducts)();
28
+
29
+ case 2:
30
+ return _context.abrupt("return", _context.sent);
31
+
32
+ case 3:
33
+ case "end":
34
+ return _context.stop();
35
+ }
36
+ }
37
+ }, _callee);
38
+ })));
39
+ return (0, _react.useMemo)(function () {
40
+ var _crossSaleProducts$da;
41
+
42
+ return crossSaleProducts == null ? void 0 : (_crossSaleProducts$da = crossSaleProducts.data) == null ? void 0 : _crossSaleProducts$da.map(function (product) {
43
+ return {
44
+ name: (0, _index.getTranslatableField)(product.name),
45
+ description: (0, _index.getTranslatableField)(product.description),
46
+ slug: (0, _index.getTranslatableField)(product.slug),
47
+ attributeRules: product.attributeRules,
48
+ attributes: product.attributes,
49
+ _id: product._id,
50
+ variants: product.variants
51
+ };
52
+ });
53
+ }, [crossSaleProducts == null ? void 0 : crossSaleProducts.data]);
54
+ };
55
+
56
+ exports.useBasketCrossSaleItems = useBasketCrossSaleItems;
57
+ //# sourceMappingURL=useBasketCrossSaleItems.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/basket/hooks/useBasketCrossSaleItems.ts"],"names":["useBasketCrossSaleItems","crossSaleProducts","myCartCacheKeys","useGetCrossSaleItems","data","map","product","name","description","slug","attributeRules","attributes","_id","variants"],"mappings":";;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AAGO,IAAMA,uBAAuB,GAAG,SAA1BA,uBAA0B,GAAM;AAC3C,MAAMC,iBAAiB,GAAG,0BACxBC,uBAAgBC,oBADQ,6FAExB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAkB,sCAAlB;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAFwB,GAA1B;AAKA,SAAO,oBACL;AAAA;;AAAA,WACEF,iBADF,6CACEA,iBAAiB,CAAEG,IADrB,qBACE,sBAAyBC,GAAzB,CAA6B,UAACC,OAAD;AAAA,aAAc;AACzCC,QAAAA,IAAI,EAAE,iCAAqBD,OAAO,CAACC,IAA7B,CADmC;AAEzCC,QAAAA,WAAW,EAAE,iCAAqBF,OAAO,CAACE,WAA7B,CAF4B;AAGzCC,QAAAA,IAAI,EAAE,iCAAqBH,OAAO,CAACG,IAA7B,CAHmC;AAIzCC,QAAAA,cAAc,EAAEJ,OAAO,CAACI,cAJiB;AAKzCC,QAAAA,UAAU,EAAEL,OAAO,CAACK,UALqB;AAMzCC,QAAAA,GAAG,EAAEN,OAAO,CAACM,GAN4B;AAOzCC,QAAAA,QAAQ,EAAEP,OAAO,CAACO;AAPuB,OAAd;AAAA,KAA7B,CADF;AAAA,GADK,EAWL,CAACZ,iBAAD,oBAACA,iBAAiB,CAAEG,IAApB,CAXK,CAAP;AAaD,CAnBM","sourcesContent":["import React, { useMemo } from 'react'\nimport { useQuery } from 'react-query'\nimport { MyCartGetCrossSaleProducts } from '@sentecacommerce/sdk'\nimport { getTranslatableField } from '../../index'\nimport { myCartCacheKeys } from '../../index'\n\nexport const useBasketCrossSaleItems = () => {\n const crossSaleProducts = useQuery(\n myCartCacheKeys.useGetCrossSaleItems,\n async () => await MyCartGetCrossSaleProducts()\n )\n\n return useMemo(\n () =>\n crossSaleProducts?.data?.map((product) => ({\n name: getTranslatableField(product.name),\n description: getTranslatableField(product.description),\n slug: getTranslatableField(product.slug),\n attributeRules: product.attributeRules,\n attributes: product.attributes,\n _id: product._id,\n variants: product.variants,\n })),\n [crossSaleProducts?.data]\n )\n}\n"],"file":"useBasketCrossSaleItems.js"}
@@ -72,7 +72,7 @@ function CheckoutFormContextProvider(_ref) {
72
72
  _ref$requiredFieldsOn = _ref.requiredFieldsOnShippingStep,
73
73
  requiredFieldsOnShippingStep = _ref$requiredFieldsOn === void 0 ? ['firstName', 'lastName', 'email', 'phoneNumber'] : _ref$requiredFieldsOn,
74
74
  _ref$requiredFieldsOn2 = _ref.requiredFieldsOnBillingAddressStep,
75
- requiredFieldsOnBillingAddressStep = _ref$requiredFieldsOn2 === void 0 ? ['city', 'postalCode', 'streetName'] : _ref$requiredFieldsOn2,
75
+ requiredFieldsOnBillingAddressStep = _ref$requiredFieldsOn2 === void 0 ? ['vatId', 'companyId', 'companyPerson', 'companyName'] : _ref$requiredFieldsOn2,
76
76
  _ref$enableNoShipping = _ref.enableNoShippingMethodMode,
77
77
  enableNoShippingMethodMode = _ref$enableNoShipping === void 0 ? false : _ref$enableNoShipping,
78
78
  _ref$disablePaymentRe = _ref.disablePaymentRedirects,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/contexts/CheckoutForm/index.tsx"],"names":["CheckoutFormContext","CheckoutFormContextProvider","children","defaultStep","errorLabels","enableSavedAddressList","withPersistBeforePageLeave","shippingValidations","defaultShippingValidations","validateBillingAddress","genericBillingAddressValidation","enableSaveBillingAddress","enableSavedBillingAddressList","countryCode","enableSaveAddress","autofillShippingPersonalData","onSubmit","paymentEnabledOnStep","getPaymentMethodsWhenShippingMethodIsSelected","shippingEnabledOnStep","billingEnabledOnStep","customState","initialCustomState","redirectTimeout","onBeforeRedirect","onSuccess","onError","isBoricaInDevMode","withPixelMeta","requiredFieldsOnShippingStep","requiredFieldsOnBillingAddressStep","enableNoShippingMethodMode","disablePaymentRedirects","orderQuery","myCartApi","useGet","boricaData","setBoricaData","step","setStep","isRedirecting","setIsRedirecting","fieldsWithError","serverErrors","setServerErrors","collectFieldsWithError","error","push","handleStepChange","newStep","window","scrollTo","updateServerErrors","errors","formattedErrors","reduce","data","code","response","internalError","isAuthenticated","isShippingEnabled","userQuery","usersApi","enabled","shippingState","Boolean","validations","requiredFields","mod","getIsPaymentMethodsEnabled","moduleKey","moduleData","methodKey","paymentState","billingState","withSavedBillingAddressList","requiredFieldsOnShipping","onBeforeBoricaRedirect","setTimeout","onBeforePaypalRedirect","location","replace","redirectUrl","withMeta","handleCheckoutSubmit","scrollToFirstError","interval","setInterval","errorElement","top","clearInterval","handleSubmit","e","preventDefault","Promise","all","persistShippingAddress","persistBillingAddress","isShippingValid","isValid","setIsShippingSubmitting","updateIsSubmitting","isBillingValid","setIsBillingSubmitting","isPaymentValid","setIsPaymentSubmitting","updateStep","saveOrder","shippingAddress","state","errorRef","errorFields","CheckoutFormStepsEnum","useCheckoutFormStep","context","Error","currentStep","useCheckoutFormOrder","useCheckoutFormErrorLabels","useCheckoutFormServerErrors","useCheckoutFormBillingState","useCheckoutFormShippingState","useCheckoutErrorFields","useCheckoutFormPaymentState"],"mappings":"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","sourcesContent":["import React, {\n createContext,\n useCallback,\n useContext,\n useMemo,\n useState,\n} from 'react'\nimport {\n BoricaGeneratePaymentDataResponse,\n OrderDTO,\n AddressDTO,\n PaypalGeneratePaymentUrlResponseDTO,\n} from '@sentecacommerce/sdk'\nimport { MutateFunction, QueryResult } from 'react-query'\nimport { myCartApi } from '../../api/myCartApi'\nimport {\n useBilling,\n UseBillingResultType,\n usePayment,\n UsePaymentResultType,\n useShipping,\n UseShippingResultType,\n} from './hooks'\nimport { useIsAuthenticated } from '../../user/hooks'\nimport { useCheckoutSubmit } from '../../hooks/useCheckoutSubmit'\n\nimport {\n ShippingValidationsType,\n defaultShippingValidations,\n genericBillingAddressValidation,\n BillingAddressValidationType,\n} from './utils'\nimport { usersApi } from '../../api/usersApi'\nimport { useCheckoutShippingModule } from '../../hooks/useCheckoutShippingModule'\nimport { CheckoutFormCustomStateProvider, BoricaRedirect } from './Components'\nimport { useScrollTo } from '../../hooks/ui-hooks'\nimport { getElementOffset } from '../../utils/getElementOffset'\n\nexport const CheckoutFormContext = createContext<CheckoutFormContextType>(\n {} as any\n)\n\nexport type CheckoutCustomState = {}\n\nexport function CheckoutFormContextProvider({\n children,\n defaultStep,\n errorLabels,\n enableSavedAddressList,\n withPersistBeforePageLeave,\n shippingValidations = defaultShippingValidations,\n validateBillingAddress = genericBillingAddressValidation,\n enableSaveBillingAddress,\n enableSavedBillingAddressList,\n countryCode,\n enableSaveAddress,\n autofillShippingPersonalData,\n onSubmit,\n\n paymentEnabledOnStep,\n getPaymentMethodsWhenShippingMethodIsSelected,\n shippingEnabledOnStep,\n billingEnabledOnStep,\n\n customState: initialCustomState = {},\n redirectTimeout = 420,\n onBeforeRedirect,\n onSuccess,\n onError,\n isBoricaInDevMode,\n withPixelMeta = false,\n requiredFieldsOnShippingStep = [\n 'firstName',\n 'lastName',\n 'email',\n 'phoneNumber',\n ],\n requiredFieldsOnBillingAddressStep = ['city', 'postalCode', 'streetName'],\n enableNoShippingMethodMode = false,\n disablePaymentRedirects = false,\n}: Props) {\n const orderQuery = myCartApi.useGet()\n const [\n boricaData,\n setBoricaData,\n ] = useState<BoricaGeneratePaymentDataResponse | null>(null)\n const [step, setStep] = useState<CheckoutFormStepsEnum>(defaultStep)\n const [isRedirecting, setIsRedirecting] = useState(false)\n\n const fieldsWithError: HTMLElement[] = []\n\n const [serverErrors, setServerErrors] = useState<ServerErrors>(null)\n\n const collectFieldsWithError = (error: HTMLElement) => {\n fieldsWithError.push(error)\n }\n\n const handleStepChange = useCallback((newStep: CheckoutFormStepsEnum) => {\n window.scrollTo(0, 0)\n\n setStep(newStep)\n }, [])\n\n const updateServerErrors = useCallback((errors: any[]) => {\n // Example Error\n // [{\n // code: \"OutOfStock\"\n // message: \"Some of the ordered line items are out of stock at the time of placing the order.\"\n // responses: {\n // availableQuantity: 1\n // sku: \"200000095849\"\n // status: \"unavailable\"\n // }\n // }]\n const formattedErrors = errors?.reduce?.(\n (data: ServerErrors, error: any) => {\n return {\n ...data,\n [error?.code || 'internal']: error?.response,\n }\n },\n {}\n )\n setServerErrors(formattedErrors || { internalError: errors })\n }, [])\n\n const { isAuthenticated } = useIsAuthenticated()\n\n const isShippingEnabled = shippingEnabledOnStep === step\n\n const userQuery = usersApi.useGet(\n {},\n { enabled: isShippingEnabled && autofillShippingPersonalData }\n )\n\n const shippingState = useShipping({\n errorLabels,\n orderQuery,\n enableSavedAddressList: Boolean(isAuthenticated && enableSavedAddressList),\n enableSaveAddress: Boolean(isAuthenticated && enableSaveAddress),\n withPersistBeforePageLeave: !isRedirecting && withPersistBeforePageLeave,\n validations: shippingValidations,\n autofillShippingPersonalData: Boolean(\n isAuthenticated && autofillShippingPersonalData\n ),\n userQuery,\n enabled: isShippingEnabled,\n countryCode,\n requiredFields: requiredFieldsOnShippingStep,\n enableNoShippingMethodMode,\n })\n const mod = useCheckoutShippingModule(orderQuery, !enableNoShippingMethodMode)\n\n const getIsPaymentMethodsEnabled = () => {\n if (paymentEnabledOnStep) {\n return paymentEnabledOnStep === step\n }\n\n if (\n !enableNoShippingMethodMode &&\n getPaymentMethodsWhenShippingMethodIsSelected\n ) {\n return Boolean(mod?.moduleKey && mod?.moduleData.methodKey)\n }\n\n return false\n }\n\n const paymentState = usePayment({\n errorLabels,\n orderQuery,\n enabled: getIsPaymentMethodsEnabled(),\n })\n\n const billingState = useBilling({\n errorLabels,\n orderQuery,\n validateBillingAddress,\n enableSaveBillingAddress: Boolean(\n isAuthenticated && enableSaveBillingAddress\n ),\n withSavedBillingAddressList: Boolean(\n isAuthenticated && enableSavedBillingAddressList\n ),\n withPersistBeforePageLeave: !isRedirecting && withPersistBeforePageLeave,\n countryCode,\n enabled: billingEnabledOnStep === step,\n requiredFields: requiredFieldsOnBillingAddressStep,\n requiredFieldsOnShipping: requiredFieldsOnShippingStep,\n })\n\n const onBeforeBoricaRedirect = (data: BoricaGeneratePaymentDataResponse) => {\n if (disablePaymentRedirects) return\n\n onBeforeRedirect?.()\n setIsRedirecting(true)\n setTimeout(() => {\n setBoricaData(data)\n }, redirectTimeout)\n }\n\n const onBeforePaypalRedirect = (\n data: PaypalGeneratePaymentUrlResponseDTO\n ) => {\n if (disablePaymentRedirects) return\n\n onBeforeRedirect?.()\n setIsRedirecting(true)\n setTimeout(() => {\n window.location.replace(data.redirectUrl)\n }, redirectTimeout)\n }\n const { handleCheckoutSubmit } = useCheckoutSubmit({\n onBeforeBoricaRedirect,\n onBeforePaypalRedirect,\n onSuccess,\n onError: (errors: any) => {\n updateServerErrors(errors)\n onError(errors)\n },\n withMeta: withPixelMeta,\n disablePaymentRedirects,\n })\n\n const { scrollTo } = useScrollTo(fieldsWithError[0], 0)\n\n const scrollToFirstError = () => {\n const interval = setInterval(() => {\n const errorElement = fieldsWithError[0]\n if (!errorElement) return\n\n scrollTo(getElementOffset(errorElement).top - 100)\n clearInterval(interval)\n }, 50)\n\n setTimeout(() => {\n clearInterval(interval)\n }, 1000)\n }\n\n const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault()\n\n await Promise.all([\n shippingState.persistShippingAddress(),\n billingState.persistBillingAddress(),\n ]).catch(() => {})\n\n onSubmit({\n isShippingValid: shippingState.isValid,\n setIsShippingSubmitting: shippingState.updateIsSubmitting,\n isBillingValid: billingState.isValid,\n setIsBillingSubmitting: billingState.updateIsSubmitting,\n isPaymentValid: paymentState.isValid,\n setIsPaymentSubmitting: paymentState.updateIsSubmitting,\n step,\n updateStep: setStep,\n saveOrder: handleCheckoutSubmit,\n updateServerErrors,\n scrollToFirstError,\n shippingState,\n shippingAddress: shippingState.data,\n })\n }\n\n const state = {\n setStep: handleStepChange,\n step,\n orderQuery,\n serverErrors,\n updateServerErrors,\n errorLabels,\n shippingState,\n paymentState,\n billingState,\n errorRef: collectFieldsWithError,\n errorFields: fieldsWithError,\n }\n\n return (\n <CheckoutFormContext.Provider value={state}>\n <CheckoutFormCustomStateProvider initialCustomState={initialCustomState}>\n <>\n <form noValidate onSubmit={handleSubmit}>\n {children}\n </form>\n {!!boricaData && (\n <BoricaRedirect\n isInDevMode={isBoricaInDevMode}\n formData={boricaData}\n />\n )}\n </>\n </CheckoutFormCustomStateProvider>\n </CheckoutFormContext.Provider>\n )\n}\n\nexport type CheckoutFormOnSubmitData = {\n isShippingValid: boolean\n setIsShippingSubmitting: (value: boolean) => void\n isBillingValid: boolean\n setIsBillingSubmitting: (value: boolean) => void\n isPaymentValid: boolean\n setIsPaymentSubmitting: (value: boolean) => void\n step: CheckoutFormStepsEnum\n updateStep: (step: CheckoutFormStepsEnum) => void\n saveOrder: MutateFunction<OrderDTO, unknown, any, unknown>\n\n updateServerErrors: (errors: any) => void\n scrollToFirstError: () => void\n shippingState: UseShippingResultType\n shippingAddress?: AddressDTO\n}\n\ntype Props = {\n children: any\n defaultStep: CheckoutFormStepsEnum\n errorLabels: CheckoutFormErrorLabelsType\n withPersistBeforePageLeave: boolean\n countryCode: string\n onSubmit: (data: CheckoutFormOnSubmitData) => void\n onError: (error: any) => void\n onSuccess: (order: OrderDTO) => void\n\n redirectTimeout?: number\n onBeforeRedirect?: () => void\n\n customState?: CheckoutCustomState\n\n enableSavedAddressList: boolean\n shippingValidations?: ShippingValidationsType\n enableSaveAddress: boolean\n autofillShippingPersonalData: boolean\n autoSelectDefaultShippingAddress: boolean\n\n enableSaveBillingAddress: boolean\n validateBillingAddress?: BillingAddressValidationType\n enableSavedBillingAddressList: boolean\n autoSelectDefaultBillingAddress: boolean\n\n paymentEnabledOnStep?: CheckoutFormStepsEnum\n getPaymentMethodsWhenShippingMethodIsSelected?: boolean\n\n shippingEnabledOnStep: CheckoutFormStepsEnum\n\n billingEnabledOnStep: CheckoutFormStepsEnum\n\n isBoricaInDevMode?: boolean\n\n withPixelMeta?: boolean\n requiredFieldsOnShippingStep?: string[]\n requiredFieldsOnBillingAddressStep?: string[]\n enableNoShippingMethodMode?: boolean\n disablePaymentRedirects?: boolean\n}\n\ntype ServerErrors = { [key: string]: any } | null\n\nexport enum CheckoutFormStepsEnum {\n Basket = 'Basket',\n Shipping = 'Shipping',\n BillingAddress = 'BillingAddress',\n Payment = 'Payment',\n Preview = 'Preview',\n All = 'All',\n}\n\nexport type CheckoutFormErrorsResultType =\n | {\n [key: string]: string\n }\n | null\n | undefined\n\nexport type ShippingFormErrorLabels = {\n fieldIsRequired: string\n fillStreetNumberBuildingEntranceOrApartment: string\n streetIsRequired: string\n invalidPhoneNumber?: string\n quarterIsRequired: string\n cantFindStreetOrQuarterMessage: string\n cityIsRequired: string\n emailIsRequired: string\n officeIsRequired: string\n selectCourier: string\n noStoreSelected: string\n}\n\nexport type CheckoutFormErrorLabelsType = ShippingFormErrorLabels & {\n selectPaymentMethod: string\n}\n\nexport type CheckoutFormContextType = {\n setStep: (step: CheckoutFormStepsEnum) => void\n step: CheckoutFormStepsEnum\n serverErrors: ServerErrors\n updateServerErrors: (errors: any) => void\n errorRef: (error: HTMLElement) => void\n errorFields: HTMLElement[]\n errorLabels: CheckoutFormErrorLabelsType\n orderQuery: QueryResult<OrderDTO, unknown>\n shippingState: UseShippingResultType\n paymentState: UsePaymentResultType\n billingState: UseBillingResultType\n}\n\nexport const useCheckoutFormStep = () => {\n const context = useContext(CheckoutFormContext)\n\n if (!context) {\n throw new Error(\n 'useCheckoutFormStep must be used within a CheckoutFormContextProvider'\n )\n }\n\n return useMemo(() => {\n return {\n currentStep: context.step,\n updateStep: context.setStep,\n }\n }, [context])\n}\n\nexport const useCheckoutFormOrder = () => {\n const context = useContext(CheckoutFormContext)\n\n if (!context) {\n throw new Error(\n 'useCheckoutFormOrder must be used within a CheckoutFormContextProvider'\n )\n }\n\n return context.orderQuery\n}\n\nexport const useCheckoutFormErrorLabels = () => {\n const context = useContext(CheckoutFormContext)\n\n if (!context) {\n throw new Error(\n 'useCheckoutFormErrorLabels must be used within a CheckoutFormContextProvider'\n )\n }\n\n return context.errorLabels\n}\n\nexport const useCheckoutFormServerErrors = () => {\n const context = useContext(CheckoutFormContext)\n\n if (!context) {\n throw new Error(\n 'useCheckoutFormServerErrors must be used within a CheckoutFormContextProvider'\n )\n }\n\n return useMemo(() => {\n return {\n serverErrors: context.serverErrors,\n updateServerErrors: context.updateServerErrors,\n }\n }, [context])\n}\n\nexport const useCheckoutFormBillingState = () => {\n const context = useContext(CheckoutFormContext)\n\n if (!context) {\n throw new Error(\n 'useCheckoutFormBillingState must be used within a CheckoutFormContextProvider'\n )\n }\n\n return context.billingState\n}\n\nexport const useCheckoutFormShippingState = () => {\n const context = useContext(CheckoutFormContext)\n\n if (!context) {\n throw new Error(\n 'useCheckoutFormShippingState must be used within a CheckoutFormContextProvider'\n )\n }\n\n return context.shippingState\n}\n\nexport const useCheckoutErrorFields = () => {\n const context = useContext(CheckoutFormContext)\n\n if (!context) {\n throw new Error(\n 'useCheckoutErrorFields must be used within a CheckoutFormContextProvider'\n )\n }\n\n return {\n errorFields: context.errorFields,\n errorRef: context.errorRef,\n }\n}\n\nexport const useCheckoutFormPaymentState = () => {\n const context = useContext(CheckoutFormContext)\n\n if (!context) {\n throw new Error(\n 'useCheckoutFormPaymentState must be used within a CheckoutFormContextProvider'\n )\n }\n\n return context.paymentState\n}\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../../../src/contexts/CheckoutForm/index.tsx"],"names":["CheckoutFormContext","CheckoutFormContextProvider","children","defaultStep","errorLabels","enableSavedAddressList","withPersistBeforePageLeave","shippingValidations","defaultShippingValidations","validateBillingAddress","genericBillingAddressValidation","enableSaveBillingAddress","enableSavedBillingAddressList","countryCode","enableSaveAddress","autofillShippingPersonalData","onSubmit","paymentEnabledOnStep","getPaymentMethodsWhenShippingMethodIsSelected","shippingEnabledOnStep","billingEnabledOnStep","customState","initialCustomState","redirectTimeout","onBeforeRedirect","onSuccess","onError","isBoricaInDevMode","withPixelMeta","requiredFieldsOnShippingStep","requiredFieldsOnBillingAddressStep","enableNoShippingMethodMode","disablePaymentRedirects","orderQuery","myCartApi","useGet","boricaData","setBoricaData","step","setStep","isRedirecting","setIsRedirecting","fieldsWithError","serverErrors","setServerErrors","collectFieldsWithError","error","push","handleStepChange","newStep","window","scrollTo","updateServerErrors","errors","formattedErrors","reduce","data","code","response","internalError","isAuthenticated","isShippingEnabled","userQuery","usersApi","enabled","shippingState","Boolean","validations","requiredFields","mod","getIsPaymentMethodsEnabled","moduleKey","moduleData","methodKey","paymentState","billingState","withSavedBillingAddressList","requiredFieldsOnShipping","onBeforeBoricaRedirect","setTimeout","onBeforePaypalRedirect","location","replace","redirectUrl","withMeta","handleCheckoutSubmit","scrollToFirstError","interval","setInterval","errorElement","top","clearInterval","handleSubmit","e","preventDefault","Promise","all","persistShippingAddress","persistBillingAddress","isShippingValid","isValid","setIsShippingSubmitting","updateIsSubmitting","isBillingValid","setIsBillingSubmitting","isPaymentValid","setIsPaymentSubmitting","updateStep","saveOrder","shippingAddress","state","errorRef","errorFields","CheckoutFormStepsEnum","useCheckoutFormStep","context","Error","currentStep","useCheckoutFormOrder","useCheckoutFormErrorLabels","useCheckoutFormServerErrors","useCheckoutFormBillingState","useCheckoutFormShippingState","useCheckoutErrorFields","useCheckoutFormPaymentState"],"mappings":"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","sourcesContent":["import React, {\n createContext,\n useCallback,\n useContext,\n useMemo,\n useState,\n} from 'react'\nimport {\n BoricaGeneratePaymentDataResponse,\n OrderDTO,\n AddressDTO,\n PaypalGeneratePaymentUrlResponseDTO,\n} from '@sentecacommerce/sdk'\nimport { MutateFunction, QueryResult } from 'react-query'\nimport { myCartApi } from '../../api/myCartApi'\nimport {\n useBilling,\n UseBillingResultType,\n usePayment,\n UsePaymentResultType,\n useShipping,\n UseShippingResultType,\n} from './hooks'\nimport { useIsAuthenticated } from '../../user/hooks'\nimport { useCheckoutSubmit } from '../../hooks/useCheckoutSubmit'\n\nimport {\n ShippingValidationsType,\n defaultShippingValidations,\n genericBillingAddressValidation,\n BillingAddressValidationType,\n} from './utils'\nimport { usersApi } from '../../api/usersApi'\nimport { useCheckoutShippingModule } from '../../hooks/useCheckoutShippingModule'\nimport { CheckoutFormCustomStateProvider, BoricaRedirect } from './Components'\nimport { useScrollTo } from '../../hooks/ui-hooks'\nimport { getElementOffset } from '../../utils/getElementOffset'\n\nexport const CheckoutFormContext = createContext<CheckoutFormContextType>(\n {} as any\n)\n\nexport type CheckoutCustomState = {}\n\nexport function CheckoutFormContextProvider({\n children,\n defaultStep,\n errorLabels,\n enableSavedAddressList,\n withPersistBeforePageLeave,\n shippingValidations = defaultShippingValidations,\n validateBillingAddress = genericBillingAddressValidation,\n enableSaveBillingAddress,\n enableSavedBillingAddressList,\n countryCode,\n enableSaveAddress,\n autofillShippingPersonalData,\n onSubmit,\n\n paymentEnabledOnStep,\n getPaymentMethodsWhenShippingMethodIsSelected,\n shippingEnabledOnStep,\n billingEnabledOnStep,\n\n customState: initialCustomState = {},\n redirectTimeout = 420,\n onBeforeRedirect,\n onSuccess,\n onError,\n isBoricaInDevMode,\n withPixelMeta = false,\n requiredFieldsOnShippingStep = [\n 'firstName',\n 'lastName',\n 'email',\n 'phoneNumber',\n ],\n requiredFieldsOnBillingAddressStep = [\n 'vatId',\n 'companyId',\n 'companyPerson',\n 'companyName',\n ],\n enableNoShippingMethodMode = false,\n disablePaymentRedirects = false,\n}: Props) {\n const orderQuery = myCartApi.useGet()\n const [\n boricaData,\n setBoricaData,\n ] = useState<BoricaGeneratePaymentDataResponse | null>(null)\n const [step, setStep] = useState<CheckoutFormStepsEnum>(defaultStep)\n const [isRedirecting, setIsRedirecting] = useState(false)\n\n const fieldsWithError: HTMLElement[] = []\n\n const [serverErrors, setServerErrors] = useState<ServerErrors>(null)\n\n const collectFieldsWithError = (error: HTMLElement) => {\n fieldsWithError.push(error)\n }\n\n const handleStepChange = useCallback((newStep: CheckoutFormStepsEnum) => {\n window.scrollTo(0, 0)\n\n setStep(newStep)\n }, [])\n\n const updateServerErrors = useCallback((errors: any[]) => {\n // Example Error\n // [{\n // code: \"OutOfStock\"\n // message: \"Some of the ordered line items are out of stock at the time of placing the order.\"\n // responses: {\n // availableQuantity: 1\n // sku: \"200000095849\"\n // status: \"unavailable\"\n // }\n // }]\n const formattedErrors = errors?.reduce?.(\n (data: ServerErrors, error: any) => {\n return {\n ...data,\n [error?.code || 'internal']: error?.response,\n }\n },\n {}\n )\n setServerErrors(formattedErrors || { internalError: errors })\n }, [])\n\n const { isAuthenticated } = useIsAuthenticated()\n\n const isShippingEnabled = shippingEnabledOnStep === step\n\n const userQuery = usersApi.useGet(\n {},\n { enabled: isShippingEnabled && autofillShippingPersonalData }\n )\n\n const shippingState = useShipping({\n errorLabels,\n orderQuery,\n enableSavedAddressList: Boolean(isAuthenticated && enableSavedAddressList),\n enableSaveAddress: Boolean(isAuthenticated && enableSaveAddress),\n withPersistBeforePageLeave: !isRedirecting && withPersistBeforePageLeave,\n validations: shippingValidations,\n autofillShippingPersonalData: Boolean(\n isAuthenticated && autofillShippingPersonalData\n ),\n userQuery,\n enabled: isShippingEnabled,\n countryCode,\n requiredFields: requiredFieldsOnShippingStep,\n enableNoShippingMethodMode,\n })\n const mod = useCheckoutShippingModule(orderQuery, !enableNoShippingMethodMode)\n\n const getIsPaymentMethodsEnabled = () => {\n if (paymentEnabledOnStep) {\n return paymentEnabledOnStep === step\n }\n\n if (\n !enableNoShippingMethodMode &&\n getPaymentMethodsWhenShippingMethodIsSelected\n ) {\n return Boolean(mod?.moduleKey && mod?.moduleData.methodKey)\n }\n\n return false\n }\n\n const paymentState = usePayment({\n errorLabels,\n orderQuery,\n enabled: getIsPaymentMethodsEnabled(),\n })\n\n const billingState = useBilling({\n errorLabels,\n orderQuery,\n validateBillingAddress,\n enableSaveBillingAddress: Boolean(\n isAuthenticated && enableSaveBillingAddress\n ),\n withSavedBillingAddressList: Boolean(\n isAuthenticated && enableSavedBillingAddressList\n ),\n withPersistBeforePageLeave: !isRedirecting && withPersistBeforePageLeave,\n countryCode,\n enabled: billingEnabledOnStep === step,\n requiredFields: requiredFieldsOnBillingAddressStep,\n requiredFieldsOnShipping: requiredFieldsOnShippingStep,\n })\n\n const onBeforeBoricaRedirect = (data: BoricaGeneratePaymentDataResponse) => {\n if (disablePaymentRedirects) return\n\n onBeforeRedirect?.()\n setIsRedirecting(true)\n setTimeout(() => {\n setBoricaData(data)\n }, redirectTimeout)\n }\n\n const onBeforePaypalRedirect = (\n data: PaypalGeneratePaymentUrlResponseDTO\n ) => {\n if (disablePaymentRedirects) return\n\n onBeforeRedirect?.()\n setIsRedirecting(true)\n setTimeout(() => {\n window.location.replace(data.redirectUrl)\n }, redirectTimeout)\n }\n const { handleCheckoutSubmit } = useCheckoutSubmit({\n onBeforeBoricaRedirect,\n onBeforePaypalRedirect,\n onSuccess,\n onError: (errors: any) => {\n updateServerErrors(errors)\n onError(errors)\n },\n withMeta: withPixelMeta,\n disablePaymentRedirects,\n })\n\n const { scrollTo } = useScrollTo(fieldsWithError[0], 0)\n\n const scrollToFirstError = () => {\n const interval = setInterval(() => {\n const errorElement = fieldsWithError[0]\n if (!errorElement) return\n\n scrollTo(getElementOffset(errorElement).top - 100)\n clearInterval(interval)\n }, 50)\n\n setTimeout(() => {\n clearInterval(interval)\n }, 1000)\n }\n\n const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault()\n\n await Promise.all([\n shippingState.persistShippingAddress(),\n billingState.persistBillingAddress(),\n ]).catch(() => {})\n\n onSubmit({\n isShippingValid: shippingState.isValid,\n setIsShippingSubmitting: shippingState.updateIsSubmitting,\n isBillingValid: billingState.isValid,\n setIsBillingSubmitting: billingState.updateIsSubmitting,\n isPaymentValid: paymentState.isValid,\n setIsPaymentSubmitting: paymentState.updateIsSubmitting,\n step,\n updateStep: setStep,\n saveOrder: handleCheckoutSubmit,\n updateServerErrors,\n scrollToFirstError,\n shippingState,\n shippingAddress: shippingState.data,\n })\n }\n\n const state = {\n setStep: handleStepChange,\n step,\n orderQuery,\n serverErrors,\n updateServerErrors,\n errorLabels,\n shippingState,\n paymentState,\n billingState,\n errorRef: collectFieldsWithError,\n errorFields: fieldsWithError,\n }\n\n return (\n <CheckoutFormContext.Provider value={state}>\n <CheckoutFormCustomStateProvider initialCustomState={initialCustomState}>\n <>\n <form noValidate onSubmit={handleSubmit}>\n {children}\n </form>\n {!!boricaData && (\n <BoricaRedirect\n isInDevMode={isBoricaInDevMode}\n formData={boricaData}\n />\n )}\n </>\n </CheckoutFormCustomStateProvider>\n </CheckoutFormContext.Provider>\n )\n}\n\nexport type CheckoutFormOnSubmitData = {\n isShippingValid: boolean\n setIsShippingSubmitting: (value: boolean) => void\n isBillingValid: boolean\n setIsBillingSubmitting: (value: boolean) => void\n isPaymentValid: boolean\n setIsPaymentSubmitting: (value: boolean) => void\n step: CheckoutFormStepsEnum\n updateStep: (step: CheckoutFormStepsEnum) => void\n saveOrder: MutateFunction<OrderDTO, unknown, any, unknown>\n\n updateServerErrors: (errors: any) => void\n scrollToFirstError: () => void\n shippingState: UseShippingResultType\n shippingAddress?: AddressDTO\n}\n\ntype Props = {\n children: any\n defaultStep: CheckoutFormStepsEnum\n errorLabels: CheckoutFormErrorLabelsType\n withPersistBeforePageLeave: boolean\n countryCode: string\n onSubmit: (data: CheckoutFormOnSubmitData) => void\n onError: (error: any) => void\n onSuccess: (order: OrderDTO) => void\n\n redirectTimeout?: number\n onBeforeRedirect?: () => void\n\n customState?: CheckoutCustomState\n\n enableSavedAddressList: boolean\n shippingValidations?: ShippingValidationsType\n enableSaveAddress: boolean\n autofillShippingPersonalData: boolean\n autoSelectDefaultShippingAddress: boolean\n\n enableSaveBillingAddress: boolean\n validateBillingAddress?: BillingAddressValidationType\n enableSavedBillingAddressList: boolean\n autoSelectDefaultBillingAddress: boolean\n\n paymentEnabledOnStep?: CheckoutFormStepsEnum\n getPaymentMethodsWhenShippingMethodIsSelected?: boolean\n\n shippingEnabledOnStep: CheckoutFormStepsEnum\n\n billingEnabledOnStep: CheckoutFormStepsEnum\n\n isBoricaInDevMode?: boolean\n\n withPixelMeta?: boolean\n requiredFieldsOnShippingStep?: string[]\n requiredFieldsOnBillingAddressStep?: string[]\n enableNoShippingMethodMode?: boolean\n disablePaymentRedirects?: boolean\n}\n\ntype ServerErrors = { [key: string]: any } | null\n\nexport enum CheckoutFormStepsEnum {\n Basket = 'Basket',\n Shipping = 'Shipping',\n BillingAddress = 'BillingAddress',\n Payment = 'Payment',\n Preview = 'Preview',\n All = 'All',\n}\n\nexport type CheckoutFormErrorsResultType =\n | {\n [key: string]: string\n }\n | null\n | undefined\n\nexport type ShippingFormErrorLabels = {\n fieldIsRequired: string\n fillStreetNumberBuildingEntranceOrApartment: string\n streetIsRequired: string\n invalidPhoneNumber?: string\n quarterIsRequired: string\n cantFindStreetOrQuarterMessage: string\n cityIsRequired: string\n emailIsRequired: string\n officeIsRequired: string\n selectCourier: string\n noStoreSelected: string\n}\n\nexport type CheckoutFormErrorLabelsType = ShippingFormErrorLabels & {\n selectPaymentMethod: string\n}\n\nexport type CheckoutFormContextType = {\n setStep: (step: CheckoutFormStepsEnum) => void\n step: CheckoutFormStepsEnum\n serverErrors: ServerErrors\n updateServerErrors: (errors: any) => void\n errorRef: (error: HTMLElement) => void\n errorFields: HTMLElement[]\n errorLabels: CheckoutFormErrorLabelsType\n orderQuery: QueryResult<OrderDTO, unknown>\n shippingState: UseShippingResultType\n paymentState: UsePaymentResultType\n billingState: UseBillingResultType\n}\n\nexport const useCheckoutFormStep = () => {\n const context = useContext(CheckoutFormContext)\n\n if (!context) {\n throw new Error(\n 'useCheckoutFormStep must be used within a CheckoutFormContextProvider'\n )\n }\n\n return useMemo(() => {\n return {\n currentStep: context.step,\n updateStep: context.setStep,\n }\n }, [context])\n}\n\nexport const useCheckoutFormOrder = () => {\n const context = useContext(CheckoutFormContext)\n\n if (!context) {\n throw new Error(\n 'useCheckoutFormOrder must be used within a CheckoutFormContextProvider'\n )\n }\n\n return context.orderQuery\n}\n\nexport const useCheckoutFormErrorLabels = () => {\n const context = useContext(CheckoutFormContext)\n\n if (!context) {\n throw new Error(\n 'useCheckoutFormErrorLabels must be used within a CheckoutFormContextProvider'\n )\n }\n\n return context.errorLabels\n}\n\nexport const useCheckoutFormServerErrors = () => {\n const context = useContext(CheckoutFormContext)\n\n if (!context) {\n throw new Error(\n 'useCheckoutFormServerErrors must be used within a CheckoutFormContextProvider'\n )\n }\n\n return useMemo(() => {\n return {\n serverErrors: context.serverErrors,\n updateServerErrors: context.updateServerErrors,\n }\n }, [context])\n}\n\nexport const useCheckoutFormBillingState = () => {\n const context = useContext(CheckoutFormContext)\n\n if (!context) {\n throw new Error(\n 'useCheckoutFormBillingState must be used within a CheckoutFormContextProvider'\n )\n }\n\n return context.billingState\n}\n\nexport const useCheckoutFormShippingState = () => {\n const context = useContext(CheckoutFormContext)\n\n if (!context) {\n throw new Error(\n 'useCheckoutFormShippingState must be used within a CheckoutFormContextProvider'\n )\n }\n\n return context.shippingState\n}\n\nexport const useCheckoutErrorFields = () => {\n const context = useContext(CheckoutFormContext)\n\n if (!context) {\n throw new Error(\n 'useCheckoutErrorFields must be used within a CheckoutFormContextProvider'\n )\n }\n\n return {\n errorFields: context.errorFields,\n errorRef: context.errorRef,\n }\n}\n\nexport const useCheckoutFormPaymentState = () => {\n const context = useContext(CheckoutFormContext)\n\n if (!context) {\n throw new Error(\n 'useCheckoutFormPaymentState must be used within a CheckoutFormContextProvider'\n )\n }\n\n return context.paymentState\n}\n"],"file":"index.js"}
@@ -188,11 +188,37 @@ function ProductProvider(_ref) {
188
188
  function selectVariantByAttribute(key) {
189
189
  var _combinations$key;
190
190
 
191
+ // Get by collapseKey for SD
192
+ var split = key.split(':');
193
+
194
+ if (split[0] === 'collapseKey') {
195
+ var _id = Object.keys(variants).find(function (el) {
196
+ return variants[el].collapseKey === split[1];
197
+ });
198
+
199
+ return setSelectedVariant(variants[_id]);
200
+ }
201
+
191
202
  var id = (_combinations$key = combinations[key]) == null ? void 0 : _combinations$key.value;
192
203
  setSelectedVariant(variants[id]);
193
204
  }
194
205
 
195
206
  function selectVariantByCombination(key, value) {
207
+ // Take collapseKey for SD
208
+ var split = value.split(':');
209
+
210
+ if (split[0] === 'collapseKey') {
211
+ var _id2 = Object.keys(variants).find(function (el) {
212
+ var _variants$el$attribut;
213
+
214
+ return variants[el].collapseKey === split[1] && ((_variants$el$attribut = variants[el].attributes.find(function (attr) {
215
+ return attr.name === 'size';
216
+ })) == null ? void 0 : _variants$el$attribut.value) === key;
217
+ });
218
+
219
+ return setSelectedVariant(variants[_id2]);
220
+ }
221
+
196
222
  var id = combinations[key].params[value];
197
223
  setSelectedVariant(variants[id]);
198
224
  }
@@ -258,12 +284,14 @@ function ProductProvider(_ref) {
258
284
  return result;
259
285
  }
260
286
 
287
+ var collapsedImages = (0, _utils.createCollapseKeyImagesMap)(product);
261
288
  var state = {
262
289
  metaData: metaData,
263
290
  seoData: seoData,
264
291
  variants: variants,
265
292
  selectedVariant: selectedVariant,
266
- attributeRules: attributeRules
293
+ attributeRules: attributeRules,
294
+ collapsedImages: collapsedImages
267
295
  };
268
296
  var functions = {
269
297
  getVariantById: getVariantById,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/hooks/useProduct/index.tsx"],"names":["ProductStateContext","React","createContext","undefined","CountDispatchContext","ProductProvider","product","children","defaultVariantId","useState","mounted","setMounted","getCombinationsAndAttributeRules","combinations","attributeRules","setCombinationsAndAttributeRules","getVariantsWithInventory","variants","setVariants","getDefaultVariant","selectedVariant","setSelectedVariant","metaData","useMemo","rootCategory","categories","rootCategoryId","resourceId","metaObj","_id","name","slug","description","shortDescription","metaDescription","brand","brands","resource","logo","assets","sources","url","category","length","reviewRatingStatistics","content","Boolean","map","createProductContent","seoData","seoObj","title","metaTitle","keywords","metaKeywords","customFields","mappedFields","custom","useEffect","data","variantsWithInventory","reduce","_","index","arr","currentVariant","mappedAttributes","mappedOptions","availableOptions","isAvailable","inventorySnapshot","canOrder","updatedVariant","inventory","hasAvailableQuantity","availableQuantity","quantity","attributes","options","selectedOptions","labels","getAttribute","rule","getSelectedAttribute","getAttributeByKey","key","find","a","value","getAvailabilityByStore","availabilities","mappedAttributeRules","attributesWithId","Object","keys","variantId","combinationsMap","selectVariantById","id","selectVariantByAttribute","selectVariantByCombination","params","selectVariantOptions","definitionKey","optionKey","newSelectedVariant","filter","opt","mappedSelectedOptions","option","attributeRule","values","result","forEach","currentKey","found","getVariantById","getVariantByAttribute","getVariantByCombination","getCustomFieldValue","field","getCombinationsForAttributeRule","state","functions","getProductVideos","useProductState","context","useContext","Error","useProductFunctions","useProduct","config","productsApi"],"mappings":"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","sourcesContent":["import React from 'react'\nimport {\n ProductDTO,\n ProductVariantDTO,\n AttributeRuleDTO,\n ProductAttributeDraftDTO,\n SelectedOptionDTO,\n ReviewRatingStatisticsDTO,\n AssetSourceDTO,\n} from '@sentecacommerce/sdk'\nimport { getTranslatableField } from '../../'\nimport {\n assignCombinationsToAttributeRules,\n createCombinationsMap,\n createCustomFieldsMap,\n createProductContent,\n createAttributeRulesMap,\n createMappedAttributes,\n processAvailabilityPerStore,\n getProductVideos,\n createMappedOptions,\n createSelectedOption2,\n SelectedOptionType,\n formatCategories,\n createLabelsMap,\n} from './utils'\nimport { productsApi, getProductBySlugConfig } from '../../api/productsApi'\nimport { assetsFieldsToMap, AssetsMap } from '../../utils/assetsToMap'\n\nexport { AssetSourceDTO }\nexport interface OptionsType {\n definitionKey: string\n label: string\n elements?: SubOptionType[]\n}\n\nexport interface SubOptionType {\n optionKey: string\n label: string\n imageIndex?: number\n}\n\nexport interface ContentType {\n key: string\n name?: string\n content?: string\n}\n\nexport interface MetaInfoCategoryType {\n name: string\n id: string\n link: string\n}\n\nexport interface MetaInformationType {\n _id?: string\n name?: string\n slug?: string\n description?: string\n shortDescription?: string\n reviewRatingStatistics?: ReviewRatingStatisticsDTO\n brand: {\n _id?: string\n name?: string\n slug?: string\n logo?: string\n }\n category: {\n _id?: string\n name?: string\n slug?: string\n }\n rootCategory: {\n _id?: string\n name?: string\n slug?: string\n }\n categories?: MetaInfoCategoryType[]\n content?: ContentType[]\n assets?: AssetsMap\n}\n\ninterface SeoInformationType {\n title?: string\n description?: string\n keywords?: string\n}\n\ninterface AttributeRulesType extends AttributeRuleDTO {\n label: string\n values: {\n [id: string]: {\n label: string\n extra: any\n combinations: {\n [id: string]: string\n }\n }\n }\n}\n\nexport interface VariantType\n extends Omit<\n ProductVariantDTO,\n 'attributes' | 'availableOptions' | 'selectedOptions' | 'labels'\n > {\n attributes: ProductAttributeDraftDTO[]\n options?: OptionsType[]\n selectedOptions: SelectedOptionDTO[]\n mappedSelectedOptions?: SelectedOptionType[]\n isAvailable: boolean\n quantity?: number\n inventory: {\n hasAvailableQuantity?: boolean\n availableQuantity?: number\n }\n labels?: string[]\n getAttribute: (\n rule: string\n ) => {\n id: string\n label: string\n name: string\n extra: any\n combinations: {\n [id: string]: string\n }\n }\n getAttributeByKey: (key: string) => undefined | any\n getAvailabilityByStore: () => InventoryAvailabilityType[] | undefined\n}\ninterface VariantMap {\n [productId: string]: VariantType\n}\n\nexport interface BooleanKVP {\n [sku: string]: boolean | undefined\n}\n\nexport interface AttributeRulesMap {\n [name: string]: AttributeRulesType\n}\n\nexport interface CombinationsMap {\n [id: string]: {\n value: string\n params: {\n [id: string]: string\n }\n }\n}\n\nexport interface InventoryAvailabilityType {\n storeName: string\n availableQuantity: number\n acceptsBackorders: boolean\n restockableInDays: number\n}\n\ntype ProductProviderProps = {\n children: React.ReactNode\n product?: ProductDTO\n defaultVariantId?: string\n query?: {\n storeKey?: string\n currencyCode?: string\n languageCode?: string\n priceListKey?: string\n time?: number\n merchantKey?: string\n expand?: string\n project?: string\n }\n}\n\ntype ProductStateContextType = {\n attributeRules: AttributeRulesMap\n metaData: MetaInformationType\n seoData: SeoInformationType\n variants?: VariantMap\n selectedVariant?: VariantType | null\n}\n\nexport type VideoType = {\n type: string\n source: string\n iframe: JSX.Element\n thumb: {\n url: string\n }\n}\n\ntype CountFunctionsContextType = {\n selectVariantById: (id: string) => void\n selectVariantByAttribute: (key: string) => void\n selectVariantByCombination: (key: string, value: string) => void\n selectVariantOptions: (optionId: string, elementId: string) => void\n getVariantById: (id: string) => VariantType\n getVariantByAttribute: (key: string) => VariantType\n getVariantByCombination: (key: string, value: string) => VariantType\n getCustomFieldValue: (field: string) => boolean | undefined\n getCombinationsForAttributeRule: (\n key: string,\n id: string\n ) => {\n label: string\n extra: any\n combinations: {\n [id: string]: string\n }\n }\n getProductVideos: () => VideoType[]\n}\n\nconst ProductStateContext = React.createContext<\n ProductStateContextType | undefined\n>(undefined)\nconst CountDispatchContext = React.createContext<\n CountFunctionsContextType | undefined\n>(undefined)\n\nexport function ProductProvider({\n product,\n children,\n defaultVariantId,\n}: ProductProviderProps) {\n const [mounted, setMounted] = React.useState(false)\n\n const [\n { combinations, attributeRules },\n setCombinationsAndAttributeRules,\n ] = React.useState<{\n combinations: CombinationsMap\n attributeRules: AttributeRulesMap\n }>(getCombinationsAndAttributeRules)\n\n const [variants, setVariants] = React.useState<VariantMap>(\n getVariantsWithInventory\n )\n\n const [\n selectedVariant,\n setSelectedVariant,\n ] = React.useState<VariantType | null>(getDefaultVariant)\n\n const metaData = React.useMemo(() => {\n const rootCategory = product?.categories?.[0]\n const rootCategoryId = rootCategory?.resourceId\n\n const metaObj: MetaInformationType = {\n _id: product?._id,\n name:\n getTranslatableField(selectedVariant?.name) ||\n getTranslatableField(product?.name),\n slug: getTranslatableField(product?.slug),\n description:\n getTranslatableField(selectedVariant?.description) ||\n getTranslatableField(product?.description),\n shortDescription:\n getTranslatableField(selectedVariant?.metaDescription) ||\n getTranslatableField(product?.metaDescription),\n brand: {\n _id: product?.brands?.[0]?.resourceId,\n name: getTranslatableField(product?.brands?.[0]?.resource?.name),\n slug: getTranslatableField(product?.brands?.[0]?.resource?.slug),\n logo: product?.brands?.[0]?.resource?.assets?.[0]?.sources?.[0]?.url,\n },\n category: {\n _id: product?.categories?.[product?.categories?.length - 1]?.resourceId,\n name: getTranslatableField(\n product?.categories?.[product?.categories?.length - 1]?.resource?.name\n ),\n slug: getTranslatableField(\n product?.categories?.[product?.categories?.length - 1]?.resource?.slug\n ),\n },\n rootCategory: {\n _id: rootCategoryId,\n name: getTranslatableField(rootCategory?.resource?.name),\n slug: getTranslatableField(rootCategory?.resource?.slug),\n },\n categories: formatCategories(product?.categories, rootCategoryId),\n reviewRatingStatistics: product?.reviewRatingStatistics,\n content: Boolean(\n selectedVariant?.content?.map(createProductContent).length\n )\n ? selectedVariant?.content?.map(createProductContent)\n : product?.content?.map(createProductContent),\n assets: assetsFieldsToMap(product?.assets),\n }\n return metaObj\n }, [\n product?._id,\n product?.brands,\n product?.content,\n product?.description,\n product?.metaDescription,\n product?.name,\n product?.slug,\n product?.assets,\n selectedVariant,\n ])\n\n const seoData = React.useMemo(() => {\n const seoObj: SeoInformationType = {\n title:\n getTranslatableField(selectedVariant?.metaTitle) ||\n getTranslatableField(product?.metaTitle),\n description:\n getTranslatableField(selectedVariant?.metaDescription) ||\n getTranslatableField(product?.metaDescription),\n keywords:\n getTranslatableField(selectedVariant?.metaKeywords) ||\n getTranslatableField(product?.metaKeywords),\n }\n return seoObj\n }, [\n product?.metaDescription,\n product?.metaKeywords,\n product?.metaTitle,\n selectedVariant,\n ])\n\n const customFields = React.useMemo(() => {\n const mappedFields = createCustomFieldsMap(product?.custom) as BooleanKVP\n return mappedFields\n }, [product?.custom])\n\n React.useEffect(() => {\n // prevent unnecessary calculations\n if (mounted) {\n setVariants(getVariantsWithInventory())\n }\n }, [product])\n\n React.useMemo(() => {\n // prevent unnecessary calculations\n if (!mounted) {\n return setMounted(true)\n }\n\n const data = getCombinationsAndAttributeRules()\n\n setCombinationsAndAttributeRules(data)\n }, [variants])\n\n function getVariantsWithInventory() {\n const variantsWithInventory = product?.variants?.reduce(\n (map: any, _, index, arr) => {\n const currentVariant = arr[index] as ProductVariantDTO\n\n const mappedAttributes = createMappedAttributes(currentVariant)\n\n const mappedOptions =\n createMappedOptions(currentVariant?.availableOptions) || []\n\n const isAvailable = currentVariant?.inventorySnapshot?.canOrder\n\n const updatedVariant: VariantType = {\n ...currentVariant,\n inventory: {\n hasAvailableQuantity: currentVariant.inventorySnapshot?.canOrder,\n availableQuantity:\n currentVariant.inventorySnapshot?.availableQuantity,\n },\n isAvailable: isAvailable ? true : false,\n quantity: isAvailable\n ? currentVariant?.inventorySnapshot?.availableQuantity\n : 0,\n attributes: mappedAttributes,\n options: mappedOptions,\n selectedOptions: [],\n labels: createLabelsMap(currentVariant.labels),\n getAttribute: (rule: string) =>\n getSelectedAttribute(rule, mappedAttributes),\n getAttributeByKey: (key: string) =>\n mappedAttributes.find((a) => a.name === key)?.value,\n getAvailabilityByStore: () =>\n processAvailabilityPerStore(\n currentVariant?.inventorySnapshot?.availabilities\n ),\n }\n\n map[currentVariant._id] = updatedVariant\n\n return map\n },\n {}\n )\n\n return variantsWithInventory || {}\n }\n\n function getCombinationsAndAttributeRules() {\n const mappedAttributeRules: AttributeRulesMap = createAttributeRulesMap(\n product\n )\n\n const attributesWithId = Object.keys(variants || {}).map((key) => {\n return {\n variantId: variants?.[key]._id,\n attributes: variants?.[key].attributes,\n }\n })\n\n const combinationsMap = createCombinationsMap(\n Object.keys(mappedAttributeRules),\n attributesWithId\n )\n\n assignCombinationsToAttributeRules(mappedAttributeRules, combinationsMap)\n\n return {\n combinations: combinationsMap,\n attributeRules: mappedAttributeRules,\n }\n }\n\n function getDefaultVariant() {\n if (!defaultVariantId) return null\n\n return variants[defaultVariantId]\n }\n\n function selectVariantById(id: string) {\n setSelectedVariant(variants[id])\n }\n\n function selectVariantByAttribute(key: string) {\n const id = combinations[key]?.value\n setSelectedVariant(variants[id])\n }\n\n function selectVariantByCombination(key: string, value: string) {\n const id = combinations[key].params[value]\n setSelectedVariant(variants[id])\n }\n\n function selectVariantOptions(definitionKey: string, optionKey: string) {\n if (selectedVariant) {\n const newSelectedVariant = { ...selectedVariant }\n\n newSelectedVariant.selectedOptions = newSelectedVariant.selectedOptions.filter(\n (opt) => opt.definitionKey !== definitionKey\n )\n\n newSelectedVariant.selectedOptions = [\n ...newSelectedVariant.selectedOptions,\n {\n definitionKey,\n optionKey,\n },\n ]\n\n newSelectedVariant.mappedSelectedOptions = newSelectedVariant.selectedOptions.map(\n (option) => createSelectedOption2(newSelectedVariant.options, option)\n )\n\n setSelectedVariant(newSelectedVariant)\n }\n }\n\n function getSelectedAttribute(rule: string, attributes: any[]) {\n const attributeRule = attributeRules[rule]?.values\n let result\n\n attributes.forEach((currentKey) => {\n const found = attributeRule?.[currentKey.value]\n if (found) result = { id: currentKey.value, name: rule, ...found }\n })\n\n return (result as unknown) as {\n id: string\n name: string\n label: string\n extra: any\n combinations: {\n [id: string]: string\n }\n }\n }\n\n function getVariantById(id: string) {\n return variants?.[id]\n }\n\n function getVariantByAttribute(key: string) {\n const id = combinations[key]?.value\n return variants?.[id]\n }\n\n function getVariantByCombination(key: string, value: string) {\n const id = combinations[key]?.params[value]\n return variants?.[id]\n }\n\n function getCustomFieldValue(field: string) {\n return customFields?.[field]\n }\n\n function getCombinationsForAttributeRule(key: string, id: string) {\n const result = attributeRules?.[key]?.values?.[id]\n return result\n }\n\n const state = {\n metaData,\n seoData,\n variants,\n selectedVariant,\n attributeRules,\n }\n\n const functions = {\n getVariantById,\n getVariantByAttribute,\n getVariantByCombination,\n selectVariantById,\n selectVariantByAttribute,\n selectVariantByCombination,\n getCombinationsForAttributeRule,\n selectVariantOptions,\n getCustomFieldValue,\n getProductVideos: () => getProductVideos(metaData.assets),\n }\n\n return (\n <ProductStateContext.Provider value={state}>\n <CountDispatchContext.Provider value={functions}>\n {children}\n </CountDispatchContext.Provider>\n </ProductStateContext.Provider>\n )\n}\n\nexport function useProductState() {\n const context = React.useContext(ProductStateContext)\n if (context === undefined) {\n throw new Error('useProductState must be used within a ProductProvider')\n }\n return context\n}\nexport function useProductFunctions() {\n const context = React.useContext(CountDispatchContext)\n if (context === undefined) {\n throw new Error('useProductDispatch must be used within a ProductProvider')\n }\n return context\n}\n\nexport function useProduct(slug: string, config?: getProductBySlugConfig) {\n return productsApi.useProduct(slug, config)\n}\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../../../src/hooks/useProduct/index.tsx"],"names":["ProductStateContext","React","createContext","undefined","CountDispatchContext","ProductProvider","product","children","defaultVariantId","useState","mounted","setMounted","getCombinationsAndAttributeRules","combinations","attributeRules","setCombinationsAndAttributeRules","getVariantsWithInventory","variants","setVariants","getDefaultVariant","selectedVariant","setSelectedVariant","metaData","useMemo","rootCategory","categories","rootCategoryId","resourceId","metaObj","_id","name","slug","description","shortDescription","metaDescription","brand","brands","resource","logo","assets","sources","url","category","length","reviewRatingStatistics","content","Boolean","map","createProductContent","seoData","seoObj","title","metaTitle","keywords","metaKeywords","customFields","mappedFields","custom","useEffect","data","variantsWithInventory","reduce","_","index","arr","currentVariant","mappedAttributes","mappedOptions","availableOptions","isAvailable","inventorySnapshot","canOrder","updatedVariant","inventory","hasAvailableQuantity","availableQuantity","quantity","attributes","options","selectedOptions","labels","getAttribute","rule","getSelectedAttribute","getAttributeByKey","key","find","a","value","getAvailabilityByStore","availabilities","mappedAttributeRules","attributesWithId","Object","keys","variantId","combinationsMap","selectVariantById","id","selectVariantByAttribute","split","el","collapseKey","selectVariantByCombination","attr","params","selectVariantOptions","definitionKey","optionKey","newSelectedVariant","filter","opt","mappedSelectedOptions","option","attributeRule","values","result","forEach","currentKey","found","getVariantById","getVariantByAttribute","getVariantByCombination","getCustomFieldValue","field","getCombinationsForAttributeRule","collapsedImages","state","functions","getProductVideos","useProductState","context","useContext","Error","useProductFunctions","useProduct","config","productsApi"],"mappings":"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","sourcesContent":["import React from 'react'\nimport {\n ProductDTO,\n ProductVariantDTO,\n AttributeRuleDTO,\n ProductAttributeDraftDTO,\n SelectedOptionDTO,\n ReviewRatingStatisticsDTO,\n AssetSourceDTO,\n} from '@sentecacommerce/sdk'\nimport { getTranslatableField } from '../../'\nimport {\n assignCombinationsToAttributeRules,\n createCombinationsMap,\n createCustomFieldsMap,\n createProductContent,\n createAttributeRulesMap,\n createMappedAttributes,\n processAvailabilityPerStore,\n getProductVideos,\n createMappedOptions,\n createSelectedOption2,\n SelectedOptionType,\n formatCategories,\n createLabelsMap,\n createCollapseKeyImagesMap,\n} from './utils'\nimport { productsApi, getProductBySlugConfig } from '../../api/productsApi'\nimport { assetsFieldsToMap, AssetsMap } from '../../utils/assetsToMap'\n\nexport { AssetSourceDTO }\nexport interface OptionsType {\n definitionKey: string\n label: string\n elements?: SubOptionType[]\n}\n\nexport interface SubOptionType {\n optionKey: string\n label: string\n imageIndex?: number\n}\n\nexport interface ContentType {\n key: string\n name?: string\n content?: string\n}\n\nexport interface MetaInfoCategoryType {\n name: string\n id: string\n link: string\n}\n\nexport interface MetaInformationType {\n _id?: string\n name?: string\n slug?: string\n description?: string\n shortDescription?: string\n reviewRatingStatistics?: ReviewRatingStatisticsDTO\n brand: {\n _id?: string\n name?: string\n slug?: string\n logo?: string\n }\n category: {\n _id?: string\n name?: string\n slug?: string\n }\n rootCategory: {\n _id?: string\n name?: string\n slug?: string\n }\n categories?: MetaInfoCategoryType[]\n content?: ContentType[]\n assets?: AssetsMap\n}\n\ninterface SeoInformationType {\n title?: string\n description?: string\n keywords?: string\n}\n\ninterface AttributeRulesType extends AttributeRuleDTO {\n label: string\n values: {\n [id: string]: {\n label: string\n extra: any\n combinations: {\n [id: string]: string\n }\n }\n }\n}\n\nexport interface VariantType\n extends Omit<\n ProductVariantDTO,\n 'attributes' | 'availableOptions' | 'selectedOptions' | 'labels'\n > {\n attributes: ProductAttributeDraftDTO[]\n options?: OptionsType[]\n selectedOptions: SelectedOptionDTO[]\n mappedSelectedOptions?: SelectedOptionType[]\n isAvailable: boolean\n quantity?: number\n inventory: {\n hasAvailableQuantity?: boolean\n availableQuantity?: number\n }\n labels?: string[]\n getAttribute: (\n rule: string\n ) => {\n id: string\n label: string\n name: string\n extra: any\n combinations: {\n [id: string]: string\n }\n }\n getAttributeByKey: (key: string) => undefined | any\n getAvailabilityByStore: () => InventoryAvailabilityType[] | undefined\n}\ninterface VariantMap {\n [productId: string]: VariantType\n}\n\nexport interface BooleanKVP {\n [sku: string]: boolean | undefined\n}\n\nexport interface AttributeRulesMap {\n [name: string]: AttributeRulesType\n}\n\nexport interface CombinationsMap {\n [id: string]: {\n value: string\n params: {\n [id: string]: string\n }\n }\n}\n\nexport interface InventoryAvailabilityType {\n storeName: string\n availableQuantity: number\n acceptsBackorders: boolean\n restockableInDays: number\n}\n\ntype ProductProviderProps = {\n children: React.ReactNode\n product?: ProductDTO\n defaultVariantId?: string\n query?: {\n storeKey?: string\n currencyCode?: string\n languageCode?: string\n priceListKey?: string\n time?: number\n merchantKey?: string\n expand?: string\n project?: string\n }\n}\n\ntype ProductStateContextType = {\n attributeRules: AttributeRulesMap\n metaData: MetaInformationType\n seoData: SeoInformationType\n variants?: VariantMap\n selectedVariant?: VariantType | null\n collapsedImages?: object\n}\n\nexport type VideoType = {\n type: string\n source: string\n iframe: JSX.Element\n thumb: {\n url: string\n }\n}\n\ntype CountFunctionsContextType = {\n selectVariantById: (id: string) => void\n selectVariantByAttribute: (key: string) => void\n selectVariantByCombination: (key: string, value: string) => void\n selectVariantOptions: (optionId: string, elementId: string) => void\n getVariantById: (id: string) => VariantType\n getVariantByAttribute: (key: string) => VariantType\n getVariantByCombination: (key: string, value: string) => VariantType\n getCustomFieldValue: (field: string) => boolean | undefined\n getCombinationsForAttributeRule: (\n key: string,\n id: string\n ) => {\n label: string\n extra: any\n combinations: {\n [id: string]: string\n }\n }\n getProductVideos: () => VideoType[]\n}\n\nconst ProductStateContext = React.createContext<\n ProductStateContextType | undefined\n>(undefined)\nconst CountDispatchContext = React.createContext<\n CountFunctionsContextType | undefined\n>(undefined)\n\nexport function ProductProvider({\n product,\n children,\n defaultVariantId,\n}: ProductProviderProps) {\n const [mounted, setMounted] = React.useState(false)\n\n const [\n { combinations, attributeRules },\n setCombinationsAndAttributeRules,\n ] = React.useState<{\n combinations: CombinationsMap\n attributeRules: AttributeRulesMap\n }>(getCombinationsAndAttributeRules)\n\n const [variants, setVariants] = React.useState<VariantMap>(\n getVariantsWithInventory\n )\n\n const [\n selectedVariant,\n setSelectedVariant,\n ] = React.useState<VariantType | null>(getDefaultVariant)\n\n const metaData = React.useMemo(() => {\n const rootCategory = product?.categories?.[0]\n const rootCategoryId = rootCategory?.resourceId\n\n const metaObj: MetaInformationType = {\n _id: product?._id,\n name:\n getTranslatableField(selectedVariant?.name) ||\n getTranslatableField(product?.name),\n slug: getTranslatableField(product?.slug),\n description:\n getTranslatableField(selectedVariant?.description) ||\n getTranslatableField(product?.description),\n shortDescription:\n getTranslatableField(selectedVariant?.metaDescription) ||\n getTranslatableField(product?.metaDescription),\n brand: {\n _id: product?.brands?.[0]?.resourceId,\n name: getTranslatableField(product?.brands?.[0]?.resource?.name),\n slug: getTranslatableField(product?.brands?.[0]?.resource?.slug),\n logo: product?.brands?.[0]?.resource?.assets?.[0]?.sources?.[0]?.url,\n },\n category: {\n _id: product?.categories?.[product?.categories?.length - 1]?.resourceId,\n name: getTranslatableField(\n product?.categories?.[product?.categories?.length - 1]?.resource?.name\n ),\n slug: getTranslatableField(\n product?.categories?.[product?.categories?.length - 1]?.resource?.slug\n ),\n },\n rootCategory: {\n _id: rootCategoryId,\n name: getTranslatableField(rootCategory?.resource?.name),\n slug: getTranslatableField(rootCategory?.resource?.slug),\n },\n categories: formatCategories(product?.categories, rootCategoryId),\n reviewRatingStatistics: product?.reviewRatingStatistics,\n content: Boolean(\n selectedVariant?.content?.map(createProductContent).length\n )\n ? selectedVariant?.content?.map(createProductContent)\n : product?.content?.map(createProductContent),\n assets: assetsFieldsToMap(product?.assets),\n }\n return metaObj\n }, [\n product?._id,\n product?.brands,\n product?.content,\n product?.description,\n product?.metaDescription,\n product?.name,\n product?.slug,\n product?.assets,\n selectedVariant,\n ])\n\n const seoData = React.useMemo(() => {\n const seoObj: SeoInformationType = {\n title:\n getTranslatableField(selectedVariant?.metaTitle) ||\n getTranslatableField(product?.metaTitle),\n description:\n getTranslatableField(selectedVariant?.metaDescription) ||\n getTranslatableField(product?.metaDescription),\n keywords:\n getTranslatableField(selectedVariant?.metaKeywords) ||\n getTranslatableField(product?.metaKeywords),\n }\n return seoObj\n }, [\n product?.metaDescription,\n product?.metaKeywords,\n product?.metaTitle,\n selectedVariant,\n ])\n\n const customFields = React.useMemo(() => {\n const mappedFields = createCustomFieldsMap(product?.custom) as BooleanKVP\n return mappedFields\n }, [product?.custom])\n\n React.useEffect(() => {\n // prevent unnecessary calculations\n if (mounted) {\n setVariants(getVariantsWithInventory())\n }\n }, [product])\n\n React.useMemo(() => {\n // prevent unnecessary calculations\n if (!mounted) {\n return setMounted(true)\n }\n\n const data = getCombinationsAndAttributeRules()\n\n setCombinationsAndAttributeRules(data)\n }, [variants])\n\n function getVariantsWithInventory() {\n const variantsWithInventory = product?.variants?.reduce(\n (map: any, _, index, arr) => {\n const currentVariant = arr[index] as ProductVariantDTO\n\n const mappedAttributes = createMappedAttributes(currentVariant)\n\n const mappedOptions =\n createMappedOptions(currentVariant?.availableOptions) || []\n\n const isAvailable = currentVariant?.inventorySnapshot?.canOrder\n\n const updatedVariant: VariantType = {\n ...currentVariant,\n inventory: {\n hasAvailableQuantity: currentVariant.inventorySnapshot?.canOrder,\n availableQuantity:\n currentVariant.inventorySnapshot?.availableQuantity,\n },\n isAvailable: isAvailable ? true : false,\n quantity: isAvailable\n ? currentVariant?.inventorySnapshot?.availableQuantity\n : 0,\n attributes: mappedAttributes,\n options: mappedOptions,\n selectedOptions: [],\n labels: createLabelsMap(currentVariant.labels),\n getAttribute: (rule: string) =>\n getSelectedAttribute(rule, mappedAttributes),\n getAttributeByKey: (key: string) =>\n mappedAttributes.find((a) => a.name === key)?.value,\n getAvailabilityByStore: () =>\n processAvailabilityPerStore(\n currentVariant?.inventorySnapshot?.availabilities\n ),\n }\n\n map[currentVariant._id] = updatedVariant\n\n return map\n },\n {}\n )\n\n return variantsWithInventory || {}\n }\n\n function getCombinationsAndAttributeRules() {\n const mappedAttributeRules: AttributeRulesMap = createAttributeRulesMap(\n product\n )\n\n const attributesWithId = Object.keys(variants || {}).map((key) => {\n return {\n variantId: variants?.[key]._id,\n attributes: variants?.[key].attributes,\n }\n })\n\n const combinationsMap = createCombinationsMap(\n Object.keys(mappedAttributeRules),\n attributesWithId\n )\n\n assignCombinationsToAttributeRules(mappedAttributeRules, combinationsMap)\n\n return {\n combinations: combinationsMap,\n attributeRules: mappedAttributeRules,\n }\n }\n\n function getDefaultVariant() {\n if (!defaultVariantId) return null\n\n return variants[defaultVariantId]\n }\n\n function selectVariantById(id: string) {\n setSelectedVariant(variants[id])\n }\n\n function selectVariantByAttribute(key: string) {\n // Get by collapseKey for SD\n const split = key.split(':')\n if (split[0] === 'collapseKey') {\n const id = Object.keys(variants).find(\n (el) => variants[el].collapseKey === split[1]\n )\n return setSelectedVariant(variants[id as string])\n }\n const id = combinations[key]?.value\n setSelectedVariant(variants[id])\n }\n\n function selectVariantByCombination(key: string, value: string) {\n // Take collapseKey for SD\n const split = value.split(':')\n if (split[0] === 'collapseKey') {\n const id = Object.keys(variants).find(\n (el) =>\n variants[el].collapseKey === split[1] &&\n variants[el].attributes.find((attr) => attr.name === 'size')\n ?.value === key\n )\n return setSelectedVariant(variants[id as string])\n }\n const id = combinations[key].params[value]\n setSelectedVariant(variants[id])\n }\n\n function selectVariantOptions(definitionKey: string, optionKey: string) {\n if (selectedVariant) {\n const newSelectedVariant = { ...selectedVariant }\n\n newSelectedVariant.selectedOptions = newSelectedVariant.selectedOptions.filter(\n (opt) => opt.definitionKey !== definitionKey\n )\n\n newSelectedVariant.selectedOptions = [\n ...newSelectedVariant.selectedOptions,\n {\n definitionKey,\n optionKey,\n },\n ]\n\n newSelectedVariant.mappedSelectedOptions = newSelectedVariant.selectedOptions.map(\n (option) => createSelectedOption2(newSelectedVariant.options, option)\n )\n\n setSelectedVariant(newSelectedVariant)\n }\n }\n\n function getSelectedAttribute(rule: string, attributes: any[]) {\n const attributeRule = attributeRules[rule]?.values\n let result\n\n attributes.forEach((currentKey) => {\n const found = attributeRule?.[currentKey.value]\n if (found) result = { id: currentKey.value, name: rule, ...found }\n })\n\n return (result as unknown) as {\n id: string\n name: string\n label: string\n extra: any\n combinations: {\n [id: string]: string\n }\n }\n }\n\n function getVariantById(id: string) {\n return variants?.[id]\n }\n\n function getVariantByAttribute(key: string) {\n const id = combinations[key]?.value\n return variants?.[id]\n }\n\n function getVariantByCombination(key: string, value: string) {\n const id = combinations[key]?.params[value]\n return variants?.[id]\n }\n\n function getCustomFieldValue(field: string) {\n return customFields?.[field]\n }\n\n function getCombinationsForAttributeRule(key: string, id: string) {\n const result = attributeRules?.[key]?.values?.[id]\n return result\n }\n\n const collapsedImages = createCollapseKeyImagesMap(product)\n\n const state = {\n metaData,\n seoData,\n variants,\n selectedVariant,\n attributeRules,\n collapsedImages,\n }\n\n const functions = {\n getVariantById,\n getVariantByAttribute,\n getVariantByCombination,\n selectVariantById,\n selectVariantByAttribute,\n selectVariantByCombination,\n getCombinationsForAttributeRule,\n selectVariantOptions,\n getCustomFieldValue,\n getProductVideos: () => getProductVideos(metaData.assets),\n }\n\n return (\n <ProductStateContext.Provider value={state}>\n <CountDispatchContext.Provider value={functions}>\n {children}\n </CountDispatchContext.Provider>\n </ProductStateContext.Provider>\n )\n}\n\nexport function useProductState() {\n const context = React.useContext(ProductStateContext)\n if (context === undefined) {\n throw new Error('useProductState must be used within a ProductProvider')\n }\n return context\n}\nexport function useProductFunctions() {\n const context = React.useContext(CountDispatchContext)\n if (context === undefined) {\n throw new Error('useProductDispatch must be used within a ProductProvider')\n }\n return context\n}\n\nexport function useProduct(slug: string, config?: getProductBySlugConfig) {\n return productsApi.useProduct(slug, config)\n}\n"],"file":"index.js"}