@gem-sdk/core 1.5.17 → 1.5.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (206) hide show
  1. package/dist/cjs/components/AddOn.js +7 -7
  2. package/dist/cjs/components/ComponentWrapper.js +14 -8
  3. package/dist/cjs/components/ComponentWrapperPreview.js +55 -46
  4. package/dist/cjs/components/Empty.js +1 -1
  5. package/dist/cjs/components/Render.js +50 -13
  6. package/dist/cjs/components/Render.liquid.js +81 -57
  7. package/dist/cjs/components/RenderBlock.js +41 -8
  8. package/dist/cjs/components/RenderPreview.js +51 -13
  9. package/dist/cjs/components/RenderSection.js +11 -7
  10. package/dist/cjs/components/constant.js +24 -24
  11. package/dist/cjs/contexts/AddonContext.js +25 -14
  12. package/dist/cjs/contexts/BuilderComponent.js +23 -19
  13. package/dist/cjs/contexts/BuilderContext.js +25 -19
  14. package/dist/cjs/contexts/BuilderPreviewContext.js +349 -341
  15. package/dist/cjs/contexts/CartLineContext.js +19 -14
  16. package/dist/cjs/contexts/CollectionContext.js +21 -13
  17. package/dist/cjs/contexts/ProductContext.js +136 -115
  18. package/dist/cjs/contexts/ProductListContext.js +21 -13
  19. package/dist/cjs/contexts/SectionContext.js +41 -37
  20. package/dist/cjs/contexts/ShopContext.js +54 -31
  21. package/dist/cjs/graphql/fragments/analytic.generated.js +1 -1
  22. package/dist/cjs/graphql/fragments/collection-detail.generated.js +1 -1
  23. package/dist/cjs/graphql/fragments/collection-product.generated.js +1 -1
  24. package/dist/cjs/graphql/fragments/custom-code.generated.js +1 -1
  25. package/dist/cjs/graphql/fragments/data-seo.generated.js +1 -1
  26. package/dist/cjs/graphql/fragments/media.generated.js +1 -1
  27. package/dist/cjs/graphql/fragments/product-little.generated.js +1 -1
  28. package/dist/cjs/graphql/fragments/product-option-value.generated.js +1 -1
  29. package/dist/cjs/graphql/fragments/product-option.generated.js +1 -1
  30. package/dist/cjs/graphql/fragments/product.generated.js +1 -1
  31. package/dist/cjs/graphql/fragments/published-custom-section.generated.js +1 -1
  32. package/dist/cjs/graphql/fragments/published-page-section.generated.js +1 -1
  33. package/dist/cjs/graphql/fragments/published-theme-page.generated.js +1 -1
  34. package/dist/cjs/graphql/fragments/published-theme-style.generated.js +1 -1
  35. package/dist/cjs/graphql/fragments/selected-option.generated.js +1 -1
  36. package/dist/cjs/graphql/fragments/variant.generated.js +1 -1
  37. package/dist/cjs/graphql/mutations/page-view-up.generated.js +1 -1
  38. package/dist/cjs/graphql/queries/products.generated.js +1 -1
  39. package/dist/cjs/graphql/queries/store-property.generated.js +1 -1
  40. package/dist/cjs/helpers/GlobalEvent.js +12 -10
  41. package/dist/cjs/helpers/background.js +96 -96
  42. package/dist/cjs/helpers/borders.js +123 -127
  43. package/dist/cjs/helpers/clone-deep.js +1 -1
  44. package/dist/cjs/helpers/cls.js +11 -15
  45. package/dist/cjs/helpers/colors.js +121 -156
  46. package/dist/cjs/helpers/compose-advance-style.js +115 -121
  47. package/dist/cjs/helpers/constant.js +16 -11
  48. package/dist/cjs/helpers/css-variable.js +2 -2
  49. package/dist/cjs/helpers/email.js +3 -3
  50. package/dist/cjs/helpers/flatten-connection.js +4 -5
  51. package/dist/cjs/helpers/get-resonsive-value.js +24 -25
  52. package/dist/cjs/helpers/get-shortname.js +87 -87
  53. package/dist/cjs/helpers/is-browser.js +2 -2
  54. package/dist/cjs/helpers/is-defined.js +2 -2
  55. package/dist/cjs/helpers/is-empty-children.js +2 -2
  56. package/dist/cjs/helpers/layout.js +9 -10
  57. package/dist/cjs/helpers/load-script.js +26 -27
  58. package/dist/cjs/helpers/make-style.js +77 -86
  59. package/dist/cjs/helpers/normalize-builder-data.js +18 -12
  60. package/dist/cjs/helpers/prefetch-queries.js +72 -52
  61. package/dist/cjs/helpers/product.js +25 -29
  62. package/dist/cjs/helpers/queries/get-collection.js +179 -167
  63. package/dist/cjs/helpers/queries/get-product-by-slug.js +103 -94
  64. package/dist/cjs/helpers/queries/get-product.js +121 -106
  65. package/dist/cjs/helpers/queries/get-products.js +137 -125
  66. package/dist/cjs/helpers/radius.js +78 -81
  67. package/dist/cjs/helpers/render.js +56 -56
  68. package/dist/cjs/helpers/shadow.js +38 -38
  69. package/dist/cjs/helpers/size.js +12 -13
  70. package/dist/cjs/helpers/spacing.js +35 -37
  71. package/dist/cjs/helpers/tracking/fpixel.js +21 -22
  72. package/dist/cjs/helpers/tracking/gtag.js +84 -90
  73. package/dist/cjs/helpers/tracking/tiktokpixel.js +12 -12
  74. package/dist/cjs/helpers/typography.js +2 -2
  75. package/dist/cjs/hooks/cart/use-add-to-cart.js +10 -10
  76. package/dist/cjs/hooks/cart/use-cart-data.js +18 -16
  77. package/dist/cjs/hooks/cart/use-cart-discount-codes-update.js +10 -10
  78. package/dist/cjs/hooks/cart/use-cart-note-update.js +10 -10
  79. package/dist/cjs/hooks/cart/use-create-cart.js +12 -12
  80. package/dist/cjs/hooks/cart/use-remove-cart-item.js +10 -10
  81. package/dist/cjs/hooks/cart/use-update-cart-item.js +10 -10
  82. package/dist/cjs/hooks/shop/use-collection-query.js +12 -6
  83. package/dist/cjs/hooks/shop/use-product-query.js +12 -6
  84. package/dist/cjs/hooks/shop/use-products-query.js +14 -6
  85. package/dist/cjs/hooks/shop.js +86 -67
  86. package/dist/cjs/hooks/use-current-device.js +14 -16
  87. package/dist/cjs/hooks/use-lazy-video.js +7 -7
  88. package/dist/cjs/hooks/useCartId.js +35 -27
  89. package/dist/cjs/hooks/useCartLine.js +2 -2
  90. package/dist/cjs/hooks/useCartUI.js +37 -31
  91. package/dist/cjs/hooks/useCollection.js +2 -2
  92. package/dist/cjs/hooks/useFetchHandle.js +6 -6
  93. package/dist/cjs/hooks/useFormatMoney.js +11 -7
  94. package/dist/cjs/hooks/useIsomorphicLayoutEffect.js +1 -1
  95. package/dist/cjs/hooks/useLoadScript.js +22 -20
  96. package/dist/cjs/hooks/useMoney.js +59 -42
  97. package/dist/cjs/hooks/usePrevious.js +12 -10
  98. package/dist/cjs/hooks/useProduct.js +92 -69
  99. package/dist/cjs/hooks/useProductList.js +11 -11
  100. package/dist/cjs/hooks/useSuspenseFetch.js +20 -17
  101. package/dist/cjs/hooks/useSwatchesOptions.js +32 -30
  102. package/dist/cjs/types/global-style.js +9 -2
  103. package/dist/esm/components/AddOn.js +7 -7
  104. package/dist/esm/components/ComponentWrapper.js +14 -8
  105. package/dist/esm/components/ComponentWrapperPreview.js +55 -46
  106. package/dist/esm/components/Empty.js +1 -1
  107. package/dist/esm/components/Render.js +50 -13
  108. package/dist/esm/components/Render.liquid.js +81 -57
  109. package/dist/esm/components/RenderBlock.js +41 -8
  110. package/dist/esm/components/RenderPreview.js +51 -13
  111. package/dist/esm/components/RenderSection.js +11 -7
  112. package/dist/esm/components/constant.js +24 -24
  113. package/dist/esm/contexts/AddonContext.js +26 -15
  114. package/dist/esm/contexts/BuilderComponent.js +24 -20
  115. package/dist/esm/contexts/BuilderContext.js +26 -20
  116. package/dist/esm/contexts/BuilderPreviewContext.js +350 -342
  117. package/dist/esm/contexts/CartLineContext.js +20 -15
  118. package/dist/esm/contexts/CollectionContext.js +22 -14
  119. package/dist/esm/contexts/ProductContext.js +137 -116
  120. package/dist/esm/contexts/ProductListContext.js +22 -14
  121. package/dist/esm/contexts/SectionContext.js +42 -38
  122. package/dist/esm/contexts/ShopContext.js +55 -32
  123. package/dist/esm/graphql/fragments/analytic.generated.js +1 -1
  124. package/dist/esm/graphql/fragments/collection-detail.generated.js +1 -1
  125. package/dist/esm/graphql/fragments/collection-product.generated.js +1 -1
  126. package/dist/esm/graphql/fragments/custom-code.generated.js +1 -1
  127. package/dist/esm/graphql/fragments/data-seo.generated.js +1 -1
  128. package/dist/esm/graphql/fragments/media.generated.js +1 -1
  129. package/dist/esm/graphql/fragments/product-little.generated.js +1 -1
  130. package/dist/esm/graphql/fragments/product-option-value.generated.js +1 -1
  131. package/dist/esm/graphql/fragments/product-option.generated.js +1 -1
  132. package/dist/esm/graphql/fragments/product.generated.js +1 -1
  133. package/dist/esm/graphql/fragments/published-custom-section.generated.js +1 -1
  134. package/dist/esm/graphql/fragments/published-page-section.generated.js +1 -1
  135. package/dist/esm/graphql/fragments/published-theme-page.generated.js +1 -1
  136. package/dist/esm/graphql/fragments/published-theme-style.generated.js +1 -1
  137. package/dist/esm/graphql/fragments/selected-option.generated.js +1 -1
  138. package/dist/esm/graphql/fragments/variant.generated.js +1 -1
  139. package/dist/esm/graphql/mutations/page-view-up.generated.js +1 -1
  140. package/dist/esm/graphql/queries/products.generated.js +1 -1
  141. package/dist/esm/graphql/queries/store-property.generated.js +1 -1
  142. package/dist/esm/helpers/GlobalEvent.js +12 -10
  143. package/dist/esm/helpers/background.js +96 -96
  144. package/dist/esm/helpers/borders.js +123 -127
  145. package/dist/esm/helpers/clone-deep.js +1 -1
  146. package/dist/esm/helpers/cls.js +11 -15
  147. package/dist/esm/helpers/colors.js +121 -156
  148. package/dist/esm/helpers/compose-advance-style.js +115 -121
  149. package/dist/esm/helpers/constant.js +16 -11
  150. package/dist/esm/helpers/css-variable.js +2 -2
  151. package/dist/esm/helpers/email.js +3 -3
  152. package/dist/esm/helpers/flatten-connection.js +4 -5
  153. package/dist/esm/helpers/get-resonsive-value.js +24 -25
  154. package/dist/esm/helpers/get-shortname.js +87 -87
  155. package/dist/esm/helpers/is-browser.js +2 -2
  156. package/dist/esm/helpers/is-defined.js +2 -2
  157. package/dist/esm/helpers/is-empty-children.js +2 -2
  158. package/dist/esm/helpers/layout.js +9 -10
  159. package/dist/esm/helpers/load-script.js +26 -27
  160. package/dist/esm/helpers/make-style.js +77 -86
  161. package/dist/esm/helpers/normalize-builder-data.js +18 -12
  162. package/dist/esm/helpers/prefetch-queries.js +72 -52
  163. package/dist/esm/helpers/product.js +25 -29
  164. package/dist/esm/helpers/queries/get-collection.js +179 -167
  165. package/dist/esm/helpers/queries/get-product-by-slug.js +103 -94
  166. package/dist/esm/helpers/queries/get-product.js +121 -106
  167. package/dist/esm/helpers/queries/get-products.js +137 -125
  168. package/dist/esm/helpers/radius.js +78 -81
  169. package/dist/esm/helpers/render.js +56 -56
  170. package/dist/esm/helpers/shadow.js +38 -38
  171. package/dist/esm/helpers/size.js +12 -13
  172. package/dist/esm/helpers/spacing.js +35 -37
  173. package/dist/esm/helpers/tracking/fpixel.js +21 -22
  174. package/dist/esm/helpers/tracking/gtag.js +84 -90
  175. package/dist/esm/helpers/tracking/tiktokpixel.js +12 -12
  176. package/dist/esm/helpers/typography.js +2 -2
  177. package/dist/esm/hooks/cart/use-add-to-cart.js +10 -10
  178. package/dist/esm/hooks/cart/use-cart-data.js +18 -16
  179. package/dist/esm/hooks/cart/use-cart-discount-codes-update.js +10 -10
  180. package/dist/esm/hooks/cart/use-cart-note-update.js +10 -10
  181. package/dist/esm/hooks/cart/use-create-cart.js +12 -12
  182. package/dist/esm/hooks/cart/use-remove-cart-item.js +10 -10
  183. package/dist/esm/hooks/cart/use-update-cart-item.js +10 -10
  184. package/dist/esm/hooks/shop/use-collection-query.js +12 -6
  185. package/dist/esm/hooks/shop/use-product-query.js +12 -6
  186. package/dist/esm/hooks/shop/use-products-query.js +14 -6
  187. package/dist/esm/hooks/shop.js +86 -67
  188. package/dist/esm/hooks/use-current-device.js +14 -16
  189. package/dist/esm/hooks/use-lazy-video.js +7 -7
  190. package/dist/esm/hooks/useCartId.js +35 -27
  191. package/dist/esm/hooks/useCartLine.js +2 -2
  192. package/dist/esm/hooks/useCartUI.js +37 -31
  193. package/dist/esm/hooks/useCollection.js +2 -2
  194. package/dist/esm/hooks/useFetchHandle.js +6 -6
  195. package/dist/esm/hooks/useFormatMoney.js +11 -7
  196. package/dist/esm/hooks/useIsomorphicLayoutEffect.js +1 -1
  197. package/dist/esm/hooks/useLoadScript.js +22 -20
  198. package/dist/esm/hooks/useMoney.js +59 -42
  199. package/dist/esm/hooks/usePrevious.js +12 -10
  200. package/dist/esm/hooks/useProduct.js +92 -69
  201. package/dist/esm/hooks/useProductList.js +11 -11
  202. package/dist/esm/hooks/useSuspenseFetch.js +20 -17
  203. package/dist/esm/hooks/useSwatchesOptions.js +32 -30
  204. package/dist/esm/types/global-style.js +9 -2
  205. package/dist/types/index.d.ts +30 -2
  206. package/package.json +1 -1
