@jetshop/core 5.8.3 → 5.11.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (109) hide show
  1. package/ChannelHandler/ChannelHandler.d.ts +9 -13
  2. package/ChannelHandler/ChannelHandler.js +24 -66
  3. package/ChannelHandler/ChannelHandler.js.map +1 -1
  4. package/ChannelHandler/channelUtils.d.ts +13 -0
  5. package/ChannelHandler/channelUtils.js +26 -15
  6. package/ChannelHandler/channelUtils.js.map +1 -1
  7. package/ChannelHandler/redirectUtils.d.ts +3 -0
  8. package/ChannelHandler/redirectUtils.js +48 -0
  9. package/ChannelHandler/redirectUtils.js.map +1 -0
  10. package/ChannelHandler/redirectUtils.test.js +8 -0
  11. package/analytics/AnalyticsProvider.js +9 -2
  12. package/analytics/AnalyticsProvider.js.map +1 -1
  13. package/analytics/integrations/ga4.d.ts +2 -1
  14. package/analytics/integrations/ga4.js +15 -6
  15. package/analytics/integrations/ga4.js.map +1 -1
  16. package/analytics/integrations/gtag/gtag.d.ts +2 -1
  17. package/analytics/integrations/gtag/gtag.js +20 -10
  18. package/analytics/integrations/gtag/gtag.js.map +1 -1
  19. package/analytics/integrations/gtm/index.d.ts +10 -1
  20. package/analytics/integrations/gtm/index.js +175 -2
  21. package/analytics/integrations/gtm/index.js.map +1 -1
  22. package/boot/SharedTree.js +1 -1
  23. package/boot/SharedTree.js.map +1 -1
  24. package/boot/apollo.d.ts +5 -4
  25. package/boot/apollo.js +18 -18
  26. package/boot/apollo.js.map +1 -1
  27. package/boot/client/startClient.js +7 -16
  28. package/boot/client/startClient.js.map +1 -1
  29. package/boot/server/createRenderer.js +10 -9
  30. package/boot/server/createRenderer.js.map +1 -1
  31. package/boot/server/index.js +2 -2
  32. package/boot/server/index.js.map +1 -1
  33. package/boot/server/persistedQueries/__tests__/getPersistedQueriesForRequest.test.js +53 -39
  34. package/boot/server/persistedQueries/getPersistedQueriesForRequest.js +2 -2
  35. package/boot/server/persistedQueries/getPersistedQueriesForRequest.js.map +1 -1
  36. package/cart/useAddToCart.d.ts +2 -2
  37. package/cart/useAddToCart.js +13 -12
  38. package/cart/useAddToCart.js.map +1 -1
  39. package/components/Auth/CustomerUpdateForm.js +7 -7
  40. package/components/Auth/CustomerUpdateForm.js.map +1 -1
  41. package/components/Cart/CartIdContext.js +18 -18
  42. package/components/Cart/CartIdContext.js.map +1 -1
  43. package/components/ChannelContext/ChannelProvider.d.ts +1 -3
  44. package/components/ChannelContext/ChannelProvider.js +6 -13
  45. package/components/ChannelContext/ChannelProvider.js.map +1 -1
  46. package/components/ChannelContext/ChannelProvider.test.js +110 -0
  47. package/components/ConfigProvider.d.ts +1 -0
  48. package/components/ConfigProvider.js.map +1 -1
  49. package/components/DynamicRoute/ContentRoute.d.ts +1 -1
  50. package/components/DynamicRoute/ProductRoute.d.ts +1 -0
  51. package/components/DynamicRoute/ProductRoute.js +4 -2
  52. package/components/DynamicRoute/ProductRoute.js.map +1 -1
  53. package/components/DynamicRoute/RouteResolver.js +4 -2
  54. package/components/DynamicRoute/RouteResolver.js.map +1 -1
  55. package/components/Mutation/AddToCart/addToCartUtils.js +3 -2
  56. package/components/Mutation/AddToCart/addToCartUtils.js.map +1 -1
  57. package/components/Mutation/RemoveFromCart.d.ts +1 -1
  58. package/components/Mutation/cartMutationUtils.js +7 -6
  59. package/components/Mutation/cartMutationUtils.js.map +1 -1
  60. package/components/OpenGraph/OpenGraph.test.js +32 -5
  61. package/components/OpenGraph/OpenGraphProductData.d.ts +6 -1
  62. package/components/OpenGraph/OpenGraphProductData.js +18 -12
  63. package/components/OpenGraph/OpenGraphProductData.js.map +1 -1
  64. package/components/Query/CartProvider.js +32 -22
  65. package/components/Query/CartProvider.js.map +1 -1
  66. package/components/StructuredData/StructuredBreadcrumbData.js +4 -3
  67. package/components/StructuredData/StructuredBreadcrumbData.js.map +1 -1
  68. package/hooks/PackageProducts/packagePriceQuery.gql +1 -1
  69. package/hooks/ProductList/ProductListContext.js +37 -14
  70. package/hooks/ProductList/ProductListContext.js.map +1 -1
  71. package/hooks/ProductList/action-creators.d.ts +20 -7
  72. package/hooks/ProductList/action-creators.js +138 -44
  73. package/hooks/ProductList/action-creators.js.map +1 -1
  74. package/hooks/ProductList/index.d.ts +34 -8
  75. package/hooks/ProductList/index.js +19 -0
  76. package/hooks/ProductList/index.js.map +1 -1
  77. package/hooks/ProductList/list-transforms.d.ts +3 -2
  78. package/hooks/ProductList/list-transforms.js +22 -22
  79. package/hooks/ProductList/list-transforms.js.map +1 -1
  80. package/hooks/ProductList/list-transforms.test.js +103 -100
  81. package/hooks/ProductList/product-list-reducer.d.ts +37 -14
  82. package/hooks/ProductList/product-list-reducer.js +106 -43
  83. package/hooks/ProductList/product-list-reducer.js.map +1 -1
  84. package/hooks/ProductList/product-list-reducer.test.js +144 -82
  85. package/hooks/ProductList/useProductList.d.ts +2 -2
  86. package/hooks/ProductList/useProductList.js +12 -5
  87. package/hooks/ProductList/useProductList.js.map +1 -1
  88. package/hooks/ProductList/useProductListItems.d.ts +1 -1
  89. package/hooks/ProductList/useProductListItems.js +8 -6
  90. package/hooks/ProductList/useProductListItems.js.map +1 -1
  91. package/hooks/useInfinitePagination.js +2 -2
  92. package/hooks/useInfinitePagination.js.map +1 -1
  93. package/hooks/useRoutePreload.js +2 -2
  94. package/hooks/useRoutePreload.js.map +1 -1
  95. package/package.json +5 -5
  96. package/resolvers/index.d.ts +3 -0
  97. package/resolvers/index.js +3 -0
  98. package/resolvers/index.js.map +1 -1
  99. package/sentry/client.js +9 -4
  100. package/sentry/client.js.map +1 -1
  101. package/sentry/common.d.ts +1 -0
  102. package/sentry/common.js +5 -0
  103. package/sentry/common.js.map +1 -0
  104. package/sentry/server.js +11 -2
  105. package/sentry/server.js.map +1 -1
  106. package/time.d.ts +1 -0
  107. package/time.js +6 -0
  108. package/time.js.map +1 -0
  109. package/types.d.ts +31 -7
