@shopify/hydrogen-react 0.0.0-next-7fb60a6 → 0.0.0-next-819c4bf

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (242) hide show
  1. package/README.md +6 -4
  2. package/dist/dev/CartProvider.cjs +485 -0
  3. package/dist/dev/CartProvider.cjs.map +1 -0
  4. package/dist/dev/CartProvider.js +485 -0
  5. package/dist/dev/CartProvider.js.map +1 -0
  6. package/dist/dev/Metafield.cjs +2 -2
  7. package/dist/dev/Metafield.cjs.map +1 -1
  8. package/dist/dev/ModelViewer.cjs +4 -4
  9. package/dist/dev/ModelViewer.cjs.map +1 -1
  10. package/dist/dev/ProductProvider.cjs +14 -14
  11. package/dist/dev/ProductProvider.cjs.map +1 -1
  12. package/dist/dev/ShopifyProvider.cjs +4 -4
  13. package/dist/dev/ShopifyProvider.cjs.map +1 -1
  14. package/dist/dev/Video.cjs +2 -2
  15. package/dist/dev/_virtual/index.cjs +5 -0
  16. package/dist/dev/_virtual/index.cjs.map +1 -0
  17. package/dist/dev/_virtual/index.js +5 -0
  18. package/dist/dev/_virtual/index.js.map +1 -0
  19. package/dist/dev/_virtual/use-sync-external-store-shim.development.cjs +5 -0
  20. package/dist/dev/_virtual/use-sync-external-store-shim.development.cjs.map +1 -0
  21. package/dist/dev/_virtual/use-sync-external-store-shim.development.js +5 -0
  22. package/dist/dev/_virtual/use-sync-external-store-shim.development.js.map +1 -0
  23. package/dist/dev/_virtual/use-sync-external-store-shim.production.min.cjs +5 -0
  24. package/dist/dev/_virtual/use-sync-external-store-shim.production.min.cjs.map +1 -0
  25. package/dist/dev/_virtual/use-sync-external-store-shim.production.min.js +5 -0
  26. package/dist/dev/_virtual/use-sync-external-store-shim.production.min.js.map +1 -0
  27. package/dist/dev/_virtual/with-selector.cjs +5 -0
  28. package/dist/dev/_virtual/with-selector.cjs.map +1 -0
  29. package/dist/dev/_virtual/with-selector.development.cjs +5 -0
  30. package/dist/dev/_virtual/with-selector.development.cjs.map +1 -0
  31. package/dist/dev/_virtual/with-selector.development.js +5 -0
  32. package/dist/dev/_virtual/with-selector.development.js.map +1 -0
  33. package/dist/dev/_virtual/with-selector.js +5 -0
  34. package/dist/dev/_virtual/with-selector.js.map +1 -0
  35. package/dist/dev/_virtual/with-selector.production.min.cjs +5 -0
  36. package/dist/dev/_virtual/with-selector.production.min.cjs.map +1 -0
  37. package/dist/dev/_virtual/with-selector.production.min.js +5 -0
  38. package/dist/dev/_virtual/with-selector.production.min.js.map +1 -0
  39. package/dist/dev/cart-constants.cjs +17 -0
  40. package/dist/dev/cart-constants.cjs.map +1 -0
  41. package/dist/dev/cart-constants.js +17 -0
  42. package/dist/dev/cart-constants.js.map +1 -0
  43. package/dist/dev/cart-hooks.cjs +89 -0
  44. package/dist/dev/cart-hooks.cjs.map +1 -0
  45. package/dist/dev/cart-hooks.js +89 -0
  46. package/dist/dev/cart-hooks.js.map +1 -0
  47. package/dist/dev/cart-queries.cjs +216 -0
  48. package/dist/dev/cart-queries.cjs.map +1 -0
  49. package/dist/dev/cart-queries.js +216 -0
  50. package/dist/dev/cart-queries.js.map +1 -0
  51. package/dist/dev/flatten-connection.cjs +6 -0
  52. package/dist/dev/flatten-connection.cjs.map +1 -1
  53. package/dist/dev/flatten-connection.js +6 -0
  54. package/dist/dev/flatten-connection.js.map +1 -1
  55. package/dist/dev/index.cjs +6 -0
  56. package/dist/dev/index.cjs.map +1 -1
  57. package/dist/dev/index.js +6 -0
  58. package/dist/dev/index.js.map +1 -1
  59. package/dist/dev/load-script.cjs +3 -3
  60. package/dist/dev/load-script.cjs.map +1 -1
  61. package/dist/dev/node_modules/@xstate/fsm/es/index.cjs +158 -0
  62. package/dist/dev/node_modules/@xstate/fsm/es/index.cjs.map +1 -0
  63. package/dist/dev/node_modules/@xstate/fsm/es/index.js +159 -0
  64. package/dist/dev/node_modules/@xstate/fsm/es/index.js.map +1 -0
  65. package/dist/dev/node_modules/@xstate/react/es/fsm.cjs +94 -0
  66. package/dist/dev/node_modules/@xstate/react/es/fsm.cjs.map +1 -0
  67. package/dist/dev/node_modules/@xstate/react/es/fsm.js +94 -0
  68. package/dist/dev/node_modules/@xstate/react/es/fsm.js.map +1 -0
  69. package/dist/dev/node_modules/@xstate/react/es/useConstant.cjs +30 -0
  70. package/dist/dev/node_modules/@xstate/react/es/useConstant.cjs.map +1 -0
  71. package/dist/dev/node_modules/@xstate/react/es/useConstant.js +12 -0
  72. package/dist/dev/node_modules/@xstate/react/es/useConstant.js.map +1 -0
  73. package/dist/dev/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.cjs +5 -0
  74. package/dist/dev/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.cjs.map +1 -0
  75. package/dist/dev/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.js +6 -0
  76. package/dist/dev/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.js.map +1 -0
  77. package/dist/dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.cjs +107 -0
  78. package/dist/dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.cjs.map +1 -0
  79. package/dist/dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js +105 -0
  80. package/dist/dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js.map +1 -0
  81. package/dist/dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.cjs +74 -0
  82. package/dist/dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.cjs.map +1 -0
  83. package/dist/dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js +72 -0
  84. package/dist/dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js.map +1 -0
  85. package/dist/dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.cjs +138 -0
  86. package/dist/dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.cjs.map +1 -0
  87. package/dist/dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js +136 -0
  88. package/dist/dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js.map +1 -0
  89. package/dist/dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.cjs +60 -0
  90. package/dist/dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.cjs.map +1 -0
  91. package/dist/dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js +58 -0
  92. package/dist/dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js.map +1 -0
  93. package/dist/dev/node_modules/use-sync-external-store/shim/index.cjs +21 -0
  94. package/dist/dev/node_modules/use-sync-external-store/shim/index.cjs.map +1 -0
  95. package/dist/dev/node_modules/use-sync-external-store/shim/index.js +21 -0
  96. package/dist/dev/node_modules/use-sync-external-store/shim/index.js.map +1 -0
  97. package/dist/dev/node_modules/use-sync-external-store/shim/with-selector.cjs +12 -0
  98. package/dist/dev/node_modules/use-sync-external-store/shim/with-selector.cjs.map +1 -0
  99. package/dist/dev/node_modules/use-sync-external-store/shim/with-selector.js +11 -0
  100. package/dist/dev/node_modules/use-sync-external-store/shim/with-selector.js.map +1 -0
  101. package/dist/dev/node_modules/worktop/cookie/index.cjs +27 -0
  102. package/dist/dev/node_modules/worktop/cookie/index.cjs.map +1 -0
  103. package/dist/dev/node_modules/worktop/cookie/index.js +27 -0
  104. package/dist/dev/node_modules/worktop/cookie/index.js.map +1 -0
  105. package/dist/dev/useCartAPIStateMachine.cjs +326 -0
  106. package/dist/dev/useCartAPIStateMachine.cjs.map +1 -0
  107. package/dist/dev/useCartAPIStateMachine.js +326 -0
  108. package/dist/dev/useCartAPIStateMachine.js.map +1 -0
  109. package/dist/dev/useCartActions.cjs +123 -0
  110. package/dist/dev/useCartActions.cjs.map +1 -0
  111. package/dist/dev/useCartActions.js +123 -0
  112. package/dist/dev/useCartActions.js.map +1 -0
  113. package/dist/dev/useMoney.cjs +5 -5
  114. package/dist/dev/useMoney.cjs.map +1 -1
  115. package/dist/prod/CartProvider.cjs +485 -0
  116. package/dist/prod/CartProvider.cjs.map +1 -0
  117. package/dist/prod/CartProvider.js +485 -0
  118. package/dist/prod/CartProvider.js.map +1 -0
  119. package/dist/prod/Metafield.cjs +2 -2
  120. package/dist/prod/Metafield.cjs.map +1 -1
  121. package/dist/prod/ModelViewer.cjs +4 -4
  122. package/dist/prod/ModelViewer.cjs.map +1 -1
  123. package/dist/prod/ProductProvider.cjs +14 -14
  124. package/dist/prod/ProductProvider.cjs.map +1 -1
  125. package/dist/prod/ShopifyProvider.cjs +4 -4
  126. package/dist/prod/ShopifyProvider.cjs.map +1 -1
  127. package/dist/prod/Video.cjs +2 -2
  128. package/dist/prod/_virtual/index.cjs +5 -0
  129. package/dist/prod/_virtual/index.cjs.map +1 -0
  130. package/dist/prod/_virtual/index.js +5 -0
  131. package/dist/prod/_virtual/index.js.map +1 -0
  132. package/dist/prod/_virtual/use-sync-external-store-shim.development.cjs +5 -0
  133. package/dist/prod/_virtual/use-sync-external-store-shim.development.cjs.map +1 -0
  134. package/dist/prod/_virtual/use-sync-external-store-shim.development.js +5 -0
  135. package/dist/prod/_virtual/use-sync-external-store-shim.development.js.map +1 -0
  136. package/dist/prod/_virtual/use-sync-external-store-shim.production.min.cjs +5 -0
  137. package/dist/prod/_virtual/use-sync-external-store-shim.production.min.cjs.map +1 -0
  138. package/dist/prod/_virtual/use-sync-external-store-shim.production.min.js +5 -0
  139. package/dist/prod/_virtual/use-sync-external-store-shim.production.min.js.map +1 -0
  140. package/dist/prod/_virtual/with-selector.cjs +5 -0
  141. package/dist/prod/_virtual/with-selector.cjs.map +1 -0
  142. package/dist/prod/_virtual/with-selector.development.cjs +5 -0
  143. package/dist/prod/_virtual/with-selector.development.cjs.map +1 -0
  144. package/dist/prod/_virtual/with-selector.development.js +5 -0
  145. package/dist/prod/_virtual/with-selector.development.js.map +1 -0
  146. package/dist/prod/_virtual/with-selector.js +5 -0
  147. package/dist/prod/_virtual/with-selector.js.map +1 -0
  148. package/dist/prod/_virtual/with-selector.production.min.cjs +5 -0
  149. package/dist/prod/_virtual/with-selector.production.min.cjs.map +1 -0
  150. package/dist/prod/_virtual/with-selector.production.min.js +5 -0
  151. package/dist/prod/_virtual/with-selector.production.min.js.map +1 -0
  152. package/dist/prod/cart-constants.cjs +17 -0
  153. package/dist/prod/cart-constants.cjs.map +1 -0
  154. package/dist/prod/cart-constants.js +17 -0
  155. package/dist/prod/cart-constants.js.map +1 -0
  156. package/dist/prod/cart-hooks.cjs +89 -0
  157. package/dist/prod/cart-hooks.cjs.map +1 -0
  158. package/dist/prod/cart-hooks.js +89 -0
  159. package/dist/prod/cart-hooks.js.map +1 -0
  160. package/dist/prod/cart-queries.cjs +216 -0
  161. package/dist/prod/cart-queries.cjs.map +1 -0
  162. package/dist/prod/cart-queries.js +216 -0
  163. package/dist/prod/cart-queries.js.map +1 -0
  164. package/dist/prod/flatten-connection.cjs +7 -0
  165. package/dist/prod/flatten-connection.cjs.map +1 -1
  166. package/dist/prod/flatten-connection.js +7 -0
  167. package/dist/prod/flatten-connection.js.map +1 -1
  168. package/dist/prod/index.cjs +6 -0
  169. package/dist/prod/index.cjs.map +1 -1
  170. package/dist/prod/index.js +6 -0
  171. package/dist/prod/index.js.map +1 -1
  172. package/dist/prod/load-script.cjs +3 -3
  173. package/dist/prod/load-script.cjs.map +1 -1
  174. package/dist/prod/node_modules/@xstate/fsm/es/index.cjs +158 -0
  175. package/dist/prod/node_modules/@xstate/fsm/es/index.cjs.map +1 -0
  176. package/dist/prod/node_modules/@xstate/fsm/es/index.js +159 -0
  177. package/dist/prod/node_modules/@xstate/fsm/es/index.js.map +1 -0
  178. package/dist/prod/node_modules/@xstate/react/es/fsm.cjs +94 -0
  179. package/dist/prod/node_modules/@xstate/react/es/fsm.cjs.map +1 -0
  180. package/dist/prod/node_modules/@xstate/react/es/fsm.js +94 -0
  181. package/dist/prod/node_modules/@xstate/react/es/fsm.js.map +1 -0
  182. package/dist/prod/node_modules/@xstate/react/es/useConstant.cjs +30 -0
  183. package/dist/prod/node_modules/@xstate/react/es/useConstant.cjs.map +1 -0
  184. package/dist/prod/node_modules/@xstate/react/es/useConstant.js +12 -0
  185. package/dist/prod/node_modules/@xstate/react/es/useConstant.js.map +1 -0
  186. package/dist/prod/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.cjs +5 -0
  187. package/dist/prod/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.cjs.map +1 -0
  188. package/dist/prod/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.js +6 -0
  189. package/dist/prod/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.js.map +1 -0
  190. package/dist/prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.cjs +107 -0
  191. package/dist/prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.cjs.map +1 -0
  192. package/dist/prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js +105 -0
  193. package/dist/prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js.map +1 -0
  194. package/dist/prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.cjs +74 -0
  195. package/dist/prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.cjs.map +1 -0
  196. package/dist/prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js +72 -0
  197. package/dist/prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js.map +1 -0
  198. package/dist/prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.cjs +138 -0
  199. package/dist/prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.cjs.map +1 -0
  200. package/dist/prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js +136 -0
  201. package/dist/prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js.map +1 -0
  202. package/dist/prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.cjs +60 -0
  203. package/dist/prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.cjs.map +1 -0
  204. package/dist/prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js +58 -0
  205. package/dist/prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js.map +1 -0
  206. package/dist/prod/node_modules/use-sync-external-store/shim/index.cjs +21 -0
  207. package/dist/prod/node_modules/use-sync-external-store/shim/index.cjs.map +1 -0
  208. package/dist/prod/node_modules/use-sync-external-store/shim/index.js +21 -0
  209. package/dist/prod/node_modules/use-sync-external-store/shim/index.js.map +1 -0
  210. package/dist/prod/node_modules/use-sync-external-store/shim/with-selector.cjs +12 -0
  211. package/dist/prod/node_modules/use-sync-external-store/shim/with-selector.cjs.map +1 -0
  212. package/dist/prod/node_modules/use-sync-external-store/shim/with-selector.js +11 -0
  213. package/dist/prod/node_modules/use-sync-external-store/shim/with-selector.js.map +1 -0
  214. package/dist/prod/node_modules/worktop/cookie/index.cjs +27 -0
  215. package/dist/prod/node_modules/worktop/cookie/index.cjs.map +1 -0
  216. package/dist/prod/node_modules/worktop/cookie/index.js +27 -0
  217. package/dist/prod/node_modules/worktop/cookie/index.js.map +1 -0
  218. package/dist/prod/useCartAPIStateMachine.cjs +326 -0
  219. package/dist/prod/useCartAPIStateMachine.cjs.map +1 -0
  220. package/dist/prod/useCartAPIStateMachine.js +326 -0
  221. package/dist/prod/useCartAPIStateMachine.js.map +1 -0
  222. package/dist/prod/useCartActions.cjs +123 -0
  223. package/dist/prod/useCartActions.cjs.map +1 -0
  224. package/dist/prod/useCartActions.js +123 -0
  225. package/dist/prod/useCartActions.js.map +1 -0
  226. package/dist/prod/useMoney.cjs +5 -5
  227. package/dist/prod/useMoney.cjs.map +1 -1
  228. package/dist/types/CartProvider.d.ts +61 -0
  229. package/dist/types/cart-constants.d.ts +8 -0
  230. package/dist/types/cart-hooks.d.ts +24 -0
  231. package/dist/types/cart-queries.d.ts +10 -0
  232. package/dist/types/cart-types.d.ts +289 -0
  233. package/dist/types/flatten-connection.d.ts +3 -1
  234. package/dist/types/index.d.cts +3 -0
  235. package/dist/types/index.d.ts +3 -0
  236. package/dist/types/useCartAPIStateMachine.d.ts +25 -0
  237. package/dist/types/useCartActions.d.ts +64 -0
  238. package/dist/umd/hydrogen-react.dev.js +1941 -94
  239. package/dist/umd/hydrogen-react.dev.js.map +1 -1
  240. package/dist/umd/hydrogen-react.prod.js +339 -2
  241. package/dist/umd/hydrogen-react.prod.js.map +1 -1
  242. package/package.json +16 -12
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCartAPIStateMachine.cjs","sources":["../../src/useCartAPIStateMachine.tsx"],"sourcesContent":["import {useMachine} from '@xstate/react/fsm';\nimport {createMachine, assign, StateMachine} from '@xstate/fsm';\nimport {\n Cart,\n CartMachineActionEvent,\n CartMachineActions,\n CartMachineContext,\n CartMachineEvent,\n CartMachineFetchResultEvent,\n CartMachineTypeState,\n} from './cart-types.js';\nimport {flattenConnection} from './flatten-connection.js';\nimport {useCartActions} from './useCartActions.js';\nimport {useMemo} from 'react';\nimport {InitEvent} from '@xstate/fsm/lib/types.js';\nimport {CountryCode, Cart as CartType} from './storefront-api-types.js';\nimport type {PartialDeep} from 'type-fest';\n\nfunction invokeCart(\n action: keyof CartMachineActions,\n options?: {\n entryActions?: [keyof CartMachineActions];\n resolveTarget?: CartMachineTypeState['value'];\n errorTarget?: CartMachineTypeState['value'];\n exitActions?: [keyof CartMachineActions];\n }\n): StateMachine.Config<CartMachineContext, CartMachineEvent>['states']['on'] {\n return {\n entry: [\n ...(options?.entryActions || []),\n 'onCartActionEntry',\n 'onCartActionOptimisticUI',\n action,\n ],\n on: {\n RESOLVE: {\n target: options?.resolveTarget || 'idle',\n actions: [\n assign({\n prevCart: (context) => context?.cart,\n cart: (_, event) => event?.payload?.cart,\n rawCartResult: (_, event) => event?.payload?.rawCartResult,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n errors: (_) => undefined,\n }),\n ],\n },\n ERROR: {\n target: options?.errorTarget || 'error',\n actions: [\n assign({\n prevCart: (context) => context?.cart,\n cart: (context) => context?.lastValidCart,\n errors: (_, event) => event?.payload?.errors,\n }),\n ],\n },\n CART_COMPLETED: {\n target: 'cartCompleted',\n actions: assign({\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n prevCart: (_) => undefined,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n cart: (_) => undefined,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n lastValidCart: (_) => undefined,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n errors: (_) => undefined,\n }),\n },\n },\n exit: ['onCartActionComplete', ...(options?.exitActions || [])],\n };\n}\n\nconst INITIALIZING_CART_EVENTS: StateMachine.Machine<\n CartMachineContext,\n CartMachineEvent,\n CartMachineTypeState\n>['config']['states']['uninitialized']['on'] = {\n CART_FETCH: {\n target: 'cartFetching',\n },\n CART_CREATE: {\n target: 'cartCreating',\n },\n CART_SET: {\n target: 'idle',\n actions: [\n assign({\n rawCartResult: (_, event) => event.payload.cart,\n cart: (_, event) => cartFromGraphQL(event.payload.cart),\n }),\n ],\n },\n};\n\nconst UPDATING_CART_EVENTS: StateMachine.Machine<\n CartMachineContext,\n CartMachineEvent,\n CartMachineTypeState\n>['config']['states']['idle']['on'] = {\n CARTLINE_ADD: {\n target: 'cartLineAdding',\n },\n CARTLINE_UPDATE: {\n target: 'cartLineUpdating',\n },\n CARTLINE_REMOVE: {\n target: 'cartLineRemoving',\n },\n NOTE_UPDATE: {\n target: 'noteUpdating',\n },\n BUYER_IDENTITY_UPDATE: {\n target: 'buyerIdentityUpdating',\n },\n CART_ATTRIBUTES_UPDATE: {\n target: 'cartAttributesUpdating',\n },\n DISCOUNT_CODES_UPDATE: {\n target: 'discountCodesUpdating',\n },\n};\n\nfunction createCartMachine(\n initialCart?: PartialDeep<CartType, {recurseIntoArrays: true}>\n) {\n return createMachine<\n CartMachineContext,\n CartMachineEvent,\n CartMachineTypeState\n >({\n id: 'Cart',\n initial: initialCart ? 'idle' : 'uninitialized',\n context: {\n cart: initialCart && cartFromGraphQL(initialCart),\n },\n states: {\n uninitialized: {\n on: INITIALIZING_CART_EVENTS,\n },\n cartCompleted: {\n on: INITIALIZING_CART_EVENTS,\n },\n initializationError: {\n on: INITIALIZING_CART_EVENTS,\n },\n idle: {\n on: {...INITIALIZING_CART_EVENTS, ...UPDATING_CART_EVENTS},\n },\n error: {\n on: {...INITIALIZING_CART_EVENTS, ...UPDATING_CART_EVENTS},\n },\n cartFetching: invokeCart('cartFetchAction', {\n errorTarget: 'initializationError',\n }),\n cartCreating: invokeCart('cartCreateAction', {\n errorTarget: 'initializationError',\n }),\n cartLineRemoving: invokeCart('cartLineRemoveAction'),\n cartLineUpdating: invokeCart('cartLineUpdateAction'),\n cartLineAdding: invokeCart('cartLineAddAction'),\n noteUpdating: invokeCart('noteUpdateAction'),\n buyerIdentityUpdating: invokeCart('buyerIdentityUpdateAction'),\n cartAttributesUpdating: invokeCart('cartAttributesUpdateAction'),\n discountCodesUpdating: invokeCart('discountCodesUpdateAction'),\n },\n });\n}\n\nexport function useCartAPIStateMachine({\n numCartLines,\n onCartActionEntry,\n onCartActionOptimisticUI,\n onCartActionComplete,\n data: cart,\n cartFragment,\n countryCode,\n}: {\n /** Maximum number of cart lines to fetch. Defaults to 250 cart lines. */\n numCartLines?: number;\n /** A callback that is invoked just before a Cart API action executes. */\n onCartActionEntry?: (\n context: CartMachineContext,\n event: CartMachineActionEvent\n ) => void;\n /** A callback that is invoked after executing the entry actions for optimistic UI changes. */\n onCartActionOptimisticUI?: (\n context: CartMachineContext,\n event: CartMachineEvent\n ) => Partial<CartMachineContext>;\n /** A callback that is invoked after a Cart API completes. */\n onCartActionComplete?: (\n context: CartMachineContext,\n event: CartMachineFetchResultEvent\n ) => void;\n /** An object with fields that correspond to the Storefront API's [Cart object](https://shopify.dev/api/storefront/latest/objects/cart). */\n data?: PartialDeep<CartType, {recurseIntoArrays: true}>;\n /** A fragment used to query the Storefront API's [Cart object](https://shopify.dev/api/storefront/latest/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. */\n countryCode?: CountryCode;\n}) {\n const {\n cartFetch,\n cartCreate,\n cartLineAdd,\n cartLineUpdate,\n cartLineRemove,\n noteUpdate,\n buyerIdentityUpdate,\n cartAttributesUpdate,\n discountCodesUpdate,\n } = useCartActions({\n numCartLines,\n cartFragment,\n countryCode,\n });\n\n const cartMachine = useMemo(() => createCartMachine(cart), [cart]);\n\n const [state, send, service] = useMachine(cartMachine, {\n actions: {\n cartFetchAction: async (_, event): Promise<void> => {\n if (event.type !== 'CART_FETCH') return;\n\n const {data, errors} = await cartFetch(event?.payload?.cartId);\n const resultEvent = eventFromFetchResult(event, data?.cart, errors);\n send(resultEvent);\n },\n cartCreateAction: async (_, event): Promise<void> => {\n if (event.type !== 'CART_CREATE') return;\n\n const {data, errors} = await cartCreate(event?.payload);\n const resultEvent = eventFromFetchResult(\n event,\n data?.cartCreate?.cart,\n errors\n );\n send(resultEvent);\n },\n cartLineAddAction: async (context, event): Promise<void> => {\n if (event.type !== 'CARTLINE_ADD' || !context?.cart?.id) return;\n\n const {data, errors} = await cartLineAdd(\n context.cart.id,\n event.payload.lines\n );\n\n const resultEvent = eventFromFetchResult(\n event,\n data?.cartLinesAdd?.cart,\n errors\n );\n\n send(resultEvent);\n },\n cartLineUpdateAction: async (context, event): Promise<void> => {\n if (event.type !== 'CARTLINE_UPDATE' || !context?.cart?.id) return;\n const {data, errors} = await cartLineUpdate(\n context.cart.id,\n event.payload.lines\n );\n\n const resultEvent = eventFromFetchResult(\n event,\n data?.cartLinesUpdate?.cart,\n errors\n );\n\n send(resultEvent);\n },\n cartLineRemoveAction: async (context, event): Promise<void> => {\n if (event.type !== 'CARTLINE_REMOVE' || !context?.cart?.id) return;\n const {data, errors} = await cartLineRemove(\n context.cart.id,\n event.payload.lines\n );\n\n const resultEvent = eventFromFetchResult(\n event,\n data?.cartLinesRemove?.cart,\n errors\n );\n\n send(resultEvent);\n },\n noteUpdateAction: async (context, event): Promise<void> => {\n if (event.type !== 'NOTE_UPDATE' || !context?.cart?.id) return;\n const {data, errors} = await noteUpdate(\n context.cart.id,\n event.payload.note\n );\n\n const resultEvent = eventFromFetchResult(\n event,\n data?.cartNoteUpdate?.cart,\n errors\n );\n\n send(resultEvent);\n },\n buyerIdentityUpdateAction: async (context, event): Promise<void> => {\n if (event.type !== 'BUYER_IDENTITY_UPDATE' || !context?.cart?.id)\n return;\n const {data, errors} = await buyerIdentityUpdate(\n context.cart.id,\n event.payload.buyerIdentity\n );\n\n const resultEvent = eventFromFetchResult(\n event,\n data?.cartBuyerIdentityUpdate?.cart,\n errors\n );\n\n send(resultEvent);\n },\n cartAttributesUpdateAction: async (context, event): Promise<void> => {\n if (event.type !== 'CART_ATTRIBUTES_UPDATE' || !context?.cart?.id)\n return;\n const {data, errors} = await cartAttributesUpdate(\n context.cart.id,\n event.payload.attributes\n );\n\n const resultEvent = eventFromFetchResult(\n event,\n data?.cartAttributesUpdate?.cart,\n errors\n );\n\n send(resultEvent);\n },\n discountCodesUpdateAction: async (context, event): Promise<void> => {\n if (event.type !== 'DISCOUNT_CODES_UPDATE' || !context?.cart?.id)\n return;\n const {data, errors} = await discountCodesUpdate(\n context.cart.id,\n event.payload.discountCodes\n );\n const resultEvent = eventFromFetchResult(\n event,\n data?.cartDiscountCodesUpdate?.cart,\n errors\n );\n\n send(resultEvent);\n },\n ...(onCartActionEntry && {\n onCartActionEntry: (context, event) => {\n if (isCartActionEvent(event)) {\n onCartActionEntry(context, event);\n }\n },\n }),\n ...(onCartActionOptimisticUI && {\n onCartActionOptimisticUI: assign((context, event) => {\n return onCartActionOptimisticUI(context, event);\n }),\n }),\n ...(onCartActionComplete && {\n onCartActionComplete: (context, event) => {\n if (isCartFetchResultEvent(event)) {\n onCartActionComplete(context, event);\n }\n },\n }),\n } as CartMachineActions,\n });\n\n return useMemo(() => [state, send, service] as const, [state, send, service]);\n}\n\nexport function cartFromGraphQL(\n cart: PartialDeep<CartType, {recurseIntoArrays: true}>\n): Cart {\n return {\n ...cart,\n lines: flattenConnection(cart?.lines),\n note: cart.note ?? undefined,\n };\n}\n\nfunction eventFromFetchResult(\n cartActionEvent: CartMachineActionEvent,\n cart?: PartialDeep<CartType, {recurseIntoArrays: true}> | null,\n errors?: unknown\n): CartMachineFetchResultEvent {\n if (errors) {\n return {type: 'ERROR', payload: {errors, cartActionEvent}};\n }\n\n if (!cart) {\n return {\n type: 'CART_COMPLETED',\n payload: {\n cartActionEvent,\n },\n };\n }\n\n return {\n type: 'RESOLVE',\n payload: {\n cart: cartFromGraphQL(cart),\n rawCartResult: cart,\n cartActionEvent,\n },\n };\n}\n\nfunction isCartActionEvent(\n event: CartMachineEvent | InitEvent\n): event is CartMachineActionEvent {\n return (\n event.type === 'CART_CREATE' ||\n event.type === 'CARTLINE_ADD' ||\n event.type === 'CARTLINE_UPDATE' ||\n event.type === 'CARTLINE_REMOVE' ||\n event.type === 'NOTE_UPDATE' ||\n event.type === 'BUYER_IDENTITY_UPDATE' ||\n event.type === 'CART_ATTRIBUTES_UPDATE' ||\n event.type === 'DISCOUNT_CODES_UPDATE'\n );\n}\n\nfunction isCartFetchResultEvent(\n event: CartMachineEvent | InitEvent\n): event is CartMachineFetchResultEvent {\n return (\n event.type === 'RESOLVE' ||\n event.type === 'ERROR' ||\n event.type === 'CART_COMPLETED'\n );\n}\n"],"names":["invokeCart","action","options","entry","entryActions","on","RESOLVE","target","resolveTarget","actions","assign","prevCart","context","cart","_","event","payload","rawCartResult","errors","undefined","ERROR","errorTarget","lastValidCart","CART_COMPLETED","exit","exitActions","INITIALIZING_CART_EVENTS","CART_FETCH","CART_CREATE","CART_SET","cartFromGraphQL","UPDATING_CART_EVENTS","CARTLINE_ADD","CARTLINE_UPDATE","CARTLINE_REMOVE","NOTE_UPDATE","BUYER_IDENTITY_UPDATE","CART_ATTRIBUTES_UPDATE","DISCOUNT_CODES_UPDATE","createCartMachine","initialCart","createMachine","id","initial","states","uninitialized","cartCompleted","initializationError","idle","error","cartFetching","cartCreating","cartLineRemoving","cartLineUpdating","cartLineAdding","noteUpdating","buyerIdentityUpdating","cartAttributesUpdating","discountCodesUpdating","useCartAPIStateMachine","numCartLines","onCartActionEntry","onCartActionOptimisticUI","onCartActionComplete","data","cartFragment","countryCode","cartFetch","cartCreate","cartLineAdd","cartLineUpdate","cartLineRemove","noteUpdate","buyerIdentityUpdate","cartAttributesUpdate","discountCodesUpdate","useCartActions","cartMachine","useMemo","state","send","service","useMachine","cartFetchAction","type","cartId","resultEvent","eventFromFetchResult","cartCreateAction","cartLineAddAction","lines","cartLinesAdd","cartLineUpdateAction","cartLinesUpdate","cartLineRemoveAction","cartLinesRemove","noteUpdateAction","note","cartNoteUpdate","buyerIdentityUpdateAction","buyerIdentity","cartBuyerIdentityUpdate","cartAttributesUpdateAction","attributes","discountCodesUpdateAction","discountCodes","cartDiscountCodesUpdate","isCartActionEvent","isCartFetchResultEvent","flattenConnection","cartActionEvent"],"mappings":"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"}
@@ -0,0 +1,326 @@
1
+ import { useMachine } from "./node_modules/@xstate/react/es/fsm.js";
2
+ import { assign as i, createMachine as s } from "./node_modules/@xstate/fsm/es/index.js";
3
+ import { flattenConnection } from "./flatten-connection.js";
4
+ import { useCartActions } from "./useCartActions.js";
5
+ import { useMemo } from "react";
6
+ function invokeCart(action, options) {
7
+ return {
8
+ entry: [...(options == null ? void 0 : options.entryActions) || [], "onCartActionEntry", "onCartActionOptimisticUI", action],
9
+ on: {
10
+ RESOLVE: {
11
+ target: (options == null ? void 0 : options.resolveTarget) || "idle",
12
+ actions: [i({
13
+ prevCart: (context) => context == null ? void 0 : context.cart,
14
+ cart: (_, event) => {
15
+ var _a;
16
+ return (_a = event == null ? void 0 : event.payload) == null ? void 0 : _a.cart;
17
+ },
18
+ rawCartResult: (_, event) => {
19
+ var _a;
20
+ return (_a = event == null ? void 0 : event.payload) == null ? void 0 : _a.rawCartResult;
21
+ },
22
+ errors: (_) => void 0
23
+ })]
24
+ },
25
+ ERROR: {
26
+ target: (options == null ? void 0 : options.errorTarget) || "error",
27
+ actions: [i({
28
+ prevCart: (context) => context == null ? void 0 : context.cart,
29
+ cart: (context) => context == null ? void 0 : context.lastValidCart,
30
+ errors: (_, event) => {
31
+ var _a;
32
+ return (_a = event == null ? void 0 : event.payload) == null ? void 0 : _a.errors;
33
+ }
34
+ })]
35
+ },
36
+ CART_COMPLETED: {
37
+ target: "cartCompleted",
38
+ actions: i({
39
+ prevCart: (_) => void 0,
40
+ cart: (_) => void 0,
41
+ lastValidCart: (_) => void 0,
42
+ errors: (_) => void 0
43
+ })
44
+ }
45
+ },
46
+ exit: ["onCartActionComplete", ...(options == null ? void 0 : options.exitActions) || []]
47
+ };
48
+ }
49
+ const INITIALIZING_CART_EVENTS = {
50
+ CART_FETCH: {
51
+ target: "cartFetching"
52
+ },
53
+ CART_CREATE: {
54
+ target: "cartCreating"
55
+ },
56
+ CART_SET: {
57
+ target: "idle",
58
+ actions: [i({
59
+ rawCartResult: (_, event) => event.payload.cart,
60
+ cart: (_, event) => cartFromGraphQL(event.payload.cart)
61
+ })]
62
+ }
63
+ };
64
+ const UPDATING_CART_EVENTS = {
65
+ CARTLINE_ADD: {
66
+ target: "cartLineAdding"
67
+ },
68
+ CARTLINE_UPDATE: {
69
+ target: "cartLineUpdating"
70
+ },
71
+ CARTLINE_REMOVE: {
72
+ target: "cartLineRemoving"
73
+ },
74
+ NOTE_UPDATE: {
75
+ target: "noteUpdating"
76
+ },
77
+ BUYER_IDENTITY_UPDATE: {
78
+ target: "buyerIdentityUpdating"
79
+ },
80
+ CART_ATTRIBUTES_UPDATE: {
81
+ target: "cartAttributesUpdating"
82
+ },
83
+ DISCOUNT_CODES_UPDATE: {
84
+ target: "discountCodesUpdating"
85
+ }
86
+ };
87
+ function createCartMachine(initialCart) {
88
+ return s({
89
+ id: "Cart",
90
+ initial: initialCart ? "idle" : "uninitialized",
91
+ context: {
92
+ cart: initialCart && cartFromGraphQL(initialCart)
93
+ },
94
+ states: {
95
+ uninitialized: {
96
+ on: INITIALIZING_CART_EVENTS
97
+ },
98
+ cartCompleted: {
99
+ on: INITIALIZING_CART_EVENTS
100
+ },
101
+ initializationError: {
102
+ on: INITIALIZING_CART_EVENTS
103
+ },
104
+ idle: {
105
+ on: {
106
+ ...INITIALIZING_CART_EVENTS,
107
+ ...UPDATING_CART_EVENTS
108
+ }
109
+ },
110
+ error: {
111
+ on: {
112
+ ...INITIALIZING_CART_EVENTS,
113
+ ...UPDATING_CART_EVENTS
114
+ }
115
+ },
116
+ cartFetching: invokeCart("cartFetchAction", {
117
+ errorTarget: "initializationError"
118
+ }),
119
+ cartCreating: invokeCart("cartCreateAction", {
120
+ errorTarget: "initializationError"
121
+ }),
122
+ cartLineRemoving: invokeCart("cartLineRemoveAction"),
123
+ cartLineUpdating: invokeCart("cartLineUpdateAction"),
124
+ cartLineAdding: invokeCart("cartLineAddAction"),
125
+ noteUpdating: invokeCart("noteUpdateAction"),
126
+ buyerIdentityUpdating: invokeCart("buyerIdentityUpdateAction"),
127
+ cartAttributesUpdating: invokeCart("cartAttributesUpdateAction"),
128
+ discountCodesUpdating: invokeCart("discountCodesUpdateAction")
129
+ }
130
+ });
131
+ }
132
+ function useCartAPIStateMachine({
133
+ numCartLines,
134
+ onCartActionEntry,
135
+ onCartActionOptimisticUI,
136
+ onCartActionComplete,
137
+ data: cart,
138
+ cartFragment,
139
+ countryCode
140
+ }) {
141
+ const {
142
+ cartFetch,
143
+ cartCreate,
144
+ cartLineAdd,
145
+ cartLineUpdate,
146
+ cartLineRemove,
147
+ noteUpdate,
148
+ buyerIdentityUpdate,
149
+ cartAttributesUpdate,
150
+ discountCodesUpdate
151
+ } = useCartActions({
152
+ numCartLines,
153
+ cartFragment,
154
+ countryCode
155
+ });
156
+ const cartMachine = useMemo(() => createCartMachine(cart), [cart]);
157
+ const [state, send, service] = useMachine(cartMachine, {
158
+ actions: {
159
+ cartFetchAction: async (_, event) => {
160
+ var _a;
161
+ if (event.type !== "CART_FETCH")
162
+ return;
163
+ const {
164
+ data,
165
+ errors
166
+ } = await cartFetch((_a = event == null ? void 0 : event.payload) == null ? void 0 : _a.cartId);
167
+ const resultEvent = eventFromFetchResult(event, data == null ? void 0 : data.cart, errors);
168
+ send(resultEvent);
169
+ },
170
+ cartCreateAction: async (_, event) => {
171
+ var _a;
172
+ if (event.type !== "CART_CREATE")
173
+ return;
174
+ const {
175
+ data,
176
+ errors
177
+ } = await cartCreate(event == null ? void 0 : event.payload);
178
+ const resultEvent = eventFromFetchResult(event, (_a = data == null ? void 0 : data.cartCreate) == null ? void 0 : _a.cart, errors);
179
+ send(resultEvent);
180
+ },
181
+ cartLineAddAction: async (context, event) => {
182
+ var _a, _b;
183
+ if (event.type !== "CARTLINE_ADD" || !((_a = context == null ? void 0 : context.cart) == null ? void 0 : _a.id))
184
+ return;
185
+ const {
186
+ data,
187
+ errors
188
+ } = await cartLineAdd(context.cart.id, event.payload.lines);
189
+ const resultEvent = eventFromFetchResult(event, (_b = data == null ? void 0 : data.cartLinesAdd) == null ? void 0 : _b.cart, errors);
190
+ send(resultEvent);
191
+ },
192
+ cartLineUpdateAction: async (context, event) => {
193
+ var _a, _b;
194
+ if (event.type !== "CARTLINE_UPDATE" || !((_a = context == null ? void 0 : context.cart) == null ? void 0 : _a.id))
195
+ return;
196
+ const {
197
+ data,
198
+ errors
199
+ } = await cartLineUpdate(context.cart.id, event.payload.lines);
200
+ const resultEvent = eventFromFetchResult(event, (_b = data == null ? void 0 : data.cartLinesUpdate) == null ? void 0 : _b.cart, errors);
201
+ send(resultEvent);
202
+ },
203
+ cartLineRemoveAction: async (context, event) => {
204
+ var _a, _b;
205
+ if (event.type !== "CARTLINE_REMOVE" || !((_a = context == null ? void 0 : context.cart) == null ? void 0 : _a.id))
206
+ return;
207
+ const {
208
+ data,
209
+ errors
210
+ } = await cartLineRemove(context.cart.id, event.payload.lines);
211
+ const resultEvent = eventFromFetchResult(event, (_b = data == null ? void 0 : data.cartLinesRemove) == null ? void 0 : _b.cart, errors);
212
+ send(resultEvent);
213
+ },
214
+ noteUpdateAction: async (context, event) => {
215
+ var _a, _b;
216
+ if (event.type !== "NOTE_UPDATE" || !((_a = context == null ? void 0 : context.cart) == null ? void 0 : _a.id))
217
+ return;
218
+ const {
219
+ data,
220
+ errors
221
+ } = await noteUpdate(context.cart.id, event.payload.note);
222
+ const resultEvent = eventFromFetchResult(event, (_b = data == null ? void 0 : data.cartNoteUpdate) == null ? void 0 : _b.cart, errors);
223
+ send(resultEvent);
224
+ },
225
+ buyerIdentityUpdateAction: async (context, event) => {
226
+ var _a, _b;
227
+ if (event.type !== "BUYER_IDENTITY_UPDATE" || !((_a = context == null ? void 0 : context.cart) == null ? void 0 : _a.id))
228
+ return;
229
+ const {
230
+ data,
231
+ errors
232
+ } = await buyerIdentityUpdate(context.cart.id, event.payload.buyerIdentity);
233
+ const resultEvent = eventFromFetchResult(event, (_b = data == null ? void 0 : data.cartBuyerIdentityUpdate) == null ? void 0 : _b.cart, errors);
234
+ send(resultEvent);
235
+ },
236
+ cartAttributesUpdateAction: async (context, event) => {
237
+ var _a, _b;
238
+ if (event.type !== "CART_ATTRIBUTES_UPDATE" || !((_a = context == null ? void 0 : context.cart) == null ? void 0 : _a.id))
239
+ return;
240
+ const {
241
+ data,
242
+ errors
243
+ } = await cartAttributesUpdate(context.cart.id, event.payload.attributes);
244
+ const resultEvent = eventFromFetchResult(event, (_b = data == null ? void 0 : data.cartAttributesUpdate) == null ? void 0 : _b.cart, errors);
245
+ send(resultEvent);
246
+ },
247
+ discountCodesUpdateAction: async (context, event) => {
248
+ var _a, _b;
249
+ if (event.type !== "DISCOUNT_CODES_UPDATE" || !((_a = context == null ? void 0 : context.cart) == null ? void 0 : _a.id))
250
+ return;
251
+ const {
252
+ data,
253
+ errors
254
+ } = await discountCodesUpdate(context.cart.id, event.payload.discountCodes);
255
+ const resultEvent = eventFromFetchResult(event, (_b = data == null ? void 0 : data.cartDiscountCodesUpdate) == null ? void 0 : _b.cart, errors);
256
+ send(resultEvent);
257
+ },
258
+ ...onCartActionEntry && {
259
+ onCartActionEntry: (context, event) => {
260
+ if (isCartActionEvent(event)) {
261
+ onCartActionEntry(context, event);
262
+ }
263
+ }
264
+ },
265
+ ...onCartActionOptimisticUI && {
266
+ onCartActionOptimisticUI: i((context, event) => {
267
+ return onCartActionOptimisticUI(context, event);
268
+ })
269
+ },
270
+ ...onCartActionComplete && {
271
+ onCartActionComplete: (context, event) => {
272
+ if (isCartFetchResultEvent(event)) {
273
+ onCartActionComplete(context, event);
274
+ }
275
+ }
276
+ }
277
+ }
278
+ });
279
+ return useMemo(() => [state, send, service], [state, send, service]);
280
+ }
281
+ function cartFromGraphQL(cart) {
282
+ var _a;
283
+ return {
284
+ ...cart,
285
+ lines: flattenConnection(cart == null ? void 0 : cart.lines),
286
+ note: (_a = cart.note) != null ? _a : void 0
287
+ };
288
+ }
289
+ function eventFromFetchResult(cartActionEvent, cart, errors) {
290
+ if (errors) {
291
+ return {
292
+ type: "ERROR",
293
+ payload: {
294
+ errors,
295
+ cartActionEvent
296
+ }
297
+ };
298
+ }
299
+ if (!cart) {
300
+ return {
301
+ type: "CART_COMPLETED",
302
+ payload: {
303
+ cartActionEvent
304
+ }
305
+ };
306
+ }
307
+ return {
308
+ type: "RESOLVE",
309
+ payload: {
310
+ cart: cartFromGraphQL(cart),
311
+ rawCartResult: cart,
312
+ cartActionEvent
313
+ }
314
+ };
315
+ }
316
+ function isCartActionEvent(event) {
317
+ return event.type === "CART_CREATE" || event.type === "CARTLINE_ADD" || event.type === "CARTLINE_UPDATE" || event.type === "CARTLINE_REMOVE" || event.type === "NOTE_UPDATE" || event.type === "BUYER_IDENTITY_UPDATE" || event.type === "CART_ATTRIBUTES_UPDATE" || event.type === "DISCOUNT_CODES_UPDATE";
318
+ }
319
+ function isCartFetchResultEvent(event) {
320
+ return event.type === "RESOLVE" || event.type === "ERROR" || event.type === "CART_COMPLETED";
321
+ }
322
+ export {
323
+ cartFromGraphQL,
324
+ useCartAPIStateMachine
325
+ };
326
+ //# sourceMappingURL=useCartAPIStateMachine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCartAPIStateMachine.js","sources":["../../src/useCartAPIStateMachine.tsx"],"sourcesContent":["import {useMachine} from '@xstate/react/fsm';\nimport {createMachine, assign, StateMachine} from '@xstate/fsm';\nimport {\n Cart,\n CartMachineActionEvent,\n CartMachineActions,\n CartMachineContext,\n CartMachineEvent,\n CartMachineFetchResultEvent,\n CartMachineTypeState,\n} from './cart-types.js';\nimport {flattenConnection} from './flatten-connection.js';\nimport {useCartActions} from './useCartActions.js';\nimport {useMemo} from 'react';\nimport {InitEvent} from '@xstate/fsm/lib/types.js';\nimport {CountryCode, Cart as CartType} from './storefront-api-types.js';\nimport type {PartialDeep} from 'type-fest';\n\nfunction invokeCart(\n action: keyof CartMachineActions,\n options?: {\n entryActions?: [keyof CartMachineActions];\n resolveTarget?: CartMachineTypeState['value'];\n errorTarget?: CartMachineTypeState['value'];\n exitActions?: [keyof CartMachineActions];\n }\n): StateMachine.Config<CartMachineContext, CartMachineEvent>['states']['on'] {\n return {\n entry: [\n ...(options?.entryActions || []),\n 'onCartActionEntry',\n 'onCartActionOptimisticUI',\n action,\n ],\n on: {\n RESOLVE: {\n target: options?.resolveTarget || 'idle',\n actions: [\n assign({\n prevCart: (context) => context?.cart,\n cart: (_, event) => event?.payload?.cart,\n rawCartResult: (_, event) => event?.payload?.rawCartResult,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n errors: (_) => undefined,\n }),\n ],\n },\n ERROR: {\n target: options?.errorTarget || 'error',\n actions: [\n assign({\n prevCart: (context) => context?.cart,\n cart: (context) => context?.lastValidCart,\n errors: (_, event) => event?.payload?.errors,\n }),\n ],\n },\n CART_COMPLETED: {\n target: 'cartCompleted',\n actions: assign({\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n prevCart: (_) => undefined,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n cart: (_) => undefined,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n lastValidCart: (_) => undefined,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n errors: (_) => undefined,\n }),\n },\n },\n exit: ['onCartActionComplete', ...(options?.exitActions || [])],\n };\n}\n\nconst INITIALIZING_CART_EVENTS: StateMachine.Machine<\n CartMachineContext,\n CartMachineEvent,\n CartMachineTypeState\n>['config']['states']['uninitialized']['on'] = {\n CART_FETCH: {\n target: 'cartFetching',\n },\n CART_CREATE: {\n target: 'cartCreating',\n },\n CART_SET: {\n target: 'idle',\n actions: [\n assign({\n rawCartResult: (_, event) => event.payload.cart,\n cart: (_, event) => cartFromGraphQL(event.payload.cart),\n }),\n ],\n },\n};\n\nconst UPDATING_CART_EVENTS: StateMachine.Machine<\n CartMachineContext,\n CartMachineEvent,\n CartMachineTypeState\n>['config']['states']['idle']['on'] = {\n CARTLINE_ADD: {\n target: 'cartLineAdding',\n },\n CARTLINE_UPDATE: {\n target: 'cartLineUpdating',\n },\n CARTLINE_REMOVE: {\n target: 'cartLineRemoving',\n },\n NOTE_UPDATE: {\n target: 'noteUpdating',\n },\n BUYER_IDENTITY_UPDATE: {\n target: 'buyerIdentityUpdating',\n },\n CART_ATTRIBUTES_UPDATE: {\n target: 'cartAttributesUpdating',\n },\n DISCOUNT_CODES_UPDATE: {\n target: 'discountCodesUpdating',\n },\n};\n\nfunction createCartMachine(\n initialCart?: PartialDeep<CartType, {recurseIntoArrays: true}>\n) {\n return createMachine<\n CartMachineContext,\n CartMachineEvent,\n CartMachineTypeState\n >({\n id: 'Cart',\n initial: initialCart ? 'idle' : 'uninitialized',\n context: {\n cart: initialCart && cartFromGraphQL(initialCart),\n },\n states: {\n uninitialized: {\n on: INITIALIZING_CART_EVENTS,\n },\n cartCompleted: {\n on: INITIALIZING_CART_EVENTS,\n },\n initializationError: {\n on: INITIALIZING_CART_EVENTS,\n },\n idle: {\n on: {...INITIALIZING_CART_EVENTS, ...UPDATING_CART_EVENTS},\n },\n error: {\n on: {...INITIALIZING_CART_EVENTS, ...UPDATING_CART_EVENTS},\n },\n cartFetching: invokeCart('cartFetchAction', {\n errorTarget: 'initializationError',\n }),\n cartCreating: invokeCart('cartCreateAction', {\n errorTarget: 'initializationError',\n }),\n cartLineRemoving: invokeCart('cartLineRemoveAction'),\n cartLineUpdating: invokeCart('cartLineUpdateAction'),\n cartLineAdding: invokeCart('cartLineAddAction'),\n noteUpdating: invokeCart('noteUpdateAction'),\n buyerIdentityUpdating: invokeCart('buyerIdentityUpdateAction'),\n cartAttributesUpdating: invokeCart('cartAttributesUpdateAction'),\n discountCodesUpdating: invokeCart('discountCodesUpdateAction'),\n },\n });\n}\n\nexport function useCartAPIStateMachine({\n numCartLines,\n onCartActionEntry,\n onCartActionOptimisticUI,\n onCartActionComplete,\n data: cart,\n cartFragment,\n countryCode,\n}: {\n /** Maximum number of cart lines to fetch. Defaults to 250 cart lines. */\n numCartLines?: number;\n /** A callback that is invoked just before a Cart API action executes. */\n onCartActionEntry?: (\n context: CartMachineContext,\n event: CartMachineActionEvent\n ) => void;\n /** A callback that is invoked after executing the entry actions for optimistic UI changes. */\n onCartActionOptimisticUI?: (\n context: CartMachineContext,\n event: CartMachineEvent\n ) => Partial<CartMachineContext>;\n /** A callback that is invoked after a Cart API completes. */\n onCartActionComplete?: (\n context: CartMachineContext,\n event: CartMachineFetchResultEvent\n ) => void;\n /** An object with fields that correspond to the Storefront API's [Cart object](https://shopify.dev/api/storefront/latest/objects/cart). */\n data?: PartialDeep<CartType, {recurseIntoArrays: true}>;\n /** A fragment used to query the Storefront API's [Cart object](https://shopify.dev/api/storefront/latest/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. */\n countryCode?: CountryCode;\n}) {\n const {\n cartFetch,\n cartCreate,\n cartLineAdd,\n cartLineUpdate,\n cartLineRemove,\n noteUpdate,\n buyerIdentityUpdate,\n cartAttributesUpdate,\n discountCodesUpdate,\n } = useCartActions({\n numCartLines,\n cartFragment,\n countryCode,\n });\n\n const cartMachine = useMemo(() => createCartMachine(cart), [cart]);\n\n const [state, send, service] = useMachine(cartMachine, {\n actions: {\n cartFetchAction: async (_, event): Promise<void> => {\n if (event.type !== 'CART_FETCH') return;\n\n const {data, errors} = await cartFetch(event?.payload?.cartId);\n const resultEvent = eventFromFetchResult(event, data?.cart, errors);\n send(resultEvent);\n },\n cartCreateAction: async (_, event): Promise<void> => {\n if (event.type !== 'CART_CREATE') return;\n\n const {data, errors} = await cartCreate(event?.payload);\n const resultEvent = eventFromFetchResult(\n event,\n data?.cartCreate?.cart,\n errors\n );\n send(resultEvent);\n },\n cartLineAddAction: async (context, event): Promise<void> => {\n if (event.type !== 'CARTLINE_ADD' || !context?.cart?.id) return;\n\n const {data, errors} = await cartLineAdd(\n context.cart.id,\n event.payload.lines\n );\n\n const resultEvent = eventFromFetchResult(\n event,\n data?.cartLinesAdd?.cart,\n errors\n );\n\n send(resultEvent);\n },\n cartLineUpdateAction: async (context, event): Promise<void> => {\n if (event.type !== 'CARTLINE_UPDATE' || !context?.cart?.id) return;\n const {data, errors} = await cartLineUpdate(\n context.cart.id,\n event.payload.lines\n );\n\n const resultEvent = eventFromFetchResult(\n event,\n data?.cartLinesUpdate?.cart,\n errors\n );\n\n send(resultEvent);\n },\n cartLineRemoveAction: async (context, event): Promise<void> => {\n if (event.type !== 'CARTLINE_REMOVE' || !context?.cart?.id) return;\n const {data, errors} = await cartLineRemove(\n context.cart.id,\n event.payload.lines\n );\n\n const resultEvent = eventFromFetchResult(\n event,\n data?.cartLinesRemove?.cart,\n errors\n );\n\n send(resultEvent);\n },\n noteUpdateAction: async (context, event): Promise<void> => {\n if (event.type !== 'NOTE_UPDATE' || !context?.cart?.id) return;\n const {data, errors} = await noteUpdate(\n context.cart.id,\n event.payload.note\n );\n\n const resultEvent = eventFromFetchResult(\n event,\n data?.cartNoteUpdate?.cart,\n errors\n );\n\n send(resultEvent);\n },\n buyerIdentityUpdateAction: async (context, event): Promise<void> => {\n if (event.type !== 'BUYER_IDENTITY_UPDATE' || !context?.cart?.id)\n return;\n const {data, errors} = await buyerIdentityUpdate(\n context.cart.id,\n event.payload.buyerIdentity\n );\n\n const resultEvent = eventFromFetchResult(\n event,\n data?.cartBuyerIdentityUpdate?.cart,\n errors\n );\n\n send(resultEvent);\n },\n cartAttributesUpdateAction: async (context, event): Promise<void> => {\n if (event.type !== 'CART_ATTRIBUTES_UPDATE' || !context?.cart?.id)\n return;\n const {data, errors} = await cartAttributesUpdate(\n context.cart.id,\n event.payload.attributes\n );\n\n const resultEvent = eventFromFetchResult(\n event,\n data?.cartAttributesUpdate?.cart,\n errors\n );\n\n send(resultEvent);\n },\n discountCodesUpdateAction: async (context, event): Promise<void> => {\n if (event.type !== 'DISCOUNT_CODES_UPDATE' || !context?.cart?.id)\n return;\n const {data, errors} = await discountCodesUpdate(\n context.cart.id,\n event.payload.discountCodes\n );\n const resultEvent = eventFromFetchResult(\n event,\n data?.cartDiscountCodesUpdate?.cart,\n errors\n );\n\n send(resultEvent);\n },\n ...(onCartActionEntry && {\n onCartActionEntry: (context, event) => {\n if (isCartActionEvent(event)) {\n onCartActionEntry(context, event);\n }\n },\n }),\n ...(onCartActionOptimisticUI && {\n onCartActionOptimisticUI: assign((context, event) => {\n return onCartActionOptimisticUI(context, event);\n }),\n }),\n ...(onCartActionComplete && {\n onCartActionComplete: (context, event) => {\n if (isCartFetchResultEvent(event)) {\n onCartActionComplete(context, event);\n }\n },\n }),\n } as CartMachineActions,\n });\n\n return useMemo(() => [state, send, service] as const, [state, send, service]);\n}\n\nexport function cartFromGraphQL(\n cart: PartialDeep<CartType, {recurseIntoArrays: true}>\n): Cart {\n return {\n ...cart,\n lines: flattenConnection(cart?.lines),\n note: cart.note ?? undefined,\n };\n}\n\nfunction eventFromFetchResult(\n cartActionEvent: CartMachineActionEvent,\n cart?: PartialDeep<CartType, {recurseIntoArrays: true}> | null,\n errors?: unknown\n): CartMachineFetchResultEvent {\n if (errors) {\n return {type: 'ERROR', payload: {errors, cartActionEvent}};\n }\n\n if (!cart) {\n return {\n type: 'CART_COMPLETED',\n payload: {\n cartActionEvent,\n },\n };\n }\n\n return {\n type: 'RESOLVE',\n payload: {\n cart: cartFromGraphQL(cart),\n rawCartResult: cart,\n cartActionEvent,\n },\n };\n}\n\nfunction isCartActionEvent(\n event: CartMachineEvent | InitEvent\n): event is CartMachineActionEvent {\n return (\n event.type === 'CART_CREATE' ||\n event.type === 'CARTLINE_ADD' ||\n event.type === 'CARTLINE_UPDATE' ||\n event.type === 'CARTLINE_REMOVE' ||\n event.type === 'NOTE_UPDATE' ||\n event.type === 'BUYER_IDENTITY_UPDATE' ||\n event.type === 'CART_ATTRIBUTES_UPDATE' ||\n event.type === 'DISCOUNT_CODES_UPDATE'\n );\n}\n\nfunction isCartFetchResultEvent(\n event: CartMachineEvent | InitEvent\n): event is CartMachineFetchResultEvent {\n return (\n event.type === 'RESOLVE' ||\n event.type === 'ERROR' ||\n event.type === 'CART_COMPLETED'\n );\n}\n"],"names":["invokeCart","action","options","entry","entryActions","on","RESOLVE","target","resolveTarget","actions","assign","prevCart","context","cart","_","event","payload","rawCartResult","errors","undefined","ERROR","errorTarget","lastValidCart","CART_COMPLETED","exit","exitActions","INITIALIZING_CART_EVENTS","CART_FETCH","CART_CREATE","CART_SET","cartFromGraphQL","UPDATING_CART_EVENTS","CARTLINE_ADD","CARTLINE_UPDATE","CARTLINE_REMOVE","NOTE_UPDATE","BUYER_IDENTITY_UPDATE","CART_ATTRIBUTES_UPDATE","DISCOUNT_CODES_UPDATE","createCartMachine","initialCart","createMachine","id","initial","states","uninitialized","cartCompleted","initializationError","idle","error","cartFetching","cartCreating","cartLineRemoving","cartLineUpdating","cartLineAdding","noteUpdating","buyerIdentityUpdating","cartAttributesUpdating","discountCodesUpdating","useCartAPIStateMachine","numCartLines","onCartActionEntry","onCartActionOptimisticUI","onCartActionComplete","data","cartFragment","countryCode","cartFetch","cartCreate","cartLineAdd","cartLineUpdate","cartLineRemove","noteUpdate","buyerIdentityUpdate","cartAttributesUpdate","discountCodesUpdate","useCartActions","cartMachine","useMemo","state","send","service","useMachine","cartFetchAction","type","cartId","resultEvent","eventFromFetchResult","cartCreateAction","cartLineAddAction","lines","cartLinesAdd","cartLineUpdateAction","cartLinesUpdate","cartLineRemoveAction","cartLinesRemove","noteUpdateAction","note","cartNoteUpdate","buyerIdentityUpdateAction","buyerIdentity","cartBuyerIdentityUpdate","cartAttributesUpdateAction","attributes","discountCodesUpdateAction","discountCodes","cartDiscountCodesUpdate","isCartActionEvent","isCartFetchResultEvent","flattenConnection","cartActionEvent"],"mappings":"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"}
@@ -0,0 +1,123 @@
1
+ "use strict";
2
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
+ const require$$0 = require("react");
4
+ const cartQueries = require("./cart-queries.cjs");
5
+ const cartHooks = require("./cart-hooks.cjs");
6
+ function useCartActions({
7
+ numCartLines,
8
+ cartFragment,
9
+ countryCode = "US"
10
+ }) {
11
+ const fetchCart = cartHooks.useCartFetch();
12
+ const cartFetch = require$$0.useCallback((cartId) => {
13
+ return fetchCart({
14
+ query: cartQueries.CartQuery(cartFragment),
15
+ variables: {
16
+ id: cartId,
17
+ numCartLines,
18
+ country: countryCode
19
+ }
20
+ });
21
+ }, [fetchCart, cartFragment, numCartLines, countryCode]);
22
+ const cartCreate = require$$0.useCallback((cart) => {
23
+ return fetchCart({
24
+ query: cartQueries.CartCreate(cartFragment),
25
+ variables: {
26
+ input: cart,
27
+ numCartLines,
28
+ country: countryCode
29
+ }
30
+ });
31
+ }, [cartFragment, countryCode, fetchCart, numCartLines]);
32
+ const cartLineAdd = require$$0.useCallback((cartId, lines) => {
33
+ return fetchCart({
34
+ query: cartQueries.CartLineAdd(cartFragment),
35
+ variables: {
36
+ cartId,
37
+ lines,
38
+ numCartLines,
39
+ country: countryCode
40
+ }
41
+ });
42
+ }, [cartFragment, countryCode, fetchCart, numCartLines]);
43
+ const cartLineUpdate = require$$0.useCallback((cartId, lines) => {
44
+ return fetchCart({
45
+ query: cartQueries.CartLineUpdate(cartFragment),
46
+ variables: {
47
+ cartId,
48
+ lines,
49
+ numCartLines,
50
+ country: countryCode
51
+ }
52
+ });
53
+ }, [cartFragment, countryCode, fetchCart, numCartLines]);
54
+ const cartLineRemove = require$$0.useCallback((cartId, lines) => {
55
+ return fetchCart({
56
+ query: cartQueries.CartLineRemove(cartFragment),
57
+ variables: {
58
+ cartId,
59
+ lines,
60
+ numCartLines,
61
+ country: countryCode
62
+ }
63
+ });
64
+ }, [cartFragment, countryCode, fetchCart, numCartLines]);
65
+ const noteUpdate = require$$0.useCallback((cartId, note) => {
66
+ return fetchCart({
67
+ query: cartQueries.CartNoteUpdate(cartFragment),
68
+ variables: {
69
+ cartId,
70
+ note,
71
+ numCartLines,
72
+ country: countryCode
73
+ }
74
+ });
75
+ }, [fetchCart, cartFragment, numCartLines, countryCode]);
76
+ const buyerIdentityUpdate = require$$0.useCallback((cartId, buyerIdentity) => {
77
+ return fetchCart({
78
+ query: cartQueries.CartBuyerIdentityUpdate(cartFragment),
79
+ variables: {
80
+ cartId,
81
+ buyerIdentity,
82
+ numCartLines,
83
+ country: countryCode
84
+ }
85
+ });
86
+ }, [cartFragment, countryCode, fetchCart, numCartLines]);
87
+ const cartAttributesUpdate = require$$0.useCallback((cartId, attributes) => {
88
+ return fetchCart({
89
+ query: cartQueries.CartAttributesUpdate(cartFragment),
90
+ variables: {
91
+ cartId,
92
+ attributes,
93
+ numCartLines,
94
+ country: countryCode
95
+ }
96
+ });
97
+ }, [cartFragment, countryCode, fetchCart, numCartLines]);
98
+ const discountCodesUpdate = require$$0.useCallback((cartId, discountCodes) => {
99
+ return fetchCart({
100
+ query: cartQueries.CartDiscountCodesUpdate(cartFragment),
101
+ variables: {
102
+ cartId,
103
+ discountCodes,
104
+ numCartLines,
105
+ country: countryCode
106
+ }
107
+ });
108
+ }, [cartFragment, countryCode, fetchCart, numCartLines]);
109
+ return require$$0.useMemo(() => ({
110
+ cartFetch,
111
+ cartCreate,
112
+ cartLineAdd,
113
+ cartLineUpdate,
114
+ cartLineRemove,
115
+ noteUpdate,
116
+ buyerIdentityUpdate,
117
+ cartAttributesUpdate,
118
+ discountCodesUpdate,
119
+ cartFragment
120
+ }), [cartFetch, cartCreate, cartLineAdd, cartLineUpdate, cartLineRemove, noteUpdate, buyerIdentityUpdate, cartAttributesUpdate, discountCodesUpdate, cartFragment]);
121
+ }
122
+ exports.useCartActions = useCartActions;
123
+ //# sourceMappingURL=useCartActions.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCartActions.cjs","sources":["../../src/useCartActions.tsx"],"sourcesContent":["import {useCallback, useMemo} from 'react';\nimport {\n AttributeInput,\n CartBuyerIdentityInput,\n CartInput,\n CartLineInput,\n CartLineUpdateInput,\n CountryCode,\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/2022-07/objects/Cart)\n */\nexport function useCartActions({\n numCartLines,\n cartFragment,\n countryCode = 'US',\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/latest/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. */\n countryCode?: CountryCode;\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 },\n });\n },\n [fetchCart, cartFragment, numCartLines, countryCode]\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 },\n });\n },\n [cartFragment, countryCode, fetchCart, numCartLines]\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 },\n });\n },\n [cartFragment, countryCode, fetchCart, numCartLines]\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 },\n });\n },\n [cartFragment, countryCode, fetchCart, numCartLines]\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 },\n });\n },\n [cartFragment, countryCode, fetchCart, numCartLines]\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 },\n });\n },\n [fetchCart, cartFragment, numCartLines, countryCode]\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 },\n });\n },\n [cartFragment, countryCode, fetchCart, numCartLines]\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 },\n });\n },\n [cartFragment, countryCode, fetchCart, numCartLines]\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 },\n });\n },\n [cartFragment, countryCode, fetchCart, numCartLines]\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"],"names":["useCartActions","numCartLines","cartFragment","countryCode","fetchCart","useCartFetch","cartFetch","useCallback","cartId","query","CartQuery","variables","id","country","cartCreate","cart","CartCreate","input","cartLineAdd","lines","CartLineAdd","cartLineUpdate","CartLineUpdate","cartLineRemove","CartLineRemove","noteUpdate","note","CartNoteUpdate","buyerIdentityUpdate","buyerIdentity","CartBuyerIdentityUpdate","cartAttributesUpdate","attributes","CartAttributesUpdate","discountCodesUpdate","discountCodes","CartDiscountCodesUpdate","useMemo"],"mappings":"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"}