{"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":""}