{"version":3,"file":"index-B3L8aXfV.js","sources":["../../src/scripts/helpers/cart/index.ts"],"sourcesContent":["import { EventBusSingleton } from '../eventBus';\n\nexport type CartItemType = {\n updateCartPath: string;\n removeFromCartPath: string;\n code: string;\n invoiceId: number;\n imagePath: string | null;\n displayName: string;\n description: string;\n quantity: number;\n placedPrice: number;\n discountedUnitPrice: number | null;\n lineItemCustomerNotesPlaceholder: string;\n lineItemCustomerNotes: string;\n maxQuantity: number;\n minPrice: number;\n maxPrice: number;\n isCheckout: boolean;\n productType: 'course' | 'product' | 'donation' | 'invoice';\n showNotes: boolean;\n editNotesButton: string;\n editDonationButton: string;\n errorMessage: string;\n isNYP: boolean;\n};\n\nexport type CartType = {\n checkoutPath: string | null;\n cartDetailPath: string | null;\n updateCartPath: string | null;\n removeFromCartPath: string | null;\n lineItems: CartItemType[];\n cartHasConflicts: boolean | null;\n courseConflicts: {\n courseName: string;\n lineItemCodes: string[];\n message: string;\n preventCheckout: boolean;\n }[];\n itemsInCartCount: number | null;\n cartTotal: number | null;\n cartSubTotal: number | null;\n cartShipping: number | null;\n cartTax: number | null;\n discountTotal: number | null;\n};\n\nexport const GetCartItems = async (endpoint: string) => {\n const cartData: CartType = await GetCartState(endpoint);\n\n if (cartData) {\n return cartData.lineItems;\n } else {\n return [];\n }\n};\n\nexport const ActionsToCart = async (\n endpoint: string,\n data: { [key: string]: unknown },\n callback?: ((data?: { [key: string]: unknown }) => void) | null,\n headersArray?: { name: string; value: string }[] | null,\n skipCustomEvent?: boolean\n) => {\n const header = new Headers();\n\n header.append('Content-Type', 'application/json');\n\n if (headersArray && headersArray.length) {\n headersArray.forEach(headerItem => {\n header.append(headerItem.name, headerItem.value);\n });\n }\n\n return fetch(endpoint, {\n method: 'POST',\n headers: header,\n body: JSON.stringify(data)\n })\n .then(response => {\n if (response.ok) {\n return response.json();\n } else {\n throw new Error('Something went wrong');\n }\n })\n .then(data => {\n if (data) {\n if (!skipCustomEvent) {\n EventBusSingleton.publish('courseScheduleSelector:submit');\n }\n\n window.dispatchEvent(new CustomEvent('cartUpdated', { detail: data }));\n\n if (callback && data) {\n callback(data);\n }\n\n return data;\n }\n })\n .catch(error => {\n console.error('Error:', error);\n });\n};\n\nexport const CheckIfItemIsInCartByInvoiceId = async (\n invoiceId: number,\n callback: (isInCart: boolean) => void,\n endpoint: string\n) => {\n const cartItems = await GetCartItems(endpoint);\n if (cartItems) {\n const itemInCart = cartItems.some(item => item.invoiceId === invoiceId);\n callback(itemInCart);\n }\n};\n\nexport const GetCartState = async (endpoint: string, callback?: () => void): Promise => {\n return fetch(endpoint, {\n method: 'GET'\n })\n .then(response => {\n if (response.ok) {\n return response.json();\n } else {\n throw new Error('Something went wrong');\n }\n })\n .then(data => {\n if (callback) {\n callback();\n }\n window.localStorage.setItem('cartState', JSON.stringify(data));\n\n return data;\n })\n .catch(error => {\n console.error('Error:', error);\n });\n};\n"],"names":["GetCartItems","endpoint","cartData","GetCartState","ActionsToCart","data","callback","headersArray","skipCustomEvent","header","headerItem","response","EventBusSingleton","error","CheckIfItemIsInCartByInvoiceId","invoiceId","cartItems","itemInCart","item"],"mappings":"wCAgDa,MAAAA,EAAe,MAAOC,GAAqB,CAChD,MAAAC,EAAqB,MAAMC,EAAaF,CAAQ,EAEtD,OAAIC,EACKA,EAAS,UAET,CAAC,CAEZ,EAEaE,EAAgB,MAC3BH,EACAI,EACAC,EACAC,EACAC,IACG,CACG,MAAAC,EAAS,IAAI,QAEZ,OAAAA,EAAA,OAAO,eAAgB,kBAAkB,EAE5CF,GAAgBA,EAAa,QAC/BA,EAAa,QAAsBG,GAAA,CACjCD,EAAO,OAAOC,EAAW,KAAMA,EAAW,KAAK,CAAA,CAChD,EAGI,MAAMT,EAAU,CACrB,OAAQ,OACR,QAASQ,EACT,KAAM,KAAK,UAAUJ,CAAI,CAAA,CAC1B,EACE,KAAiBM,GAAA,CAChB,GAAIA,EAAS,GACX,OAAOA,EAAS,KAAK,EAEf,MAAA,IAAI,MAAM,sBAAsB,CACxC,CACD,EACA,KAAKN,GAAQ,CACZ,GAAIA,EACF,OAAKG,GACHI,EAAkB,QAAQ,+BAA+B,EAGpD,OAAA,cAAc,IAAI,YAAY,cAAe,CAAE,OAAQP,CAAAA,CAAM,CAAC,EAEjEC,GAAYD,GACdC,EAASD,CAAI,EAGRA,CACT,CACD,EACA,MAAeQ,GAAA,CACN,QAAA,MAAM,SAAUA,CAAK,CAAA,CAC9B,CACL,EAEaC,EAAiC,MAC5CC,EACAT,EACAL,IACG,CACG,MAAAe,EAAY,MAAMhB,EAAaC,CAAQ,EAC7C,GAAIe,EAAW,CACb,MAAMC,EAAaD,EAAU,KAAaE,GAAAA,EAAK,YAAcH,CAAS,EACtET,EAASW,CAAU,CAAA,CAEvB,EAEad,EAAe,MAAOF,EAAkBK,IAC5C,MAAML,EAAU,CACrB,OAAQ,KAAA,CACT,EACE,KAAiBU,GAAA,CAChB,GAAIA,EAAS,GACX,OAAOA,EAAS,KAAK,EAEf,MAAA,IAAI,MAAM,sBAAsB,CACxC,CACD,EACA,KAAaN,IAIZ,OAAO,aAAa,QAAQ,YAAa,KAAK,UAAUA,CAAI,CAAC,EAEtDA,EACR,EACA,MAAeQ,GAAA,CACN,QAAA,MAAM,SAAUA,CAAK,CAAA,CAC9B"}