@@ -1,8 +1,24 @@
1
1
  import React, { useContext, useEffect, useMemo, useState } from 'react';
2
2
  const CartIdContext = React.createContext({
3
3
  cartId: null,
4
- setCartId: undefined,
4
+ setCartId: () => undefined
5
5
  });
6
+ const usePersistedCartId = (cartId, setCartId) => {
7
+ useEffect(() => {
8
+ const listener = (e) => {
9
+ const persistedCartId = localStorage.getItem('cartId');
10
+ if (e.storageArea === localStorage &&
11
+ e.key === 'cartId' &&
12
+ cartId !== persistedCartId) {
13
+ setCartId(persistedCartId);
14
+ }
15
+ };
16
+ window.addEventListener('storage', listener);
17
+ return () => {
18
+ window.removeEventListener('storage', listener);
19
+ };
20
+ }, [cartId]);
21
+ };
6
22
  const CartIdProvider = function CartIdProvider(props) {
7
23
  let persistedCartId = null;
8
24
  try {
@@ -33,27 +49,11 @@ const CartIdProvider = function CartIdProvider(props) {
33
49
  const value = useMemo(() => {
34
50
  return {
35
51
  cartId,
36
- setCartId,
52
+ setCartId
37
53
  };
38
54
  }, [cartId]);
39
55
  return React.createElement(CartIdContext.Provider, Object.assign({ value: value }, props));
40
56
  };
41
- const usePersistedCartId = (cartId, setCartId) => {
42
- useEffect(() => {
43
- const listener = (e) => {
44
- const persistedCartId = localStorage.getItem('cartId');
45
- if (e.storageArea === localStorage &&
46
- e.key === 'cartId' &&
47
- cartId !== persistedCartId) {
48
- setCartId(persistedCartId);
49
- }
50
- };
51
- window.addEventListener('storage', listener);
52
- return () => {
53
- window.removeEventListener('storage', listener);
54
- };
55
- }, [cartId]);
56
- };
57
57
  export { CartIdProvider, CartIdContext };
58
58
  export function useCartId() {
59
59
  return useContext(CartIdContext);
@@ -1 +1 @@
1
- {"version":3,"file":"CartIdContext.js","sourceRoot":"","sources":["CartIdContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAExE,MAAM,aAAa,GAAG,KAAK,CAAC,aAAa,CAGtC;IACD,MAAM,EAAE,IAAI;IACZ,SAAS,EAAE,SAAS;CACrB,CAAC,CAAC;AAEH,MAAM,cAAc,GAAa,SAAS,cAAc,CAAC,KAAK;IAC5D,IAAI,eAAe,GAAW,IAAI,CAAC;IACnC,IAAI;QACF,eAAe,GAAG,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC;KAC1D;IAAC,OAAO,CAAC,EAAE;QACV,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;KAChB;IAED,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,eAAe,CAAC,CAAC;IAEtD,+BAA+B;IAC/B,kBAAkB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACtC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,eAAe;YAAE,OAAO;QAE/D,IAAI;YACF,IAAI,MAAM,EAAE;gBACV,YAAY,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;aACxC;iBAAM;gBACL,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;aACnC;SACF;QAAC,OAAO,CAAC,EAAE;YACV,mBAAmB;YACnB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;SAChB;IACH,CAAC,EAAE,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC;IAE9B,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE;QACzB,OAAO;YACL,MAAM;YACN,SAAS;SACV,CAAC;IACJ,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,OAAO,oBAAC,aAAa,CAAC,QAAQ,kBAAC,KAAK,EAAE,KAAK,IAAM,KAAK,EAAI,CAAC;AAC7D,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,CACzB,MAAc,EACd,SAAiC,EACjC,EAAE;IACF,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,QAAQ,GAAG,CAAC,CAAe,EAAE,EAAE;YACnC,MAAM,eAAe,GAAG,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACvD,IACE,CAAC,CAAC,WAAW,KAAK,YAAY;gBAC9B,CAAC,CAAC,GAAG,KAAK,QAAQ;gBAClB,MAAM,KAAK,eAAe,EAC1B;gBACA,SAAS,CAAC,eAAe,CAAC,CAAC;aAC5B;QACH,CAAC,CAAC;QAEF,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAE7C,OAAO,GAAG,EAAE;YACV,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAClD,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;AACf,CAAC,CAAC;AAEF,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,CAAC;AAEzC,MAAM,UAAU,SAAS;IACvB,OAAO,UAAU,CAAC,aAAa,CAAC,CAAC;AACnC,CAAC"}
1
+ {"version":3,"file":"CartIdContext.js","sourceRoot":"","sources":["CartIdContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAExE,MAAM,aAAa,GAAG,KAAK,CAAC,aAAa,CAGtC;IACD,MAAM,EAAE,IAAI;IACZ,SAAS,EAAE,GAAG,EAAE,CAAC,SAAS;CAC3B,CAAC,CAAC;AAEH,MAAM,kBAAkB,GAAG,CACzB,MAAc,EACd,SAAiC,EACjC,EAAE;IACF,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,QAAQ,GAAG,CAAC,CAAe,EAAE,EAAE;YACnC,MAAM,eAAe,GAAG,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACvD,IACE,CAAC,CAAC,WAAW,KAAK,YAAY;gBAC9B,CAAC,CAAC,GAAG,KAAK,QAAQ;gBAClB,MAAM,KAAK,eAAe,EAC1B;gBACA,SAAS,CAAC,eAAe,CAAC,CAAC;aAC5B;QACH,CAAC,CAAC;QAEF,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAE7C,OAAO,GAAG,EAAE;YACV,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAClD,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,cAAc,GAAa,SAAS,cAAc,CAAC,KAAK;IAC5D,IAAI,eAAe,GAAW,IAAI,CAAC;IACnC,IAAI;QACF,eAAe,GAAG,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC;KAC1D;IAAC,OAAO,CAAC,EAAE;QACV,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;KAChB;IAED,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,eAAe,CAAC,CAAC;IAEtD,+BAA+B;IAC/B,kBAAkB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACtC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,eAAe;YAAE,OAAO;QAE/D,IAAI;YACF,IAAI,MAAM,EAAE;gBACV,YAAY,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;aACxC;iBAAM;gBACL,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;aACnC;SACF;QAAC,OAAO,CAAC,EAAE;YACV,mBAAmB;YACnB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;SAChB;IACH,CAAC,EAAE,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC;IAE9B,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE;QACzB,OAAO;YACL,MAAM;YACN,SAAS;SACV,CAAC;IACJ,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,OAAO,oBAAC,aAAa,CAAC,QAAQ,kBAAC,KAAK,EAAE,KAAK,IAAM,KAAK,EAAI,CAAC;AAC7D,CAAC,CAAC;AAEF,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,CAAC;AAEzC,MAAM,UAAU,SAAS;IACvB,OAAO,UAAU,CAAC,aAAa,CAAC,CAAC;AACnC,CAAC"}
@@ -1,12 +1,10 @@
1
1
  import React from 'react';
2
- import ApolloClient from 'apollo-client';
3
2
  import { BootOptions } from '../ConfigProvider';
4
3
  import { ChannelHandler } from '../../ChannelHandler/ChannelHandler';
5
4
  export interface ChannelProviderProps {
6
- client: ApolloClient<any>;
7
5
  channelHandler: ChannelHandler;
8
6
  children?: React.ReactNode;
9
7
  config: BootOptions;
10
8
  }
11
- declare const ChannelProvider: ({ client, channelHandler, children, config }: ChannelProviderProps) => JSX.Element;
9
+ declare const ChannelProvider: ({ channelHandler, children, config }: ChannelProviderProps) => JSX.Element;
12
10
  export default ChannelProvider;
@@ -1,14 +1,14 @@
1
1
  import React, { useMemo } from 'react';
2
2
  import ChannelContext from './ChannelContext';
3
- const ChannelProvider = ({ client, channelHandler, children, config }) => {
3
+ const ChannelProvider = ({ channelHandler, children, config }) => {
4
4
  const { channels, selectedChannel, recommendedChannel } = channelHandler;
5
5
  const value = useMemo(() => {
6
6
  const updateChannelSingleDomain = (newChannel) => {
7
- channelHandler.updateChannel({ config, client, newChannel });
7
+ channelHandler.updateChannel({ config, newChannel });
8
8
  };
9
9
  const channelsById = {};
10
- channelHandler.channels &&
11
- channelHandler.channels.forEach(channel => {
10
+ channels &&
11
+ channels.forEach((channel) => {
12
12
  channelsById[channel.id] = channel;
13
13
  });
14
14
  return {
@@ -17,16 +17,9 @@ const ChannelProvider = ({ client, channelHandler, children, config }) => {
17
17
  channels,
18
18
  selectedChannel,
19
19
  channelsById,
20
- basename: channelHandler.getChannelBasename()
20
+ basename: channelHandler.getChannelBasename() // TODO This isn't used anywhere?
21
21
  };
22
- }, [
23
- channelHandler,
24
- channels,
25
- client,
26
- config,
27
- recommendedChannel,
28
- selectedChannel
29
- ]);
22
+ }, [channelHandler, channels, config, recommendedChannel, selectedChannel]);
30
23
  return (React.createElement(ChannelContext.Provider, { value: value }, children));
31
24
  };
32
25
  export default ChannelProvider;
@@ -1 +1 @@
1
- {"version":3,"file":"ChannelProvider.js","sourceRoot":"","sources":["ChannelProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,cAAmC,MAAM,kBAAkB,CAAC;AAanE,MAAM,eAAe,GAAG,CAAC,EACvB,MAAM,EACN,cAAc,EACd,QAAQ,EACR,MAAM,EACe,EAAE,EAAE;IACzB,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,kBAAkB,EAAE,GAAG,cAAc,CAAC;IACzE,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE;QACzB,MAAM,yBAAyB,GAAG,CAAC,UAA2B,EAAE,EAAE;YAChE,cAAc,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;QAC/D,CAAC,CAAC;QAEF,MAAM,YAAY,GAA+B,EAAE,CAAC;QAEpD,cAAc,CAAC,QAAQ;YACrB,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;gBACxC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC;YACrC,CAAC,CAAC,CAAC;QAEL,OAAO;YACL,kBAAkB;YAClB,aAAa,EAAE,yBAAyB;YACxC,QAAQ;YACR,eAAe;YACf,YAAY;YACZ,QAAQ,EAAE,cAAc,CAAC,kBAAkB,EAAE;SAC9C,CAAC;IACJ,CAAC,EAAE;QACD,cAAc;QACd,QAAQ;QACR,MAAM;QACN,MAAM;QACN,kBAAkB;QAClB,eAAe;KAChB,CAAC,CAAC;IAEH,OAAO,CACL,oBAAC,cAAc,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,IAAG,QAAQ,CAA2B,CAC5E,CAAC;AACJ,CAAC,CAAC;AACF,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"ChannelProvider.js","sourceRoot":"","sources":["ChannelProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,cAAmC,MAAM,kBAAkB,CAAC;AAWnE,MAAM,eAAe,GAAG,CAAC,EACvB,cAAc,EACd,QAAQ,EACR,MAAM,EACe,EAAE,EAAE;IACzB,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,kBAAkB,EAAE,GAAG,cAAc,CAAC;IACzE,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE;QACzB,MAAM,yBAAyB,GAAG,CAAC,UAA2B,EAAE,EAAE;YAChE,cAAc,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;QACvD,CAAC,CAAC;QAEF,MAAM,YAAY,GAA+B,EAAE,CAAC;QAEpD,QAAQ;YACN,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;gBAC3B,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC;YACrC,CAAC,CAAC,CAAC;QAEL,OAAO;YACL,kBAAkB;YAClB,aAAa,EAAE,yBAAyB;YACxC,QAAQ;YACR,eAAe;YACf,YAAY;YACZ,QAAQ,EAAE,cAAc,CAAC,kBAAkB,EAAE,CAAC,iCAAiC;SAChF,CAAC;IACJ,CAAC,EAAE,CAAC,cAAc,EAAE,QAAQ,EAAE,MAAM,EAAE,kBAAkB,EAAE,eAAe,CAAC,CAAC,CAAC;IAE5E,OAAO,CACL,oBAAC,cAAc,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,IAAG,QAAQ,CAA2B,CAC5E,CAAC;AACJ,CAAC,CAAC;AACF,eAAe,eAAe,CAAC"}
@@ -0,0 +1,110 @@
1
+ import React, { useContext } from 'react';
2
+ import { render } from '@testing-library/react';
3
+ import ChannelContext, { ChannelProvider } from '../ChannelContext/';
4
+ import { ChannelHandler } from '../../ChannelHandler/ChannelHandler';
5
+ import { createSelectedChannel } from '../../ChannelHandler/channelUtils';
6
+ import { channels } from '@jetshop/core/test-utils/variables';
7
+
8
+ function SelectedChannel() {
9
+ const { selectedChannel } = useContext(ChannelContext);
10
+ return <div id="selected-channel">{selectedChannel.displayName}</div>;
11
+ }
12
+
13
+ describe('ChannelProvider', () => {
14
+ const selectedChannel = createSelectedChannel(channels[0]);
15
+
16
+ const oldWindowLocation = window.location;
17
+ let mockAssign = jest.fn();
18
+
19
+ beforeAll(() => {
20
+ // Mock the window.location object so we can test redirects
21
+ delete window.location;
22
+ window.location = Object.defineProperties(
23
+ {},
24
+ {
25
+ ...Object.getOwnPropertyDescriptors(oldWindowLocation),
26
+ assign: {
27
+ configurable: true,
28
+ value: mockAssign
29
+ }
30
+ }
31
+ );
32
+ });
33
+
34
+ beforeEach(() => {
35
+ window.location.assign.mockReset();
36
+ });
37
+
38
+ afterAll(() => {
39
+ window.location = oldWindowLocation;
40
+ });
41
+
42
+ test('Selected channel should be available', () => {
43
+ const channelHandler = new ChannelHandler({
44
+ selectedChannel,
45
+ channels
46
+ });
47
+
48
+ render(
49
+ <ChannelProvider channelHandler={channelHandler}>
50
+ <SelectedChannel />
51
+ </ChannelProvider>
52
+ );
53
+ const selectedChannelElement = document.getElementById('selected-channel');
54
+
55
+ expect(selectedChannelElement.textContent).toBe(
56
+ selectedChannel.displayName
57
+ );
58
+ });
59
+
60
+ function sleep(ms) {
61
+ return new Promise((resolve) => setTimeout(resolve, ms));
62
+ }
63
+
64
+ test('Updating a channel', async () => {
65
+ const newChannel = createSelectedChannel(channels[1]);
66
+
67
+ const channelHandler = new ChannelHandler({
68
+ selectedChannel,
69
+ channels,
70
+ getPrimaryRoutePath: (path) => Promise.resolve(path)
71
+ });
72
+
73
+ render(
74
+ <ChannelProvider
75
+ channelHandler={channelHandler}
76
+ config={{ preserveRedirect: true }}
77
+ >
78
+ <SelectedChannel />
79
+ </ChannelProvider>
80
+ );
81
+ channelHandler.updateChannel({
82
+ config: { preserveRedirect: true },
83
+ newChannel
84
+ });
85
+ const selectedChannelElement = document.getElementById('selected-channel');
86
+
87
+ expect(selectedChannelElement.textContent).not.toBe(newChannel.name);
88
+
89
+ expect(selectedChannelElement.textContent).toBe(
90
+ selectedChannel.displayName
91
+ );
92
+
93
+ // NOTE
94
+ // We need to sleep briefly here, otherwise the call to
95
+ // window.location.assign is not detected(!) in .toHaveBeenCalled()
96
+ await sleep(10);
97
+
98
+ // Updating a channel should trigger a redirect
99
+ expect(window.location.assign).toHaveBeenCalled();
100
+
101
+ const newUrl = new URL(window.location.assign.mock.calls[0][0]);
102
+ expect(newUrl.searchParams.get('channel')).toBe(newChannel.name);
103
+ expect(newUrl.searchParams.get('channelCountry')).toBe(
104
+ newChannel.country.code
105
+ );
106
+ expect(newUrl.searchParams.get('culture')).toBe(
107
+ newChannel.language.culture
108
+ );
109
+ });
110
+ });
@@ -50,6 +50,7 @@ export interface BootOptions {
50
50
  apolloConfig: ApolloConfig;
51
51
  trackingID: string;
52
52
  additionalGtagTrackingIds: string[];
53
+ brandCustomField?: string;
53
54
  useArticleNumberAsId?: boolean;
54
55
  tagManagerID: string;
55
56
  intl: IntlOptions;
@@ -1 +1 @@
1
- {"version":3,"file":"ConfigProvider.js","sourceRoot":"","sources":["ConfigProvider.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,KAAK,EAAE,EAAE,aAAa,EAAgB,MAAM,OAAO,CAAC;AAM3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAkG5D,MAAM,CAAC,MAAM,iBAAiB,GAAG,aAAa,CAC5C,SAAS,CACV,CAAC;AAEF,MAAM,UAAU,cAAc,CAAC,EAO9B;QAP8B,EAC7B,MAAM,EAAE,UAAU,EAClB,QAAQ,OAKT,EAJI,IAAI,cAHsB,sBAI9B,CADQ;IAKP,MAAM,MAAM,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAC5C,OAAO,CACL,oBAAC,iBAAiB,CAAC,QAAQ,kBAAC,KAAK,EAAE,MAAM,IAAM,IAAI,GAChD,QAAQ,CACkB,CAC9B,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"ConfigProvider.js","sourceRoot":"","sources":["ConfigProvider.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,KAAK,EAAE,EAAE,aAAa,EAAgB,MAAM,OAAO,CAAC;AAM3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAmG5D,MAAM,CAAC,MAAM,iBAAiB,GAAG,aAAa,CAC5C,SAAS,CACV,CAAC;AAEF,MAAM,UAAU,cAAc,CAAC,EAO9B;QAP8B,EAC7B,MAAM,EAAE,UAAU,EAClB,QAAQ,OAKT,EAJI,IAAI,cAHsB,sBAI9B,CADQ;IAKP,MAAM,MAAM,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAC5C,OAAO,CACL,oBAAC,iBAAiB,CAAC,QAAQ,kBAAC,KAAK,EAAE,MAAM,IAAM,IAAI,GAChD,QAAQ,CACkB,CAC9B,CAAC;AACJ,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import React, { ComponentType } from 'react';
2
2
  import { QueryResult } from 'react-apollo';
3
- import { Page } from 'packages/core/types';
3
+ import { Page } from '@jetshop/core/types';
4
4
  export interface ContentProps {
5
5
  result: QueryResult;
6
6
  page: Page;
@@ -8,6 +8,7 @@ export interface ProductProps {
8
8
  export interface ProductRouteProps {
9
9
  component: ComponentType<ProductProps>;
10
10
  result: QueryResult;
11
+ partialProduct?: Partial<Product>;
11
12
  }
12
13
  declare const ProductRoute: (props: ProductRouteProps) => JSX.Element;
13
14
  export default ProductRoute;
@@ -19,8 +19,10 @@ import { StructuredProductData } from '../StructuredData';
19
19
  import { OpenGraphProductData } from '../OpenGraph';
20
20
  const ProductRoute = (props) => {
21
21
  var _a, _b, _c;
22
- const { component: ProductPage } = props, rest = __rest(props, ["component"]);
23
- const product = ((_b = (_a = props.result.data) === null || _a === void 0 ? void 0 : _a.route) === null || _b === void 0 ? void 0 : _b.object) || ((_c = props.result.data) === null || _c === void 0 ? void 0 : _c.product);
22
+ const { component: ProductPage, partialProduct } = props, rest = __rest(props, ["component", "partialProduct"]);
23
+ const product = ((_b = (_a = props.result.data) === null || _a === void 0 ? void 0 : _a.route) === null || _b === void 0 ? void 0 : _b.object) ||
24
+ ((_c = props.result.data) === null || _c === void 0 ? void 0 : _c.product) ||
25
+ partialProduct;
24
26
  const { structuredData, openGraph } = useShopConfig();
25
27
  const location = useLocation();
26
28
  const track = useTracker();
@@ -1 +1 @@
1
- {"version":3,"file":"ProductRoute.js","sourceRoot":"","sources":["ProductRoute.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAErE,OAAO,KAAK,EAAE,EAAiB,SAAS,EAAE,MAAM,OAAO,CAAC;AAExD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,4BAA4B,MAAM,8DAA8D,CAAC;AACxG,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAWpD,MAAM,YAAY,GAAG,CAAC,KAAwB,EAAE,EAAE;;IAChD,MAAM,EAAE,SAAS,EAAE,WAAW,KAAc,KAAK,EAAd,IAAI,UAAK,KAAK,EAA3C,aAAmC,CAAQ,CAAC;IAElD,MAAM,OAAO,GACX,CAAA,MAAA,MAAA,KAAK,CAAC,MAAM,CAAC,IAAI,0CAAE,KAAK,0CAAE,MAAM,MAAI,MAAA,KAAK,CAAC,MAAM,CAAC,IAAI,0CAAE,OAAO,CAAA,CAAC;IAEjE,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,GAAG,aAAa,EAAE,CAAC;IACtD,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,MAAM,KAAK,GAAG,UAAU,EAAE,CAAC;IAE3B,MAAM,4BAA4B,GAAG,cAAc;QACjD,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,yBAAyB;QAC5C,CAAC,CAAC,KAAK,CAAC;IAEV,MAAM,2BAA2B,GAAG,SAAS;QAC3C,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,yBAAyB;QACvC,CAAC,CAAC,KAAK,CAAC;IAEV,SAAS,CAAC,GAAG,EAAE;;QACb,OAAO;YACL,KAAK,CACH,iBAAiB,CAAC;gBAChB,MAAM,EAAE,MAAM;gBACd,OAAO;gBACP,IAAI,EAAE,MAAA,QAAQ,CAAC,KAAK,0CAAE,IAAI;aAC3B,CAAC,CACH,CAAC;IACN,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IAErC,OAAO,CACL;QACG,OAAO,IAAI,CACV;YACG,CAAC,4BAA4B,IAAI,CAChC,oBAAC,qBAAqB,IAAC,OAAO,EAAE,OAAO,GAAI,CAC5C;YACA,CAAC,2BAA2B,IAAI,CAC/B,oBAAC,oBAAoB,IAAC,OAAO,EAAE,OAAO,GAAI,CAC3C,CACA,CACJ;QACD,oBAAC,4BAA4B,IAAC,OAAO,EAAE,OAAO;YAC5C,oBAAC,WAAW,oBAAK,IAAI,IAAE,OAAO,EAAE,OAAO,IAAI,CACd,CAC9B,CACJ,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"ProductRoute.js","sourceRoot":"","sources":["ProductRoute.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAErE,OAAO,KAAK,EAAE,EAAiB,SAAS,EAAE,MAAM,OAAO,CAAC;AAExD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,4BAA4B,MAAM,8DAA8D,CAAC;AACxG,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAYpD,MAAM,YAAY,GAAG,CAAC,KAAwB,EAAE,EAAE;;IAChD,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,cAAc,KAAc,KAAK,EAAd,IAAI,UAAK,KAAK,EAA3D,+BAAmD,CAAQ,CAAC;IAElE,MAAM,OAAO,GACX,CAAA,MAAA,MAAA,KAAK,CAAC,MAAM,CAAC,IAAI,0CAAE,KAAK,0CAAE,MAAM;SAChC,MAAA,KAAK,CAAC,MAAM,CAAC,IAAI,0CAAE,OAAO,CAAA;QAC1B,cAAc,CAAC;IAEjB,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,GAAG,aAAa,EAAE,CAAC;IACtD,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,MAAM,KAAK,GAAG,UAAU,EAAE,CAAC;IAE3B,MAAM,4BAA4B,GAAG,cAAc;QACjD,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,yBAAyB;QAC5C,CAAC,CAAC,KAAK,CAAC;IAEV,MAAM,2BAA2B,GAAG,SAAS;QAC3C,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,yBAAyB;QACvC,CAAC,CAAC,KAAK,CAAC;IAEV,SAAS,CAAC,GAAG,EAAE;;QACb,OAAO;YACL,KAAK,CACH,iBAAiB,CAAC;gBAChB,MAAM,EAAE,MAAM;gBACd,OAAO;gBACP,IAAI,EAAE,MAAA,QAAQ,CAAC,KAAK,0CAAE,IAAI;aAC3B,CAAC,CACH,CAAC;IACN,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IAErC,OAAO,CACL;QACG,OAAO,IAAI,CACV;YACG,CAAC,4BAA4B,IAAI,CAChC,oBAAC,qBAAqB,IAAC,OAAO,EAAE,OAAO,GAAI,CAC5C;YACA,CAAC,2BAA2B,IAAI,CAC/B,oBAAC,oBAAoB,IAAC,OAAO,EAAE,OAAO,GAAI,CAC3C,CACA,CACJ;QACD,oBAAC,4BAA4B,IAAC,OAAO,EAAE,OAAO;YAC5C,oBAAC,WAAW,oBAAK,IAAI,IAAE,OAAO,EAAE,OAAO,IAAI,CACd,CAC9B,CACJ,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,YAAY,CAAC"}
@@ -22,9 +22,11 @@ const isRouteType = (state, result, type) => {
22
22
  }
23
23
  };
24
24
  const isEmptyRoute = (result) => {
25
- var _a, _b, _c, _d, _e;
25
+ var _a, _b, _c, _d, _e, _f;
26
26
  const errorCode = (_e = (_d = (_c = (_b = (_a = result === null || result === void 0 ? void 0 : result.error) === null || _a === void 0 ? void 0 : _a.graphQLErrors) === null || _b === void 0 ? void 0 : _b[0]) === null || _c === void 0 ? void 0 : _c.extensions) === null || _d === void 0 ? void 0 : _d.code) !== null && _e !== void 0 ? _e : '';
27
+ const route = (_f = result === null || result === void 0 ? void 0 : result.data) === null || _f === void 0 ? void 0 : _f.route;
27
28
  return (errorCode.includes('EmptyRoute') ||
29
+ !route ||
28
30
  (typeof window !== 'undefined' && window.__STATUS_CODE__ === '404'));
29
31
  };
30
32
  const Loading = (LoadingPage) => LoadingPage ? React.createElement(LoadingPage, null) : React.createElement("div", null, "Loading...");
@@ -40,7 +42,7 @@ const RouteResolver = ({ productPage, categoryPage, contentPage, notFoundPage: N
40
42
  } })));
41
43
  }
42
44
  else if (isRouteType(state, result, 'Product')) {
43
- return React.createElement(ProductRoute, { result: result, component: productPage });
45
+ return (React.createElement(ProductRoute, { result: result, partialProduct: state === null || state === void 0 ? void 0 : state.product, component: productPage }));
44
46
  }
45
47
  else if (isRouteType(state, result, 'Category')) {
46
48
  return React.createElement(CategoryRoute, { result: result, component: categoryPage });
@@ -1 +1 @@
1
- {"version":3,"file":"RouteResolver.js","sourceRoot":"","sources":["RouteResolver.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RouteResolver.js","sourceRoot":"","sources":["RouteResolver.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAwB,MAAM,OAAO,CAAC;AAC7C,OAAO,YAA8B,MAAM,gBAAgB,CAAC;AAC5D,OAAO,aAAgC,MAAM,iBAAiB,CAAC;AAC/D,OAAO,YAA8B,MAAM,gBAAgB,CAAC;AAE5D,OAAO,MAAM,MAAM,UAAU,CAAC;AAE9B,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAEjE,MAAM,WAAW,GAAG,CAAC,KAAU,EAAE,MAAmB,EAAE,IAAY,EAAE,EAAE;;IACpE,IAAI,MAAM,CAAC,KAAK,EAAE;QAChB,OAAO,KAAK,CAAC;KACd;IACD,MAAM,SAAS,GAAG,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,CAAC;IAC9B,MAAM,SAAS,GAAG,MAAA,MAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,0CAAE,KAAK,0CAAE,MAAM,0CAAE,UAAU,CAAC;IAC1D,MAAM,UAAU,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC;IACjD,IAAI,UAAU,EAAE;QACd,OAAO,KAAK,CAAC;KACd;SAAM;QACL,OAAO,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,IAAI,CAAC;KACjD;AACH,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,MAAqC,EAAE,EAAE;;IAC7D,MAAM,SAAS,GACb,MAAA,MAAA,MAAA,MAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,0CAAE,aAAa,0CAAG,CAAC,CAAC,0CAAE,UAAU,0CAAE,IAAI,mCAAI,EAAE,CAAC;IAE5D,MAAM,KAAK,GAAG,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,0CAAE,KAAK,CAAC;IAElC,OAAO,CACL,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC;QAChC,CAAC,KAAK;QACN,CAAC,OAAO,MAAM,KAAK,WAAW,IAAK,MAAc,CAAC,eAAe,KAAK,KAAK,CAAC,CAC7E,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,OAAO,GAAG,CAAC,WAAsB,EAAE,EAAE,CACzC,WAAW,CAAC,CAAC,CAAC,oBAAC,WAAW,OAAG,CAAC,CAAC,CAAC,8CAAqB,CAAC;AAExD,MAAM,aAAa,GAAG,CAAC,EACrB,WAAW,EACX,YAAY,EACZ,WAAW,EACX,YAAY,EAAE,YAAY,EAC1B,SAAS,EACT,WAAW,EACX,MAAM,EACN,QAAQ,EACR,KAAK,EACL,MAAM,EAaP,EAAE,EAAE;;IACH,WAAW,CAAC,MAAC,MAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,0CAAE,KAAK,0CAAE,MAAc,0CAAE,UAAU,CAAC,CAAC;IAE9D,IAAI,CAAC,MAAA,MAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,0CAAE,KAAK,0CAAE,IAAI,mCAAI,QAAQ,CAAC,KAAK,QAAQ,EAAE;QACxD,OAAO,CACL,oBAAC,MAAM,IAAC,IAAI,EAAE,GAAG;YACf,oBAAC,QAAQ,IACP,EAAE,EAAE;oBACF,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI;oBAChC,KAAK,kCACA,KAAK,KACR,IAAI,EAAE,MAAC,MAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,0CAAE,KAAK,0CAAE,MAAc,0CAAE,UAAU,GACvD;oBACD,MAAM;iBACP,GACD,CACK,CACV,CAAC;KACH;SAAM,IAAI,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE;QAChD,OAAO,CACL,oBAAC,YAAY,IACX,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,EAC9B,SAAS,EAAE,WAAW,GACtB,CACH,CAAC;KACH;SAAM,IAAI,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE;QACjD,OAAO,oBAAC,aAAa,IAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,GAAI,CAAC;KACnE;SAAM,IAAI,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE;QAC7C,OAAO,CACL,oBAAC,YAAY,IACX,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,WAAW,GACtB,CACH,CAAC;KACH;SAAM,IAAI,MAAM,CAAC,OAAO,EAAE;QACzB,OAAO,OAAO,CAAC,WAAW,CAAC,CAAC;KAC7B;SAAM;QACL,IAAI,YAAY,CAAC,MAAM,CAAC,EAAE;YACxB,OAAO,CACL,oBAAC,MAAM,IAAC,IAAI,EAAE,GAAG;gBACf,oBAAC,YAAY,OAAG,CACT,CACV,CAAC;SACH;QAED,OAAO,CACL,oBAAC,MAAM,IAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,IACnC,SAAS,CAAC,CAAC,CAAC,CACX,oBAAC,SAAS,IAAC,KAAK,EAAE,MAAM,CAAC,KAAK,GAAI,CACnC,CAAC,CAAC,CAAC,CACF,oBAAC,YAAY,IAAC,KAAK,EAAE,MAAM,CAAC,KAAK,GAAI,CACtC,CACM,CACV,CAAC;KACH;AACH,CAAC,CAAC;AAEF,eAAe,aAAa,CAAC"}
@@ -2,7 +2,8 @@ import { useTracker } from '@jetshop/core/analytics/Analytics';
2
2
  import { useCallback } from 'react';
3
3
  import { trackProductEvent } from '@jetshop/core/analytics/tracking';
4
4
  export function getArticleNumber(product, selectedVariation) {
5
- return product.variants.values.length > 0
5
+ var _a, _b;
6
+ return ((_b = (_a = product === null || product === void 0 ? void 0 : product.variants) === null || _a === void 0 ? void 0 : _a.values) === null || _b === void 0 ? void 0 : _b.length) > 0
6
7
  ? selectedVariation === null || selectedVariation === void 0 ? void 0 : selectedVariation.articleNumber
7
8
  : product === null || product === void 0 ? void 0 : product.articleNumber;
8
9
  }
@@ -18,7 +19,7 @@ export function useTrackProductAdd(selectedVariation) {
18
19
  }, [selectedVariation, track]);
19
20
  }
20
21
  export function getCommentsFromFormikValues(values) {
21
- return Object.keys(values.comments).map(name => {
22
+ return Object.keys(values.comments).map((name) => {
22
23
  return {
23
24
  name,
24
25
  value: values.comments[name]
@@ -1 +1 @@
1
- {"version":3,"file":"addToCartUtils.js","sourceRoot":"","sources":["addToCartUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAE/D,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAOrE,MAAM,UAAU,gBAAgB,CAC9B,OAAgB,EAChB,iBAAiC;IAEjC,OAAO,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;QACvC,CAAC,CAAC,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,aAAa;QAClC,CAAC,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,aAAa,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,iBAAiC;IAClE,MAAM,KAAK,GAAG,UAAU,EAAE,CAAC;IAE3B,OAAO,WAAW,CAChB,SAAS,mBAAmB,CAAC,OAAO,EAAE,QAAQ;QAC5C,KAAK,CACH,iBAAiB,CAAC;YAChB,MAAM,EAAE,KAAK;YACb,OAAO;YACP,QAAQ;YACR,iBAAiB;SAClB,CAAC,CACH,CAAC;IACJ,CAAC,EACD,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAC3B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,MAA6B;IACvE,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;QAC7C,OAAO;YACL,IAAI;YACJ,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;SAC7B,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,EAC/B,kBAAkB,EAClB,eAAe,EACf,MAAM,EACN,SAAS,EAMV;IACC,OAAO,CAAC,EAAE,IAAI,EAAO,EAAE,EAAE;QACvB,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,KAAK,MAAM,EAAE;YAChD,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SACrD;QACD,kBAAkB,IAAI,kBAAkB,CAAC,eAAe,CAAC,CAAC;IAC5D,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,EAC7B,gBAAgB,EAChB,eAAe,EAIhB;IACC,OAAO,CAAC,KAAU,EAAE,EAAE;QACpB,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,gBAAgB,EAAE;YACrB,MAAM,KAAK,CAAC;SACb;QACD,gBAAgB,iCAAM,eAAe,KAAE,KAAK,IAAG,CAAC;IAClD,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"addToCartUtils.js","sourceRoot":"","sources":["addToCartUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAE/D,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAOrE,MAAM,UAAU,gBAAgB,CAC9B,OAAgB,EAChB,iBAAiC;;IAEjC,OAAO,CAAA,MAAA,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,0CAAE,MAAM,0CAAE,MAAM,IAAG,CAAC;QAC1C,CAAC,CAAC,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,aAAa;QAClC,CAAC,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,aAAa,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,iBAAiC;IAClE,MAAM,KAAK,GAAG,UAAU,EAAE,CAAC;IAE3B,OAAO,WAAW,CAChB,SAAS,mBAAmB,CAAC,OAAO,EAAE,QAAQ;QAC5C,KAAK,CACH,iBAAiB,CAAC;YAChB,MAAM,EAAE,KAAK;YACb,OAAO;YACP,QAAQ;YACR,iBAAiB;SAClB,CAAC,CACH,CAAC;IACJ,CAAC,EACD,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAC3B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,MAA6B;IACvE,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QAC/C,OAAO;YACL,IAAI;YACJ,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;SAC7B,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,EAC/B,kBAAkB,EAClB,eAAe,EACf,MAAM,EACN,SAAS,EAMV;IACC,OAAO,CAAC,EAAE,IAAI,EAAO,EAAE,EAAE;QACvB,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,KAAK,MAAM,EAAE;YAChD,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SACrD;QACD,kBAAkB,IAAI,kBAAkB,CAAC,eAAe,CAAC,CAAC;IAC5D,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,EAC7B,gBAAgB,EAChB,eAAe,EAIhB;IACC,OAAO,CAAC,KAAU,EAAE,EAAE;QACpB,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,gBAAgB,EAAE;YACrB,MAAM,KAAK,CAAC;SACb;QACD,gBAAgB,iCAAM,eAAe,KAAE,KAAK,IAAG,CAAC;IAClD,CAAC,CAAC;AACJ,CAAC"}
@@ -1,5 +1,5 @@
1
1
  /// <reference types="react" />
2
2
  import { CartMutationProps } from './cartMutationUtils';
3
- declare type RemoveFromCartProps = {} & CartMutationProps;
3
+ declare type RemoveFromCartProps = CartMutationProps;
4
4
  declare const RemoveFromCart: ({ cartQuery, children }: RemoveFromCartProps) => JSX.Element;
5
5
  export default RemoveFromCart;
@@ -2,6 +2,7 @@ import throwErrorInDev from '../../helpers/throwErrorInDev';
2
2
  export const TEMP_CART_ID = 'TEMP_CART_ID';
3
3
  export const getAddToCartOptimisticResponse = (product, quantity = 1, cartId, client, cartQuery) => {
4
4
  const defaultOptimisticCart = {
5
+ __optimistic: true,
5
6
  id: TEMP_CART_ID,
6
7
  totalQuantity: quantity,
7
8
  __typename: 'Cart',
@@ -38,7 +39,7 @@ export const getAddToCartOptimisticResponse = (product, quantity = 1, cartId, cl
38
39
  const newTotalQuantity = cart.totalQuantity + quantity;
39
40
  const newItemQuantity = cart.items[index].quantity + quantity;
40
41
  // Already in cart, increase/decrease quantity
41
- const optimisticCart = Object.assign(Object.assign({}, cart), { totalQuantity: newTotalQuantity, items: [
42
+ const optimisticCart = Object.assign(Object.assign({}, cart), { __optimistic: true, totalQuantity: newTotalQuantity, items: [
42
43
  ...cart.items.slice(0, index),
43
44
  ...(newItemQuantity > 0
44
45
  ? [
@@ -50,7 +51,7 @@ export const getAddToCartOptimisticResponse = (product, quantity = 1, cartId, cl
50
51
  return optimisticCart;
51
52
  }
52
53
  else {
53
- const optimisticCart = Object.assign(Object.assign({}, cart), { totalQuantity: cart.totalQuantity + quantity });
54
+ const optimisticCart = Object.assign(Object.assign({}, cart), { __optimistic: true, totalQuantity: cart.totalQuantity + quantity });
54
55
  return optimisticCart;
55
56
  }
56
57
  }
@@ -69,7 +70,7 @@ export const getDecrementQuantityOptimisticResponse = ({ itemId, client, cartId,
69
70
  variables: { cartId }
70
71
  });
71
72
  const items = cart.items.map((item) => item.id === itemId ? Object.assign(Object.assign({}, item), { quantity: item.quantity - 1 }) : item);
72
- const optimisticCart = Object.assign(Object.assign({}, cart), { items });
73
+ const optimisticCart = Object.assign(Object.assign({}, cart), { items, __optimistic: true });
73
74
  return optimisticCart;
74
75
  };
75
76
  export const getIncrementQuantityOptimisticResponse = ({ itemId, client, cartId, cartQuery }) => {
@@ -79,7 +80,7 @@ export const getIncrementQuantityOptimisticResponse = ({ itemId, client, cartId,
79
80
  variables: { cartId }
80
81
  });
81
82
  const items = cart.items.map((item) => item.id === itemId ? Object.assign(Object.assign({}, item), { quantity: item.quantity + 1 }) : item);
82
- const optimisticCart = Object.assign(Object.assign({}, cart), { items });
83
+ const optimisticCart = Object.assign(Object.assign({}, cart), { items, __optimistic: true });
83
84
  return optimisticCart;
84
85
  };
85
86
  export const getRemoveFromCartOptimisticResponse = ({ itemId, client, cartId, setCartId, cartQuery }) => {
@@ -92,7 +93,7 @@ export const getRemoveFromCartOptimisticResponse = ({ itemId, client, cartId, se
92
93
  if (items.length === 0) {
93
94
  setCartId(null);
94
95
  }
95
- const optimisticCart = Object.assign(Object.assign({}, cart), { items });
96
+ const optimisticCart = Object.assign(Object.assign({}, cart), { items, __optimistic: true });
96
97
  return optimisticCart;
97
98
  };
98
99
  export const getSetQuantityOptimisticResponse = ({ itemId, quantity, client, cartId, cartQuery }) => {
@@ -102,7 +103,7 @@ export const getSetQuantityOptimisticResponse = ({ itemId, quantity, client, car
102
103
  variables: { cartId }
103
104
  });
104
105
  const items = cart.items.map((item) => item.id === itemId ? Object.assign(Object.assign({}, item), { quantity }) : item);
105
- const optimisticCart = Object.assign(Object.assign({}, cart), { items });
106
+ const optimisticCart = Object.assign(Object.assign({}, cart), { items, __optimistic: true });
106
107
  return optimisticCart;
107
108
  };
108
109
  //# sourceMappingURL=cartMutationUtils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cartMutationUtils.js","sourceRoot":"","sources":["cartMutationUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cartMutationUtils.js","sourceRoot":"","sources":["cartMutationUtils.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,8 @@ import { HelmetProvider } from 'react-helmet-async';
6
6
  import { OpenGraphProductData, OpenGraphGeneralPageData } from './';
7
7
  import { ChannelProvider } from '../ChannelContext';
8
8
  import { ChannelHandler } from '../../ChannelHandler/ChannelHandler';
9
+ import { ConfigProvider } from '../ConfigProvider';
10
+ import mockShopConfig from '../../test-utils/mockShopConfig';
9
11
 
10
12
  function getMetaProperty(propertyName) {
11
13
  const metas = document.getElementsByTagName('meta');
@@ -27,11 +29,13 @@ function Providers({ children }) {
27
29
  });
28
30
  const context = {};
29
31
  return (
30
- <HelmetProvider context={context}>
31
- <ChannelProvider channelHandler={channelHandler}>
32
- {children}
33
- </ChannelProvider>
34
- </HelmetProvider>
32
+ <ConfigProvider config={mockShopConfig}>
33
+ <HelmetProvider context={context}>
34
+ <ChannelProvider channelHandler={channelHandler}>
35
+ {children}
36
+ </ChannelProvider>
37
+ </HelmetProvider>
38
+ </ConfigProvider>
35
39
  );
36
40
  }
37
41
 
@@ -150,4 +154,27 @@ describe('<OpenGraphProductData>', () => {
150
154
  expect(getMetaProperty('custom-property')).toEqual('custom-value');
151
155
  });
152
156
  });
157
+
158
+ it('Overriding brandCustomField in shop config should work', async () => {
159
+ const product = {
160
+ ...sampleProduct,
161
+ customFields: [
162
+ {
163
+ key: 'customBrandField',
164
+ stringValue: 'HyperBrand'
165
+ }
166
+ ]
167
+ };
168
+ render(
169
+ <Providers>
170
+ <ConfigProvider config={{ brandCustomField: 'customBrandField' }}>
171
+ <OpenGraphProductData product={product} />
172
+ </ConfigProvider>
173
+ </Providers>
174
+ );
175
+
176
+ await wait(() => {
177
+ expect(getMetaProperty('product:brand')).toEqual('HyperBrand');
178
+ });
179
+ });
153
180
  });
@@ -16,5 +16,10 @@ export interface OpenGraphProductDataProps {
16
16
  */
17
17
  optionalFields?: OpenGraphDataTag[];
18
18
  }
19
- export declare function getBrand(product: Product): any;
19
+ /**
20
+ * Get the brand field from a product's customFields.
21
+ *
22
+ * Usually you'd want to pass in the brand field from your shop config.
23
+ */
24
+ export declare function getBrand(product: Product, brandField?: string): any;
20
25
  export declare const OpenGraphProductData: React.FC<OpenGraphProductDataProps>;
@@ -1,38 +1,44 @@
1
1
  import React from 'react';
2
2
  import { useProductVariants } from '../../hooks/useProductVariants';
3
+ import { useShopConfig } from '@jetshop/core/hooks/useShopConfig';
3
4
  import ChannelContext from '../ChannelContext';
4
5
  import { Helmet } from 'react-helmet-async';
5
- // Key should be set in shopconfig (emanuels instruction)
6
- export function getBrand(product) {
6
+ /**
7
+ * Get the brand field from a product's customFields.
8
+ *
9
+ * Usually you'd want to pass in the brand field from your shop config.
10
+ */
11
+ export function getBrand(product, brandField = 'brand') {
7
12
  var _a;
8
- const field = (_a = product === null || product === void 0 ? void 0 : product.customFields) === null || _a === void 0 ? void 0 : _a.find(({ key }) => key === 'brand');
13
+ const field = (_a = product === null || product === void 0 ? void 0 : product.customFields) === null || _a === void 0 ? void 0 : _a.find(({ key }) => key === brandField);
9
14
  if (field) {
10
15
  return field === null || field === void 0 ? void 0 : field.stringValue;
11
16
  }
12
17
  }
13
- export const OpenGraphProductData = ({ product, initialVariant, optionalFields = [], }) => {
14
- var _a, _b, _c;
15
- const { selectedVariant: variant, } = useProductVariants(product, {
16
- initialVariant,
18
+ export const OpenGraphProductData = ({ product, initialVariant, optionalFields = [] }) => {
19
+ var _a, _b, _c, _d;
20
+ const { selectedVariant: variant } = useProductVariants(product, {
21
+ initialVariant
17
22
  });
18
23
  const { selectedChannel } = React.useContext(ChannelContext);
24
+ const { brandCustomField } = useShopConfig();
19
25
  const prod = variant || product;
20
- const brand = getBrand(product);
26
+ const brand = getBrand(product, brandCustomField);
21
27
  const overrides = optionalFields.map((tag) => tag.property);
22
28
  // If these are updated, please also update the docs (OpenGraph.mdx)
23
29
  const defaultTags = [
24
30
  {
25
31
  property: 'product:original_price:amount',
26
- content: (_a = prod.previousPrice) === null || _a === void 0 ? void 0 : _a.incVat,
32
+ content: (_a = prod.previousPrice) === null || _a === void 0 ? void 0 : _a.incVat
27
33
  },
28
34
  { property: 'product:price:amount', content: (_b = prod.price) === null || _b === void 0 ? void 0 : _b.incVat },
29
35
  {
30
36
  property: 'og:price:currency',
31
- content: selectedChannel.currency.format.code,
37
+ content: selectedChannel.currency.format.code
32
38
  },
33
- { property: 'product:availability', content: prod.stockStatus.buyable },
39
+ { property: 'product:availability', content: (_c = prod.stockStatus) === null || _c === void 0 ? void 0 : _c.buyable },
34
40
  { property: 'product:brand', content: brand },
35
- { property: 'product:category', content: (_c = product.canonicalCategory) === null || _c === void 0 ? void 0 : _c.name },
41
+ { property: 'product:category', content: (_d = product.canonicalCategory) === null || _d === void 0 ? void 0 : _d.name }
36
42
  ].filter((tag) => !overrides.includes(tag.property));
37
43
  return (React.createElement(Helmet, null,
38
44
  defaultTags.map((tag) => {
@@ -1 +1 @@
1
- {"version":3,"file":"OpenGraphProductData.js","sourceRoot":"","sources":["OpenGraphProductData.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,cAAc,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAmB5C,yDAAyD;AACzD,MAAM,UAAU,QAAQ,CAAC,OAAgB;;IACvC,MAAM,KAAK,GAAQ,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,YAAY,0CAAE,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,GAAG,KAAK,OAAO,CAAC,CAAC;IAC7E,IAAI,KAAK,EAAE;QACT,OAAO,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,WAAW,CAAC;KAC3B;AACH,CAAC;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAwC,CAAC,EACxE,OAAO,EACP,cAAc,EACd,cAAc,GAAG,EAAE,GACpB,EAAE,EAAE;;IACH,MAAM,EACJ,eAAe,EAAE,OAAO,GACzB,GAEG,kBAAkB,CAAC,OAAO,EAAE;QAC9B,cAAc;KACf,CAAC,CAAC;IACH,MAAM,EAAE,eAAe,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;IAE7D,MAAM,IAAI,GAAG,OAAO,IAAI,OAAO,CAAC;IAChC,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;IAEhC,MAAM,SAAS,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAE5D,oEAAoE;IACpE,MAAM,WAAW,GAAG;QAClB;YACE,QAAQ,EAAE,+BAA+B;YACzC,OAAO,EAAE,MAAA,IAAI,CAAC,aAAa,0CAAE,MAAM;SACpC;QACD,EAAE,QAAQ,EAAE,sBAAsB,EAAE,OAAO,EAAE,MAAA,IAAI,CAAC,KAAK,0CAAE,MAAM,EAAE;QACjE;YACE,QAAQ,EAAE,mBAAmB;YAC7B,OAAO,EAAE,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI;SAC9C;QACD,EAAE,QAAQ,EAAE,sBAAsB,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;QACvE,EAAE,QAAQ,EAAE,eAAe,EAAE,OAAO,EAAE,KAAK,EAAE;QAC7C,EAAE,QAAQ,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAA,OAAO,CAAC,iBAAiB,0CAAE,IAAI,EAAE;KAC3E,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;IAErD,OAAO,CACL,oBAAC,MAAM;QACJ,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YACvB,OAAO,CACL,GAAG,CAAC,OAAO,IAAI,CACb,8BACE,GAAG,EAAE,UAAU,GAAG,CAAC,QAAQ,EAAE,EAC7B,QAAQ,EAAE,GAAG,CAAC,QAAQ,EACtB,OAAO,EAAE,GAAG,CAAC,OAAO,GACpB,CACH,CACF,CAAC;QACJ,CAAC,CAAC;QACD,cAAc,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAC3B,8BACE,GAAG,EAAE,UAAU,GAAG,CAAC,QAAQ,EAAE,EAC7B,QAAQ,EAAE,GAAG,CAAC,QAAQ,EACtB,OAAO,EAAE,GAAG,CAAC,OAAO,GACpB,CACH,CAAC,CACK,CACV,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"OpenGraphProductData.js","sourceRoot":"","sources":["OpenGraphProductData.tsx"],"names":[],"mappings":"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"}