{"version":3,"file":"useCartActions.mjs","names":[],"sources":["../../src/useCartActions.tsx"],"sourcesContent":["import {useCallback, useMemo} from 'react';\nimport {\n  AttributeInput,\n  CartBuyerIdentityInput,\n  CartInput,\n  CartLineInput,\n  CartLineUpdateInput,\n  CountryCode,\n  LanguageCode,\n  Cart as CartType,\n  MutationCartDiscountCodesUpdateArgs,\n  MutationCartNoteUpdateArgs,\n} from './storefront-api-types.js';\nimport {\n  CartAttributesUpdate,\n  CartBuyerIdentityUpdate,\n  CartCreate,\n  CartDiscountCodesUpdate,\n  CartLineAdd,\n  CartLineRemove,\n  CartLineUpdate,\n  CartNoteUpdate,\n  CartQuery,\n} from './cart-queries.js';\nimport {useCartFetch} from './cart-hooks.js';\nimport {PartialDeep} from 'type-fest';\n\ntype CartResponse = PartialDeep<CartType, {recurseIntoArrays: true}>;\n\n/**\n * The `useCartActions` hook returns helper graphql functions for Storefront Cart API\n *\n * See [cart API graphql mutations](https://shopify.dev/api/storefront/2026-04/objects/Cart)\n */\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\nexport function useCartActions({\n  numCartLines,\n  cartFragment,\n  countryCode = 'US',\n  languageCode = 'EN',\n}: {\n  /**  Maximum number of cart lines to fetch. Defaults to 250 cart lines. */\n  numCartLines?: number;\n  /** A fragment used to query the Storefront API's [Cart object](https://shopify.dev/api/storefront/2026-04/objects/cart) for all queries and mutations. A default value is used if no argument is provided. */\n  cartFragment: string;\n  /** The ISO country code for i18n. Default to `US` */\n  countryCode?: CountryCode;\n  /** The ISO language code for i18n. Default to `EN` */\n  languageCode?: LanguageCode;\n}) {\n  const fetchCart = useCartFetch();\n\n  const cartFetch = useCallback(\n    (cartId: string) => {\n      return fetchCart<{cart: CartResponse}>({\n        query: CartQuery(cartFragment),\n        variables: {\n          id: cartId,\n          numCartLines,\n          country: countryCode,\n          language: languageCode,\n        },\n      });\n    },\n    [fetchCart, cartFragment, numCartLines, countryCode, languageCode],\n  );\n\n  const cartCreate = useCallback(\n    (cart: CartInput) => {\n      return fetchCart<{cartCreate: {cart: CartResponse}}>({\n        query: CartCreate(cartFragment),\n        variables: {\n          input: cart,\n          numCartLines,\n          country: countryCode,\n          language: languageCode,\n        },\n      });\n    },\n    [cartFragment, countryCode, fetchCart, numCartLines, languageCode],\n  );\n\n  const cartLineAdd = useCallback(\n    (cartId: string, lines: CartLineInput[]) => {\n      return fetchCart<{cartLinesAdd: {cart: CartResponse}}>({\n        query: CartLineAdd(cartFragment),\n        variables: {\n          cartId,\n          lines,\n          numCartLines,\n          country: countryCode,\n          language: languageCode,\n        },\n      });\n    },\n    [cartFragment, countryCode, fetchCart, numCartLines, languageCode],\n  );\n\n  const cartLineUpdate = useCallback(\n    (cartId: string, lines: CartLineUpdateInput[]) => {\n      return fetchCart<{cartLinesUpdate: {cart: CartResponse}}>({\n        query: CartLineUpdate(cartFragment),\n        variables: {\n          cartId,\n          lines,\n          numCartLines,\n          country: countryCode,\n          language: languageCode,\n        },\n      });\n    },\n    [cartFragment, countryCode, fetchCart, numCartLines, languageCode],\n  );\n\n  const cartLineRemove = useCallback(\n    (cartId: string, lines: string[]) => {\n      return fetchCart<{cartLinesRemove: {cart: CartResponse}}>({\n        query: CartLineRemove(cartFragment),\n        variables: {\n          cartId,\n          lines,\n          numCartLines,\n          country: countryCode,\n          language: languageCode,\n        },\n      });\n    },\n    [cartFragment, countryCode, fetchCart, numCartLines, languageCode],\n  );\n\n  const noteUpdate = useCallback(\n    (cartId: string, note: MutationCartNoteUpdateArgs['note']) => {\n      return fetchCart<{cartNoteUpdate: {cart: CartResponse}}>({\n        query: CartNoteUpdate(cartFragment),\n        variables: {\n          cartId,\n          note,\n          numCartLines,\n          country: countryCode,\n          language: languageCode,\n        },\n      });\n    },\n    [fetchCart, cartFragment, numCartLines, countryCode, languageCode],\n  );\n\n  const buyerIdentityUpdate = useCallback(\n    (cartId: string, buyerIdentity: CartBuyerIdentityInput) => {\n      return fetchCart<{cartBuyerIdentityUpdate: {cart: CartResponse}}>({\n        query: CartBuyerIdentityUpdate(cartFragment),\n        variables: {\n          cartId,\n          buyerIdentity,\n          numCartLines,\n          country: countryCode,\n          language: languageCode,\n        },\n      });\n    },\n    [cartFragment, countryCode, fetchCart, numCartLines, languageCode],\n  );\n\n  const cartAttributesUpdate = useCallback(\n    (cartId: string, attributes: AttributeInput[]) => {\n      return fetchCart<{cartAttributesUpdate: {cart: CartResponse}}>({\n        query: CartAttributesUpdate(cartFragment),\n        variables: {\n          cartId,\n          attributes,\n          numCartLines,\n          country: countryCode,\n          language: languageCode,\n        },\n      });\n    },\n    [cartFragment, countryCode, fetchCart, numCartLines, languageCode],\n  );\n\n  const discountCodesUpdate = useCallback(\n    (\n      cartId: string,\n      discountCodes: MutationCartDiscountCodesUpdateArgs['discountCodes'],\n    ) => {\n      return fetchCart<{cartDiscountCodesUpdate: {cart: CartResponse}}>({\n        query: CartDiscountCodesUpdate(cartFragment),\n        variables: {\n          cartId,\n          discountCodes,\n          numCartLines,\n          country: countryCode,\n          language: languageCode,\n        },\n      });\n    },\n    [cartFragment, countryCode, fetchCart, numCartLines, languageCode],\n  );\n\n  return useMemo(\n    () => ({\n      cartFetch,\n      cartCreate,\n      cartLineAdd,\n      cartLineUpdate,\n      cartLineRemove,\n      noteUpdate,\n      buyerIdentityUpdate,\n      cartAttributesUpdate,\n      discountCodesUpdate,\n      cartFragment,\n    }),\n    [\n      cartFetch,\n      cartCreate,\n      cartLineAdd,\n      cartLineUpdate,\n      cartLineRemove,\n      noteUpdate,\n      buyerIdentityUpdate,\n      cartAttributesUpdate,\n      discountCodesUpdate,\n      cartFragment,\n    ],\n  );\n}\n"],"mappings":";;;;;;;;;AAmCA,SAAgB,eAAe,EAC7B,cACA,cACA,cAAc,MACd,eAAe,QAUd;CACD,MAAM,YAAY,cAAc;CAEhC,MAAM,YAAY,aACf,WAAmB;AAClB,SAAO,UAAgC;GACrC,OAAO,UAAU,aAAa;GAC9B,WAAW;IACT,IAAI;IACJ;IACA,SAAS;IACT,UAAU;IACX;GACF,CAAC;IAEJ;EAAC;EAAW;EAAc;EAAc;EAAa;EAAa,CACnE;CAED,MAAM,aAAa,aAChB,SAAoB;AACnB,SAAO,UAA8C;GACnD,OAAO,WAAW,aAAa;GAC/B,WAAW;IACT,OAAO;IACP;IACA,SAAS;IACT,UAAU;IACX;GACF,CAAC;IAEJ;EAAC;EAAc;EAAa;EAAW;EAAc;EAAa,CACnE;CAED,MAAM,cAAc,aACjB,QAAgB,UAA2B;AAC1C,SAAO,UAAgD;GACrD,OAAO,YAAY,aAAa;GAChC,WAAW;IACT;IACA;IACA;IACA,SAAS;IACT,UAAU;IACX;GACF,CAAC;IAEJ;EAAC;EAAc;EAAa;EAAW;EAAc;EAAa,CACnE;CAED,MAAM,iBAAiB,aACpB,QAAgB,UAAiC;AAChD,SAAO,UAAmD;GACxD,OAAO,eAAe,aAAa;GACnC,WAAW;IACT;IACA;IACA;IACA,SAAS;IACT,UAAU;IACX;GACF,CAAC;IAEJ;EAAC;EAAc;EAAa;EAAW;EAAc;EAAa,CACnE;CAED,MAAM,iBAAiB,aACpB,QAAgB,UAAoB;AACnC,SAAO,UAAmD;GACxD,OAAO,eAAe,aAAa;GACnC,WAAW;IACT;IACA;IACA;IACA,SAAS;IACT,UAAU;IACX;GACF,CAAC;IAEJ;EAAC;EAAc;EAAa;EAAW;EAAc;EAAa,CACnE;CAED,MAAM,aAAa,aAChB,QAAgB,SAA6C;AAC5D,SAAO,UAAkD;GACvD,OAAO,eAAe,aAAa;GACnC,WAAW;IACT;IACA;IACA;IACA,SAAS;IACT,UAAU;IACX;GACF,CAAC;IAEJ;EAAC;EAAW;EAAc;EAAc;EAAa;EAAa,CACnE;CAED,MAAM,sBAAsB,aACzB,QAAgB,kBAA0C;AACzD,SAAO,UAA2D;GAChE,OAAO,wBAAwB,aAAa;GAC5C,WAAW;IACT;IACA;IACA;IACA,SAAS;IACT,UAAU;IACX;GACF,CAAC;IAEJ;EAAC;EAAc;EAAa;EAAW;EAAc;EAAa,CACnE;CAED,MAAM,uBAAuB,aAC1B,QAAgB,eAAiC;AAChD,SAAO,UAAwD;GAC7D,OAAO,qBAAqB,aAAa;GACzC,WAAW;IACT;IACA;IACA;IACA,SAAS;IACT,UAAU;IACX;GACF,CAAC;IAEJ;EAAC;EAAc;EAAa;EAAW;EAAc;EAAa,CACnE;CAED,MAAM,sBAAsB,aAExB,QACA,kBACG;AACH,SAAO,UAA2D;GAChE,OAAO,wBAAwB,aAAa;GAC5C,WAAW;IACT;IACA;IACA;IACA,SAAS;IACT,UAAU;IACX;GACF,CAAC;IAEJ;EAAC;EAAc;EAAa;EAAW;EAAc;EAAa,CACnE;AAED,QAAO,eACE;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,GACD;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CACF"}