{"version":3,"file":"12e30b63.js","sources":["../../../src/providers/soft-cart/SoftCartProvider.client.tsx"],"sourcesContent":["/**\n * Soft Cart Provider\n */\nimport {createContext, useContext, useCallback, useMemo, useState} from 'react';\nimport {useCart} from '@shopify/hydrogen';\nimport type {SoftCartItem} from 'Js/@types/sdg';\n\ntype SoftCartProps = {\n children?: React.ReactNode;\n};\n\ntype SoftCartContextType = {\n items: SoftCartItem[];\n addItem: (temToAdd: SoftCartItem) => void;\n removeItem: (itemToRemove: SoftCartItem) => void;\n commitItems: () => void;\n active: boolean;\n setActive: (status: boolean) => void;\n};\n\nexport const SoftCartContext = createContext({\n items: [],\n addItem: () => null,\n removeItem: () => null,\n commitItems: () => null,\n active: false,\n setActive: () => null,\n});\n\nexport function SoftCartProvider({children}: SoftCartProps) {\n const [items, setItems] = useState>([]);\n const [active, setActive] = useState(false);\n const {linesAdd} = useCart();\n\n const addItem = useCallback(\n (itemToAdd: SoftCartItem) => {\n const [alreadyExists] = items.filter(\n (item: SoftCartItem) => item.id === itemToAdd.id,\n );\n if (alreadyExists) {\n alreadyExists.quantity += itemToAdd.quantity;\n setItems(items);\n return;\n }\n\n setItems([itemToAdd, ...items]);\n },\n [items, setItems],\n );\n\n const removeItem = useCallback(\n (itemToRemove: SoftCartItem) => {\n const sanitizedItems = items.filter(\n (item: SoftCartItem) => item.id !== itemToRemove.id,\n );\n setItems(sanitizedItems);\n },\n [items, setItems],\n );\n\n const commit = useCallback(() => {\n const transformedLines = items.map((item: SoftCartItem) => ({\n attributes: item.attributes || [],\n merchandiseId: `gid://shopify/ProductVariant/${item.id}`,\n quantity: item.quantity,\n }));\n\n if (transformedLines?.length) {\n linesAdd(transformedLines);\n setItems([]);\n }\n }, [items, linesAdd]);\n\n const contextValue = useMemo(() => {\n return {\n active,\n setActive,\n items,\n addItem,\n removeItem,\n commitItems: commit,\n };\n }, [active, items, addItem, removeItem, setActive, commit]);\n\n return (\n \n {children}\n \n );\n}\n\nexport function useSoftCart() {\n return useContext(SoftCartContext);\n}\n"],"names":["SoftCartContext","createContext","items","addItem","removeItem","commitItems","active","setActive","SoftCartProvider","children","setItems","useState","linesAdd","useCart","useCallback","itemToAdd","alreadyExists","filter","item","id","quantity","itemToRemove","sanitizedItems","commit","transformedLines","map","attributes","merchandiseId","length","contextValue","useMemo","_jsx","useSoftCart","useContext"],"mappings":"oVAoBO,MAAMA,EAAkBC,EAAAA,QAAAA,cAAmC,CAChEC,MAAO,CAAE,EACTC,QAAS,IAAM,KACfC,WAAY,IAAM,KAClBC,YAAa,IAAM,KACnBC,OAAQ,GACRC,UAAW,IAAM,IACnB,CAAC,EAEM,SAASC,EAAiB,CAACC,SAAAA,CAAuB,EAAG,CAC1D,KAAM,CAACP,EAAOQ,CAAQ,EAAIC,EAAAA,QAAAA,SAA8B,CAAE,CAAA,EACpD,CAACL,EAAQC,CAAS,EAAII,mBAAS,EAAK,EACpC,CAACC,SAAAA,GAAYC,EAAS,EAEtBV,EAAUW,sBACbC,GAA4B,CACrB,KAAA,CAACC,CAAa,EAAId,EAAMe,OAC3BC,GAAuBA,EAAKC,KAAOJ,EAAUI,EAAE,EAElD,GAAIH,EAAe,CACjBA,EAAcI,UAAYL,EAAUK,SACpCV,EAASR,CAAK,EACd,MACF,CAEAQ,EAAS,CAACK,EAAW,GAAGb,CAAK,CAAC,CAAA,EAEhC,CAACA,EAAOQ,CAAQ,CAAC,EAGbN,EAAaU,sBAChBO,GAA+B,CACxBC,MAAAA,EAAiBpB,EAAMe,OAC1BC,GAAuBA,EAAKC,KAAOE,EAAaF,EAAE,EAErDT,EAASY,CAAc,CAAA,EAEzB,CAACpB,EAAOQ,CAAQ,CAAC,EAGba,EAAST,EAAAA,QAAAA,YAAY,IAAM,CAC/B,MAAMU,EAAmBtB,EAAMuB,IAAKP,IAAwB,CAC1DQ,WAAYR,EAAKQ,YAAc,CAAE,EACjCC,cAAgB,gCAA+BT,EAAKC,KACpDC,SAAUF,EAAKE,QACf,EAAA,EAEEI,GAAAA,MAAAA,EAAkBI,SACpBhB,EAASY,CAAgB,EACzBd,EAAS,CAAE,CAAA,EACb,EACC,CAACR,EAAOU,CAAQ,CAAC,EAEdiB,EAAeC,EAAAA,QAAAA,QAAQ,KACpB,CACLxB,OAAAA,EACAC,UAAAA,EACAL,MAAAA,EACAC,QAAAA,EACAC,WAAAA,EACAC,YAAakB,CAAAA,GAEd,CAACjB,EAAQJ,EAAOC,EAASC,EAAYG,EAAWgB,CAAM,CAAC,EAGxD,OAAAQ,EAAC/B,EAAgB,SAAQ,CAAC,MAAO6B,EAAa,SAAApB,CAAA,CAEnB,CAE/B,CAEO,SAASuB,GAAc,CAC5B,OAAOC,EAAAA,QAAAA,WAAWjC,CAAe,CACnC"}