{"version":3,"file":"static/js/24546.8e7a87a4.chunk.js","mappings":"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","sources":["webpack:///./src/hooks/use-add-to-favorite.ts","webpack:///./src/hooks/use-favorites.ts","webpack:///./src/utils/delay.util.ts","webpack:///./src/hooks/use-push-notifications.ts","webpack:///./src/hooks/use-add-to-cart.ts","webpack:///./src/hooks/use-extendedsummary.ts","webpack:///./src/hooks/use-pna-pricing.ts"],"sourcesContent":["import { useMutation, useQueryClient } from '@tanstack/react-query';\nimport { useApiPost, useApiDelete } from 'mf_core/query';\nimport { useUserInfo } from 'mf_core/auth';\n\nexport function useAddToFavoriteMutation() {\n  const apiPost = useApiPost<boolean>();\n  const queryClient = useQueryClient();\n  const userInfo = useUserInfo();\n\n  return useMutation({\n    mutationFn: (body: { sku: string }) => {\n      const requestAddToFavorite: AddToFavoriteRequestTO = {\n        sku: body.sku,\n      };\n      const data = apiPost(\n        '/product/v1/users/favorite-product',\n        requestAddToFavorite\n      );\n      return data;\n    },\n    onError: (error) => {\n      console.error(error);\n    },\n    onSuccess: () => {\n      queryClient.invalidateQueries({\n        queryKey: [\n          `/product/v1/users/${\n            userInfo && userInfo.preferred_username\n          }/favoriteproductids`,\n        ],\n      });\n      queryClient.invalidateQueries({\n        queryKey: [\n          `/product/v1/users/${\n            userInfo && userInfo.preferred_username\n          }/favoriteproducts`,\n        ],\n      });\n    },\n  });\n}\n\nexport function useDeleteFavoriteMutation() {\n  const apiDelete = useApiDelete<boolean>();\n  const queryClient = useQueryClient();\n  const userInfo = useUserInfo();\n\n  return useMutation({\n    mutationFn: (body: { sku: string }) => {\n      const requestAddToFavorite: AddToFavoriteRequestTO = {\n        sku: body.sku,\n      };\n      const data = apiDelete(\n        '/product/v1/users/favorite-product',\n        requestAddToFavorite\n      );\n      return data;\n    },\n    onError: (error) => {\n      console.error(error);\n    },\n    onSuccess: () => {\n      queryClient.invalidateQueries({\n        queryKey: [\n          `/product/v1/users/${\n            userInfo && userInfo.preferred_username\n          }/favoriteproducts`,\n        ],\n      });\n      queryClient.invalidateQueries({\n        queryKey: [\n          `/product/v1/users/${\n            userInfo && userInfo.preferred_username\n          }/favoriteproductids`,\n        ],\n      });\n    },\n  });\n}\n\nexport type AddToFavoriteRequestTO = {\n  sku: string;\n};\n","import { useApiQuery } from 'mf_core/query';\nimport { useUserInfo } from 'mf_core/auth';\nimport { Products } from '../types/productsearchresponse.types';\nimport { ProductSearchRequestTO } from '../types/productsearchrequest.types';\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\nimport { delay } from '../utils/delay.util';\n\nexport function useFavorites(params: ProductSearchRequestTO) {\n  const userInfo = useUserInfo();\n  return useApiQuery<Products>(\n    `/product/v1/users/${\n      userInfo && userInfo.preferred_username\n    }/favoriteproducts`,\n    params,\n    { enabled: Boolean(userInfo), refetchOnMount: 'always' }\n  );\n}\n\nexport function useFavoriteProductIds() {\n  const userInfo = useUserInfo();\n  return useApiQuery<ProductIdsTO>(\n    `/product/v1/users/${\n      userInfo && userInfo.preferred_username\n    }/favoriteproductids`,\n    undefined,\n    { enabled: Boolean(userInfo), refetchOnMount: 'always' }\n  );\n}\n\nexport function useModifyFavoritesMutation(_sku: string) {\n  const queryClient = useQueryClient();\n  return useMutation({\n    mutationFn: async (variables: any) => {\n      const previousFavoritesData = queryClient.getQueryData<any>([\n        'favorites',\n      ]);\n      const newFavoritesData = {\n        ...previousFavoritesData,\n        properties: { ...variables },\n      };\n      await saveFavorite();\n      return { newFavoritesData, previousFavoritesData };\n    },\n    onError: (_data, _variables, context: any) => {\n      queryClient.setQueryData(['favorites'], context.previousFavoritesData);\n    },\n    onSuccess: (_data, _variables, context: any) => {\n      queryClient.setQueryData(['favorites'], context.newFavoritesData);\n    },\n  });\n}\n\nasync function saveFavorite() {\n  //TO DO: Make call to favorite CRUD api here\n  await delay(1000);\n  return Promise.resolve(true);\n}\n\nexport type ProductIdsTO = {\n  productIds: string[];\n};\n","export function delay(time: number) {\n  return new Promise((resolve) => setTimeout(resolve, time));\n}\n","import { Notification } from '@im/ui-lib/HeaderX4C/internal/NotificationDrop/NotificationItem';\nimport { QueryClient, useQuery, useQueryClient } from '@tanstack/react-query';\nimport { useApiGet, useApiPatch, useApiPost } from 'mf_core/query';\nimport { useCallback, useEffect } from 'react';\nimport parse from 'html-react-parser';\nimport {\n  TokenContent,\n  getAuthorizationHeader,\n  useDecodedToken,\n} from 'mf_core/auth';\nimport { SiteConfig, useBuildVars, useSiteConfig } from 'mf_core/config';\nimport { HubConnectionBuilder } from '@microsoft/signalr';\nimport { useLocalizationContext } from '@im/react-localization';\n\nconst EXP_API_ROUTE = '/account-management/v1/notifications';\nconst GNE_WSS_ROUTE = '/gne-pushnotifications/v1/ws-conns';\nconst EXP_API_PATCH_ROUTE = `${EXP_API_ROUTE}/ids`;\nconst EXP_API_PATCH_UPDATE_SUBSCRIBER = `${EXP_API_ROUTE}/update-subscriber`;\nconst SHOW_LAST_GNE_NOTIFICATIONS_IN_DAYS = 30;\nconst DEFAULT_PAGE = 1;\nconst DEFAULT_PAGE_SIZE = 500;\n\nlet IS_CONNECTION_SETUP = false;\n\nexport function usePushNotifications(isFeatureEnabled: boolean) {\n  const queryClient = useQueryClient();\n  const apiPost = useApiPost();\n  const apiGet = useApiGet<Notification[]>();\n\n  const authToken = getAuthorizationHeader();\n  const siteConfig = useSiteConfig();\n  const decodedToken = useDecodedToken();\n  const buildConfig = useBuildVars();\n  useLangChangeHandler(isFeatureEnabled);\n\n  const processResponse = useCallback(\n    (response: Notification[]) => {\n      if (response) {\n        response.forEach((item) => {\n          parseNotification(item);\n        });\n      }\n      apiPost('/account-management/v1/notifications/setup-subscription', {});\n      const props = {\n        authToken,\n        buildConfig,\n        decodedToken,\n        queryClient,\n        siteConfig,\n      };\n      setupLiveNotifications(props);\n\n      IS_CONNECTION_SETUP = true;\n    },\n    [apiPost, authToken, buildConfig, decodedToken, queryClient, siteConfig]\n  );\n\n  const apiQuery = useQuery({\n    enabled: isFeatureEnabled,\n    queryFn: async () => {\n      await delay(10);\n      if (!IS_CONNECTION_SETUP) {\n        return new Promise<Notification[]>((resolve, reject) => {\n          const params = getParams();\n          apiGet(EXP_API_ROUTE, params)\n            .then((response) => {\n              processResponse(response);\n              resolve(response);\n            })\n            .catch((err) => {\n              console.error(err);\n              reject();\n            });\n        });\n      } else {\n        const notifications =\n          queryClient.getQueryData<Notification[]>([EXP_API_ROUTE]) ?? [];\n        return Promise.resolve(notifications);\n      }\n    },\n    queryKey: [EXP_API_ROUTE],\n  });\n\n  const apiPatch = useApiPatch();\n  const notifications = apiQuery.data;\n\n  const markAsRead = useCallback(\n    (messageId: string) => {\n      if (notifications) {\n        apiPatch(EXP_API_PATCH_ROUTE, [messageId]).then(() => {\n          notifications.forEach((item) => {\n            if (item.messageId === messageId) {\n              item.isRead = true;\n              return;\n            }\n          });\n          queryClient.setQueryData([EXP_API_ROUTE], notifications);\n        });\n      }\n    },\n    [apiPatch, notifications, queryClient]\n  );\n\n  const markAllAsRead = useCallback(() => {\n    if (notifications) {\n      const unreadNotifications = notifications.filter((item) => !item.isRead);\n      const messageIds = unreadNotifications.map((item) => {\n        return item.messageId;\n      });\n      apiPatch(EXP_API_PATCH_ROUTE, messageIds).then(() => {\n        notifications.forEach((item) => {\n          if (!item.isRead) {\n            item.isRead = true;\n          }\n        });\n        queryClient.setQueryData([EXP_API_ROUTE], notifications);\n      });\n    }\n  }, [apiPatch, notifications, queryClient]);\n\n  return { apiQuery, markAllAsRead, markAsRead, useLangChangeHandler };\n}\n\nfunction getParams() {\n  const current_date = new Date();\n  const from_date = new Date();\n\n  //reset time to 12 am\n  current_date.setHours(23, 59, 59, 999);\n  from_date.setHours(0, 0, 0, 0);\n\n  from_date.setDate(\n    current_date.getDate() - SHOW_LAST_GNE_NOTIFICATIONS_IN_DAYS\n  );\n\n  const params = {\n    FromDate: from_date.toISOString(),\n    Page: DEFAULT_PAGE,\n    Size: DEFAULT_PAGE_SIZE,\n    ToDate: current_date.toISOString(),\n    onlySummary: true,\n  };\n  return params;\n}\n\nfunction parseNotification(message: Notification) {\n  if (typeof message.content === 'string')\n    message.content = parse(message.content);\n  if (typeof message.title === 'string') message.title = parse(message.title);\n}\n\nfunction delay(time: number) {\n  return new Promise((resolve) => setTimeout(resolve, time));\n}\n\ntype LiveNotificationProps = {\n  authToken: string;\n  buildConfig: { [key: string]: string };\n  decodedToken?: TokenContent;\n  queryClient: QueryClient;\n  siteConfig: SiteConfig;\n};\n\nfunction setupLiveNotifications(props: LiveNotificationProps) {\n  const { authToken, buildConfig, decodedToken, queryClient, siteConfig } =\n    props;\n  const subscriberAppName = buildConfig['GNE_SUBSCRIBER_APP'];\n  const token = authToken.replace('Bearer ', '');\n  const userId = decodedToken?.userId.replace('{', '').replace('}', '');\n  const baseUrl = getBaseUrl(buildConfig.buildEnvironment);\n  const connection = new HubConnectionBuilder()\n    .withUrl(\n      `${baseUrl}${GNE_WSS_ROUTE}?appname=${subscriberAppName}&uid=${userId}&cc=${siteConfig.siteCode}&senderid=IMCEP&authtoken=${token}`\n    )\n    .withAutomaticReconnect()\n    .build();\n\n  connection\n    .start()\n    .then(() => {\n      connection.on('sendNotification', (message) => {\n        message.isRead = false;\n        parseNotification(message);\n        const notificationData =\n          queryClient.getQueryData<Notification[]>([EXP_API_ROUTE]) ?? [];\n        const isDuplicateMessage = notificationData.find((item) => {\n          return item.messageId === message.messageId;\n        });\n        if (!isDuplicateMessage) {\n          queryClient.setQueryData(\n            [EXP_API_ROUTE],\n            [message, ...notificationData]\n          );\n        }\n      });\n    })\n    .catch((err) => {\n      console.error('GNE WS Connection Error: --> ', err);\n    });\n}\n\nfunction getBaseUrl(env: string) {\n  return env.includes('prod')\n    ? 'https://api.ingrammicro.com'\n    : 'https://api-qa.ingrammicro.com';\n}\n\nfunction useLangChangeHandler(isFeatureEnabled: boolean) {\n  const { locale } = useLocalizationContext();\n  const apiPatch = useApiPatch();\n  useEffect(() => {\n    if (isFeatureEnabled) {\n      apiPatch(EXP_API_PATCH_UPDATE_SUBSCRIBER, {});\n    }\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [locale, isFeatureEnabled]);\n}\n","import { useMutation, useQueryClient } from '@tanstack/react-query';\nimport { useApiPost } from 'mf_core/query';\n\nexport function useAddToCartMutation() {\n  const apiPost = useApiPost<boolean>();\n  const queryClient = useQueryClient();\n\n  return useMutation({\n    mutationFn: (body: {\n      engineId?: string;\n      placementLocation?: string | undefined;\n      qty: number;\n      recommendationId?: string;\n      sku: string;\n    }) => {\n      const requestAddToCart: AddToCartRequestTO = {\n        engineId: body.engineId || '',\n        quantity: body.qty,\n        recommendationId: body.recommendationId || '',\n        sku: body.sku,\n      };\n      const data = apiPost(\n        '/cart/v1/cart-operations/default/add-product-lines-lite',\n        requestAddToCart\n      );\n      return data;\n    },\n    onError: (error) => {\n      console.error(error);\n    },\n    onSuccess: (data, body) => {\n      queryClient.invalidateQueries({\n        queryKey: ['/cart/v1/cart-list/default/header-data'],\n      });\n      if (body.placementLocation === 'CartPageZone') {\n        queryClient.invalidateQueries({\n          queryKey: ['/cart/v1/cart-data/default', null, null],\n        });\n      }\n    },\n  });\n}\n\nexport function useAddToCartMultipleMutation() {\n  const apiPost = useApiPost<boolean>();\n  const queryClient = useQueryClient();\n\n  return useMutation({\n    mutationFn: (listOfProducts: any[]) => {\n      const data = apiPost(\n        '/cart/v1/cart-operations/default/add-multiple-product-lines-lite',\n        listOfProducts\n      );\n      return data;\n    },\n    onError: (error) => {\n      console.error(error);\n    },\n    onSuccess: (data, body) => {\n      queryClient.invalidateQueries({\n        queryKey: ['/cart/v1/cart-list/default/header-data'],\n      });\n    },\n  });\n}\n\nexport type AddToCartRequestTO = {\n  engineId?: string;\n  quantity: number;\n  recommendationId?: string;\n  sku: string;\n};\n","/* eslint-disable max-lines */\nimport { useApiGet, useApiQuery } from 'mf_core/query';\nimport { useMutation } from '@tanstack/react-query';\nimport { MediaTO } from './use-productmedia';\n\n/*\nThis function returns extended summary.\nparam: It expects sku as input parameter.\n*/\n\nexport function useExtendedSummaryQuery(sku: string, inculture: string) {\n  return useApiQuery<AttributesResultTO>(\n    `/product-details/v1/product-summaries/${sku}/attributes?q=all`,\n    {\n      culture: inculture,\n    },\n    {\n      enabled: Boolean(sku && sku !== ''),\n    },\n    undefined,\n    { isLogoutApi: true }\n  );\n}\n\nexport function useExtendedSummaryQueryMutation() {\n  const apiGet = useApiGet<AttributesResultTO>();\n  return useMutation({\n    mutationFn: (params: any) => {\n      let url = `/product-details/v1/product-summaries/${\n        params.sku\n      }/attributes?q=all&enableClientSidePNA=${\n        params.enableClientSidePNA ?? false\n      }`;\n\n      if (params?.culture) {\n        url += `&culture=${params?.culture}`;\n      }\n      const data = apiGet(url, {\n        'IM-MicroFrontendID': 'cep_app_pdp_recommendation',\n      });\n\n      return data;\n    },\n  });\n}\n\n/*\nThis function returns extended summary.\nparam: It expects sku list as input parameter.\n*/\nexport function useExtendedSummaryLightQueryMutation() {\n  const apiGet = useApiGet<LightSummaryResultTO>();\n\n  return useMutation({\n    mutationFn: (skulist: string) => {\n      const data = apiGet(\n        `/product/v1/productsummaries?q={'productIdentifiers':${skulist}, 'webonly': true,'vendorAuthorization': true}`\n      );\n\n      return data;\n    },\n  });\n}\n\nexport function useExtendedSummaryLightQuery(skulist: string) {\n  return useApiQuery<LightSummaryResultTO>(\n    `/product/v1/productsummaries?q={'productIdentifiers':[${skulist}]}`\n  );\n}\n\nexport type LightSummaryResultTO = {\n  productSummaries: ProductSummaryTO[];\n};\n\nexport type ProductSummaryTO = {\n  addToCart: AddToCartTO;\n  flags: FlagDefTO[];\n  globalpartnumber: string;\n  imageUrl: string;\n  inventoryInformation: InventoryInformationTO;\n  isAuthorizedToBuy: boolean;\n  isdirectship: boolean;\n  isdirectshiporderable: boolean;\n  isdownloadable: boolean;\n  islicenseproduct: boolean;\n  iswarranty: boolean;\n  languagecode: string;\n  manufacturePartNumber: string;\n  partNumber: string;\n  pricingInformation: LightPricingInformationTO;\n  shortdescription: string;\n  skutype: string;\n  upcean: string;\n  vendorSubRange: string;\n  vendorcode: string;\n  vendorname: string;\n};\ntype LightPricingInformationTO = {\n  currency: string;\n  customerPrice: number;\n  customerPriceString: string;\n  dealerPrice: number;\n  discountAmount: number;\n  msrpPrice: number;\n  msrpPriceString: string;\n  taxTotal: number;\n};\ntype LightWareHouseListTO = {\n  estimatedLeadTime: string;\n  id: string;\n  name: string;\n  onOrderQuantity: number;\n  quantityAvailable: number;\n  warehouseLocation: string;\n};\ntype InventoryInformationTO = {\n  message: string;\n  totalAvailableQuantity: number;\n  warehouseDetails: LightWareHouseListTO[];\n};\n\nexport type SpecificationTO = {\n  attributedisplay: string;\n  attributename: string;\n  attributevalue: string;\n  headername: string;\n};\ntype FutureBulletPointsTO = {\n  sequence: number;\n  value: string;\n};\nexport type IndicatorsTO = {\n  hasacopquantitybreak: boolean;\n  hasacopspecialprice: boolean;\n  hasacopwebdiscount: boolean;\n  hasbundle: boolean;\n  hascrosssell: boolean;\n  hasreturnlimits: boolean;\n  hasspecialbid: boolean;\n  hasstdquantitybreak: boolean;\n  hasstdspecialprice: boolean;\n  hasstgwebdiscount: boolean;\n  hasstock: boolean;\n  hasstockororder: boolean;\n  haswarranty: boolean;\n  isblowout: boolean;\n  isclearanceproduct: boolean;\n  iscustownproduct: boolean;\n  isdigitaltype: boolean;\n  isdirectship: boolean;\n  isdirectshiporderable: boolean;\n  isdiscontinued: boolean;\n  isdownloadable: boolean;\n  isenduserrequired: boolean;\n  isexportabletocountry: boolean;\n  isheavyweight: boolean;\n  ishptopconfigproduct: boolean;\n  islicenseproduct: boolean;\n  islremodel: boolean;\n  isltl: boolean;\n  isoversizeproduct: boolean;\n  ispreorderproduct: boolean;\n  ispurchasable: boolean;\n  isrefurbished: boolean;\n  isreplacementproduct: boolean;\n  iswarranty: boolean;\n  newproduct: boolean;\n  replacementtype: null;\n  skutype?: string;\n};\ntype ProductWeightTO = {\n  plantId: string;\n  weight: number;\n  weightUnit: string;\n};\ntype ProductMeasurementTO = {\n  dimensionunit: null;\n  height: string;\n  isBulkFreight: boolean;\n  length: string;\n  netWeight: string;\n  productWeight: ProductWeightTO[];\n  width: string;\n};\nexport type PnaResponseTO = {\n  hasReserveStocks: boolean;\n  message: string;\n  pricing: PricingTO;\n  sku: string;\n  totalAvailableQuantity: number;\n  upc: string;\n  warehouseList: WarehouseListTO[];\n};\n\nexport type PricingTO = {\n  averageCost: number;\n  costIngram: number;\n  costIngram1: number;\n  currencyCode: string;\n  customerPrice: number;\n  customerPriceString: string;\n  dealerPrice: number;\n  dealerPrice1: number;\n  exchangeRate: number;\n  extendedNetAmount: number;\n  hardPriceFloor: number;\n  hardPriceFloorEligible: string;\n  mapPrice: number;\n  msrpPriceString: string;\n  panRetailPrice: number;\n  priceDerived: string;\n  purchaseCurrency: string;\n  replacementCost: number;\n  retailPrice: number;\n  salesCurrency: string;\n  specialBidPrice: true;\n  taxAmount: number;\n  totalAcopApplicablePrice: number;\n  totalAcopDelta: number;\n  totalEnvironmentFee: number;\n  totalFeeAmount: number;\n  totalPromotionAmount: number;\n};\n\nexport type QuantityOnOrderTO = {\n  date: string;\n  leadDays: string;\n  quantity: number;\n  uom: string;\n};\n\nexport type PricingInformation = {\n  availablequantity: number;\n  currency: string;\n  customerPrice: number;\n  dealerPrice: number;\n  discountAmount: number;\n  msrpPrice: number;\n  taxTotal: number;\n};\n\nexport type WarehouseListTO = {\n  averageCost: number;\n  committedQuantity: number;\n  etaDate: string;\n  leadTimeETA: string;\n  numberransitQuantity: number;\n  onOrderQuantity: number;\n  onholdQuantity: number;\n  quantityOnOrder: QuantityOnOrderTO;\n  totalAvailableQuantity: number;\n  warehouseAvailableQuantity: number;\n  warehouseDescription: string;\n  warehouseLocation: string;\n  warehousseId: string;\n};\n\nexport interface AttributesTO {\n  aPlusProvider: string;\n  campaign: CampaignTO[];\n  energyEfficiencyClass: string[];\n  featureBulletPoints: FutureBulletPointsTO[];\n  globalpartnumber: string;\n  indicators: IndicatorsTO;\n  isAuthorised: boolean;\n  language: string;\n  longDescription: string;\n  marketingText: string;\n  pna: PricingInformation;\n  productMeasurement: ProductMeasurementTO;\n  prop65Warning: string;\n  shortDescription: string;\n  sku: string;\n  specifications: SpecificationTO[];\n  upc: string;\n  vendorAuthMessage: string;\n  vendorCode: string;\n  vendorName: string;\n  vendorPartNumber: string;\n  vendorSubRange: string;\n}\n\nexport type MsrpPriceConfigTo = {\n  showExcl_Label: string;\n  showIncl_Label: string;\n  showMSRPInLoggedIn: boolean;\n  showMSRPInLoggedOut: boolean;\n};\n\nexport type ConfigbackofficeTO = {\n  msrpPriceConfig: MsrpPriceConfigTo;\n  productDetailsLoginMode: PriceConfigTO;\n  warrantyUrl: string;\n};\n\nexport type PriceConfigTO = {\n  msrpExclTax: boolean;\n  priceExclTax: boolean;\n  priceInclTax: boolean;\n};\n\nexport type FlagDefTO = {\n  displayName: string;\n  displayPosition: number;\n  toolTipText?: string;\n};\nexport type AddToCartTO = {\n  isDisableAddToCart: boolean;\n  sku: string;\n  tooltip: string;\n};\n\nexport type AttributesResultTO = {\n  addToCart: AddToCartTO[];\n  additionalAttributes: AttributesTO[];\n  configbackOffice: ConfigbackofficeTO;\n  flags: FlagDefTO[];\n  pnaResponse: PnaResponseTO[];\n};\nexport type PDFFilter = {\n  branding: boolean;\n  brandnone: boolean;\n  isallsections: boolean;\n  isbrandingrammicro: boolean;\n  isownprice: boolean;\n  isproductimage: boolean;\n  isrrpexceltax: boolean;\n  isstockstatus: boolean;\n  isvpnsku: boolean;\n  selectedsection: boolean;\n};\nexport type PrintPriceConfigTO = {\n  branding: string;\n  priceProperty: {\n    OwnPrice: boolean;\n    OwnPriceText: string;\n    VPNSKU: boolean;\n    extendedSpecification: boolean;\n    msrpexclTax: boolean;\n    priceExclTax: boolean;\n    productImage: boolean;\n    stock: boolean;\n  };\n  selectAll: boolean;\n};\n\nexport type EmailRequestTO = {\n  additionalAttributes: AttributesTO[];\n  galleryImages: MediaTO;\n  translatedValues: TranslationTO;\n};\n\nexport type TranslationTO = {\n  customerPriceText: string;\n  descriptionText: string;\n  extrafees: string;\n  headerText: string;\n  msrpText: string;\n  specificationText: string;\n};\nexport type CampaignTO = {\n  promotioncode: string;\n  promotionpoints: string;\n  promotiontype: string;\n};\n","import { ObjectMap, useApiPost } from 'mf_core/query';\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\nimport { useDecodedToken } from 'mf_core/auth';\n\nexport function usePNAPricing() {\n  const apiPost = useApiPost();\n\n  return useMutation({\n    mutationFn: (skusList: Array<ObjectMap>) => {\n      const body: ObjectMap = {\n        item: skusList.map((skuData: ObjectMap) => {\n          if (skuData.isCmp) {\n            return {\n              planId: skuData.planId,\n              pricingSource:\n                Number(\n                  skuData?.subscriptionOption?.parentSubscriptionPlan\n                    ?.pricingSource\n                ) ?? null,\n              resources: skuData.resources,\n              subscriptionPeriods: skuData.subscriptionPeriods,\n            };\n          } else if (skuData.isNonTransactional) {\n            return {\n              ingramPartNumber: skuData.partNumber,\n              productExtendedSpecs: skuData.productExtendedSpecs,\n              vendorPartNumber: skuData.manufacturePartNumber,\n            };\n          } else {\n            return {\n              ingramPartNumber: skuData.partNumber,\n              licenseSelectorVendorSubrange: skuData.vendorSubRange,\n              skuType: skuData.skuType,\n              vendorCode: skuData.vendorCode ?? skuData.vendorcode,\n            };\n          }\n        }),\n      };\n\n      const data = apiPost(\n        '/pricing-and-availability/v1/pnas?pnaFilters=includeAvailability=true&includePricing=true&includeProductAttributes=true&includeDiscounts=false&enablePnaLite=true',\n        body,\n        undefined,\n        {\n          'IM-MicroFrontendID': 'cep_app_pdp_recommendation',\n        }\n      );\n\n      return data;\n    },\n  });\n}\n\nexport function useUpdateCMPPricing() {\n  const queryClient = useQueryClient();\n  const apiPost = useApiPost();\n  return useMutation({\n    mutationFn: (body: { pnaitems: ObjectMap }) => {\n      const pnaParams: ObjectMap = body.pnaitems;\n\n      return apiPost(\n        '/pricing-and-availability/v1/pnas?pnaFilters=includeAvailability=true&includePricing=false&includeProductAttributes=false&includeDiscounts=false',\n        {\n          cmpEndUserId: '',\n          item: pnaParams,\n        }\n      );\n    },\n    onError: async (error) => {\n      queryClient.invalidateQueries({\n        queryKey: [\n          `pricing-and-availability/v1/pnas?pnaFilters=includeAvailability=true&includePricing=false&includeProductAttributes=false&includeDiscounts=false`,\n        ],\n      });\n    },\n    onSuccess: async (data) => {\n      queryClient.invalidateQueries({\n        queryKey: [\n          `pricing-and-availability/v1/pnas?pnaFilters=includeAvailability=true&includePricing=false&includeProductAttributes=false&includeDiscounts=false`,\n        ],\n      });\n    },\n  });\n}\n\nexport type DiscountParams = {\n  discountTypes: ObjectMap;\n  forLabel: boolean;\n  isCartPageCall?: boolean;\n  isQuotePageCall?: boolean;\n  params?: ObjectMap;\n  productLineItems: ObjectMap[];\n  quoteGuid?: string;\n  quoteNumber?: string;\n};\n\nexport function useDiscountMutation() {\n  const apiPost = useApiPost();\n  const decodedToken = useDecodedToken();\n  const resellerId = decodedToken?.resellerId || '';\n  const branch = resellerId !== '' ? resellerId.slice(0, 2) : '';\n\n  return useMutation({\n    mutationFn: (discountParams: DiscountParams) => {\n      const body: ObjectMap = {\n        ...discountParams.discountTypes,\n        branch,\n        forLabel: discountParams.forLabel,\n        isCartPageCall: discountParams.isCartPageCall,\n        isGlobalSkuEnabled: false,\n        isQuotePageCall: discountParams.isQuotePageCall,\n        items: discountParams.productLineItems,\n        quoteGuid: discountParams.quoteGuid,\n        quoteNumber: discountParams.quoteNumber,\n      };\n\n      const data = apiPost(\n        '/pricing-and-availability/v1/discounts',\n        body,\n        discountParams.params,\n        {\n          'IM-MicroFrontendID': 'cep_app_recommendation',\n        }\n      );\n\n      return data;\n    },\n  });\n}\n"],"names":["useAddToFavoriteMutation","apiPost","useApiPost","queryClient","useQueryClient","userInfo","useUserInfo","useMutation","mutationFn","body","requestAddToFavorite","sku","onError","error","console","onSuccess","invalidateQueries","queryKey","preferred_username","useDeleteFavoriteMutation","apiDelete","useApiDelete","useFavorites","params","useApiQuery","enabled","Boolean","refetchOnMount","useFavoriteProductIds","undefined","useModifyFavoritesMutation","_sku","async","previousFavoritesData","getQueryData","newFavoritesData","properties","variables","Promise","resolve","setTimeout","saveFavorite","_data","_variables","context","setQueryData","EXP_API_ROUTE","GNE_WSS_ROUTE","EXP_API_PATCH_ROUTE","EXP_API_PATCH_UPDATE_SUBSCRIBER","SHOW_LAST_GNE_NOTIFICATIONS_IN_DAYS","DEFAULT_PAGE","DEFAULT_PAGE_SIZE","IS_CONNECTION_SETUP","usePushNotifications","isFeatureEnabled","apiGet","useApiGet","authToken","getAuthorizationHeader","siteConfig","useSiteConfig","decodedToken","useDecodedToken","buildConfig","useBuildVars","useLangChangeHandler","processResponse","useCallback","response","forEach","item","parseNotification","props","subscriberAppName","token","replace","userId","baseUrl","buildEnvironment","includes","connection","HubConnectionBuilder","withUrl","siteCode","withAutomaticReconnect","build","start","then","on","message","isRead","notificationData","find","messageId","catch","err","setupLiveNotifications","apiQuery","useQuery","queryFn","notifications","reject","current_date","Date","from_date","setHours","setDate","getDate","FromDate","toISOString","Page","Size","ToDate","onlySummary","getParams","apiPatch","useApiPatch","data","markAsRead","markAllAsRead","messageIds","filter","map","content","parse","title","locale","useLocalizationContext","useEffect","useAddToCartMutation","requestAddToCart","engineId","quantity","qty","recommendationId","placementLocation","useAddToCartMultipleMutation","listOfProducts","useExtendedSummaryQuery","inculture","culture","isLogoutApi","useExtendedSummaryQueryMutation","url","enableClientSidePNA","useExtendedSummaryLightQueryMutation","skulist","useExtendedSummaryLightQuery","usePNAPricing","skusList","skuData","isCmp","planId","pricingSource","Number","subscriptionOption","parentSubscriptionPlan","resources","subscriptionPeriods","isNonTransactional","ingramPartNumber","partNumber","productExtendedSpecs","vendorPartNumber","manufacturePartNumber","licenseSelectorVendorSubrange","vendorSubRange","skuType","vendorCode","vendorcode","useUpdateCMPPricing","pnaParams","pnaitems","cmpEndUserId","useDiscountMutation","resellerId","branch","slice","discountParams","discountTypes","forLabel","isCartPageCall","isGlobalSkuEnabled","isQuotePageCall","items","productLineItems","quoteGuid","quoteNumber"],"sourceRoot":""}