@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
@@ -5,75 +5,98 @@ import 'swr';
5
5
  import { getSelectedVariant } from '../helpers/product.js';
6
6
  import '../helpers/convert.js';
7
7
 
8
- const useUniqProductID = () => {
9
- return useProductStore((s) => s.uiqueId);
10
- };
11
- const useProduct = () => {
12
- return useProductStore((s) => s.product);
13
- };
14
- const useFeaturedImageGlobal = () => {
15
- return useProductStore((s) => s.featuredImageGlobal);
16
- };
17
- const useProductProperties = () => {
18
- return useProductStore((s) => s.properties);
19
- };
20
- const useQuantity = () => {
21
- const quantity = useProductStore((s) => s.quantity);
22
- const decrement = useProductStore((s) => s.decrementQuantity);
23
- const increment = useProductStore((s) => s.incrementQuantity);
24
- const updateQuantity = useProductStore((s) => s.setQuantity);
25
- const reset = useCallback(() => {
26
- updateQuantity(1);
27
- }, [updateQuantity]);
28
- return useMemo(() => ({ quantity, increment, decrement, reset, setQuantity: updateQuantity }), [decrement, increment, quantity, reset, updateQuantity]);
29
- };
30
- const useSelectedOption = () => {
31
- const setSelectedOption = useProductStore((s) => s.setSelectedOption);
32
- const selectedOptions = useProductStore((s) => s.selectedOptions);
33
- const forceSelectedOption = useProductStore((s) => s.forceSelectedOption);
34
- const updateOption = useCallback((optionId, optionValue) => {
35
- setSelectedOption(optionId, optionValue);
36
- }, [setSelectedOption]);
37
- return useMemo(() => ({
38
- selectedOptions,
39
- setSelectedOption: updateOption,
40
- forceSelectedOption,
41
- }), [selectedOptions, updateOption, forceSelectedOption]);
42
- };
43
- const useVariants = () => {
44
- const variants = useProductStore((s) => s.product?.variants);
45
- return flattenConnection(variants);
46
- };
47
- const useVariant = (id) => {
48
- const variants = useVariants();
49
- return useMemo(() => variants?.find((v) => v?.id === id), [id, variants]);
50
- };
51
- const useCurrentVariant = () => {
52
- const { selectedOptions } = useSelectedOption();
53
- const variants = useVariants();
54
- return useMemo(() => getSelectedVariant(variants, selectedOptions), [selectedOptions, variants]);
55
- };
56
- function checkInStock(variant) {
57
- if (!variant)
58
- return false;
59
- return ((variant?.inventoryQuantity && variant.inventoryQuantity > 0) ||
60
- !variant?.manageInventory ||
61
- variant.inventoryPolicy === 'continue');
62
- }
63
- const useCurrentVariantInStock = () => {
64
- const currentVariant = useCurrentVariant();
65
- const isInStock = checkInStock(currentVariant);
66
- return isInStock;
67
- };
68
- const useVariantOutStock = (optionId, optionValue) => {
69
- const { selectedOptions } = useSelectedOption();
70
- const variants = useVariants();
71
- const matchedVariant = getSelectedVariant(variants, {
72
- ...selectedOptions,
73
- [optionId]: optionValue,
74
- });
75
- const isInStock = checkInStock(matchedVariant);
76
- return !isInStock;
8
+ const useUniqProductID = ()=>{
9
+ return useProductStore((s)=>s.uiqueId);
10
+ };
11
+ const useProduct = ()=>{
12
+ return useProductStore((s)=>s.product);
13
+ };
14
+ const useFeaturedImageGlobal = ()=>{
15
+ return useProductStore((s)=>s.featuredImageGlobal);
16
+ };
17
+ const useProductProperties = ()=>{
18
+ return useProductStore((s)=>s.properties);
19
+ };
20
+ const useQuantity = ()=>{
21
+ const quantity = useProductStore((s)=>s.quantity);
22
+ const decrement = useProductStore((s)=>s.decrementQuantity);
23
+ const increment = useProductStore((s)=>s.incrementQuantity);
24
+ const updateQuantity = useProductStore((s)=>s.setQuantity);
25
+ const reset = useCallback(()=>{
26
+ updateQuantity(1);
27
+ }, [
28
+ updateQuantity
29
+ ]);
30
+ return useMemo(()=>({
31
+ quantity,
32
+ increment,
33
+ decrement,
34
+ reset,
35
+ setQuantity: updateQuantity
36
+ }), [
37
+ decrement,
38
+ increment,
39
+ quantity,
40
+ reset,
41
+ updateQuantity
42
+ ]);
43
+ };
44
+ const useSelectedOption = ()=>{
45
+ const setSelectedOption = useProductStore((s)=>s.setSelectedOption);
46
+ const selectedOptions = useProductStore((s)=>s.selectedOptions);
47
+ const forceSelectedOption = useProductStore((s)=>s.forceSelectedOption);
48
+ const updateOption = useCallback((optionId, optionValue)=>{
49
+ setSelectedOption(optionId, optionValue);
50
+ }, [
51
+ setSelectedOption
52
+ ]);
53
+ return useMemo(()=>({
54
+ selectedOptions,
55
+ setSelectedOption: updateOption,
56
+ forceSelectedOption
57
+ }), [
58
+ selectedOptions,
59
+ updateOption,
60
+ forceSelectedOption
61
+ ]);
62
+ };
63
+ const useVariants = ()=>{
64
+ const variants = useProductStore((s)=>s.product?.variants);
65
+ return flattenConnection(variants);
66
+ };
67
+ const useVariant = (id)=>{
68
+ const variants = useVariants();
69
+ return useMemo(()=>variants?.find((v)=>v?.id === id), [
70
+ id,
71
+ variants
72
+ ]);
73
+ };
74
+ const useCurrentVariant = ()=>{
75
+ const { selectedOptions } = useSelectedOption();
76
+ const variants = useVariants();
77
+ return useMemo(()=>getSelectedVariant(variants, selectedOptions), [
78
+ selectedOptions,
79
+ variants
80
+ ]);
81
+ };
82
+ function checkInStock(variant) {
83
+ if (!variant) return false;
84
+ return variant?.inventoryQuantity && variant.inventoryQuantity > 0 || !variant?.manageInventory || variant.inventoryPolicy === 'continue';
85
+ }
86
+ const useCurrentVariantInStock = ()=>{
87
+ const currentVariant = useCurrentVariant();
88
+ const isInStock = checkInStock(currentVariant);
89
+ return isInStock;
90
+ };
91
+ const useVariantOutStock = (optionId, optionValue)=>{
92
+ const { selectedOptions } = useSelectedOption();
93
+ const variants = useVariants();
94
+ const matchedVariant = getSelectedVariant(variants, {
95
+ ...selectedOptions,
96
+ [optionId]: optionValue
97
+ });
98
+ const isInStock = checkInStock(matchedVariant);
99
+ return !isInStock;
77
100
  };
78
101
 
79
102
  export { checkInStock, useCurrentVariant, useCurrentVariantInStock, useFeaturedImageGlobal, useProduct, useProductProperties, useQuantity, useSelectedOption, useUniqProductID, useVariant, useVariantOutStock, useVariants };
@@ -1,16 +1,16 @@
1
1
  import { useProductListStore } from '../contexts/ProductListContext.js';
2
2
 
3
- const useProductList = () => {
4
- return useProductListStore((s) => s.collection);
5
- };
6
- const useProductListProducts = () => {
7
- return useProductListStore((s) => s.products);
8
- };
9
- const useProductListSettings = () => {
10
- return useProductListStore((s) => s.settings);
11
- };
12
- const useProductListStyles = () => {
13
- return useProductListStore((s) => s.styles);
3
+ const useProductList = ()=>{
4
+ return useProductListStore((s)=>s.collection);
5
+ };
6
+ const useProductListProducts = ()=>{
7
+ return useProductListStore((s)=>s.products);
8
+ };
9
+ const useProductListSettings = ()=>{
10
+ return useProductListStore((s)=>s.settings);
11
+ };
12
+ const useProductListStyles = ()=>{
13
+ return useProductListStore((s)=>s.styles);
14
14
  };
15
15
 
16
16
  export { useProductList, useProductListProducts, useProductListSettings, useProductListStyles };
@@ -1,20 +1,23 @@
1
- const cache = new Map();
2
- const useSuspenseFetch = (key, promise) => {
3
- const value = cache.get(key) || { status: 'new', data: null };
4
- if (value.status === 'resolved') {
5
- return { data: value.data };
6
- }
7
- promise()
8
- .then((data) => {
9
- value.status = 'resolved';
10
- value.data = data;
11
- cache.set(key, value);
12
- })
13
- .catch(() => {
14
- value.status = 'error';
15
- value.data = null;
16
- });
17
- throw promise();
1
+ const cache = new Map();
2
+ const useSuspenseFetch = (key, promise)=>{
3
+ const value = cache.get(key) || {
4
+ status: 'new',
5
+ data: null
6
+ };
7
+ if (value.status === 'resolved') {
8
+ return {
9
+ data: value.data
10
+ };
11
+ }
12
+ promise().then((data)=>{
13
+ value.status = 'resolved';
14
+ value.data = data;
15
+ cache.set(key, value);
16
+ }).catch(()=>{
17
+ value.status = 'error';
18
+ value.data = null;
19
+ });
20
+ throw promise();
18
21
  };
19
22
 
20
23
  export { useSuspenseFetch as default };
@@ -1,35 +1,37 @@
1
1
  import { useSwatches } from './shop.js';
2
2
 
3
- const initialSwatchOptionValue = {
4
- label: '',
5
- colors: [],
6
- imageUrl: '',
7
- };
8
- const initialGlobalSwatchesData = {
9
- optionTitle: '',
10
- optionType: '',
11
- optionValues: [],
12
- };
13
- const useSwatchesOptions = (options) => {
14
- const { swatches } = useSwatches();
15
- if (!options)
16
- return [];
17
- return options?.map((option) => {
18
- const swatchOption = swatches?.find((sw) => sw?.optionTitle === option?.name) || { ...initialGlobalSwatchesData };
19
- return {
20
- ...option,
21
- optionType: swatchOption ? swatchOption.optionType : '',
22
- values: option.values?.map((val) => {
23
- const swatchValue = (swatchOption &&
24
- swatchOption?.optionValues?.find((swatOp) => swatOp?.label === val?.label)) || { ...initialSwatchOptionValue };
25
- return {
26
- ...val,
27
- colors: swatchValue?.colors || [],
28
- imageUrl: swatchValue?.imageUrl || '',
29
- };
30
- }),
31
- };
32
- });
3
+ const initialSwatchOptionValue = {
4
+ label: '',
5
+ colors: [],
6
+ imageUrl: ''
7
+ };
8
+ const initialGlobalSwatchesData = {
9
+ optionTitle: '',
10
+ optionType: '',
11
+ optionValues: []
12
+ };
13
+ const useSwatchesOptions = (options)=>{
14
+ const { swatches } = useSwatches();
15
+ if (!options) return [];
16
+ return options?.map((option)=>{
17
+ const swatchOption = swatches?.find((sw)=>sw?.optionTitle === option?.name) || {
18
+ ...initialGlobalSwatchesData
19
+ };
20
+ return {
21
+ ...option,
22
+ optionType: swatchOption ? swatchOption.optionType : '',
23
+ values: option.values?.map((val)=>{
24
+ const swatchValue = swatchOption && swatchOption?.optionValues?.find((swatOp)=>swatOp?.label === val?.label) || {
25
+ ...initialSwatchOptionValue
26
+ };
27
+ return {
28
+ ...val,
29
+ colors: swatchValue?.colors || [],
30
+ imageUrl: swatchValue?.imageUrl || ''
31
+ };
32
+ })
33
+ };
34
+ });
33
35
  };
34
36
 
35
37
  export { useSwatchesOptions as default };
@@ -1,4 +1,11 @@
1
- const OptionNormalStyle = ['radio_buttons', 'dropdown'];
2
- const OptionSpecialStyle = ['color', 'image', 'rectangle_list'];
1
+ const OptionNormalStyle = [
2
+ 'radio_buttons',
3
+ 'dropdown'
4
+ ];
5
+ const OptionSpecialStyle = [
6
+ 'color',
7
+ 'image',
8
+ 'rectangle_list'
9
+ ];
3
10
 
4
11
  export { OptionNormalStyle, OptionSpecialStyle };
@@ -158,6 +158,7 @@ type Mapped$3<K, T> = NonNullable<T> extends ObjectDevices<infer U> ? {
158
158
  id: K;
159
159
  label: string;
160
160
  info?: string;
161
+ hiddenWithGemPages?: boolean;
161
162
  hyperlinkInfo?: HyperlinkInfo;
162
163
  hideOnMode?: {
163
164
  responsive?: boolean;
@@ -189,6 +190,7 @@ type Mapped$3<K, T> = NonNullable<T> extends ObjectDevices<infer U> ? {
189
190
  id: K;
190
191
  label: string;
191
192
  info?: string;
193
+ hiddenWithGemPages?: boolean;
192
194
  hyperlinkInfo?: HyperlinkInfo;
193
195
  hideOnMode?: {
194
196
  responsive?: boolean;
@@ -318,6 +320,7 @@ type GroupControlType<T> = {
318
320
  label?: string;
319
321
  info?: string;
320
322
  popup?: boolean;
323
+ hiddenWithGemPages?: boolean;
321
324
  controls?: ControlProp<T>[];
322
325
  hide?: boolean;
323
326
  hideOnMode?: {
@@ -755,7 +758,26 @@ type ComponentSetting<P extends BaseProps> = {
755
758
  };
756
759
  };
757
760
  };
758
- order?: string[];
761
+ ui?: ControlUI[];
762
+ };
763
+ type ControlUI = {
764
+ type: 'group' | 'tab' | 'advanced' | 'control';
765
+ label?: Record<string, string>;
766
+ info?: Record<string, string>;
767
+ condition?: string;
768
+ controls?: ControlUI[];
769
+ setting?: {
770
+ id: string;
771
+ state?: StateType;
772
+ };
773
+ options?: {
774
+ label?: 'medium' | 'large';
775
+ hideOnDevices?: {
776
+ desktop?: boolean;
777
+ tablet?: boolean;
778
+ mobile?: boolean;
779
+ };
780
+ };
759
781
  };
760
782
 
761
783
  type Maybe<T> = T | undefined;
@@ -6877,7 +6899,12 @@ declare const SectionProvider: React.FC<SectionProviderProps>;
6877
6899
  declare const useSectionStore: <U>(selector: (state: ExtractState<StoreApi<SectionContextProps>>) => U, equalityFn?: ((a: U, b: U) => boolean) | undefined) => U;
6878
6900
  declare const useSection: (id: string) => SectionData | undefined;
6879
6901
 
6902
+ type LayoutSettings = {
6903
+ showHeader: boolean;
6904
+ showFooter: boolean;
6905
+ };
6880
6906
  type ShopContextProps = {
6907
+ layoutSettings?: LayoutSettings;
6881
6908
  mode?: RenderMode;
6882
6909
  locale?: string;
6883
6910
  pageType?: PublishedThemePageType;
@@ -6895,6 +6922,7 @@ type ShopContextProps = {
6895
6922
  }) => void;
6896
6923
  changeCurrency: (currency: string) => void;
6897
6924
  changeSwatches: (swatches: GlobalSwatchesData[]) => void;
6925
+ changeLayoutSettings: (layoutSettings: LayoutSettings) => void;
6898
6926
  };
6899
6927
  type ShopProviderProps = {
6900
6928
  children: React.ReactNode;
@@ -7511,4 +7539,4 @@ declare const fetchMedias: (fetcher: FetchFunc, { id, isSample }: FetchParams) =
7511
7539
 
7512
7540
  declare const getProductBySlug: (fetcher: FetchFunc, slug?: string) => Promise<ProductSelectFragment>;
7513
7541
 
7514
- export { AddOn, AddonProvider, AddonProviderProps, AlignItemProp, AlignProp, Background, BaseProps, BasePropsWrap, BlockEntity, Border, BuilderComponentProvider, BuilderComponentProviderProps, BuilderEntity, BuilderEntityNested, BuilderPreviewProvider, BuilderPreviewProviderProps, BuilderProvider, BuilderProviderProps, BuilderState, Builtin, CartLineProvider, CartLineProviderProps, CollectionDetailFilterDocument, CollectionDetailFilterQueryResponse, CollectionDetailFilterQueryVariables, CollectionDocument, CollectionProvider, CollectionProviderProps, CollectionQueryResponse, CollectionQueryVariables, ColorKey, ColorType$1 as ColorType, ColorValueType, Component, ComponentSetting, ContainerProp, ControlProp, CornerRadius, CornerRadiusType, CustomComponentConfig, DeepPartial, ExtractState, FetchFunc, FlexDirectionProp, FontName, GlobalStyleConfig, GlobalStyleResponsiveConfig, GlobalSwatchesData, GraphQLConnection, GroupPropType, HSLAColorType, HSLColorType, HexColorType, InitComponentType, JudgeMeReviewsWidgetType, KlaviyoWidgetType, LooxReviewsWidgetType, NameDevices, NestedKeys, ObjectDeviceGlobalType, ObjectDevices, OptionNormalStyle, OptionSpecialStyle, PageViewUpDocument, PageViewUpMutationResponse, PageViewUpMutationVariables, PreviewPageDocument, PreviewPageQueryResponse, PreviewPageQueryVariables, Primitive, ProductInputAnalytic, ProductListProvider, ProductListProviderProps, ProductProvider, ProductProviderProps, ProductSelectFragment, ProductsDocument, ProductsQueryResponse, ProductsQueryVariables, PublishedThemePageSelectFragment, PublishedThemePagesDocument, PublishedThemePagesQueryResponse, PublishedThemePagesQueryVariables, RGBAColorType, RGBColorType, RenderMemo as Render, RenderIf, Render as RenderLiquid, RenderMode, RenderPreviewMemo as RenderPreview, RequiredCursorEdge, ResponsiveStateProp, RoundedSize, SectionData, SectionEntity, SectionProvider, SectionProviderProps, ShadowProps, ShadowStyle, ShadowStyleApplied, ShadowType, ShopProvider, ShopProviderProps, shop as ShopType, SizeProps, SizeSetting, SizeType, SpacingType, StateProp, StateSelector, StateType, StoreConfig, StorePropertyDocument, StorePropertyQueryResponse, StorePropertyQueryVariables, SwatchesOptionType, SwatchesOptionValue, TransformProp, TypographyProps, TypographySetting, TypographyType, VariantSelectFragment, calculateFirstProduct, cls, composeRadius, composeSize, composeSpacing, fetchMedias, fetchVariants, flattenConnection, fpixel, genTypoClass, genVariable, getCollection, getCustomRadius, getGlobalColorCSSProp, getGlobalColorClass, getGlobalColorResponsiveClass, getGlobalColorResponsiveStyle, getGlobalColorStateClass, getGlobalColorStateResponsiveClass, getGlobalColorStateResponsiveStyle, getGlobalColorStateStyle, getGlobalColorStyle, getProduct, getProductBySlug, getRadiusCSSFromGlobal, getRadiusStyleActiveState, getResponsiveStateValue, getResponsiveValue, getResponsiveValueByScreen, getSelectedVariant, getShortName, getSingleColorVariable, getSpacingVariable, getStyleBackgroundByDevice, getStyleShadow, getStyleShadowState, globalEvent, gtag, handleConvertBorderColor, handleConvertBorderStyle, handleConvertBorderWidth, handleConvertClassColor, isBrowser, isColor, isDefined, isEmptyChildren, isLocalEnv, loadScript, makeAspectRatio, makeHeight, makeStyle, makeStyleResponsive, makeStyleResponsiveState, makeStyleState, makeWidth, normalizeBuilderData, optionLayoutStyle, parseSelectedOption, prefetchQueries, props, styles, template, tiktokpixel, useAddToCart, useAddon, useAddons, useBuilderComponent, useBuilderPreviewStore, useBuilderStore, useCartData, useCartDiscountCodesUpdate, useCartId, useCartLine, useCartLineStore, useCartNoteUpdate, useCartUI, useCheckoutUrl, useCollection, useCollectionQuery, useCollectionStore, useConnectedShopify, useCreateCart, useCurrency, useCurrentDevice, useCurrentVariant, useCurrentVariantInStock, useEditorMode, useFeaturedImageGlobal, useFormatMoney, useIsSampleProduct, useIsomorphicLayoutEffect, useLazyVideo, useLoadScript, useLocale, useMatchMutate, useMobileOnly, useMoney, usePageType, usePluginEnable, usePrevious, useProduct, useProductList, useProductListProducts, useProductListSettings, useProductListStore, useProductListStyles, useProductProperties, useProductQuery, useProductStore, useProductsQuery, useQuantity, useRemoveCartItem, useSection, useSectionStore, useSelectedOption, useShopStore, useStoreFront, useSuspenseFetch, useSwatches, useSwatchesOptions, useUniqProductID, useUpdateCartItem, useVariant, useVariantOutStock, useVariants, validateEmail };
7542
+ export { AddOn, AddonProvider, AddonProviderProps, AlignItemProp, AlignProp, Background, BaseProps, BasePropsWrap, BlockEntity, Border, BuilderComponentProvider, BuilderComponentProviderProps, BuilderEntity, BuilderEntityNested, BuilderPreviewProvider, BuilderPreviewProviderProps, BuilderProvider, BuilderProviderProps, BuilderState, Builtin, CartLineProvider, CartLineProviderProps, CollectionDetailFilterDocument, CollectionDetailFilterQueryResponse, CollectionDetailFilterQueryVariables, CollectionDocument, CollectionProvider, CollectionProviderProps, CollectionQueryResponse, CollectionQueryVariables, ColorKey, ColorType$1 as ColorType, ColorValueType, Component, ComponentSetting, ContainerProp, ControlProp, ControlUI, CornerRadius, CornerRadiusType, CustomComponentConfig, DeepPartial, ExtractState, FetchFunc, FlexDirectionProp, FontName, GlobalStyleConfig, GlobalStyleResponsiveConfig, GlobalSwatchesData, GraphQLConnection, GroupPropType, HSLAColorType, HSLColorType, HexColorType, InitComponentType, JudgeMeReviewsWidgetType, KlaviyoWidgetType, LooxReviewsWidgetType, NameDevices, NestedKeys, ObjectDeviceGlobalType, ObjectDevices, OptionNormalStyle, OptionSpecialStyle, PageViewUpDocument, PageViewUpMutationResponse, PageViewUpMutationVariables, PreviewPageDocument, PreviewPageQueryResponse, PreviewPageQueryVariables, Primitive, ProductInputAnalytic, ProductListProvider, ProductListProviderProps, ProductProvider, ProductProviderProps, ProductSelectFragment, ProductsDocument, ProductsQueryResponse, ProductsQueryVariables, PublishedThemePageSelectFragment, PublishedThemePagesDocument, PublishedThemePagesQueryResponse, PublishedThemePagesQueryVariables, RGBAColorType, RGBColorType, RenderMemo as Render, RenderIf, Render as RenderLiquid, RenderMode, RenderPreviewMemo as RenderPreview, RequiredCursorEdge, ResponsiveStateProp, RoundedSize, SectionData, SectionEntity, SectionProvider, SectionProviderProps, ShadowProps, ShadowStyle, ShadowStyleApplied, ShadowType, ShopProvider, ShopProviderProps, shop as ShopType, SizeProps, SizeSetting, SizeType, SpacingType, StateProp, StateSelector, StateType, StoreConfig, StorePropertyDocument, StorePropertyQueryResponse, StorePropertyQueryVariables, SwatchesOptionType, SwatchesOptionValue, TransformProp, TypographyProps, TypographySetting, TypographyType, VariantSelectFragment, calculateFirstProduct, cls, composeRadius, composeSize, composeSpacing, fetchMedias, fetchVariants, flattenConnection, fpixel, genTypoClass, genVariable, getCollection, getCustomRadius, getGlobalColorCSSProp, getGlobalColorClass, getGlobalColorResponsiveClass, getGlobalColorResponsiveStyle, getGlobalColorStateClass, getGlobalColorStateResponsiveClass, getGlobalColorStateResponsiveStyle, getGlobalColorStateStyle, getGlobalColorStyle, getProduct, getProductBySlug, getRadiusCSSFromGlobal, getRadiusStyleActiveState, getResponsiveStateValue, getResponsiveValue, getResponsiveValueByScreen, getSelectedVariant, getShortName, getSingleColorVariable, getSpacingVariable, getStyleBackgroundByDevice, getStyleShadow, getStyleShadowState, globalEvent, gtag, handleConvertBorderColor, handleConvertBorderStyle, handleConvertBorderWidth, handleConvertClassColor, isBrowser, isColor, isDefined, isEmptyChildren, isLocalEnv, loadScript, makeAspectRatio, makeHeight, makeStyle, makeStyleResponsive, makeStyleResponsiveState, makeStyleState, makeWidth, normalizeBuilderData, optionLayoutStyle, parseSelectedOption, prefetchQueries, props, styles, template, tiktokpixel, useAddToCart, useAddon, useAddons, useBuilderComponent, useBuilderPreviewStore, useBuilderStore, useCartData, useCartDiscountCodesUpdate, useCartId, useCartLine, useCartLineStore, useCartNoteUpdate, useCartUI, useCheckoutUrl, useCollection, useCollectionQuery, useCollectionStore, useConnectedShopify, useCreateCart, useCurrency, useCurrentDevice, useCurrentVariant, useCurrentVariantInStock, useEditorMode, useFeaturedImageGlobal, useFormatMoney, useIsSampleProduct, useIsomorphicLayoutEffect, useLazyVideo, useLoadScript, useLocale, useMatchMutate, useMobileOnly, useMoney, usePageType, usePluginEnable, usePrevious, useProduct, useProductList, useProductListProducts, useProductListSettings, useProductListStore, useProductListStyles, useProductProperties, useProductQuery, useProductStore, useProductsQuery, useQuantity, useRemoveCartItem, useSection, useSectionStore, useSelectedOption, useShopStore, useStoreFront, useSuspenseFetch, useSwatches, useSwatchesOptions, useUniqProductID, useUpdateCartItem, useVariant, useVariantOutStock, useVariants, validateEmail };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gem-sdk/core",
3
- "version": "1.5.17",
3
+ "version": "1.5.23",
4
4
  "license": "MIT",
5
5
  "sideEffects": false,
6
6
  "main": "dist/cjs/index.js",