@@ -1,21 +1,26 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import { useStore, createStore } from 'zustand';
3
- import { createContext, useContext } from 'react';
3
+ import { useContext, createContext } from 'react';
4
4
 
5
- const CartLineContext = createContext(null);
6
- const createCartLineStore = (data) => createStore(() => ({
7
- ...data,
8
- }));
9
- const CartLineProvider = ({ children, line }) => {
10
- return (jsx(CartLineContext.Provider, { value: createCartLineStore({ line }), children: children }, `${line.id}-${line.quantity}`));
11
- };
12
- // export const useCartLineStore = useStore;
13
- const useCartLineStore = (selector, equalityFn) => {
14
- const store = useContext(CartLineContext);
15
- if (!store) {
16
- throw new Error('useCartLineStore must be used within a CartLineProvider');
17
- }
18
- return useStore(store, selector, equalityFn);
5
+ const CartLineContext = /*#__PURE__*/ createContext(null);
6
+ const createCartLineStore = (data)=>createStore(()=>({
7
+ ...data
8
+ }));
9
+ const CartLineProvider = ({ children , line })=>{
10
+ return /*#__PURE__*/ jsx(CartLineContext.Provider, {
11
+ value: createCartLineStore({
12
+ line
13
+ }),
14
+ children: children
15
+ }, `${line.id}-${line.quantity}`);
16
+ };
17
+ // export const useCartLineStore = useStore;
18
+ const useCartLineStore = (selector, equalityFn)=>{
19
+ const store = useContext(CartLineContext);
20
+ if (!store) {
21
+ throw new Error('useCartLineStore must be used within a CartLineProvider');
22
+ }
23
+ return useStore(store, selector, equalityFn);
19
24
  };
20
25
 
21
26
  export { CartLineProvider, useCartLineStore };
@@ -1,20 +1,28 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
- import { createContext, useContext } from 'react';
2
+ import { useContext, createContext } from 'react';
3
3
  import { useStore, createStore } from 'zustand';
4
4
 
5
- const CollectionListContext = createContext(null);
6
- const createCollectionProvider = (data) => createStore(() => ({
7
- ...data,
8
- }));
9
- const CollectionProvider = ({ children, collection, products, settings, styles, }) => {
10
- return (jsx(CollectionListContext.Provider, { value: createCollectionProvider({ products, collection, settings, styles }), children: children }, collection?.id));
11
- };
12
- const useCollectionStore = (selector, equalityFn) => {
13
- const store = useContext(CollectionListContext);
14
- if (!store) {
15
- throw new Error('useCollectionStore must be used within a useCollectionStore');
16
- }
17
- return useStore(store, selector, equalityFn);
5
+ const CollectionListContext = /*#__PURE__*/ createContext(null);
6
+ const createCollectionProvider = (data)=>createStore(()=>({
7
+ ...data
8
+ }));
9
+ const CollectionProvider = ({ children , collection , products , settings , styles })=>{
10
+ return /*#__PURE__*/ jsx(CollectionListContext.Provider, {
11
+ value: createCollectionProvider({
12
+ products,
13
+ collection,
14
+ settings,
15
+ styles
16
+ }),
17
+ children: children
18
+ }, collection?.id);
19
+ };
20
+ const useCollectionStore = (selector, equalityFn)=>{
21
+ const store = useContext(CollectionListContext);
22
+ if (!store) {
23
+ throw new Error('useCollectionStore must be used within a useCollectionStore');
24
+ }
25
+ return useStore(store, selector, equalityFn);
18
26
  };
19
27
 
20
28
  export { CollectionListContext, CollectionProvider, useCollectionStore };
@@ -1,123 +1,144 @@
1
1
  import { jsx, Fragment } from 'react/jsx-runtime';
2
2
  import { useStore, createStore } from 'zustand';
3
- import { createContext, useId, useMemo, useContext } from 'react';
3
+ import { useId, useMemo, useContext, createContext } from 'react';
4
4
  import { flattenConnection } from '../helpers/flatten-connection.js';
5
5
 
6
- // const { Provider, useStore } = createContext<StoreApi<ProductContextProps>>();
7
- const ProductContext = createContext(null);
8
- const createProductStoreProvider = (data) => createStore((set, get) => ({
9
- ...data,
10
- updateProperty: (name, data) => {
11
- set((state) => {
12
- return {
13
- properties: state.properties?.map((v) => {
14
- if (v.key === name) {
15
- return { ...v, ...data };
16
- }
17
- return v;
18
- }),
19
- };
20
- });
21
- },
22
- addProperty: (data) => {
23
- const properties = get().properties;
24
- if (!properties?.some((v) => v.key === data.key)) {
25
- set((state) => ({ properties: [...(state.properties ?? []), data] }));
26
- }
27
- },
28
- removeProperty: (name) => {
29
- set((state) => ({ properties: state.properties?.filter((v) => v.key !== name) }));
30
- },
31
- setQuantity: (num) => {
32
- set({
33
- quantity: num > 0 ? num : 1,
34
- });
35
- },
36
- setProductFeaturedImage: (image) => {
37
- set({
38
- featuredImageGlobal: image,
39
- });
40
- },
41
- incrementQuantity: () => {
42
- set((state) => {
43
- const quantity = state.quantity ?? 1;
44
- return {
45
- quantity: quantity + 1,
46
- };
47
- });
48
- },
49
- decrementQuantity: () => {
50
- set((state) => {
51
- const quantity = state.quantity ?? 1;
52
- return {
53
- quantity: quantity > 2 ? quantity - 1 : 1,
54
- };
55
- });
56
- },
57
- setSelectedOption: (optionId, optionValue) => {
58
- set((state) => {
59
- if (optionId && optionValue) {
60
- return {
61
- selectedOptions: {
62
- ...state?.selectedOptions,
63
- [optionId]: optionValue,
64
- },
65
- };
66
- }
67
- return state;
68
- });
69
- },
70
- forceSelectedOption: (value) => {
71
- set((state) => {
72
- return {
73
- selectedOptions: {
74
- ...state?.selectedOptions,
75
- ...value,
76
- },
77
- };
78
- });
79
- },
80
- updateIsSubmit: (value) => {
81
- set({
82
- isSubmit: value,
83
- });
84
- },
85
- }));
86
- const ProductProvider = ({ children, product, initialVariantId, quantity = 1, }) => {
87
- const uiqueId = useId();
88
- const store = useMemo(() => {
89
- let selectedOptions = {};
90
- let featuredImageGlobal = undefined;
91
- if (product) {
92
- const variants = flattenConnection(product.variants);
93
- const firstVariant = flattenConnection(product.variants)[0];
94
- const initialVariant = variants.find((v) => v?.id === initialVariantId) ?? firstVariant;
95
- selectedOptions = initialVariant?.selectedOptions.reduce((acc, option) => {
96
- if (option.name) {
97
- return { ...acc, [option.name]: option.value };
98
- }
99
- return acc;
100
- }, {});
101
- featuredImageGlobal =
102
- product.medias?.edges.find((v) => v.node?.id === initialVariant?.mediaId)?.node ??
103
- product.featuredImage;
104
- }
105
- return createProductStoreProvider({
106
- product,
107
- quantity,
108
- selectedOptions,
109
- uiqueId,
110
- featuredImageGlobal,
111
- });
112
- }, [initialVariantId, product, quantity, uiqueId]);
113
- return (jsx(ProductContext.Provider, { value: store, children: jsx(Fragment, { children: children }) }));
114
- };
115
- const useProductStore = (selector, equalityFn) => {
116
- const store = useContext(ProductContext);
117
- if (!store) {
118
- throw new Error('Element of product must be used inside a Product');
119
- }
120
- return useStore(store, selector, equalityFn);
6
+ // const { Provider, useStore } = createContext<StoreApi<ProductContextProps>>();
7
+ const ProductContext = /*#__PURE__*/ createContext(null);
8
+ const createProductStoreProvider = (data)=>createStore((set, get)=>({
9
+ ...data,
10
+ updateProperty: (name, data)=>{
11
+ set((state)=>{
12
+ return {
13
+ properties: state.properties?.map((v)=>{
14
+ if (v.key === name) {
15
+ return {
16
+ ...v,
17
+ ...data
18
+ };
19
+ }
20
+ return v;
21
+ })
22
+ };
23
+ });
24
+ },
25
+ addProperty: (data)=>{
26
+ const properties = get().properties;
27
+ if (!properties?.some((v)=>v.key === data.key)) {
28
+ set((state)=>({
29
+ properties: [
30
+ ...state.properties ?? [],
31
+ data
32
+ ]
33
+ }));
34
+ }
35
+ },
36
+ removeProperty: (name)=>{
37
+ set((state)=>({
38
+ properties: state.properties?.filter((v)=>v.key !== name)
39
+ }));
40
+ },
41
+ setQuantity: (num)=>{
42
+ set({
43
+ quantity: num > 0 ? num : 1
44
+ });
45
+ },
46
+ setProductFeaturedImage: (image)=>{
47
+ set({
48
+ featuredImageGlobal: image
49
+ });
50
+ },
51
+ incrementQuantity: ()=>{
52
+ set((state)=>{
53
+ const quantity = state.quantity ?? 1;
54
+ return {
55
+ quantity: quantity + 1
56
+ };
57
+ });
58
+ },
59
+ decrementQuantity: ()=>{
60
+ set((state)=>{
61
+ const quantity = state.quantity ?? 1;
62
+ return {
63
+ quantity: quantity > 2 ? quantity - 1 : 1
64
+ };
65
+ });
66
+ },
67
+ setSelectedOption: (optionId, optionValue)=>{
68
+ set((state)=>{
69
+ if (optionId && optionValue) {
70
+ return {
71
+ selectedOptions: {
72
+ ...state?.selectedOptions,
73
+ [optionId]: optionValue
74
+ }
75
+ };
76
+ }
77
+ return state;
78
+ });
79
+ },
80
+ forceSelectedOption: (value)=>{
81
+ set((state)=>{
82
+ return {
83
+ selectedOptions: {
84
+ ...state?.selectedOptions,
85
+ ...value
86
+ }
87
+ };
88
+ });
89
+ },
90
+ updateIsSubmit: (value)=>{
91
+ set({
92
+ isSubmit: value
93
+ });
94
+ }
95
+ }));
96
+ const ProductProvider = ({ children , product , initialVariantId , quantity =1 })=>{
97
+ const uiqueId = useId();
98
+ const store = useMemo(()=>{
99
+ let selectedOptions = {};
100
+ let featuredImageGlobal = undefined;
101
+ if (product) {
102
+ const variants = flattenConnection(product.variants);
103
+ const firstVariant = flattenConnection(product.variants)[0];
104
+ const initialVariant = variants.find((v)=>v?.id === initialVariantId) ?? firstVariant;
105
+ selectedOptions = initialVariant?.selectedOptions.reduce((acc, option)=>{
106
+ if (option.name) {
107
+ return {
108
+ ...acc,
109
+ [option.name]: option.value
110
+ };
111
+ }
112
+ return acc;
113
+ }, {});
114
+ featuredImageGlobal = product.medias?.edges.find((v)=>v.node?.id === initialVariant?.mediaId)?.node ?? product.featuredImage;
115
+ }
116
+ return createProductStoreProvider({
117
+ product,
118
+ quantity,
119
+ selectedOptions,
120
+ uiqueId,
121
+ featuredImageGlobal
122
+ });
123
+ }, [
124
+ initialVariantId,
125
+ product,
126
+ quantity,
127
+ uiqueId
128
+ ]);
129
+ return /*#__PURE__*/ jsx(ProductContext.Provider, {
130
+ value: store,
131
+ children: /*#__PURE__*/ jsx(Fragment, {
132
+ children: children
133
+ })
134
+ });
135
+ };
136
+ const useProductStore = (selector, equalityFn)=>{
137
+ const store = useContext(ProductContext);
138
+ if (!store) {
139
+ throw new Error('Element of product must be used inside a Product');
140
+ }
141
+ return useStore(store, selector, equalityFn);
121
142
  };
122
143
 
123
144
  export { ProductProvider, useProductStore };
@@ -1,20 +1,28 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
- import { createContext, useContext } from 'react';
2
+ import { useContext, createContext } from 'react';
3
3
  import { useStore, createStore } from 'zustand';
4
4
 
5
- const ProductListContext = createContext(null);
6
- const createProductListProvider = (data) => createStore(() => ({
7
- ...data,
8
- }));
9
- const ProductListProvider = ({ children, collection, products, settings, styles, }) => {
10
- return (jsx(ProductListContext.Provider, { value: createProductListProvider({ products, collection, settings, styles }), children: children }));
11
- };
12
- const useProductListStore = (selector, equalityFn) => {
13
- const store = useContext(ProductListContext);
14
- if (!store) {
15
- throw new Error('useProductListStore must be used within a useProductListStore');
16
- }
17
- return useStore(store, selector, equalityFn);
5
+ const ProductListContext = /*#__PURE__*/ createContext(null);
6
+ const createProductListProvider = (data)=>createStore(()=>({
7
+ ...data
8
+ }));
9
+ const ProductListProvider = ({ children , collection , products , settings , styles })=>{
10
+ return /*#__PURE__*/ jsx(ProductListContext.Provider, {
11
+ value: createProductListProvider({
12
+ products,
13
+ collection,
14
+ settings,
15
+ styles
16
+ }),
17
+ children: children
18
+ });
19
+ };
20
+ const useProductListStore = (selector, equalityFn)=>{
21
+ const store = useContext(ProductListContext);
22
+ if (!store) {
23
+ throw new Error('useProductListStore must be used within a useProductListStore');
24
+ }
25
+ return useStore(store, selector, equalityFn);
18
26
  };
19
27
 
20
28
  export { ProductListContext, ProductListProvider, useProductListStore };
@@ -1,45 +1,49 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import { useStore, createStore } from 'zustand';
3
- import { createContext, useContext } from 'react';
3
+ import { useContext, createContext } from 'react';
4
4
  import { cloneDeep } from '../helpers/clone-deep.js';
5
5
  import { normalizeBuilderData } from '../helpers/normalize-builder-data.js';
6
6
 
7
- const SectionContext = createContext(null);
8
- const createSectionProvider = (data) => createStore((set, get) => ({
9
- data: data ?? {},
10
- getSection: (id) => {
11
- const section = get().data[id];
12
- return section ?? undefined;
13
- },
14
- addSection: (id, data) => {
15
- const item = normalizeBuilderData(data);
16
- set((prev) => ({
17
- data: {
18
- ...prev.data,
19
- [id]: cloneDeep(item),
20
- },
21
- }));
22
- },
23
- removeSection: (id) => {
24
- set((prev) => {
25
- const { [id]: _, ...rest } = prev.data;
26
- return {
27
- data: rest,
28
- };
29
- });
30
- },
31
- }));
32
- const SectionProvider = ({ children, data, ...passProps }) => {
33
- return (jsx(SectionContext.Provider, { ...passProps, value: createSectionProvider(data), children: children }));
34
- };
35
- // export const useSectionStore = useStore;
36
- const useSectionStore = (selector, equalityFn) => {
37
- const store = useContext(SectionContext);
38
- if (!store) {
39
- throw new Error('useSectionStore must be used within a SectionProvider');
40
- }
41
- return useStore(store, selector, equalityFn);
42
- };
43
- const useSection = (id) => useSectionStore((s) => s.getSection(id));
7
+ const SectionContext = /*#__PURE__*/ createContext(null);
8
+ const createSectionProvider = (data)=>createStore((set, get)=>({
9
+ data: data ?? {},
10
+ getSection: (id)=>{
11
+ const section = get().data[id];
12
+ return section ?? undefined;
13
+ },
14
+ addSection: (id, data)=>{
15
+ const item = normalizeBuilderData(data);
16
+ set((prev)=>({
17
+ data: {
18
+ ...prev.data,
19
+ [id]: cloneDeep(item)
20
+ }
21
+ }));
22
+ },
23
+ removeSection: (id)=>{
24
+ set((prev)=>{
25
+ const { [id]: _ , ...rest } = prev.data;
26
+ return {
27
+ data: rest
28
+ };
29
+ });
30
+ }
31
+ }));
32
+ const SectionProvider = ({ children , data , ...passProps })=>{
33
+ return /*#__PURE__*/ jsx(SectionContext.Provider, {
34
+ ...passProps,
35
+ value: createSectionProvider(data),
36
+ children: children
37
+ });
38
+ };
39
+ // export const useSectionStore = useStore;
40
+ const useSectionStore = (selector, equalityFn)=>{
41
+ const store = useContext(SectionContext);
42
+ if (!store) {
43
+ throw new Error('useSectionStore must be used within a SectionProvider');
44
+ }
45
+ return useStore(store, selector, equalityFn);
46
+ };
47
+ const useSection = (id)=>useSectionStore((s)=>s.getSection(id));
44
48
 
45
49
  export { SectionProvider, useSection, useSectionStore };
@@ -1,40 +1,63 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import { SWRConfig } from 'swr';
3
3
  import { useStore, createStore } from 'zustand';
4
- import { createContext, useMemo, useContext } from 'react';
4
+ import { useMemo, useContext, createContext } from 'react';
5
5
  import { AddonProvider } from './AddonContext.js';
6
6
 
7
- const ShopContext = createContext(null);
8
- const createShopStoreProvider = (data) => createStore((set) => ({
9
- mobileOnly: false,
10
- ...data,
11
- changeLocale: (locale) => {
12
- set({ locale });
13
- },
14
- changeCurrency: (currency) => {
15
- set({ currency });
16
- },
17
- changeSwatches: (swatches) => {
18
- set({ swatches });
19
- },
20
- changeStorefrontInfo: ({ url, token }) => {
21
- set({
22
- storefrontUrl: url,
23
- storefrontToken: token,
24
- });
25
- },
26
- }));
27
- const ShopProvider = ({ children, addons, storeOption, queryOption, ...passProps }) => {
28
- const store = useMemo(() => createShopStoreProvider(storeOption), [storeOption]);
29
- return (jsx(AddonProvider, { components: addons, children: jsx(SWRConfig, { value: queryOption, children: jsx(ShopContext.Provider, { ...passProps, value: store, children: children }, JSON.stringify(storeOption)) }) }));
30
- };
31
- // export const useShopStore = useStore;
32
- const useShopStore = (selector, equalityFn) => {
33
- const store = useContext(ShopContext);
34
- if (!store) {
35
- throw new Error('useShopStore must be used within a ShopProvider');
36
- }
37
- return useStore(store, selector, equalityFn);
7
+ const ShopContext = /*#__PURE__*/ createContext(null);
8
+ const createShopStoreProvider = (data)=>createStore((set)=>({
9
+ mobileOnly: false,
10
+ ...data,
11
+ changeLocale: (locale)=>{
12
+ set({
13
+ locale
14
+ });
15
+ },
16
+ changeCurrency: (currency)=>{
17
+ set({
18
+ currency
19
+ });
20
+ },
21
+ changeSwatches: (swatches)=>{
22
+ set({
23
+ swatches
24
+ });
25
+ },
26
+ changeLayoutSettings: (layoutSettings)=>{
27
+ set({
28
+ layoutSettings
29
+ });
30
+ },
31
+ changeStorefrontInfo: ({ url , token })=>{
32
+ set({
33
+ storefrontUrl: url,
34
+ storefrontToken: token
35
+ });
36
+ }
37
+ }));
38
+ const ShopProvider = ({ children , addons , storeOption , queryOption , ...passProps })=>{
39
+ const store = useMemo(()=>createShopStoreProvider(storeOption), [
40
+ storeOption
41
+ ]);
42
+ return /*#__PURE__*/ jsx(AddonProvider, {
43
+ components: addons,
44
+ children: /*#__PURE__*/ jsx(SWRConfig, {
45
+ value: queryOption,
46
+ children: /*#__PURE__*/ jsx(ShopContext.Provider, {
47
+ ...passProps,
48
+ value: store,
49
+ children: children
50
+ }, JSON.stringify(storeOption))
51
+ })
52
+ });
53
+ };
54
+ // export const useShopStore = useStore;
55
+ const useShopStore = (selector, equalityFn)=>{
56
+ const store = useContext(ShopContext);
57
+ if (!store) {
58
+ throw new Error('useShopStore must be used within a ShopProvider');
59
+ }
60
+ return useStore(store, selector, equalityFn);
38
61
  };
39
62
 
40
63
  export { ShopProvider, useShopStore };
@@ -1,4 +1,4 @@
1
- const AnalyticSelect = `
1
+ /* eslint-disable */ const AnalyticSelect = `
2
2
  fragment AnalyticSelect on Analytic {
3
3
  fbPixelID
4
4
  gaTrackingID
@@ -1,4 +1,4 @@
1
- const CollectionDetailSelect = `
1
+ /* eslint-disable */ const CollectionDetailSelect = `
2
2
  fragment CollectionDetailSelect on Collection {
3
3
  id
4
4
  baseID
@@ -1,4 +1,4 @@
1
- const CollectionProductSelect = `
1
+ /* eslint-disable */ const CollectionProductSelect = `
2
2
  fragment CollectionProductSelect on Collection {
3
3
  ...CollectionDetailSelect
4
4
  products(
@@ -1,4 +1,4 @@
1
- const CustomCodeSelect = `
1
+ /* eslint-disable */ const CustomCodeSelect = `
2
2
  fragment CustomCodeSelect on CustomCode {
3
3
  body
4
4
  header
@@ -1,4 +1,4 @@
1
- const DataSeoSelect = `
1
+ /* eslint-disable */ const DataSeoSelect = `
2
2
  fragment DataSEOSelect on DataSEO {
3
3
  id
4
4
  key
@@ -1,4 +1,4 @@
1
- const MediaSelect = `
1
+ /* eslint-disable */ const MediaSelect = `
2
2
  fragment MediaSelect on Media {
3
3
  id
4
4
  contentType
@@ -1,4 +1,4 @@
1
- const ProductLittleSelect = `
1
+ /* eslint-disable */ const ProductLittleSelect = `
2
2
  fragment ProductLittleSelect on Product {
3
3
  id
4
4
  title
@@ -1,4 +1,4 @@
1
- const ProductOptionValueSelect = `
1
+ /* eslint-disable */ const ProductOptionValueSelect = `
2
2
  fragment ProductOptionValueSelect on ProductOptionValue {
3
3
  id
4
4
  label
@@ -1,4 +1,4 @@
1
- const ProductOptionSelect = `
1
+ /* eslint-disable */ const ProductOptionSelect = `
2
2
  fragment ProductOptionSelect on ProductOption {
3
3
  id
4
4
  name