@shopify/hydrogen-react 0.0.0-next-aac51f0 → 0.0.0-next-6e09b9e
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.
- package/dist/dev/CartProvider.js +20 -20
- package/dist/dev/CartProvider.js.map +1 -1
- package/dist/dev/MediaFile.js.map +1 -1
- package/dist/dev/MediaFile.mjs.map +1 -1
- package/dist/dev/Metafield.js +2 -2
- package/dist/dev/Metafield.js.map +1 -1
- package/dist/dev/ModelViewer.js +4 -4
- package/dist/dev/ModelViewer.js.map +1 -1
- package/dist/dev/ProductPrice.js.map +1 -1
- package/dist/dev/ProductPrice.mjs.map +1 -1
- package/dist/dev/ProductProvider.js +14 -14
- package/dist/dev/ProductProvider.js.map +1 -1
- package/dist/dev/ShopifyProvider.js +4 -4
- package/dist/dev/ShopifyProvider.js.map +1 -1
- package/dist/dev/Video.js +2 -2
- package/dist/dev/cart-hooks.js +4 -4
- package/dist/dev/cart-hooks.js.map +1 -1
- package/dist/dev/cart-hooks.mjs +3 -3
- package/dist/dev/cart-hooks.mjs.map +1 -1
- package/dist/dev/load-script.js +3 -3
- package/dist/dev/load-script.js.map +1 -1
- package/dist/dev/metafield-parser.js +0 -2
- package/dist/dev/metafield-parser.js.map +1 -1
- package/dist/dev/metafield-parser.mjs +0 -2
- package/dist/dev/metafield-parser.mjs.map +1 -1
- package/dist/dev/useCartAPIStateMachine.js +12 -12
- package/dist/dev/useCartAPIStateMachine.js.map +1 -1
- package/dist/dev/useCartAPIStateMachine.mjs +8 -8
- package/dist/dev/useCartAPIStateMachine.mjs.map +1 -1
- package/dist/dev/useCartActions.js +11 -11
- package/dist/dev/useCartActions.js.map +1 -1
- package/dist/dev/useMoney.js +5 -5
- package/dist/dev/useMoney.js.map +1 -1
- package/dist/prod/CartProvider.js +20 -20
- package/dist/prod/CartProvider.js.map +1 -1
- package/dist/prod/MediaFile.js.map +1 -1
- package/dist/prod/MediaFile.mjs.map +1 -1
- package/dist/prod/Metafield.js +2 -2
- package/dist/prod/Metafield.js.map +1 -1
- package/dist/prod/ModelViewer.js +4 -4
- package/dist/prod/ModelViewer.js.map +1 -1
- package/dist/prod/ProductPrice.js.map +1 -1
- package/dist/prod/ProductPrice.mjs.map +1 -1
- package/dist/prod/ProductProvider.js +14 -14
- package/dist/prod/ProductProvider.js.map +1 -1
- package/dist/prod/ShopifyProvider.js +4 -4
- package/dist/prod/ShopifyProvider.js.map +1 -1
- package/dist/prod/Video.js +2 -2
- package/dist/prod/cart-hooks.js +4 -4
- package/dist/prod/cart-hooks.js.map +1 -1
- package/dist/prod/cart-hooks.mjs +3 -3
- package/dist/prod/cart-hooks.mjs.map +1 -1
- package/dist/prod/load-script.js +3 -3
- package/dist/prod/load-script.js.map +1 -1
- package/dist/prod/metafield-parser.js +0 -2
- package/dist/prod/metafield-parser.js.map +1 -1
- package/dist/prod/metafield-parser.mjs +0 -2
- package/dist/prod/metafield-parser.mjs.map +1 -1
- package/dist/prod/useCartAPIStateMachine.js +12 -12
- package/dist/prod/useCartAPIStateMachine.js.map +1 -1
- package/dist/prod/useCartAPIStateMachine.mjs +8 -8
- package/dist/prod/useCartAPIStateMachine.mjs.map +1 -1
- package/dist/prod/useCartActions.js +11 -11
- package/dist/prod/useCartActions.js.map +1 -1
- package/dist/prod/useMoney.js +5 -5
- package/dist/prod/useMoney.js.map +1 -1
- package/dist/types/MediaFile.d.ts +1 -2
- package/dist/types/ProductPrice.d.ts +1 -2
- package/dist/umd/hydrogen-react.dev.js +0 -10
- package/dist/umd/hydrogen-react.dev.js.map +1 -1
- package/dist/umd/hydrogen-react.prod.js +17 -17
- package/dist/umd/hydrogen-react.prod.js.map +1 -1
- package/package.json +5 -3
- package/dist/dev/_virtual/index.js +0 -5
- package/dist/dev/_virtual/index.js.map +0 -1
- package/dist/dev/_virtual/index.mjs +0 -5
- package/dist/dev/_virtual/index.mjs.map +0 -1
- package/dist/dev/_virtual/index2.js +0 -5
- package/dist/dev/_virtual/index2.js.map +0 -1
- package/dist/dev/_virtual/index2.mjs +0 -5
- package/dist/dev/_virtual/index2.mjs.map +0 -1
- package/dist/dev/_virtual/use-sync-external-store-shim.development.js +0 -5
- package/dist/dev/_virtual/use-sync-external-store-shim.development.js.map +0 -1
- package/dist/dev/_virtual/use-sync-external-store-shim.development.mjs +0 -5
- package/dist/dev/_virtual/use-sync-external-store-shim.development.mjs.map +0 -1
- package/dist/dev/_virtual/use-sync-external-store-shim.production.min.js +0 -5
- package/dist/dev/_virtual/use-sync-external-store-shim.production.min.js.map +0 -1
- package/dist/dev/_virtual/use-sync-external-store-shim.production.min.mjs +0 -5
- package/dist/dev/_virtual/use-sync-external-store-shim.production.min.mjs.map +0 -1
- package/dist/dev/_virtual/with-selector.development.js +0 -5
- package/dist/dev/_virtual/with-selector.development.js.map +0 -1
- package/dist/dev/_virtual/with-selector.development.mjs +0 -5
- package/dist/dev/_virtual/with-selector.development.mjs.map +0 -1
- package/dist/dev/_virtual/with-selector.js +0 -5
- package/dist/dev/_virtual/with-selector.js.map +0 -1
- package/dist/dev/_virtual/with-selector.mjs +0 -5
- package/dist/dev/_virtual/with-selector.mjs.map +0 -1
- package/dist/dev/_virtual/with-selector.production.min.js +0 -5
- package/dist/dev/_virtual/with-selector.production.min.js.map +0 -1
- package/dist/dev/_virtual/with-selector.production.min.mjs +0 -5
- package/dist/dev/_virtual/with-selector.production.min.mjs.map +0 -1
- package/dist/dev/node_modules/@xstate/fsm/es/index.js +0 -158
- package/dist/dev/node_modules/@xstate/fsm/es/index.js.map +0 -1
- package/dist/dev/node_modules/@xstate/fsm/es/index.mjs +0 -159
- package/dist/dev/node_modules/@xstate/fsm/es/index.mjs.map +0 -1
- package/dist/dev/node_modules/@xstate/react/es/fsm.js +0 -94
- package/dist/dev/node_modules/@xstate/react/es/fsm.js.map +0 -1
- package/dist/dev/node_modules/@xstate/react/es/fsm.mjs +0 -94
- package/dist/dev/node_modules/@xstate/react/es/fsm.mjs.map +0 -1
- package/dist/dev/node_modules/@xstate/react/es/useConstant.js +0 -30
- package/dist/dev/node_modules/@xstate/react/es/useConstant.js.map +0 -1
- package/dist/dev/node_modules/@xstate/react/es/useConstant.mjs +0 -12
- package/dist/dev/node_modules/@xstate/react/es/useConstant.mjs.map +0 -1
- package/dist/dev/node_modules/ts-expect/dist/index.js +0 -13
- package/dist/dev/node_modules/ts-expect/dist/index.js.map +0 -1
- package/dist/dev/node_modules/ts-expect/dist/index.mjs +0 -15
- package/dist/dev/node_modules/ts-expect/dist/index.mjs.map +0 -1
- package/dist/dev/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.js +0 -5
- package/dist/dev/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.js.map +0 -1
- package/dist/dev/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.mjs +0 -6
- package/dist/dev/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.mjs.map +0 -1
- package/dist/dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js +0 -107
- package/dist/dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js.map +0 -1
- package/dist/dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.mjs +0 -105
- package/dist/dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.mjs.map +0 -1
- package/dist/dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js +0 -74
- package/dist/dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js.map +0 -1
- package/dist/dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.mjs +0 -72
- package/dist/dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.mjs.map +0 -1
- package/dist/dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js +0 -138
- package/dist/dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js.map +0 -1
- package/dist/dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.mjs +0 -136
- package/dist/dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.mjs.map +0 -1
- package/dist/dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js +0 -60
- package/dist/dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js.map +0 -1
- package/dist/dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.mjs +0 -58
- package/dist/dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.mjs.map +0 -1
- package/dist/dev/node_modules/use-sync-external-store/shim/index.js +0 -21
- package/dist/dev/node_modules/use-sync-external-store/shim/index.js.map +0 -1
- package/dist/dev/node_modules/use-sync-external-store/shim/index.mjs +0 -21
- package/dist/dev/node_modules/use-sync-external-store/shim/index.mjs.map +0 -1
- package/dist/dev/node_modules/use-sync-external-store/shim/with-selector.js +0 -12
- package/dist/dev/node_modules/use-sync-external-store/shim/with-selector.js.map +0 -1
- package/dist/dev/node_modules/use-sync-external-store/shim/with-selector.mjs +0 -11
- package/dist/dev/node_modules/use-sync-external-store/shim/with-selector.mjs.map +0 -1
- package/dist/dev/node_modules/worktop/cookie/index.js +0 -27
- package/dist/dev/node_modules/worktop/cookie/index.js.map +0 -1
- package/dist/dev/node_modules/worktop/cookie/index.mjs +0 -27
- package/dist/dev/node_modules/worktop/cookie/index.mjs.map +0 -1
- package/dist/prod/_virtual/index.js +0 -5
- package/dist/prod/_virtual/index.js.map +0 -1
- package/dist/prod/_virtual/index.mjs +0 -5
- package/dist/prod/_virtual/index.mjs.map +0 -1
- package/dist/prod/_virtual/index2.js +0 -5
- package/dist/prod/_virtual/index2.js.map +0 -1
- package/dist/prod/_virtual/index2.mjs +0 -5
- package/dist/prod/_virtual/index2.mjs.map +0 -1
- package/dist/prod/_virtual/use-sync-external-store-shim.development.js +0 -5
- package/dist/prod/_virtual/use-sync-external-store-shim.development.js.map +0 -1
- package/dist/prod/_virtual/use-sync-external-store-shim.development.mjs +0 -5
- package/dist/prod/_virtual/use-sync-external-store-shim.development.mjs.map +0 -1
- package/dist/prod/_virtual/use-sync-external-store-shim.production.min.js +0 -5
- package/dist/prod/_virtual/use-sync-external-store-shim.production.min.js.map +0 -1
- package/dist/prod/_virtual/use-sync-external-store-shim.production.min.mjs +0 -5
- package/dist/prod/_virtual/use-sync-external-store-shim.production.min.mjs.map +0 -1
- package/dist/prod/_virtual/with-selector.development.js +0 -5
- package/dist/prod/_virtual/with-selector.development.js.map +0 -1
- package/dist/prod/_virtual/with-selector.development.mjs +0 -5
- package/dist/prod/_virtual/with-selector.development.mjs.map +0 -1
- package/dist/prod/_virtual/with-selector.js +0 -5
- package/dist/prod/_virtual/with-selector.js.map +0 -1
- package/dist/prod/_virtual/with-selector.mjs +0 -5
- package/dist/prod/_virtual/with-selector.mjs.map +0 -1
- package/dist/prod/_virtual/with-selector.production.min.js +0 -5
- package/dist/prod/_virtual/with-selector.production.min.js.map +0 -1
- package/dist/prod/_virtual/with-selector.production.min.mjs +0 -5
- package/dist/prod/_virtual/with-selector.production.min.mjs.map +0 -1
- package/dist/prod/node_modules/@xstate/fsm/es/index.js +0 -158
- package/dist/prod/node_modules/@xstate/fsm/es/index.js.map +0 -1
- package/dist/prod/node_modules/@xstate/fsm/es/index.mjs +0 -159
- package/dist/prod/node_modules/@xstate/fsm/es/index.mjs.map +0 -1
- package/dist/prod/node_modules/@xstate/react/es/fsm.js +0 -94
- package/dist/prod/node_modules/@xstate/react/es/fsm.js.map +0 -1
- package/dist/prod/node_modules/@xstate/react/es/fsm.mjs +0 -94
- package/dist/prod/node_modules/@xstate/react/es/fsm.mjs.map +0 -1
- package/dist/prod/node_modules/@xstate/react/es/useConstant.js +0 -30
- package/dist/prod/node_modules/@xstate/react/es/useConstant.js.map +0 -1
- package/dist/prod/node_modules/@xstate/react/es/useConstant.mjs +0 -12
- package/dist/prod/node_modules/@xstate/react/es/useConstant.mjs.map +0 -1
- package/dist/prod/node_modules/ts-expect/dist/index.js +0 -13
- package/dist/prod/node_modules/ts-expect/dist/index.js.map +0 -1
- package/dist/prod/node_modules/ts-expect/dist/index.mjs +0 -15
- package/dist/prod/node_modules/ts-expect/dist/index.mjs.map +0 -1
- package/dist/prod/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.js +0 -5
- package/dist/prod/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.js.map +0 -1
- package/dist/prod/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.mjs +0 -6
- package/dist/prod/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.mjs.map +0 -1
- package/dist/prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js +0 -107
- package/dist/prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js.map +0 -1
- package/dist/prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.mjs +0 -105
- package/dist/prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.mjs.map +0 -1
- package/dist/prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js +0 -74
- package/dist/prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js.map +0 -1
- package/dist/prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.mjs +0 -72
- package/dist/prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.mjs.map +0 -1
- package/dist/prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js +0 -138
- package/dist/prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js.map +0 -1
- package/dist/prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.mjs +0 -136
- package/dist/prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.mjs.map +0 -1
- package/dist/prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js +0 -60
- package/dist/prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js.map +0 -1
- package/dist/prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.mjs +0 -58
- package/dist/prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.mjs.map +0 -1
- package/dist/prod/node_modules/use-sync-external-store/shim/index.js +0 -21
- package/dist/prod/node_modules/use-sync-external-store/shim/index.js.map +0 -1
- package/dist/prod/node_modules/use-sync-external-store/shim/index.mjs +0 -21
- package/dist/prod/node_modules/use-sync-external-store/shim/index.mjs.map +0 -1
- package/dist/prod/node_modules/use-sync-external-store/shim/with-selector.js +0 -12
- package/dist/prod/node_modules/use-sync-external-store/shim/with-selector.js.map +0 -1
- package/dist/prod/node_modules/use-sync-external-store/shim/with-selector.mjs +0 -11
- package/dist/prod/node_modules/use-sync-external-store/shim/with-selector.mjs.map +0 -1
- package/dist/prod/node_modules/worktop/cookie/index.js +0 -27
- package/dist/prod/node_modules/worktop/cookie/index.js.map +0 -1
- package/dist/prod/node_modules/worktop/cookie/index.mjs +0 -27
- package/dist/prod/node_modules/worktop/cookie/index.mjs.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
3
|
-
const
|
|
3
|
+
const react = require("react");
|
|
4
4
|
const cartQueries = require("./cart-queries.js");
|
|
5
5
|
const cartHooks = require("./cart-hooks.js");
|
|
6
6
|
function useCartActions({
|
|
@@ -9,7 +9,7 @@ function useCartActions({
|
|
|
9
9
|
countryCode = "US"
|
|
10
10
|
}) {
|
|
11
11
|
const fetchCart = cartHooks.useCartFetch();
|
|
12
|
-
const cartFetch =
|
|
12
|
+
const cartFetch = react.useCallback((cartId) => {
|
|
13
13
|
return fetchCart({
|
|
14
14
|
query: cartQueries.CartQuery(cartFragment),
|
|
15
15
|
variables: {
|
|
@@ -19,7 +19,7 @@ function useCartActions({
|
|
|
19
19
|
}
|
|
20
20
|
});
|
|
21
21
|
}, [fetchCart, cartFragment, numCartLines, countryCode]);
|
|
22
|
-
const cartCreate =
|
|
22
|
+
const cartCreate = react.useCallback((cart) => {
|
|
23
23
|
return fetchCart({
|
|
24
24
|
query: cartQueries.CartCreate(cartFragment),
|
|
25
25
|
variables: {
|
|
@@ -29,7 +29,7 @@ function useCartActions({
|
|
|
29
29
|
}
|
|
30
30
|
});
|
|
31
31
|
}, [cartFragment, countryCode, fetchCart, numCartLines]);
|
|
32
|
-
const cartLineAdd =
|
|
32
|
+
const cartLineAdd = react.useCallback((cartId, lines) => {
|
|
33
33
|
return fetchCart({
|
|
34
34
|
query: cartQueries.CartLineAdd(cartFragment),
|
|
35
35
|
variables: {
|
|
@@ -40,7 +40,7 @@ function useCartActions({
|
|
|
40
40
|
}
|
|
41
41
|
});
|
|
42
42
|
}, [cartFragment, countryCode, fetchCart, numCartLines]);
|
|
43
|
-
const cartLineUpdate =
|
|
43
|
+
const cartLineUpdate = react.useCallback((cartId, lines) => {
|
|
44
44
|
return fetchCart({
|
|
45
45
|
query: cartQueries.CartLineUpdate(cartFragment),
|
|
46
46
|
variables: {
|
|
@@ -51,7 +51,7 @@ function useCartActions({
|
|
|
51
51
|
}
|
|
52
52
|
});
|
|
53
53
|
}, [cartFragment, countryCode, fetchCart, numCartLines]);
|
|
54
|
-
const cartLineRemove =
|
|
54
|
+
const cartLineRemove = react.useCallback((cartId, lines) => {
|
|
55
55
|
return fetchCart({
|
|
56
56
|
query: cartQueries.CartLineRemove(cartFragment),
|
|
57
57
|
variables: {
|
|
@@ -62,7 +62,7 @@ function useCartActions({
|
|
|
62
62
|
}
|
|
63
63
|
});
|
|
64
64
|
}, [cartFragment, countryCode, fetchCart, numCartLines]);
|
|
65
|
-
const noteUpdate =
|
|
65
|
+
const noteUpdate = react.useCallback((cartId, note) => {
|
|
66
66
|
return fetchCart({
|
|
67
67
|
query: cartQueries.CartNoteUpdate(cartFragment),
|
|
68
68
|
variables: {
|
|
@@ -73,7 +73,7 @@ function useCartActions({
|
|
|
73
73
|
}
|
|
74
74
|
});
|
|
75
75
|
}, [fetchCart, cartFragment, numCartLines, countryCode]);
|
|
76
|
-
const buyerIdentityUpdate =
|
|
76
|
+
const buyerIdentityUpdate = react.useCallback((cartId, buyerIdentity) => {
|
|
77
77
|
return fetchCart({
|
|
78
78
|
query: cartQueries.CartBuyerIdentityUpdate(cartFragment),
|
|
79
79
|
variables: {
|
|
@@ -84,7 +84,7 @@ function useCartActions({
|
|
|
84
84
|
}
|
|
85
85
|
});
|
|
86
86
|
}, [cartFragment, countryCode, fetchCart, numCartLines]);
|
|
87
|
-
const cartAttributesUpdate =
|
|
87
|
+
const cartAttributesUpdate = react.useCallback((cartId, attributes) => {
|
|
88
88
|
return fetchCart({
|
|
89
89
|
query: cartQueries.CartAttributesUpdate(cartFragment),
|
|
90
90
|
variables: {
|
|
@@ -95,7 +95,7 @@ function useCartActions({
|
|
|
95
95
|
}
|
|
96
96
|
});
|
|
97
97
|
}, [cartFragment, countryCode, fetchCart, numCartLines]);
|
|
98
|
-
const discountCodesUpdate =
|
|
98
|
+
const discountCodesUpdate = react.useCallback((cartId, discountCodes) => {
|
|
99
99
|
return fetchCart({
|
|
100
100
|
query: cartQueries.CartDiscountCodesUpdate(cartFragment),
|
|
101
101
|
variables: {
|
|
@@ -106,7 +106,7 @@ function useCartActions({
|
|
|
106
106
|
}
|
|
107
107
|
});
|
|
108
108
|
}, [cartFragment, countryCode, fetchCart, numCartLines]);
|
|
109
|
-
return
|
|
109
|
+
return react.useMemo(() => ({
|
|
110
110
|
cartFetch,
|
|
111
111
|
cartCreate,
|
|
112
112
|
cartLineAdd,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCartActions.js","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-10/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":";;;;;AAiCO,SAASA,eAAe;AAAA,EAC7BC;AAAAA,EACAC;AAAAA,EACAC,cAAc;AAHe,GAW5B;AACD,QAAMC,YAAYC,UAAAA;AAEZC,QAAAA,YAAYC,
|
|
1
|
+
{"version":3,"file":"useCartActions.js","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-10/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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"}
|
package/dist/prod/useMoney.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
3
|
-
const
|
|
3
|
+
const react = require("react");
|
|
4
4
|
const ShopifyProvider = require("./ShopifyProvider.js");
|
|
5
5
|
function useMoney(money) {
|
|
6
6
|
const {
|
|
@@ -10,7 +10,7 @@ function useMoney(money) {
|
|
|
10
10
|
throw new Error(`useMoney(): Unable to get 'locale' from 'useShop()', which means that 'locale' was not passed to '<ShopifyProvider/>'. 'locale' is required for 'useMoney()' to work`);
|
|
11
11
|
}
|
|
12
12
|
const amount = parseFloat(money.amount);
|
|
13
|
-
const options =
|
|
13
|
+
const options = react.useMemo(() => ({
|
|
14
14
|
style: "currency",
|
|
15
15
|
currency: money.currencyCode
|
|
16
16
|
}), [money.currencyCode]);
|
|
@@ -34,7 +34,7 @@ function useMoney(money) {
|
|
|
34
34
|
maximumFractionDigits: 0
|
|
35
35
|
});
|
|
36
36
|
const isPartCurrency = (part) => part.type === "currency";
|
|
37
|
-
const lazyFormatters =
|
|
37
|
+
const lazyFormatters = react.useMemo(() => ({
|
|
38
38
|
original: () => money,
|
|
39
39
|
currencyCode: () => money.currencyCode,
|
|
40
40
|
localizedString: () => defaultFormatter().format(amount),
|
|
@@ -55,7 +55,7 @@ function useMoney(money) {
|
|
|
55
55
|
},
|
|
56
56
|
amount: () => defaultFormatter().formatToParts(amount).filter((part) => ["decimal", "fraction", "group", "integer", "literal"].includes(part.type)).map((part) => part.value).join("")
|
|
57
57
|
}), [money, amount, nameFormatter, defaultFormatter, narrowSymbolFormatter, withoutCurrencyFormatter, withoutTrailingZerosFormatter, withoutTrailingZerosOrCurrencyFormatter]);
|
|
58
|
-
return
|
|
58
|
+
return react.useMemo(() => new Proxy(lazyFormatters, {
|
|
59
59
|
get: (target, key) => {
|
|
60
60
|
var _a;
|
|
61
61
|
return (_a = Reflect.get(target, key)) == null ? void 0 : _a.call(null);
|
|
@@ -63,7 +63,7 @@ function useMoney(money) {
|
|
|
63
63
|
}), [lazyFormatters]);
|
|
64
64
|
}
|
|
65
65
|
function useLazyFormatter(locale, options) {
|
|
66
|
-
return
|
|
66
|
+
return react.useMemo(() => {
|
|
67
67
|
let memoized;
|
|
68
68
|
return () => memoized != null ? memoized : memoized = new Intl.NumberFormat(locale, options);
|
|
69
69
|
}, [locale, options]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMoney.js","sources":["../../src/useMoney.tsx"],"sourcesContent":["import {useMemo} from 'react';\nimport {useShop} from './ShopifyProvider.js';\nimport {CurrencyCode, MoneyV2} from './storefront-api-types.js';\n\nexport type UseMoneyValue = {\n /**\n * The currency code from the `MoneyV2` object.\n */\n currencyCode: CurrencyCode;\n /**\n * The name for the currency code, returned by `Intl.NumberFormat`.\n */\n currencyName?: string;\n /**\n * The currency symbol returned by `Intl.NumberFormat`.\n */\n currencySymbol?: string;\n /**\n * The currency narrow symbol returned by `Intl.NumberFormat`.\n */\n currencyNarrowSymbol?: string;\n /**\n * The localized amount, without any currency symbols or non-number types from the `Intl.NumberFormat.formatToParts` parts.\n */\n amount: string;\n /**\n * All parts returned by `Intl.NumberFormat.formatToParts`.\n */\n parts: Intl.NumberFormatPart[];\n /**\n * A string returned by `new Intl.NumberFormat` for the amount and currency code,\n * using the `locale` value in the [`LocalizationProvider` component](https://shopify.dev/api/hydrogen/components/localization/localizationprovider).\n */\n localizedString: string;\n /**\n * The `MoneyV2` object provided as an argument to the hook.\n */\n original: MoneyV2;\n /**\n * A string with trailing zeros removed from the fractional part, if any exist. If there are no trailing zeros, then the fractional part remains.\n * For example, `$640.00` turns into `$640`.\n * `$640.42` remains `$640.42`.\n */\n withoutTrailingZeros: string;\n /**\n * A string without currency and without trailing zeros removed from the fractional part, if any exist. If there are no trailing zeros, then the fractional part remains.\n * For example, `$640.00` turns into `640`.\n * `$640.42` turns into `640.42`.\n */\n withoutTrailingZerosAndCurrency: string;\n};\n\n/**\n * The `useMoney` hook takes a [MoneyV2 object](https://shopify.dev/api/storefront/reference/common-objects/moneyv2) and returns a\n * default-formatted string of the amount with the correct currency indicator, along with some of the parts provided by\n * [Intl.NumberFormat](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat).\n * Uses `locale` from `ShopifyProvider`\n */\nexport function useMoney(money: MoneyV2): UseMoneyValue {\n const {locale} = useShop();\n\n if (!locale) {\n throw new Error(\n `useMoney(): Unable to get 'locale' from 'useShop()', which means that 'locale' was not passed to '<ShopifyProvider/>'. 'locale' is required for 'useMoney()' to work`\n );\n }\n\n const amount = parseFloat(money.amount);\n\n const options = useMemo(\n () => ({\n style: 'currency',\n currency: money.currencyCode,\n }),\n [money.currencyCode]\n );\n\n const defaultFormatter = useLazyFormatter(locale, options);\n\n const nameFormatter = useLazyFormatter(locale, {\n ...options,\n currencyDisplay: 'name',\n });\n\n const narrowSymbolFormatter = useLazyFormatter(locale, {\n ...options,\n currencyDisplay: 'narrowSymbol',\n });\n\n const withoutTrailingZerosFormatter = useLazyFormatter(locale, {\n ...options,\n minimumFractionDigits: 0,\n maximumFractionDigits: 0,\n });\n\n const withoutCurrencyFormatter = useLazyFormatter(locale);\n\n const withoutTrailingZerosOrCurrencyFormatter = useLazyFormatter(locale, {\n minimumFractionDigits: 0,\n maximumFractionDigits: 0,\n });\n\n const isPartCurrency = (part: Intl.NumberFormatPart) =>\n part.type === 'currency';\n\n // By wrapping these properties in functions, we only\n // create formatters if they are going to be used.\n const lazyFormatters = useMemo(\n () => ({\n original: () => money,\n currencyCode: () => money.currencyCode,\n\n localizedString: () => defaultFormatter().format(amount),\n\n parts: () => defaultFormatter().formatToParts(amount),\n\n withoutTrailingZeros: () =>\n amount % 1 === 0\n ? withoutTrailingZerosFormatter().format(amount)\n : defaultFormatter().format(amount),\n\n withoutTrailingZerosAndCurrency: () =>\n amount % 1 === 0\n ? withoutTrailingZerosOrCurrencyFormatter().format(amount)\n : withoutCurrencyFormatter().format(amount),\n\n currencyName: () =>\n nameFormatter().formatToParts(amount).find(isPartCurrency)?.value ??\n money.currencyCode, // e.g. \"US dollars\"\n\n currencySymbol: () =>\n defaultFormatter().formatToParts(amount).find(isPartCurrency)?.value ??\n money.currencyCode, // e.g. \"USD\"\n\n currencyNarrowSymbol: () =>\n narrowSymbolFormatter().formatToParts(amount).find(isPartCurrency)\n ?.value ?? '', // e.g. \"$\"\n\n amount: () =>\n defaultFormatter()\n .formatToParts(amount)\n .filter((part) =>\n ['decimal', 'fraction', 'group', 'integer', 'literal'].includes(\n part.type\n )\n )\n .map((part) => part.value)\n .join(''),\n }),\n [\n money,\n amount,\n nameFormatter,\n defaultFormatter,\n narrowSymbolFormatter,\n withoutCurrencyFormatter,\n withoutTrailingZerosFormatter,\n withoutTrailingZerosOrCurrencyFormatter,\n ]\n );\n\n // Call functions automatically when the properties are accessed\n // to keep these functions as an implementation detail.\n return useMemo(\n () =>\n new Proxy(lazyFormatters as unknown as UseMoneyValue, {\n get: (target, key) => Reflect.get(target, key)?.call(null),\n }),\n [lazyFormatters]\n );\n}\n\nfunction useLazyFormatter(locale: string, options?: Intl.NumberFormatOptions) {\n return useMemo(() => {\n let memoized: Intl.NumberFormat;\n return () => (memoized ??= new Intl.NumberFormat(locale, options));\n }, [locale, options]);\n}\n"],"names":["useMoney","money","locale","useShop","Error","amount","parseFloat","options","useMemo","style","currency","currencyCode","defaultFormatter","useLazyFormatter","nameFormatter","currencyDisplay","narrowSymbolFormatter","withoutTrailingZerosFormatter","minimumFractionDigits","maximumFractionDigits","withoutCurrencyFormatter","withoutTrailingZerosOrCurrencyFormatter","isPartCurrency","part","type","lazyFormatters","original","localizedString","format","parts","formatToParts","withoutTrailingZeros","withoutTrailingZerosAndCurrency","currencyName","find","value","currencySymbol","currencyNarrowSymbol","filter","includes","map","join","Proxy","get","target","key","Reflect","call","memoized","Intl","NumberFormat"],"mappings":";;;;AA0DO,SAASA,SAASC,OAA+B;AAChD,QAAA;AAAA,IAACC;AAAAA,MAAUC,gBAAjB,QAAA;AAEA,MAAI,CAACD,QAAQ;AACL,UAAA,IAAIE,MACP,sKADG;AAAA,EAGP;AAEKC,QAAAA,SAASC,WAAWL,MAAMI,MAAP;AAEnBE,QAAAA,UAAUC,
|
|
1
|
+
{"version":3,"file":"useMoney.js","sources":["../../src/useMoney.tsx"],"sourcesContent":["import {useMemo} from 'react';\nimport {useShop} from './ShopifyProvider.js';\nimport {CurrencyCode, MoneyV2} from './storefront-api-types.js';\n\nexport type UseMoneyValue = {\n /**\n * The currency code from the `MoneyV2` object.\n */\n currencyCode: CurrencyCode;\n /**\n * The name for the currency code, returned by `Intl.NumberFormat`.\n */\n currencyName?: string;\n /**\n * The currency symbol returned by `Intl.NumberFormat`.\n */\n currencySymbol?: string;\n /**\n * The currency narrow symbol returned by `Intl.NumberFormat`.\n */\n currencyNarrowSymbol?: string;\n /**\n * The localized amount, without any currency symbols or non-number types from the `Intl.NumberFormat.formatToParts` parts.\n */\n amount: string;\n /**\n * All parts returned by `Intl.NumberFormat.formatToParts`.\n */\n parts: Intl.NumberFormatPart[];\n /**\n * A string returned by `new Intl.NumberFormat` for the amount and currency code,\n * using the `locale` value in the [`LocalizationProvider` component](https://shopify.dev/api/hydrogen/components/localization/localizationprovider).\n */\n localizedString: string;\n /**\n * The `MoneyV2` object provided as an argument to the hook.\n */\n original: MoneyV2;\n /**\n * A string with trailing zeros removed from the fractional part, if any exist. If there are no trailing zeros, then the fractional part remains.\n * For example, `$640.00` turns into `$640`.\n * `$640.42` remains `$640.42`.\n */\n withoutTrailingZeros: string;\n /**\n * A string without currency and without trailing zeros removed from the fractional part, if any exist. If there are no trailing zeros, then the fractional part remains.\n * For example, `$640.00` turns into `640`.\n * `$640.42` turns into `640.42`.\n */\n withoutTrailingZerosAndCurrency: string;\n};\n\n/**\n * The `useMoney` hook takes a [MoneyV2 object](https://shopify.dev/api/storefront/reference/common-objects/moneyv2) and returns a\n * default-formatted string of the amount with the correct currency indicator, along with some of the parts provided by\n * [Intl.NumberFormat](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat).\n * Uses `locale` from `ShopifyProvider`\n */\nexport function useMoney(money: MoneyV2): UseMoneyValue {\n const {locale} = useShop();\n\n if (!locale) {\n throw new Error(\n `useMoney(): Unable to get 'locale' from 'useShop()', which means that 'locale' was not passed to '<ShopifyProvider/>'. 'locale' is required for 'useMoney()' to work`\n );\n }\n\n const amount = parseFloat(money.amount);\n\n const options = useMemo(\n () => ({\n style: 'currency',\n currency: money.currencyCode,\n }),\n [money.currencyCode]\n );\n\n const defaultFormatter = useLazyFormatter(locale, options);\n\n const nameFormatter = useLazyFormatter(locale, {\n ...options,\n currencyDisplay: 'name',\n });\n\n const narrowSymbolFormatter = useLazyFormatter(locale, {\n ...options,\n currencyDisplay: 'narrowSymbol',\n });\n\n const withoutTrailingZerosFormatter = useLazyFormatter(locale, {\n ...options,\n minimumFractionDigits: 0,\n maximumFractionDigits: 0,\n });\n\n const withoutCurrencyFormatter = useLazyFormatter(locale);\n\n const withoutTrailingZerosOrCurrencyFormatter = useLazyFormatter(locale, {\n minimumFractionDigits: 0,\n maximumFractionDigits: 0,\n });\n\n const isPartCurrency = (part: Intl.NumberFormatPart) =>\n part.type === 'currency';\n\n // By wrapping these properties in functions, we only\n // create formatters if they are going to be used.\n const lazyFormatters = useMemo(\n () => ({\n original: () => money,\n currencyCode: () => money.currencyCode,\n\n localizedString: () => defaultFormatter().format(amount),\n\n parts: () => defaultFormatter().formatToParts(amount),\n\n withoutTrailingZeros: () =>\n amount % 1 === 0\n ? withoutTrailingZerosFormatter().format(amount)\n : defaultFormatter().format(amount),\n\n withoutTrailingZerosAndCurrency: () =>\n amount % 1 === 0\n ? withoutTrailingZerosOrCurrencyFormatter().format(amount)\n : withoutCurrencyFormatter().format(amount),\n\n currencyName: () =>\n nameFormatter().formatToParts(amount).find(isPartCurrency)?.value ??\n money.currencyCode, // e.g. \"US dollars\"\n\n currencySymbol: () =>\n defaultFormatter().formatToParts(amount).find(isPartCurrency)?.value ??\n money.currencyCode, // e.g. \"USD\"\n\n currencyNarrowSymbol: () =>\n narrowSymbolFormatter().formatToParts(amount).find(isPartCurrency)\n ?.value ?? '', // e.g. \"$\"\n\n amount: () =>\n defaultFormatter()\n .formatToParts(amount)\n .filter((part) =>\n ['decimal', 'fraction', 'group', 'integer', 'literal'].includes(\n part.type\n )\n )\n .map((part) => part.value)\n .join(''),\n }),\n [\n money,\n amount,\n nameFormatter,\n defaultFormatter,\n narrowSymbolFormatter,\n withoutCurrencyFormatter,\n withoutTrailingZerosFormatter,\n withoutTrailingZerosOrCurrencyFormatter,\n ]\n );\n\n // Call functions automatically when the properties are accessed\n // to keep these functions as an implementation detail.\n return useMemo(\n () =>\n new Proxy(lazyFormatters as unknown as UseMoneyValue, {\n get: (target, key) => Reflect.get(target, key)?.call(null),\n }),\n [lazyFormatters]\n );\n}\n\nfunction useLazyFormatter(locale: string, options?: Intl.NumberFormatOptions) {\n return useMemo(() => {\n let memoized: Intl.NumberFormat;\n return () => (memoized ??= new Intl.NumberFormat(locale, options));\n }, [locale, options]);\n}\n"],"names":["useMoney","money","locale","useShop","Error","amount","parseFloat","options","useMemo","style","currency","currencyCode","defaultFormatter","useLazyFormatter","nameFormatter","currencyDisplay","narrowSymbolFormatter","withoutTrailingZerosFormatter","minimumFractionDigits","maximumFractionDigits","withoutCurrencyFormatter","withoutTrailingZerosOrCurrencyFormatter","isPartCurrency","part","type","lazyFormatters","original","localizedString","format","parts","formatToParts","withoutTrailingZeros","withoutTrailingZerosAndCurrency","currencyName","find","value","currencySymbol","currencyNarrowSymbol","filter","includes","map","join","Proxy","get","target","key","Reflect","call","memoized","Intl","NumberFormat"],"mappings":";;;;AA0DO,SAASA,SAASC,OAA+B;AAChD,QAAA;AAAA,IAACC;AAAAA,MAAUC,gBAAjB,QAAA;AAEA,MAAI,CAACD,QAAQ;AACL,UAAA,IAAIE,MACP,sKADG;AAAA,EAGP;AAEKC,QAAAA,SAASC,WAAWL,MAAMI,MAAP;AAEnBE,QAAAA,UAAUC,MAAAA,QACd,OAAO;AAAA,IACLC,OAAO;AAAA,IACPC,UAAUT,MAAMU;AAAAA,EAElB,IAAA,CAACV,MAAMU,YAAP,CALqB;AAQjBC,QAAAA,mBAAmBC,iBAAiBX,QAAQK,OAAT;AAEnCO,QAAAA,gBAAgBD,iBAAiBX,QAAQ;AAAA,IAC7C,GAAGK;AAAAA,IACHQ,iBAAiB;AAAA,EAAA,CAFmB;AAKhCC,QAAAA,wBAAwBH,iBAAiBX,QAAQ;AAAA,IACrD,GAAGK;AAAAA,IACHQ,iBAAiB;AAAA,EAAA,CAF2B;AAKxCE,QAAAA,gCAAgCJ,iBAAiBX,QAAQ;AAAA,IAC7D,GAAGK;AAAAA,IACHW,uBAAuB;AAAA,IACvBC,uBAAuB;AAAA,EAAA,CAH6B;AAMhDC,QAAAA,2BAA2BP,iBAAiBX,MAAD;AAE3CmB,QAAAA,0CAA0CR,iBAAiBX,QAAQ;AAAA,IACvEgB,uBAAuB;AAAA,IACvBC,uBAAuB;AAAA,EAAA,CAFuC;AAKhE,QAAMG,iBAAiB,CAACC,SACtBA,KAAKC,SAAS;AAIVC,QAAAA,iBAAiBjB,MAAAA,QACrB,OAAO;AAAA,IACLkB,UAAU,MAAMzB;AAAAA,IAChBU,cAAc,MAAMV,MAAMU;AAAAA,IAE1BgB,iBAAiB,MAAMf,mBAAmBgB,OAAOvB,MAA1B;AAAA,IAEvBwB,OAAO,MAAMjB,mBAAmBkB,cAAczB,MAAjC;AAAA,IAEb0B,sBAAsB,MACpB1B,SAAS,MAAM,IACXY,8BAAAA,EAAgCW,OAAOvB,MAAvC,IACAO,mBAAmBgB,OAAOvB,MAA1B;AAAA,IAEN2B,iCAAiC,MAC/B3B,SAAS,MAAM,IACXgB,wCAAAA,EAA0CO,OAAOvB,MAAjD,IACAe,2BAA2BQ,OAAOvB,MAAlC;AAAA,IAEN4B,cAAc,MACZnB;;AAAAA,yCAAgBgB,cAAczB,MAA9B,EAAsC6B,KAAKZ,cAA3C,MAAAR,mBAA4DqB,UAA5DrB,YACAb,MAAMU;AAAAA;AAAAA,IAERyB,gBAAgB,MACdxB;;AAAAA,4CAAmBkB,cAAczB,MAAjC,EAAyC6B,KAAKZ,cAA9C,MAAAV,mBAA+DuB,UAA/DvB,YACAX,MAAMU;AAAAA;AAAAA,IAER0B,sBAAsB,MAAA;;AACpBrB,+CAAwBc,EAAAA,cAAczB,MAAtC,EAA8C6B,KAAKZ,cAAnD,MAAAN,mBACImB,UADJnB,YACa;AAAA;AAAA,IAEfX,QAAQ,MACNO,mBACGkB,cAAczB,MADjB,EAEGiC,OAAQf,CAAAA,SACP,CAAC,WAAW,YAAY,SAAS,WAAW,SAA5C,EAAuDgB,SACrDhB,KAAKC,IADP,CAHJ,EAOGgB,IAAKjB,CAAAA,SAASA,KAAKY,KAPtB,EAQGM,KAAK,EARR;AAAA,EA/BG,IAyCP,CACExC,OACAI,QACAS,eACAF,kBACAI,uBACAI,0BACAH,+BACAI,uCARF,CA1C4B;AAwD9B,SAAOb,cACL,MACE,IAAIkC,MAAMjB,gBAA4C;AAAA,IACpDkB,KAAK,CAACC,QAAQC;;AAAQC,2BAAQH,IAAIC,QAAQC,GAApB,MAAAC,mBAA0BC,KAAK;AAAA;AAAA,EAA/B,CADxB,GAGF,CAACtB,cAAD,CALY;AAOf;AAED,SAASZ,iBAAiBX,QAAgBK,SAAoC;AAC5E,SAAOC,cAAQ,MAAM;AACfwC,QAAAA;AACJ,WAAO,MAAOA,yCAAa,IAAIC,KAAKC,aAAahD,QAAQK,OAA9B;AAAA,EAAA,GAC1B,CAACL,QAAQK,OAAT,CAHW;AAIf;;"}
|
|
@@ -4,7 +4,7 @@ import { ExternalVideo } from './ExternalVideo.js';
|
|
|
4
4
|
import { ModelViewer } from './ModelViewer.js';
|
|
5
5
|
import type { MediaEdge as MediaEdgeType } from './storefront-api-types.js';
|
|
6
6
|
import type { PartialDeep } from 'type-fest';
|
|
7
|
-
interface MediaFileProps {
|
|
7
|
+
export interface MediaFileProps {
|
|
8
8
|
/** An object with fields that correspond to the Storefront API's [Media object](https://shopify.dev/api/storefront/reference/products/media). */
|
|
9
9
|
data: PartialDeep<MediaEdgeType['node'], {
|
|
10
10
|
recurseIntoArrays: true;
|
|
@@ -27,4 +27,3 @@ interface MediaFileProps {
|
|
|
27
27
|
* `Video`, an `ExternalVideo`, or a `ModelViewer` depending on the `__typename` of the `data` prop.
|
|
28
28
|
*/
|
|
29
29
|
export declare function MediaFile({ data, mediaOptions, ...passthroughProps }: MediaFileProps): JSX.Element | null;
|
|
30
|
-
export {};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Product } from './storefront-api-types.js';
|
|
2
2
|
import { type MoneyProps } from './Money.js';
|
|
3
3
|
import type { PartialDeep } from 'type-fest';
|
|
4
|
-
interface ProductPriceProps {
|
|
4
|
+
export interface ProductPriceProps {
|
|
5
5
|
/** A [Product object](https://shopify.dev/api/storefront/reference/products/product). */
|
|
6
6
|
data: PartialDeep<Product, {
|
|
7
7
|
recurseIntoArrays: true;
|
|
@@ -18,4 +18,3 @@ interface ProductPriceProps {
|
|
|
18
18
|
* [`priceRange`](https://shopify.dev/api/storefront/reference/products/productpricerange)'s `maxVariantPrice` or `minVariantPrice`, for either the regular price or compare at price range.
|
|
19
19
|
*/
|
|
20
20
|
export declare function ProductPrice<ComponentGeneric extends React.ElementType>(props: ProductPriceProps & Omit<MoneyProps<ComponentGeneric>, 'data' | 'measurement'>): JSX.Element | null;
|
|
21
|
-
export {};
|
|
@@ -2696,15 +2696,6 @@ fragment ImageFragment on Image {
|
|
|
2696
2696
|
throw new Error(`Unit not supported: ${unit}`);
|
|
2697
2697
|
}
|
|
2698
2698
|
}
|
|
2699
|
-
var dist = {};
|
|
2700
|
-
Object.defineProperty(dist, "__esModule", { value: true });
|
|
2701
|
-
dist.expectNever = expectType_1 = dist.expectType = void 0;
|
|
2702
|
-
const expectType = (value) => void 0;
|
|
2703
|
-
var expectType_1 = dist.expectType = expectType;
|
|
2704
|
-
const expectNever = (value) => {
|
|
2705
|
-
throw new TypeError("Unexpected value: " + value);
|
|
2706
|
-
};
|
|
2707
|
-
dist.expectNever = expectNever;
|
|
2708
2699
|
function metafieldParser(metafield) {
|
|
2709
2700
|
var _a, _b, _c, _d;
|
|
2710
2701
|
if (!metafield.type) {
|
|
@@ -2802,7 +2793,6 @@ fragment ImageFragment on Image {
|
|
|
2802
2793
|
}
|
|
2803
2794
|
}
|
|
2804
2795
|
}
|
|
2805
|
-
expectType_1(true);
|
|
2806
2796
|
function useMoney(money) {
|
|
2807
2797
|
const {
|
|
2808
2798
|
locale
|