@gem-sdk/components 12.0.3 → 13.0.0

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 (86) hide show
  1. package/dist/cjs/carousel-v3/hooks/useCarousel.js +1 -1
  2. package/dist/cjs/helpers.js +1 -1
  3. package/dist/cjs/hero-banner/common/classes.js +1 -1
  4. package/dist/cjs/hero-banner/common/const.js +1 -1
  5. package/dist/cjs/hero-banner/common/helpers.js +1 -1
  6. package/dist/cjs/hero-banner/common/styles.js +1 -1
  7. package/dist/cjs/hero-banner/components/HeroBanner.js +1 -1
  8. package/dist/cjs/hero-banner/components/HeroBanner.liquid.js +9 -9
  9. package/dist/cjs/hero-banner/components/HeroBannerItem.js +1 -1
  10. package/dist/cjs/hero-banner/components/HeroBannerItem.liquid.js +10 -10
  11. package/dist/cjs/hero-banner/hooks/useHeroBanner.js +1 -1
  12. package/dist/cjs/hero-banner/hooks/useHeroBannerItem.js +1 -0
  13. package/dist/cjs/hero-banner/settings/configs/presets/banner-video-pre-sales-page.js +1 -1
  14. package/dist/cjs/hero-banner/settings/configs/presets/banner-video.js +1 -1
  15. package/dist/cjs/hero-banner/settings/configs/settings.js +1 -1
  16. package/dist/cjs/hero-banner/settings/configs/ui-v2.js +1 -1
  17. package/dist/cjs/index.js +1 -1
  18. package/dist/cjs/marquee/components/Marquee.liquid.js +6 -6
  19. package/dist/cjs/post-purchase/product/components/ProductPrice.js +1 -1
  20. package/dist/cjs/post-purchase/product/constants/ProductOfferPlaceholder.js +1 -1
  21. package/dist/cjs/post-purchase/product/hooks/useGetMoneyLines.js +1 -1
  22. package/dist/cjs/post-purchase/product/settings/presets-config/product-presets/product-offer-1-col.js +1 -1
  23. package/dist/cjs/post-purchase/product/settings/presets-config/product-presets/product-offer-2-col.js +1 -1
  24. package/dist/cjs/post-purchase/product/settings/presets-config/product-presets/product-offer-default.js +1 -1
  25. package/dist/cjs/post-purchase/product/settings/product-discount-tag/configs/setting-v2.js +1 -1
  26. package/dist/cjs/post-purchase/product/settings/product-price/configs/settings-v2.js +1 -1
  27. package/dist/cjs/post-purchase/product/settings/product-price/configs/ui-v2.js +1 -1
  28. package/dist/cjs/product/components/product-badge/ProductBadge.js +1 -1
  29. package/dist/cjs/product/components/product-badge/ProductBadge.liquid.js +12 -12
  30. package/dist/cjs/product/components/product-badge/common/classes.js +1 -1
  31. package/dist/cjs/product/components/product-badge/common/styles.js +1 -1
  32. package/dist/cjs/product/components/product-badge/utils/common.js +1 -1
  33. package/dist/cjs/product/components/product-badge/utils/renderBadgeLiquid.js +3 -4
  34. package/dist/cjs/product/components/product-button/hooks/useAddToCart.js +1 -1
  35. package/dist/cjs/product/components/product-discount-tag/hooks/useGpDiscountTag.js +1 -1
  36. package/dist/cjs/product/components/product-list-v3/ProductList.js +1 -1
  37. package/dist/cjs/product/components/product-price/hooks/useGpPrice.js +1 -1
  38. package/dist/cjs/product/helpers/product-bundle.js +1 -1
  39. package/dist/cjs/video/common/classes.js +1 -1
  40. package/dist/cjs/video/components/LiteYouTubeEmbed.js +1 -1
  41. package/dist/cjs/video/components/LiteYouTubeEmbed.liquid.js +7 -5
  42. package/dist/cjs/video/settings/configs/settings.js +1 -1
  43. package/dist/esm/carousel-v3/hooks/useCarousel.js +1 -1
  44. package/dist/esm/helpers.js +1 -1
  45. package/dist/esm/hero-banner/common/classes.js +1 -1
  46. package/dist/esm/hero-banner/common/const.js +1 -1
  47. package/dist/esm/hero-banner/common/helpers.js +1 -1
  48. package/dist/esm/hero-banner/common/styles.js +1 -1
  49. package/dist/esm/hero-banner/components/HeroBanner.js +1 -1
  50. package/dist/esm/hero-banner/components/HeroBanner.liquid.js +12 -12
  51. package/dist/esm/hero-banner/components/HeroBannerItem.js +1 -1
  52. package/dist/esm/hero-banner/components/HeroBannerItem.liquid.js +10 -10
  53. package/dist/esm/hero-banner/hooks/useHeroBanner.js +1 -1
  54. package/dist/esm/hero-banner/hooks/useHeroBannerItem.js +1 -0
  55. package/dist/esm/hero-banner/settings/configs/presets/banner-video-pre-sales-page.js +1 -1
  56. package/dist/esm/hero-banner/settings/configs/presets/banner-video.js +1 -1
  57. package/dist/esm/hero-banner/settings/configs/settings.js +1 -1
  58. package/dist/esm/hero-banner/settings/configs/ui-v2.js +1 -1
  59. package/dist/esm/index.js +1 -1
  60. package/dist/esm/marquee/components/Marquee.liquid.js +18 -18
  61. package/dist/esm/post-purchase/product/components/ProductPrice.js +1 -1
  62. package/dist/esm/post-purchase/product/constants/ProductOfferPlaceholder.js +1 -1
  63. package/dist/esm/post-purchase/product/hooks/useGetMoneyLines.js +1 -1
  64. package/dist/esm/post-purchase/product/settings/presets-config/product-presets/product-offer-1-col.js +1 -1
  65. package/dist/esm/post-purchase/product/settings/presets-config/product-presets/product-offer-2-col.js +1 -1
  66. package/dist/esm/post-purchase/product/settings/presets-config/product-presets/product-offer-default.js +1 -1
  67. package/dist/esm/post-purchase/product/settings/product-discount-tag/configs/setting-v2.js +1 -1
  68. package/dist/esm/post-purchase/product/settings/product-price/configs/settings-v2.js +1 -1
  69. package/dist/esm/post-purchase/product/settings/product-price/configs/ui-v2.js +1 -1
  70. package/dist/esm/product/components/product-badge/ProductBadge.js +1 -1
  71. package/dist/esm/product/components/product-badge/ProductBadge.liquid.js +23 -23
  72. package/dist/esm/product/components/product-badge/common/classes.js +1 -1
  73. package/dist/esm/product/components/product-badge/common/styles.js +1 -1
  74. package/dist/esm/product/components/product-badge/utils/common.js +1 -1
  75. package/dist/esm/product/components/product-badge/utils/renderBadgeLiquid.js +3 -4
  76. package/dist/esm/product/components/product-button/hooks/useAddToCart.js +1 -1
  77. package/dist/esm/product/components/product-discount-tag/hooks/useGpDiscountTag.js +1 -1
  78. package/dist/esm/product/components/product-list-v3/ProductList.js +1 -1
  79. package/dist/esm/product/components/product-price/hooks/useGpPrice.js +1 -1
  80. package/dist/esm/product/helpers/product-bundle.js +1 -1
  81. package/dist/esm/video/common/classes.js +1 -1
  82. package/dist/esm/video/components/LiteYouTubeEmbed.js +1 -1
  83. package/dist/esm/video/components/LiteYouTubeEmbed.liquid.js +17 -15
  84. package/dist/esm/video/settings/configs/settings.js +1 -1
  85. package/dist/types/index.d.ts +17 -14
  86. package/package.json +5 -5
@@ -1 +1 @@
1
- import{makeGlobalSize as e,composeTypographyStyle as t,getStyleShadow as o}from"@gem-sdk/core";import{convertToStyle as r,getSize as i,getWrapperStyle as a,getShapeWrapperPadding as n,checkDiscountContentProductBadge as s}from"../utils/common.js";import{getShapePosition as p}from"../utils/getShapePosition.js";import{composeTextStyleByPosition as g,composeShapeStyleByPosition as l}from"../utils/getRotateShape.js";import{getStyleAdvanced as d}from"../utils/getStyleAdvanced.js";import{getWhiteSpaceStyle as u}from"../utils/getWhiteSpace.js";import{getStyleBackground as S,generateShadowCSS as y,getStyleBorder as m,getStyleCornerRadius as h}from"../utils/stylesV2.js";import{getShape as x}from"../utils/shape.js";import{checkShowBadge as c}from"../utils/renderBadgeILP.js";let getSizeStyles=e=>{let{setting:t,styles:o}=e,r=x(t?.shape),a=t?.contentType==="text",n=a?o?.textSizeV2:o?.imageSizeV2;return a?i(r,n):i(void 0,n)},getContainerStyle=(e,t=!1)=>{let{setting:o,styles:r,style:i,navigationPosition:n,imageData:s,dotData:g}=e,l=o?.positionWithImage==="outside",u=a(t),S=p({positionType:r?.position,isLiquid:!1,navigationPosition:n,dataImage:{...s,...g}}),y=getSizeStyles(e),m=d(l?{}:{...S,...y},i);return{...!l&&{"--pos":"absolute"},...u,...m}},getTextContentStyle=({styles:i,setting:a})=>{let n=e(i?.textSizeV2).padding,s=x(a?.shape),p=a?.positionWithImage==="outside";return{...u(i?.textSizeV2),...r(s?.textStyle),...g(s,i?.position,p),...t(i?.typo),...o({value:i?.typo?.custom?.textShadow,styleAppliedFor:"text-shadow",isEnableShadow:i?.typo?.custom?.hasShadowText}),...S(!!s?.backgroundColorInText,i?.badgeColorV2),...n}},getBorderStyles=({styles:e,setting:t})=>{let o=x(t?.shape),r=t?.contentType==="text";return o?.supportBorder?r?m(e?.textBadgeBorder):m(e?.imageBadgeBorder):{}},getCornerStyles=({styles:e,setting:t})=>{let o=x(t?.shape),r=t?.contentType==="text";return o?.supportCorner?r?h(e?.textBadgeCorner,o?.shapeRadius):h(e?.imageBadgeCorner,o?.shapeRadius):{}},getTextBadgeWrapperStyles=({styles:e,setting:t})=>{let o=x(t?.shape),r=getBorderStyles({setting:t,styles:e}),i=t?.positionWithImage==="outside",a=getCornerStyles({setting:t,styles:e}),s=n(o?.ratio);return{...r,...a,...l(o,e?.position,i),...S(!o?.backgroundColorInText,e?.badgeColorV2),...s,height:o?.ratio===1?"0px":"100%"}},getImageContainerStyles=({styles:t,setting:o})=>{let r=getBorderStyles({setting:o,styles:t}),i=getCornerStyles({setting:o,styles:t}),a=e(t?.imageSizeV2).padding;return{...r,...i,...a}},getOpacityProductBadge=(e,t,o,r)=>{let{"bundle-item":i,setting:a}=e;if(i)return 1;let n=s(a?.displayContent)&&a?.contentType==="text";if(!n)return 1;let p=t?.price??0,g=t?.salePrice??0,l=g-p>0,d=c(a?.displayTrigger,o,t);return l&&d?1:"edit"===r?.2:0},getSubWrapperStyle=(e,t,o,r)=>{let{setting:i}=e,a=i?.positionWithImage==="outside",n=getSizeStyles(e),s=r&&o?getOpacityProductBadge(e,o,t,r):1;return{...a?{...n,"--mb":0}:{},opacity:s}},getContentStyleInternal=e=>{let{styles:t,setting:o,builderProps:r}=e,i=o?.contentType==="text";return y(`[id="${r?.uid}"] .product-badge-item`,i?t?.textBadgeShadow:t?.imageBadgeShadow)};export{getContainerStyle,getContentStyleInternal,getImageContainerStyles,getSubWrapperStyle,getTextBadgeWrapperStyles,getTextContentStyle};
1
+ import{makeGlobalSize as e,composeTypographyStyle as t,getStyleShadow as o,convertDecimalToNumber as r}from"@gem-sdk/core";import{convertToStyle as i,getSize as a,getWrapperStyle as n,getShapeWrapperPadding as s}from"../utils/common.js";import{getShapePosition as p}from"../utils/getShapePosition.js";import{composeTextStyleByPosition as g,composeShapeStyleByPosition as l}from"../utils/getRotateShape.js";import{getStyleAdvanced as d}from"../utils/getStyleAdvanced.js";import{getWhiteSpaceStyle as u}from"../utils/getWhiteSpace.js";import{getStyleBackground as S,generateShadowCSS as m,getStyleBorder as y,getStyleCornerRadius as h}from"../utils/stylesV2.js";import{getShape as x}from"../utils/shape.js";import{checkShowBadge as c}from"../utils/renderBadgeILP.js";let getSizeStyles=e=>{let{setting:t,styles:o}=e,r=x(t?.shape),i=t?.contentType==="text",n=i?o?.textSizeV2:o?.imageSizeV2;return i?a(r,n):a(void 0,n)},getContainerStyle=(e,t=!1)=>{let{setting:o,styles:r,style:i,navigationPosition:a,imageData:s,dotData:g}=e,l=o?.positionWithImage==="outside",u=n(t),S=p({positionType:r?.position,isLiquid:!1,navigationPosition:a,dataImage:{...s,...g}}),m=getSizeStyles(e),y=d(l?{}:{...S,...m},i);return{...!l&&{"--pos":"absolute"},...u,...y}},getTextContentStyle=({styles:r,setting:a})=>{let n=e(r?.textSizeV2).padding,s=x(a?.shape),p=a?.positionWithImage==="outside";return{...u(r?.textSizeV2),...i(s?.textStyle),...g(s,r?.position,p),...t(r?.typo),...o({value:r?.typo?.custom?.textShadow,styleAppliedFor:"text-shadow",isEnableShadow:r?.typo?.custom?.hasShadowText}),...S(!!s?.backgroundColorInText,r?.badgeColorV2),...n}},getBorderStyles=({styles:e,setting:t})=>{let o=x(t?.shape),r=t?.contentType==="text";return o?.supportBorder?r?y(e?.textBadgeBorder):y(e?.imageBadgeBorder):{}},getCornerStyles=({styles:e,setting:t})=>{let o=x(t?.shape),r=t?.contentType==="text";return o?.supportCorner?r?h(e?.textBadgeCorner,o?.shapeRadius):h(e?.imageBadgeCorner,o?.shapeRadius):{}},getTextBadgeWrapperStyles=({styles:e,setting:t})=>{let o=x(t?.shape),r=getBorderStyles({setting:t,styles:e}),i=t?.positionWithImage==="outside",a=getCornerStyles({setting:t,styles:e}),n=s(o?.ratio);return{...r,...a,...l(o,e?.position,i),...S(!o?.backgroundColorInText,e?.badgeColorV2),...n,height:o?.ratio===1?"0px":"100%"}},getImageContainerStyles=({styles:t,setting:o})=>{let r=getBorderStyles({setting:o,styles:t}),i=getCornerStyles({setting:o,styles:t}),a=e(t?.imageSizeV2).padding;return{...r,...i,...a}},getOpacityProductBadge=({props:e,currentVariant:t,product:o,isEditMode:i})=>{let{"bundle-item":a,setting:n}=e;if(a)return 1;let s=n?.contentType==="text",p=s&&!n?.displayContent?.trim();if(p)return i?.2:0;let g=r(t?.price)??0,l=r(t?.salePrice)??0,d=l-g>0,u=c(n?.displayTrigger,o,t);return d&&u?1:i?.2:0},getSubWrapperStyle=({props:e,product:t,currentVariant:o,isEditMode:r})=>{let{setting:i}=e,a=i?.positionWithImage==="outside",n=getSizeStyles(e),s=r&&o?getOpacityProductBadge({props:e,currentVariant:o,product:t,isEditMode:r}):1;return{...a?{...n,"--mb":0}:{},opacity:s}},getContentStyleInternal=e=>{let{styles:t,setting:o,builderProps:r}=e,i=o?.contentType==="text";return m(`[id="${r?.uid}"] .product-badge-item`,i?t?.textBadgeShadow:t?.imageBadgeShadow)};export{getContainerStyle,getContentStyleInternal,getImageContainerStyles,getSubWrapperStyle,getTextBadgeWrapperStyles,getTextContentStyle};
@@ -1 +1 @@
1
- import{cls as e,formatMoney as t,makeStyleResponsive as r,getResponsiveValueByScreen as i}from"@gem-sdk/core";import{applyBundleDiscountAmount as n}from"../../../helpers/product-bundle.js";import{DiscountType as o}from"../../constants/product-bundle.js";let removeTrailingZeros=e=>e.replace(/\.00$/,""),getPriceDiffByPercent=(e,t)=>{if(!t)return"0";let r=1e3*t-1e3*e;return Math.round(100*r/(1e3*t))},getPriceDiffByValue=(e,r,i)=>removeTrailingZeros(t(r?(r-e).toFixed(2):"0",i)),getMinPrice=(e,r)=>{let i=e?.edges?.length&&e.edges.length>0?1/0:0;return e?.edges.forEach(({node:e})=>{if(!e)return;let t=e?.price;void 0!==t&&t<i&&(i=t)}),removeTrailingZeros(t(i.toString(),r))},checkNoDiscountState=(e,t)=>{let{discountPercentAmount:r}=n({currentVariant:e?.currentVariant,bundleItem:e?.bundleItem,options:{moneyFormat:t,useProductCompareAtPrice:e?.useProductCompareAtPrice}});return!(e?.bundleItem?.discountType===o.NoDiscount&&e?.useProductCompareAtPrice||Number(e?.bundleItem?.discountValue)&&r)&&!e?.currentVariant?.salePrice},getBadgeContent=(e,r,i)=>{if(!e.detail||!r?.trim()?.length)return r;let{detail:u,currentVariant:c}=e,{discountPercentAmount:l,discountAmount:a}=n({currentVariant:c,bundleItem:e?.bundleItem,options:{moneyFormat:i,useProductCompareAtPrice:e?.useProductCompareAtPrice}}),d=()=>e?.bundleItem?.discountType!==o.NoDiscount||e?.useProductCompareAtPrice?Number(e?.bundleItem?.discountValue)>0?`${l}%`:`${getPriceDiffByPercent(c?.price||0,c?.salePrice||0)||0}%`:"0%",s=()=>e?.bundleItem?.discountType!==o.NoDiscount||e?.useProductCompareAtPrice?Number(e?.bundleItem?.discountValue)>0?a:getPriceDiffByValue(c?.price||0,c?.salePrice||0,i):t("0",i),p=new Map([["{percent_discount}",d],["{amount_discount}",s],["{min_price}",()=>getMinPrice(u.variants,i)||0],["{inventory_quantity}",()=>c?.inventoryQuantity||0]]);return[...p.entries()].reduce((e,[t,r])=>e.replaceAll(t,r()),r)},checkDiscountContentProductBadge=e=>{if(!e)return!1;let t=/\{percent_discount\}|\{amount_discount\}/;return t.test(e)},getShapePlacementClass=(e,t,r="desktop")=>e?t?.[`--pos${deviceWithSurfix(r)}`]?"w-full h-full":"!gp-absolute":t?.[`--d${deviceWithSurfix(r)}`]?"":"!gp-inline-block gp-w-fit",getAlignShape=(t,r)=>r?"":e("gp-flex",{"gp-justify-start":t?.desktop==="left","gp-justify-center":t?.desktop==="center","gp-justify-end":t?.desktop==="right","tablet:gp-justify-start":t?.tablet==="left","tablet:gp-justify-center":t?.tablet==="center","tablet:gp-justify-end":t?.tablet==="right","mobile:gp-justify-start":t?.mobile==="left","mobile:gp-justify-center":t?.mobile==="center","mobile:gp-justify-end":t?.mobile==="right"}),convertToStyle=e=>Object.entries(e||{}).reduce((e,[t,r])=>{let i=new Map([["clipPath","clip-path"],["writingMode","writing-mode"],["borderRadius","border-radius"],["transform","transform"],["alignItems","align-items"],["maxWidth","max-width"]]),n=i.get(t)||t;return{...e,[n]:r}},{}),getWrapperStyle=e=>({[e?"z-index":"zIndex"]:2}),getWidthByShapeSize=(e,t)=>{let r={},n=["desktop","mobile","tablet"];return n.forEach(n=>{let o=i(e,n,null),u=o?.width||t?.wrapperWidth;u&&(r={...r,[n]:u})}),r},getHeightByShapeSize=(e,t)=>{let r={},n=["desktop","mobile","tablet"];return n.forEach(n=>{let o=i(e,n,null);r={...r,[n]:o?.height||t?.wrapperHeight}}),r},getSize=(e,t)=>{let i=r("w",getWidthByShapeSize(t,e)),n=r("h",getHeightByShapeSize(t,e));return{...i,...n}},getShapeWrapperPadding=e=>{let t={};if(1!==e)return t;let r=["desktop","mobile","tablet"];return r.forEach(e=>{t={...t,height:0,[`--p${"desktop"!==e?`-${e}`:""}`]:"50% 0"}}),t},deviceWithSurfix=e=>"desktop"===e?"":`-${e}`,getDeviceSpecificStyle=(e,t)=>{for(let r of({desktop:["desktop"],tablet:["tablet","desktop"],mobile:["mobile","tablet","desktop"]})[t])if(e?.[r])return e[r]},getIsNoDiscountState=({props:e,product:t,currentVariant:r,moneyFormat:i,useProductCompareAtPrice:n})=>{let{setting:o,"bundle-item":u}=e,c=checkDiscountContentProductBadge(o?.displayContent);return c&&checkNoDiscountState({detail:t,currentVariant:r,bundleItem:u,useProductCompareAtPrice:n},i)};export{checkDiscountContentProductBadge,checkNoDiscountState,convertToStyle,deviceWithSurfix,getAlignShape,getBadgeContent,getDeviceSpecificStyle,getIsNoDiscountState,getShapePlacementClass,getShapeWrapperPadding,getSize,getWidthByShapeSize,getWrapperStyle};
1
+ import{cls as e,convertDecimalToNumber as t,formatMoney as r,makeStyleResponsive as i,getResponsiveValueByScreen as n}from"@gem-sdk/core";import{applyBundleDiscountAmount as o}from"../../../helpers/product-bundle.js";import{DiscountType as u}from"../../constants/product-bundle.js";let removeTrailingZeros=e=>e.replace(/\.00$/,""),getPriceDiffByPercent=(e,t)=>{if(!t)return"0";let r=1e3*t-1e3*e;return Math.round(100*r/(1e3*t))},getPriceDiffByValue=(e,t,i)=>removeTrailingZeros(r(t?(t-e).toFixed(2):"0",i)),getMinPrice=(e,i)=>{let n=e?.edges?.length&&e.edges.length>0?1/0:0;return e?.edges.forEach(({node:e})=>{if(!e)return;let r=t(e?.price);void 0!==r&&r<n&&(n=r)}),removeTrailingZeros(r(n.toString(),i))},checkNoDiscountState=(e,t)=>{let{discountPercentAmount:r}=o({currentVariant:e?.currentVariant,bundleItem:e?.bundleItem,options:{moneyFormat:t,useProductCompareAtPrice:e?.useProductCompareAtPrice}});return!(e?.bundleItem?.discountType===u.NoDiscount&&e?.useProductCompareAtPrice||Number(e?.bundleItem?.discountValue)&&r)&&!e?.currentVariant?.salePrice},getBadgeContent=(e,i,n)=>{if(!e.detail||!i?.trim()?.length)return i;let{detail:c,currentVariant:l}=e,{discountPercentAmount:a,discountAmount:d}=o({currentVariant:l,bundleItem:e?.bundleItem,options:{moneyFormat:n,useProductCompareAtPrice:e?.useProductCompareAtPrice}}),s=()=>e?.bundleItem?.discountType!==u.NoDiscount||e?.useProductCompareAtPrice?Number(e?.bundleItem?.discountValue)>0?`${a}%`:`${getPriceDiffByPercent(t(l?.price)??0,t(l?.salePrice)??0)||0}%`:"0%",p=()=>e?.bundleItem?.discountType!==u.NoDiscount||e?.useProductCompareAtPrice?Number(e?.bundleItem?.discountValue)>0?d:getPriceDiffByValue(t(l?.price)??0,t(l?.salePrice)??0,n):r("0",n),g=new Map([["{percent_discount}",s],["{amount_discount}",p],["{min_price}",()=>getMinPrice(c.variants,n)||0],["{inventory_quantity}",()=>l?.inventoryQuantity||0]]);return[...g.entries()].reduce((e,[t,r])=>e.replaceAll(t,r()),i)},checkDiscountContentProductBadge=e=>{if(!e)return!1;let t=/\{percent_discount\}|\{amount_discount\}/;return t.test(e)},getShapePlacementClass=(e,t,r="desktop")=>e?t?.[`--pos${deviceWithSurfix(r)}`]?"w-full h-full":"!gp-absolute":t?.[`--d${deviceWithSurfix(r)}`]?"":"!gp-inline-block gp-w-fit",getAlignShape=(t,r)=>r?"":e("gp-flex",{"gp-justify-start":t?.desktop==="left","gp-justify-center":t?.desktop==="center","gp-justify-end":t?.desktop==="right","tablet:gp-justify-start":t?.tablet==="left","tablet:gp-justify-center":t?.tablet==="center","tablet:gp-justify-end":t?.tablet==="right","mobile:gp-justify-start":t?.mobile==="left","mobile:gp-justify-center":t?.mobile==="center","mobile:gp-justify-end":t?.mobile==="right"}),convertToStyle=e=>Object.entries(e||{}).reduce((e,[t,r])=>{let i=new Map([["clipPath","clip-path"],["writingMode","writing-mode"],["borderRadius","border-radius"],["transform","transform"],["alignItems","align-items"],["maxWidth","max-width"]]),n=i.get(t)||t;return{...e,[n]:r}},{}),getWrapperStyle=e=>({[e?"z-index":"zIndex"]:2}),getWidthByShapeSize=(e,t)=>{let r={},i=["desktop","mobile","tablet"];return i.forEach(i=>{let o=n(e,i,null),u=o?.width||t?.wrapperWidth;u&&(r={...r,[i]:u})}),r},getHeightByShapeSize=(e,t)=>{let r={},i=["desktop","mobile","tablet"];return i.forEach(i=>{let o=n(e,i,null);r={...r,[i]:o?.height||t?.wrapperHeight}}),r},getSize=(e,t)=>{let r=i("w",getWidthByShapeSize(t,e)),n=i("h",getHeightByShapeSize(t,e));return{...r,...n}},getShapeWrapperPadding=e=>{let t={};if(1!==e)return t;let r=["desktop","mobile","tablet"];return r.forEach(e=>{t={...t,height:0,[`--p${"desktop"!==e?`-${e}`:""}`]:"50% 0"}}),t},deviceWithSurfix=e=>"desktop"===e?"":`-${e}`,getDeviceSpecificStyle=(e,t)=>{for(let r of({desktop:["desktop"],tablet:["tablet","desktop"],mobile:["mobile","tablet","desktop"]})[t])if(e?.[r])return e[r]},getIsNoDiscountState=({props:e,product:t,currentVariant:r,moneyFormat:i,useProductCompareAtPrice:n})=>{let{setting:o,"bundle-item":u}=e,c=checkDiscountContentProductBadge(o?.displayContent);return c&&checkNoDiscountState({detail:t,currentVariant:r,bundleItem:u,useProductCompareAtPrice:n},i)};export{checkDiscountContentProductBadge,checkNoDiscountState,convertToStyle,deviceWithSurfix,getAlignShape,getBadgeContent,getDeviceSpecificStyle,getIsNoDiscountState,getShapePlacementClass,getShapeWrapperPadding,getSize,getWidthByShapeSize,getWrapperStyle};
@@ -1,4 +1,4 @@
1
- import{CompareType as e}from"../types.js";let getMinValueForInventory=i=>i===e.ABOVE?0:i===e.BELOW?2:1,renderBadgeInFirstTime=(e,i,n)=>`
1
+ import{CompareType as e}from"../types.js";let getMinValueForInventory=i=>i===e.ABOVE?0:i===e.BELOW?2:1,renderBadgeInFirstTime=(e,i)=>`
2
2
  {% assign isShow = true %}
3
3
  {% assign conditionTriggers = "" %}
4
4
  {% assign isInventoryStatus = false %}
@@ -16,9 +16,8 @@ import{CompareType as e}from"../types.js";let getMinValueForInventory=i=>i===e.A
16
16
  {% assign price = variant.price | times: 1.0 %}
17
17
  {% assign salePrice = variant.compare_at_price | times: 1.0 %}
18
18
  {% assign priceSave = salePrice | minus: price %}
19
- {% assign isDiscountContent = ${i} %}
20
- {% assign isTextBadge = ${n} %}
21
- {% if priceSave <= 0 or isDiscountContent == false or isTextBadge == false %}
19
+ {% assign isEmptyBadgeContent = ${!i} %}
20
+ {% if priceSave <= 0 or isEmptyBadgeContent == true %}
22
21
  {% assign isShow = false %}
23
22
  {% endif %}
24
23
  {% if isShow %}
@@ -1 +1 @@
1
- import{useRenderMode as e,useProduct as t,useCurrency as r,useQuantity as i,useProductProperties as s,useCurrentVariant as n,useHasPreSelected as o,useStickyStore as a,useProductStore as u,useCreateCart as l,useAddToCart as c,useCurrentVariantInStock as m}from"@gem-sdk/core";import{useRef as b,useEffect as d,useCallback as f}from"react";import{addToCartTracking as p}from"../../../helpers/tracking.js";import{useDispatchAfterSubmitEvent as v}from"./useDispatchAfterSubmitEvent.js";import{useCartMessage as g}from"./useCartMessage.js";import{useCartOperations as I}from"./useCartOperations.js";let useBtnAddToCart=({styles:k,setting:D,builderProps:S})=>{let E=b(null),{isEditMode:h,isPreviewSharePageMode:j}=e(),y=t(),{currency:C}=r(),{quantity:A}=i(),M=s(),O=n(),{hasPreSelected:w}=o(),B=a(e=>e.setStickyVisible),T=u(e=>e.updateIsSubmit),q=v(S?.uid),{showMessage:x,notiComponent:L}=g(k,D),{handleSuccess:U,handleError:V,cartId:z}=I(D,x,q),{isMutating:F,trigger:G}=l({onSuccess:U,onError:V}),{isMutating:H,trigger:J}=c({onSuccess:U,onError:V});d(()=>{let e=new IntersectionObserver(e=>{let t=e[0];B(t?.isIntersecting)},{threshold:.1}),t=E.current;return E.current&&e.observe(E.current),()=>{t&&e.unobserve(t)}},[B]);let K=f(()=>{if(!O?.baseID||!A||!y?.baseID||void 0!==w&&!w||h||j)return;let e=M?.some(e=>e.required&&!e.value);if(T(!0),e)return;let t=M?.filter(e=>!!e.value)?.map(e=>({key:e.key,value:e.value}));p({quantity:A,currency:C,id:y?.baseID,name:y?.title,brand:y?.vendor,sku:O.sku,price:O?.price,variant:O.title});let r={quantity:A,attributes:t,variantId:O.baseID};D?.actionEffect!=="buy-now"&&z?J({cartId:z,lines:[r]}):G({items:[r]})},[h,j,z,C,A,M,w,y?.title,y?.vendor,y?.baseID,O?.sku,O?.price,O?.title,O?.baseID,D?.actionEffect,G,J,T]),N=m(),P=F||H,Q=O?D?.outOfStockLabel:"Unavailable";return{addToCartRef:E,isLoading:P,isInStock:N,notiComponent:L,outOfStockLabel:Q,addToCart:K}};export{useBtnAddToCart};
1
+ import{useRenderMode as e,useProduct as t,useCurrency as r,useQuantity as i,useProductProperties as s,useCurrentVariant as n,useHasPreSelected as o,useStickyStore as a,useProductStore as u,useCreateCart as l,useAddToCart as c,convertDecimalToNumber as m,useCurrentVariantInStock as b}from"@gem-sdk/core";import{useRef as d,useEffect as f,useCallback as p}from"react";import{addToCartTracking as v}from"../../../helpers/tracking.js";import{useDispatchAfterSubmitEvent as g}from"./useDispatchAfterSubmitEvent.js";import{useCartMessage as I}from"./useCartMessage.js";import{useCartOperations as k}from"./useCartOperations.js";let useBtnAddToCart=({styles:D,setting:S,builderProps:E})=>{let h=d(null),{isEditMode:j,isPreviewSharePageMode:y}=e(),C=t(),{currency:A}=r(),{quantity:M}=i(),O=s(),w=n(),{hasPreSelected:B}=o(),T=a(e=>e.setStickyVisible),q=u(e=>e.updateIsSubmit),x=g(E?.uid),{showMessage:L,notiComponent:U}=I(D,S),{handleSuccess:V,handleError:z,cartId:F}=k(S,L,x),{isMutating:G,trigger:H}=l({onSuccess:V,onError:z}),{isMutating:J,trigger:K}=c({onSuccess:V,onError:z});f(()=>{let e=new IntersectionObserver(e=>{let t=e[0];T(t?.isIntersecting)},{threshold:.1}),t=h.current;return h.current&&e.observe(h.current),()=>{t&&e.unobserve(t)}},[T]);let N=p(()=>{if(!w?.baseID||!M||!C?.baseID||void 0!==B&&!B||j||y)return;let e=O?.some(e=>e.required&&!e.value);if(q(!0),e)return;let t=O?.filter(e=>!!e.value)?.map(e=>({key:e.key,value:e.value}));v({quantity:M,currency:A,id:C?.baseID,name:C?.title,brand:C?.vendor,sku:w.sku,price:m(w?.price),variant:w.title});let r={quantity:M,attributes:t,variantId:w.baseID};S?.actionEffect!=="buy-now"&&F?K({cartId:F,lines:[r]}):H({items:[r]})},[j,y,F,A,M,O,B,C?.title,C?.vendor,C?.baseID,w?.sku,w?.price,w?.title,w?.baseID,S?.actionEffect,H,K,q]),P=b(),Q=G||J,R=w?S?.outOfStockLabel:"Unavailable";return{addToCartRef:h,isLoading:Q,isInStock:P,notiComponent:U,outOfStockLabel:R,addToCart:N}};export{useBtnAddToCart};
@@ -1 +1 @@
1
- import{useMoneyFormat as e,useEditorMode as t,useProduct as r,useCurrentVariant as n,useQuantity as o,useFormatMoney as u,useProductBundleDiscount as i,formatMoney as p}from"@gem-sdk/core";import{useMemo as c}from"react";import{applyBundleDiscountAmount as s}from"../../../helpers/product-bundle.js";import{DiscountType as a}from"../../constants/product-bundle.js";let useGpDiscountTag=m=>{let{setting:l,...d}=m,{customContent:g}=l??{},f=d["bundle-item"],{moneyFormat:b}=e(),h=t(),D=r(),$=n(),{quantity:j,hasUpdatePrice:y}=o(),G=c(()=>y&&g?.unit!=="percentage"?j??1:1,[y,g?.unit,j]),P=$?.price??0,T=$?.salePrice??0,k=(T-P)*G,x=u(k<0?0:k,l?.moneyWithCurrentFormat||!1),C=c(()=>{if(!T&&0!==T||!P&&0!==P)return`${g?.unit==="percentage"?"0%":x}`;if(g?.unit==="percentage"){let e=Math.round(k/(T/100));return`${e<0?0:e}%`}return`${x}`},[g?.unit,x,P,k,T]),{useProductCompareAtPrice:F}=i(),{discountPercentAmount:I}=s({currentVariant:$,bundleItem:f,options:{moneyFormat:b,useProductCompareAtPrice:F}}),M=c(()=>{if(!f)return 0;let{discountPercentAmount:e,discountAmount:t}=s({currentVariant:$,bundleItem:f,options:{moneyFormat:b,useProductCompareAtPrice:F}}),{discountType:r}=f,{unit:n}=g||{};return r!==a.NoDiscount||F?"percentage"===n?`${e}%`:t:"percentage"===n?"0%":p("0",b)},[f,$,b,F,g]),N=c(()=>f?M:C,[M,f,C]),W=D?.baseID?.replace("gid://shopify/Product/",""),q=c(()=>{let e=f?I<=0:k<=0;return"edit"===h&&e},[f,I,h,k]);return{mode:h,product:D,salePrice:T,priceSave:k,currentProductId:W,unitCustomDisplay:N,shouldPlaceholderNoDiscount:q}};export{useGpDiscountTag};
1
+ import{useMoneyFormat as e,useEditorMode as t,useProduct as r,useCurrentVariant as n,useQuantity as o,convertDecimalToNumber as u,useFormatMoney as i,useProductBundleDiscount as p,formatMoney as c}from"@gem-sdk/core";import{useMemo as s}from"react";import{applyBundleDiscountAmount as a}from"../../../helpers/product-bundle.js";import{DiscountType as m}from"../../constants/product-bundle.js";let useGpDiscountTag=l=>{let{setting:d,...g}=l,{customContent:f}=d??{},b=g["bundle-item"],{moneyFormat:h}=e(),D=t(),$=r(),j=n(),{quantity:y,hasUpdatePrice:G}=o(),P=s(()=>G&&f?.unit!=="percentage"?y??1:1,[G,f?.unit,y]),T=u(j?.price)??0,k=u(j?.salePrice)??0,x=(k-T)*P,C=i(x<0?0:x,d?.moneyWithCurrentFormat||!1),F=s(()=>{if(!k&&0!==k||!T&&0!==T)return`${f?.unit==="percentage"?"0%":C}`;if(f?.unit==="percentage"){let e=Math.round(x/(k/100));return`${e<0?0:e}%`}return`${C}`},[f?.unit,C,T,x,k]),{useProductCompareAtPrice:I}=p(),{discountPercentAmount:M}=a({currentVariant:j,bundleItem:b,options:{moneyFormat:h,useProductCompareAtPrice:I}}),N=s(()=>{if(!b)return 0;let{discountPercentAmount:e,discountAmount:t}=a({currentVariant:j,bundleItem:b,options:{moneyFormat:h,useProductCompareAtPrice:I}}),{discountType:r}=b,{unit:n}=f||{};return r!==m.NoDiscount||I?"percentage"===n?`${e}%`:t:"percentage"===n?"0%":c("0",h)},[b,j,h,I,f]),W=s(()=>b?N:F,[N,b,F]),q=$?.baseID?.replace("gid://shopify/Product/",""),v=s(()=>{let e=b?M<=0:x<=0;return"edit"===D&&e},[b,M,D,x]);return{mode:D,product:$,salePrice:k,priceSave:x,currentProductId:q,unitCustomDisplay:W,shouldPlaceholderNoDiscount:v}};export{useGpDiscountTag};
@@ -1 +1 @@
1
- import{jsx as e,Fragment as t,jsxs as o}from"react/jsx-runtime";import r from"next/dynamic";import d from"../../../common/components/Loading.js";import{useState as l,useMemo as i,useEffect as a}from"react";import{useRenderMode as c,useCurrentDevice as n,usePageType as s,usePageStore as u,useFetchHandle as m,hasPublicStoreFrontData as g,createStoreFrontFetcher as h,useProductQuery as p,useProductsQueryAll as P,useProductsQuery as f,useCollectionQuery as b,flattenConnection as k,ProductListProvider as T,filterToolbarPreview as I}from"@gem-sdk/core";import v from"../SalePageProductListWarning.js";import y from"next/head";import O from"./ProductListGridLayout.js";import N from"./ProductListCarouselLayout.js";import{getStyle as S}from"./common/styles.js";import{If as C}from"@gem-sdk/system";import{getClass as E}from"./common/classes.js";import{getData as w}from"./common/helpers.js";import{getPropertyByDevice as L}from"../../../dialog/common/helpers.js";let ProductNotFound=r(()=>import("../ProductNotFound.js"),{loading:d}),ProductList=r=>{let{children:W,styles:j,builderProps:x,setting:G,builderAttrs:M}=r,{isRelatedProduct:B,productSetting:A}=w(r),F=A.relatedTag&&A.relatedTag[0],{isEditMode:Q,isPreviewSharePageMode:z}=c(),D=n(),H=s(),R=u(e=>e.dynamicProduct),$=u(e=>e.dynamicCollection),[_,V]=l(1),[q,U]=l(!0),[J,K]=l(),[X,Y]=l(!1),Z="GP_FUNNEL_PAGE"===H,ee="GP_COLLECTION"==H;ee&&(A.productSrc="DynamicCollection",A.collectionId=$?.collectionId??"latest");let et=A?.productSrc??"Collection",eo=R?.productId&&R?.productId!==A.relatedProductId?R?.productId:A.relatedProductId,er=m(),ed=u(e=>e.publicStoreFrontData),el=i(()=>g(ed)?h(ed):er,[ed]),{data:ei}=p(B&&eo?eo:void 0,{revalidateOnMount:Q||z},el),ea=A.relatedTag&&"tags"===A.relatedTag[0]&&(!ei?.tags||ei?.tags.length===0),ec=A.relatedTag&&"collection"===A.relatedTag[0]&&(!ei?.collections?.edges||ei?.collections.edges.length===0),en=A.relatedTag&&"vendor"===A.relatedTag[0]&&!ei?.vendor,es=ea||ec||en,eu=P(J,{revalidateOnMount:Q||z},el),em=Q||z,eg=f("PickProduct"===et?A?.productIds:void 0,{revalidateOnMount:em},{defaultSelectedProductCount:A?.numOfSelectedProducts}),eh=i(()=>({id:A?.collectionId??"latest",numberOfProducts:G?.numberOfProducts??4,orderBy:G?.orderBy}),[A?.collectionId,Number(G?.numberOfProducts),G?.orderBy]),ep=b("PickProduct"!==et?eh:void 0,{revalidateOnMount:em});a(()=>{if(B&&ei&&A.relatedTag&&"recommended-product"!==A.relatedType){let e;switch(Y(!1),A.hasRelatedExclude&&(e=A?.relatedExclude&&A.relatedExclude.split(",").map(e=>e.trim())),A.relatedTag[0]){case"vendor":K({vendor:A.relatedTag&&"vendor"===A.relatedTag[0]?ei?.vendor:"",limit:G?.numberOfProducts,idNEQ:ei.id});break;case"collection":{let t;let o=ei?.collections?.edges.map(e=>e.node?.id);if(!o||o?.length===0){Y(!0);break}K(t=e&&e.length>0?{idNEQ:ei.id,hasCollectionProductsWith:[{hasCollectionWith:[{idIn:o},{titleNotIn:e}]}],limit:G?.numberOfProducts}:{idNEQ:ei.id,hasCollectionProductsWith:[{hasCollectionWith:[{idIn:o}]}],limit:G?.numberOfProducts});break}case"tags":{let t;if(!ei.tags||0===ei.tags.length){Y(!0);break}K(t=e&&e.length>0?{idNEQ:ei.id,hasProductTagsWith:[{hasTagsWith:[{nameIn:ei.tags},{nameNotIn:e}]}],limit:G?.numberOfProducts}:{idNEQ:ei.id,hasProductTagsWith:[{hasTagsWith:[{nameIn:ei.tags}]}],limit:G?.numberOfProducts})}}}},[ei,A.relatedType,A.relatedTag,G?.numberOfProducts,A.relatedExclude,A.hasRelatedExclude,B]);let eP="PickProduct"===et?eg.isValidating:ep.isValidating,ef="PickProduct"===et?eg.isLoading:ep.isLoading,eb="PickProduct"===et?eg.error:ep.error,ek=ep.data?.collections?.edges?.[0]?.node,eT="PickProduct"===et?k(eg.data?.products):k(ek?.products),eI=eu?.data?.products?k(eu?.data?.products):void 0,ev=B&&eI?eI:"PickProduct"===et&&A?.productIds?.length?A?.productIds?.map(e=>eT?.find(t=>t?.baseID===e)).filter(Boolean)??eT:"PickProduct"!==et?eT:eT.filter((e,t)=>t<(A?.numOfSelectedProducts??4)),ey=i(()=>X&&B&&Q||!ev.length&&!ef&&q&&Q,[q,ef,X,B,Q,ev.length]),eO=i(()=>!ev||X&&B,[X,B,ev]),eN=i(()=>{if(!G?.sameHeight)return[];let e=0,t=Math.ceil((ev?.length??0)/+(G?.slidesToShow?.[D]??1));return Array.from(Array(ev?.length??0)).map((o,r)=>(r>=+(G?.slidesToShow?.[D]??1)*(e+1)&&++e,{gridRow:`${1+_*e}/${_+1+_*e}`,marginBottom:e+1<t?L(j?.horizontalGutter,D):void 0}))},[G?.sameHeight,G?.slidesToShow,_,ev?.length,D,j?.horizontalGutter]),eS=i(()=>eP||ef||eb||!ev||X&&B,[eb,ef,X,B,eP,ev]);a(()=>{eS||setTimeout(()=>{let{builderData:e}=x??{},t=e?.childrens?.[0];if(!t)return;let o=document.querySelector(`[data-id=${t}] div`);o&&V(o.childElementCount||1)},Q?0:500)},[x,eS,Q]);let eC=i(()=>({collection:ek,products:ev,settings:{loop:G?.loop??{desktop:!1},scrollMode:G?.scrollMode??{desktop:"snap"},slidesToShow:G?.slidesToShow??{desktop:4,tablet:3,mobile:1},layout:j?.layout,dot:G?.dot,dotStyle:G?.dotStyle,arrow:G?.arrow,controlOverContent:G?.controlOverContent},styles:{horizontalGutter:j?.horizontalGutter,verticalGutter:j?.verticalGutter,fullWidth:j?.fullWidth,spacing:j?.spacing,width:j?.width,height:j?.height}}),[ek,ev,G,j]);if(x?.isPreview&&Z)return e(t,{});if(ey)return e(t,{children:C(q,e(ProductNotFound,{builderAttrs:M,collectionHandle:ek?.handle,productSrc:et,onClose:()=>U(!1),children:W,relatedTagString:F,assignProductNoTags:es,noAssignedProduct:!eo}))});let{productListWrapStyle:eE,productListContentStyle:ew,productListWrapAlignStyle:eL}=S(r),{productListWrapClass:eW}=E(r),ej=()=>e(t,{children:C(j?.layout==="grid",e(O,{...r,productSortedById:ev,generateGridRowArray:eN}),e(N,{...r,productSortedById:ev}))});return o("div",{...M,className:eW,style:eE,children:[!!j?.preloadBgImage&&o(y,{children:[!!j.backgroundImage?.desktop?.image?.src&&e("link",{rel:"preload",href:j.backgroundImage.desktop.image.src,as:"image"}),!!j.backgroundImage?.tablet?.image?.src&&e("link",{rel:"preload",href:j.backgroundImage?.tablet?.image?.src,as:"image"}),!!j.backgroundImage?.mobile?.image?.src&&e("link",{rel:"preload",href:j.backgroundImage?.mobile?.image?.src,as:"image"})]}),eP||ef?e(d,{}):eb?o("div",{children:["Error: ",eb?.message]}):eO?e("div",{children:"Products not found"}):e(T,{...eC,children:e("div",{className:"gp-flex gp-w-full",style:eL,children:o("div",{style:ew,children:[Z&&e(v,{}),ej()]})})}),I(W,!0)]})};export{ProductList as default};
1
+ import{jsx as e,Fragment as t,jsxs as o}from"react/jsx-runtime";import r from"next/dynamic";import d from"../../../common/components/Loading.js";import{useState as l,useMemo as i,useEffect as a}from"react";import{useRenderMode as c,useCurrentDevice as s,usePageType as n,usePageStore as u,useFetchHandle as m,hasPublicStoreFrontData as g,createStoreFrontFetcher as h,useProductQuery as p,useProductsQueryAll as P,useProductsQuery as f,useCollectionQuery as b,flattenConnection as k,ProductListProvider as I,filterToolbarPreview as T}from"@gem-sdk/core";import y from"../SalePageProductListWarning.js";import v from"next/head";import O from"./ProductListGridLayout.js";import N from"./ProductListCarouselLayout.js";import{getStyle as S}from"./common/styles.js";import{If as C}from"@gem-sdk/system";import{getClass as E}from"./common/classes.js";import{getData as w}from"./common/helpers.js";import{getPropertyByDevice as L}from"../../../dialog/common/helpers.js";let ProductNotFound=r(()=>import("../ProductNotFound.js"),{loading:d}),ProductList=r=>{let{children:W,styles:j,builderProps:x,setting:G,builderAttrs:A}=r,{isRelatedProduct:M,productSetting:B}=w(r),F=B.relatedTag&&B.relatedTag[0],{isEditMode:Q,isPreviewSharePageMode:z}=c(),D=s(),H=n(),R=u(e=>e.dynamicProduct),$=u(e=>e.dynamicCollection),[_,V]=l(1),[q,U]=l(!0),[J,K]=l(),[X,Y]=l(!1),Z="GP_FUNNEL_PAGE"===H,ee="GP_COLLECTION"==H;ee&&(B.productSrc="DynamicCollection",B.collectionId=$?.collectionId??"latest");let et=B?.productSrc??"Collection",eo=R?.productId&&R?.productId!==B.relatedProductId?R?.productId:B.relatedProductId,er=m(),ed=u(e=>e.publicStoreFrontData),el=i(()=>g(ed)?h(ed):er,[ed]),{data:ei}=p(M&&eo?eo:void 0,{revalidateOnMount:Q||z},el),ea=B.relatedTag&&"tags"===B.relatedTag[0]&&(!ei?.tags||ei?.tags.length===0),ec=B.relatedTag&&"collection"===B.relatedTag[0]&&(!ei?.collections?.edges||ei?.collections.edges.length===0),es=B.relatedTag&&"vendor"===B.relatedTag[0]&&!ei?.vendor,en=ea||ec||es,eu=P(J,{revalidateOnMount:Q||z},el),em=Q||z,eg=f("PickProduct"===et?B?.productIds:void 0,{revalidateOnMount:em},{defaultSelectedProductCount:B?.numOfSelectedProducts}),eh=i(()=>({id:B?.collectionId??"latest",numberOfProducts:G?.numberOfProducts??4,orderBy:G?.orderBy}),[B?.collectionId,Number(G?.numberOfProducts),G?.orderBy]),ep=b("PickProduct"!==et?eh:void 0,{revalidateOnMount:em});a(()=>{if(M&&ei&&B.relatedTag&&"recommended-product"!==B.relatedType){let e;switch(Y(!1),B.hasRelatedExclude&&(e=B?.relatedExclude&&B.relatedExclude.split(",").map(e=>e.trim())),B.relatedTag[0]){case"vendor":K({vendor:B.relatedTag&&"vendor"===B.relatedTag[0]?ei?.vendor:"",limit:G?.numberOfProducts,idNEQ:ei.id});break;case"collection":{let t;let o=ei?.collections?.edges.map(e=>e.node?.id);if(!o||o?.length===0){Y(!0);break}K(t=e&&e.length>0?{idNEQ:ei.id,hasCollectionProductsWith:[{hasCollectionWith:[{idIn:o},{titleNotIn:e}]}],limit:G?.numberOfProducts}:{idNEQ:ei.id,hasCollectionProductsWith:[{hasCollectionWith:[{idIn:o}]}],limit:G?.numberOfProducts});break}case"tags":{let t;if(!ei.tags||0===ei.tags.length){Y(!0);break}K(t=e&&e.length>0?{idNEQ:ei.id,hasProductTagsWith:[{hasTagsWith:[{nameIn:ei.tags},{nameNotIn:e}]}],limit:G?.numberOfProducts}:{idNEQ:ei.id,hasProductTagsWith:[{hasTagsWith:[{nameIn:ei.tags}]}],limit:G?.numberOfProducts})}}}},[ei,B.relatedType,B.relatedTag,G?.numberOfProducts,B.relatedExclude,B.hasRelatedExclude,M]);let eP="PickProduct"===et?eg.isValidating:ep.isValidating,ef="PickProduct"===et?eg.isLoading:ep.isLoading,eb="PickProduct"===et?eg.error:ep.error,ek=ep.data?.collections?.edges?.[0]?.node,eI="PickProduct"===et?k(eg.data?.products):k(ek?.products),eT=u(e=>e.assignedProductIds),ey=u(e=>e.isApplyAllProducts),ev=i(()=>(eT??[]).length>0&&!ey||ey,[eT,ey]),eO=eu?.data?.products&&ev?k(eu?.data?.products):[],eN=M?eO:"PickProduct"===et&&B?.productIds?.length?B?.productIds?.map(e=>eI?.find(t=>t?.baseID===e)).filter(Boolean)??eI:"PickProduct"!==et?eI:eI.filter((e,t)=>t<(B?.numOfSelectedProducts??4)),eS=i(()=>X&&M&&Q||!eN.length&&!ef&&q&&Q,[q,ef,X,M,Q,eN.length]),eC=i(()=>!eN||X&&M,[X,M,eN]),eE=i(()=>{if(!G?.sameHeight)return[];let e=0,t=Math.ceil((eN?.length??0)/+(G?.slidesToShow?.[D]??1));return Array.from(Array(eN?.length??0)).map((o,r)=>(r>=+(G?.slidesToShow?.[D]??1)*(e+1)&&++e,{gridRow:`${1+_*e}/${_+1+_*e}`,marginBottom:e+1<t?L(j?.horizontalGutter,D):void 0}))},[G?.sameHeight,G?.slidesToShow,_,eN?.length,D,j?.horizontalGutter]),ew=i(()=>eP||ef||eb||!eN||X&&M,[eb,ef,X,M,eP,eN]),eL=ei?.collections?.edges.map(e=>e.node?.id)??[];a(()=>{ew||setTimeout(()=>{let{builderData:e}=x??{},t=e?.childrens?.[0];if(!t)return;let o=document.querySelector(`[data-id=${t}] div`);o&&V(o.childElementCount||1)},Q?0:500)},[x,ew,Q,eL]);let eW=i(()=>({collection:ek,products:eN,settings:{loop:G?.loop??{desktop:!1},scrollMode:G?.scrollMode??{desktop:"snap"},slidesToShow:G?.slidesToShow??{desktop:4,tablet:3,mobile:1},layout:j?.layout,dot:G?.dot,dotStyle:G?.dotStyle,arrow:G?.arrow,controlOverContent:G?.controlOverContent},styles:{horizontalGutter:j?.horizontalGutter,verticalGutter:j?.verticalGutter,fullWidth:j?.fullWidth,spacing:j?.spacing,width:j?.width,height:j?.height}}),[ek,eN,G,j]);if(x?.isPreview&&Z)return e(t,{});if(eS)return e(t,{children:C(q,e(ProductNotFound,{builderAttrs:A,collectionHandle:ek?.handle,productSrc:et,onClose:()=>U(!1),children:W,relatedTagString:F,assignProductNoTags:en,noAssignedProduct:!eo}))});let{productListWrapStyle:ej,productListContentStyle:ex,productListWrapAlignStyle:eG}=S(r),{productListWrapClass:eA}=E(r),eM=()=>e(t,{children:C(j?.layout==="grid",e(O,{...r,productSortedById:eN,generateGridRowArray:eE}),e(N,{...r,productSortedById:eN}))});return o("div",{...A,className:eA,style:ej,children:[!!j?.preloadBgImage&&o(v,{children:[!!j.backgroundImage?.desktop?.image?.src&&e("link",{rel:"preload",href:j.backgroundImage.desktop.image.src,as:"image"}),!!j.backgroundImage?.tablet?.image?.src&&e("link",{rel:"preload",href:j.backgroundImage?.tablet?.image?.src,as:"image"}),!!j.backgroundImage?.mobile?.image?.src&&e("link",{rel:"preload",href:j.backgroundImage?.mobile?.image?.src,as:"image"})]}),eP||ef?e(d,{}):eb?o("div",{children:["Error: ",eb?.message]}):eC?e("div",{children:"Products not found"}):e(I,{...eW,children:e("div",{className:"gp-flex gp-w-full",style:eG,children:o("div",{style:ex,children:[Z&&e(y,{}),eM()]})})}),T(W,!0)]})};export{ProductList as default};
@@ -1 +1 @@
1
- import{useRef as e,useMemo as r}from"react";import{useTransition as t}from"../../product-variants/common/common.js";import{useEditorMode as c,useQuantity as i,useCurrentVariant as a,useProductBundleDiscount as n,useInteraction as o,useProduct as u,useShopStore as p,useFormatMoney as d}from"@gem-sdk/core";let useGpPrice=l=>{let{setting:m,builderProps:s}=l,g=e(null),b=c(),{quantity:h,hasUpdatePrice:y}=i(),P=a(),{useProductCompareAtPrice:v}=n(),f=l["bundle-item"],w=P?.price??0,V=P?.salePrice??0,k=m?.priceType==="compare",{trigger:q}=o(),T=u(),x=T?.baseID?.replace("gid://shopify/Product/",""),C=p(e=>e.showPriceCurrency),E=r(()=>f?.quantity?f.quantity:y&&h||1,[h,y,f?.quantity]),G=r(()=>{let e=Number(f?.discountValue);return f?.discountType==="percentage"?w*E*e/100:e},[f?.discountType,f?.discountValue,w,E]),$=r(()=>f?.discountValue?v?(V||w)*E:w*E:V*E,[f?.discountValue,w,E,V,v]),j=r(()=>{let e=w*E;return k?$:G?Math.max(0,e-G):e},[w,E,G,$,k]),D=r(()=>!!k&&(!(V>w)||!(V>=0)),[k,V,w]),I=(e,r)=>{q({event:"price"===r?"gp:rollback:price-change":"gp:rollback:compare-price-change",selector:`[data-id="${s?.uid}"]`,element:g.current}),q({event:"price"===r?"gp:price-change":"gp:compare-price-change",data:e,selector:`[data-id="${s?.uid}"]`,element:g.current})};t(e=>{e!==w&&I(w,"price")},[w]),t(e=>{e!==V&&I(V,"compare")},[V]);let M=()=>{if("edit"!==b)return;let e=new CustomEvent("editor:product-source-no-data-warning",{bubbles:!0,detail:{uid:s?.uid,value:!j&&k,tag:"ProductPrice"}});window.dispatchEvent(e)},N=d(j??0,C||!1),z=k&&!j,A="edit"!==b&&z;return{elementRef:g,moneyFormatted:N,currentProductId:x,isNoComparePrice:z,isNoComparePriceILP:A,emitNoDataSignal:M,shouldHiddenComparePrice:D}};export{useGpPrice};
1
+ import{useRef as e,useMemo as r}from"react";import{useTransition as t}from"../../product-variants/common/common.js";import{useEditorMode as c,useQuantity as i,useCurrentVariant as a,useProductBundleDiscount as n,convertDecimalToNumber as o,useInteraction as u,useProduct as p,useShopStore as d,useFormatMoney as l}from"@gem-sdk/core";let useGpPrice=m=>{let{setting:s,builderProps:g}=m,b=e(null),h=c(),{quantity:y,hasUpdatePrice:P}=i(),v=a(),{useProductCompareAtPrice:f}=n(),w=m["bundle-item"],V=o(v?.price)??0,k=o(v?.salePrice)??0,q=s?.priceType==="compare",{trigger:T}=u(),x=p(),C=x?.baseID?.replace("gid://shopify/Product/",""),E=d(e=>e.showPriceCurrency),G=r(()=>w?.quantity?w.quantity:P&&y||1,[y,P,w?.quantity]),$=r(()=>{let e=Number(w?.discountValue);return w?.discountType==="percentage"?V*G*e/100:e},[w?.discountType,w?.discountValue,V,G]),j=r(()=>w?.discountValue?f?(k||V)*G:V*G:k*G,[w?.discountValue,V,G,k,f]),D=r(()=>{let e=V*G;return q?j:$?Math.max(0,e-$):e},[V,G,$,j,q]),I=r(()=>!!q&&(!(k>V)||!(k>=0)),[q,k,V]),M=(e,r)=>{T({event:"price"===r?"gp:rollback:price-change":"gp:rollback:compare-price-change",selector:`[data-id="${g?.uid}"]`,element:b.current}),T({event:"price"===r?"gp:price-change":"gp:compare-price-change",data:e,selector:`[data-id="${g?.uid}"]`,element:b.current})};t(e=>{e!==V&&M(V,"price")},[V]),t(e=>{e!==k&&M(k,"compare")},[k]);let N=()=>{if("edit"!==h)return;let e=new CustomEvent("editor:product-source-no-data-warning",{bubbles:!0,detail:{uid:g?.uid,value:!D&&q,tag:"ProductPrice"}});window.dispatchEvent(e)},z=l(D??0,E||!1),A=q&&!D,B="edit"!==h&&A;return{elementRef:b,moneyFormatted:z,currentProductId:C,isNoComparePrice:A,isNoComparePriceILP:B,emitNoDataSignal:N,shouldHiddenComparePrice:I}};export{useGpPrice};
@@ -1 +1 @@
1
- import{formatMoney as t}from"@gem-sdk/core";import{DiscountType as e}from"../components/constants/product-bundle.js";let noDiscount=e=>({discountPercentAmount:0,discountAmount:t("0",e)}),applyBundleDiscountAmount=n=>{let{currentVariant:o,bundleItem:u,options:c}=n;if(!c?.useProductCompareAtPrice&&u?.discountType===e.NoDiscount||!u||!o?.price)return noDiscount(c?.moneyFormat||"${{amount}}");let r=Number(o?.price),i=Number(o?.salePrice)||r,a=Number(u?.quantity),m=calculateBundleFixedDiscount(r,u),s=discountPercentAmount(m,a*r),d=r*a-m,l=i*a;return i<=r&&m<=0?noDiscount(c?.moneyFormat||"${{amount}}"):{discountPercentAmount:c?.useProductCompareAtPrice?calculateDiffPercentPrice(d,l):s,discountAmount:c?.useProductCompareAtPrice?calculateDiffFixedPrice(d,l,c?.moneyFormat):t(m.toString(),c?.moneyFormat)}},calculateDiffPercentPrice=(t,e)=>{let n=(e-t)/e*100;return Math.round(n)},calculateDiffFixedPrice=(e,n,o)=>t((n-e).toString(),o),calculateBundleFixedDiscount=(t,n)=>{let o=parseInt(n?.discountValue);return n?.discountType===e.Percentage?t*n.quantity*o/100:n?.discountType===e.FixedAmount?o:0},discountPercentAmount=(t,e)=>Math.round(t/e*100);export{applyBundleDiscountAmount};
1
+ import{convertDecimalToNumber as t,formatMoney as e}from"@gem-sdk/core";import{DiscountType as n}from"../components/constants/product-bundle.js";let noDiscount=t=>({discountPercentAmount:0,discountAmount:e("0",t)}),applyBundleDiscountAmount=o=>{let{currentVariant:u,bundleItem:c,options:r}=o;if(!r?.useProductCompareAtPrice&&c?.discountType===n.NoDiscount||!c||!u?.price)return noDiscount(r?.moneyFormat||"${{amount}}");let i=t(u?.price)??0,a=t(u?.salePrice)??i,m=Number(c?.quantity),s=calculateBundleFixedDiscount(i,c),d=discountPercentAmount(s,m*i),l=i*m-s,p=a*m;return a<=i&&s<=0?noDiscount(r?.moneyFormat||"${{amount}}"):{discountPercentAmount:r?.useProductCompareAtPrice?calculateDiffPercentPrice(l,p):d,discountAmount:r?.useProductCompareAtPrice?calculateDiffFixedPrice(l,p,r?.moneyFormat):e(s.toString(),r?.moneyFormat)}},calculateDiffPercentPrice=(t,e)=>{let n=(e-t)/e*100;return Math.round(n)},calculateDiffFixedPrice=(t,n,o)=>e((n-t).toString(),o),calculateBundleFixedDiscount=(t,e)=>{let o=parseInt(e?.discountValue);return e?.discountType===n.Percentage?t*e.quantity*o/100:e?.discountType===n.FixedAmount?o:0},discountPercentAmount=(t,e)=>Math.round(t/e*100);export{applyBundleDiscountAmount};
@@ -1 +1 @@
1
- import{getResponsiveValueByScreen as e}from"@gem-sdk/core";function composeClasses(e){return e.split(" ").reduce((e,s)=>(e[s]=!0,e),{})}let getClasses=({className:e,builderProps:s,isInstantLP:t,advancedCssClass:l})=>{let g=`!gp-max-w-none gp-bg-black gp-overflow-hidden [&_>_article]:gp-aspect-[var(--aspect)] tablet:[&_>_article]:gp-aspect-[var(--aspect-tablet,_var(--aspect))] mobile:[&_>_article]:gp-aspect-[var(--aspect-mobile,_var(--aspect-tablet,_var(--aspect)))] ${s?.uid}`;return t||(g+=" gp-relative"),e&&(g+=` ${e}`),l&&(g+=` ${l}`),{...s?.uid&&{[s.uid]:!0},...composeClasses(g)}},getButtonThumbnailClasses=()=>({...composeClasses("gp-absolute gp-left-1/2 gp-top-1/2 gp-flex gp-aspect-[56/32] gp-w-14 -gp-translate-x-1/2 -gp-translate-y-1/2 gp-items-center gp-justify-center gp-rounded gp-bg-black/80 gp-transition-colors hover:gp-bg-[#ef0800]")}),getFallbackImageClasses=()=>({...composeClasses("gp-w-full gp-h-full gp-object-cover")}),getWrapThumbnailClasses=e=>{let s="gp-absolute gp-top-0 gp-left-0 gp-w-full gp-thumbnail-video gp-h-full";return e&&(s+=" gp-hidden"),{...composeClasses(s)}},getImageThumbnailClasses=()=>({...composeClasses("gp-w-full gp-h-full gp-object-cover")}),getArticleVimeoClasses=(s,t)=>{let l="gp-relative gp-bg-cover gp-bg-center gp-lite-vimeo-embed-article",g=e(t,"desktop"),p=e(t,"tablet"),a=e(t,"mobile");return s||g&&"auto"!=g||(l+=" !gp-aspect-video"),s||p&&"auto"!=p||(l+=" tablet:!gp-aspect-video"),s||a&&"auto"!=a||(l+=" mobile:!gp-aspect-video"),{...composeClasses(l)}},getVideoYoutubeClasses=(e,s)=>{let t="gp-w-full";return e&&(t+=` ${e}`),s||(t+=" gp-lazyload-video"),{...composeClasses(t)}},getImageVimeoClasses=e=>{let s="gp-h-full gp-w-full gp-relative gp-top-0 gp-left-0 gp-z-9";return e&&(s+=" gp-invisible gp-opacity-0"),{...composeClasses(s)}},getButtonVimeoClasses=e=>{let s="gp-absolute gp-left-1/2 gp-top-1/2 gp-flex gp-aspect-[56/32] gp-w-14 -gp-translate-x-1/2 -gp-translate-y-1/2 gp-items-center gp-justify-center gp-rounded gp-bg-black/80 gp-transition-colors hover:gp-bg-[#ef0800] gp-z-10 gp-lite-vimeo-embed-button";return e&&(s+=" gp-invisible gp-opacity-0"),{...composeClasses(s)}},getIframeVimeoClasses=()=>({...composeClasses("gp-inset-0 gp-w-full gp-bg-black")}),getButtonYoutubeClasses=e=>{let s="gp-absolute gp-left-1/2 gp-top-1/2 gp-w-[68px] -gp-translate-x-1/2 -gp-translate-y-1/2 gp-lite-youtube-embed-button";return e?s+=" gp-opacity-0":s+=" gp-visible gp-opacity-100",{...composeClasses(s)}},getImageYoutubeClasses=()=>({...composeClasses("gp-invisible gp-w-full gp-h-full gp_lazyforbg")}),getArticleYoutubeClasses=(e,s)=>{let t="gp-relative gp-bg-cover gp-bg-center gp-lite-youtube-embed-article";return e||(t+=" gp_lazybg"),s&&(t+=` ${s}`),{...composeClasses(t)}},getIframeYoutubeClasses=e=>{let s="gp-inset-0 gp-w-full gp-bg-black ";return e&&(s+=` ${e}`),{...composeClasses(s)}},getYoutubeContentClasses=()=>({...composeClasses("gp-absolute gp-left-0 gp-top-0 gp-aspect-video gp-h-full gp-w-full")});export{getArticleVimeoClasses,getArticleYoutubeClasses,getButtonThumbnailClasses,getButtonVimeoClasses,getButtonYoutubeClasses,getClasses,getFallbackImageClasses,getIframeVimeoClasses,getIframeYoutubeClasses,getImageThumbnailClasses,getImageVimeoClasses,getImageYoutubeClasses,getVideoYoutubeClasses,getWrapThumbnailClasses,getYoutubeContentClasses};
1
+ import{getResponsiveValueByScreen as e}from"@gem-sdk/core";function composeClasses(e){return e.split(" ").reduce((e,s)=>(e[s]=!0,e),{})}let getClasses=({className:e,builderProps:s,isInstantLP:t,advancedCssClass:l})=>{let g=`!gp-max-w-none gp-bg-black gp-overflow-hidden [&_>_article]:gp-aspect-[var(--aspect)] tablet:[&_>_article]:gp-aspect-[var(--aspect-tablet,_var(--aspect))] mobile:[&_>_article]:gp-aspect-[var(--aspect-mobile,_var(--aspect-tablet,_var(--aspect)))] ${s?.uid}`;return t||(g+=" gp-relative"),e&&(g+=` ${e}`),l&&(g+=` ${l}`),{...s?.uid&&{[s.uid]:!0},...composeClasses(g)}},getButtonThumbnailClasses=()=>({...composeClasses("gp-absolute gp-left-1/2 gp-top-1/2 gp-flex gp-aspect-[56/32] gp-w-14 -gp-translate-x-1/2 -gp-translate-y-1/2 gp-items-center gp-justify-center gp-rounded gp-bg-black/80 gp-transition-colors hover:gp-bg-[#ef0800]")}),getFallbackImageClasses=()=>({...composeClasses("gp-w-full gp-h-full gp-object-cover")}),getWrapThumbnailClasses=e=>{let s="gp-absolute gp-top-0 gp-left-0 gp-w-full gp-thumbnail-video gp-h-full";return e&&(s+=" gp-hidden"),{...composeClasses(s)}},getImageThumbnailClasses=()=>({...composeClasses("gp-w-full gp-h-full gp-object-cover")}),getArticleVimeoClasses=(s,t)=>{let l="gp-relative gp-bg-cover gp-bg-center gp-lite-vimeo-embed-article",g=e(t,"desktop"),p=e(t,"tablet"),a=e(t,"mobile");return s||g&&"auto"!=g||(l+=" !gp-aspect-video"),s||p&&"auto"!=p||(l+=" tablet:!gp-aspect-video"),s||a&&"auto"!=a||(l+=" mobile:!gp-aspect-video"),{...composeClasses(l)}},getVideoYoutubeClasses=(e,s)=>{let t="gp-w-full";return e&&(t+=` ${e}`),s||(t+=" gp-lazyload-video"),{...composeClasses(t)}},getImageVimeoClasses=e=>{let s="gp-h-full gp-w-full gp-relative gp-top-0 gp-left-0 gp-z-9";return e&&(s+=" gp-invisible gp-opacity-0"),{...composeClasses(s)}},getButtonVimeoClasses=e=>{let s="gp-absolute gp-left-1/2 gp-top-1/2 gp-flex gp-aspect-[56/32] gp-w-14 -gp-translate-x-1/2 -gp-translate-y-1/2 gp-items-center gp-justify-center gp-rounded gp-bg-black/80 gp-transition-colors hover:gp-bg-[#ef0800] gp-z-10 gp-lite-vimeo-embed-button";return e&&(s+=" gp-invisible gp-opacity-0"),{...composeClasses(s)}},getIframeVimeoClasses=()=>({...composeClasses("gp-inset-0 gp-w-full gp-bg-black")}),getButtonYoutubeClasses=e=>{let s="gp-absolute gp-left-1/2 gp-top-1/2 gp-w-[68px] -gp-translate-x-1/2 -gp-translate-y-1/2 gp-lite-youtube-embed-button";return e?s+=" gp-opacity-0":s+=" gp-visible gp-opacity-100",{...composeClasses(s)}},getImageYoutubeClasses=()=>({...composeClasses("gp-invisible gp-w-full gp-h-full gp_lazyforbg")}),getArticleYoutubeClasses=(e,s)=>{let t="gp-relative gp-bg-cover gp-bg-center gp-lite-youtube-embed-article";return e||(t+=" gp_lazybg"),s&&(t+=` ${s}`),{...composeClasses(t)}},getIframeYoutubeClasses=e=>{let s="gp-inset-0 gp-w-full gp-bg-black gp-h-full !gp-max-w-none";return e&&(s+=` ${e}`),{...composeClasses(s)}},getYoutubeContentClasses=()=>({...composeClasses("gp-absolute gp-left-0 gp-top-0 gp-h-full gp-w-full")});export{getArticleVimeoClasses,getArticleYoutubeClasses,getButtonThumbnailClasses,getButtonVimeoClasses,getButtonYoutubeClasses,getClasses,getFallbackImageClasses,getIframeVimeoClasses,getIframeYoutubeClasses,getImageThumbnailClasses,getImageVimeoClasses,getImageYoutubeClasses,getVideoYoutubeClasses,getWrapThumbnailClasses,getYoutubeContentClasses};
@@ -1,2 +1,2 @@
1
1
  'use client';
2
- import{jsxs as e,jsx as t}from"react/jsx-runtime";import{useEditorMode as r}from"@gem-sdk/core";import o from"react-youtube";import{getYoutubeParams as a,isSettingLoop as i,covertStrParamsToObj as l}from"../common/helpers.js";import s from"../../image/components/NextImage.js";import{createClass as m,createStyle as c}from"@gem-sdk/system";import{getButtonYoutubeClasses as n,getImageYoutubeClasses as p,getArticleYoutubeClasses as u,getIframeYoutubeClasses as d,getYoutubeContentClasses as y}from"../common/classes.js";import{getIframeYoutubeStyle as f,getArticleYoutubeStyle as g}from"../common/styles.js";import{useLiteYoutubeEmbed as h}from"../hooks/useLiteYoutubeEmbed.js";let LiteYouTubeEmbed=b=>{let C=r(),w="edit"!==C,{style:N,poster:j,iframeClass:k,wrapperClass:v,title:x}=b,{preload:L}=j||{},{videoId:S,paramsImp:T,posterUrl:V,iframeSrc:B}=a(b),{iframe:E,intervalPlay:I,warmConnections:M,isVideoStarted:Y,videoDuration:z,addIframe:D}=h(b,T,S),P=L&&w,A=m({...n(E)}),F=m({...p()}),H=m({...u(P||!1,v)}),O=m({...d(k)}),R=c({...f(N)}),q=c({...g(N,V)}),G=m({...y()}),J=()=>b.isHeroBanner&&i(T)?t(o,{videoId:S,title:x,iframeClassName:O,style:R,className:G,opts:{host:"https://www.youtube-nocookie.com",playerVars:{autoplay:1,state:1,controls:0,mute:1,...l(T)}},onReady:e=>{e.target.playVideo(),z.current=Math.floor(e.target.getDuration())},onStateChange:e=>{let t=e.target;Y.current||(t.playVideo(),Y.current=!0,I(e)),0===e.data&&(z.current=t.getCurrentTime(),t.playVideo(),I(e))}}):t("iframe",{className:O,style:R,title:x,frameBorder:"0",allow:"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture",allowFullScreen:!0,src:B});return e("article",{"aria-hidden":!0,className:H,"data-title":x,style:q,onPointerOver:M,onClick:D,children:[t(s,{src:V,alt:j?.altText,title:j?.imageTitle,priority:w&&L,enableLazyLoadImage:!0,className:F,isDisableAspectStyle:!0}),t("button",{type:"button","aria-label":"Play",className:A,children:e("svg",{height:"100%",version:"1.1",viewBox:"0 0 68 48",width:"100%",children:[t("path",{d:"M66.52,7.74c-0.78-2.93-2.49-5.41-5.42-6.19C55.79,.13,34,0,34,0S12.21,.13,6.9,1.55 C3.97,2.33,2.27,4.81,1.48,7.74C0.06,13.05,0,24,0,24s0.06,10.95,1.48,16.26c0.78,2.93,2.49,5.41,5.42,6.19 C12.21,47.87,34,48,34,48s21.79-0.13,27.1-1.55c2.93-0.78,4.64-3.26,5.42-6.19C67.94,34.95,68,24,68,24S67.94,13.05,66.52,7.74z",fill:"#f00"}),t("path",{d:"M 45,24 27,14 27,34",fill:"#fff"})]})}),E&&J()]})};export{LiteYouTubeEmbed as default};
2
+ import{jsxs as e,jsx as t}from"react/jsx-runtime";import{useEditorMode as r}from"@gem-sdk/core";import a from"react-youtube";import{getYoutubeParams as o,isSettingLoop as i,covertStrParamsToObj as l}from"../common/helpers.js";import s from"../../image/components/NextImage.js";import{createClass as m,createStyle as n}from"@gem-sdk/system";import{getButtonYoutubeClasses as c,getImageYoutubeClasses as u,getArticleYoutubeClasses as d,getIframeYoutubeClasses as p,getYoutubeContentClasses as f}from"../common/classes.js";import{getIframeYoutubeStyle as y,getArticleYoutubeStyle as b}from"../common/styles.js";import{useLiteYoutubeEmbed as h}from"../hooks/useLiteYoutubeEmbed.js";let LiteYouTubeEmbed=g=>{let C=r(),v="edit"!==C,{style:w,poster:N,iframeClass:j,wrapperClass:k,title:x}=g,{preload:B}=N||{},{videoId:E,paramsImp:L,posterUrl:S,iframeSrc:T}=o(g),{iframe:I,intervalPlay:V,warmConnections:H,isVideoStarted:M,videoDuration:Y,addIframe:z}=h(g,L,E),D=B&&v,P=m({...c(I)}),A=m({...u()}),F=m({...d(D||!1,k)}),O=m({...p(j)}),R=n({...y(w)}),q=n({...b(w,S)}),G=m({...f()}),J=()=>{if(g.isHeroBanner&&i(L))return t(a,{videoId:E,title:x,iframeClassName:O,style:R,className:G,opts:{host:"https://www.youtube-nocookie.com",playerVars:{autoplay:1,state:1,controls:0,mute:1,...l(L)}},onReady:e=>{if(e.target.playVideo(),Y.current=Math.floor(e.target.getDuration()),g.isHeroBanner){let t=e.target.getIframe();if(t){let e=t.closest("div.hero-banner-container");if(e){let r=new CustomEvent("youtube-iframe-ready",{detail:{iframe:t},bubbles:!0,cancelable:!0});e.dispatchEvent(r)}}}},onStateChange:e=>{let t=e.target;M.current||(t.playVideo(),M.current=!0,V(e)),0===e.data&&(Y.current=t.getCurrentTime(),t.playVideo(),V(e))}});let e=t("iframe",{className:O,style:R,title:x,frameBorder:"0",allow:"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture",allowFullScreen:!0,src:T});return g.isHeroBanner?t("div",{className:G,children:e}):e};return e("article",{"aria-hidden":!0,className:F,"data-title":x,style:q,onPointerOver:H,onClick:z,children:[t(s,{src:S,alt:N?.altText,title:N?.imageTitle,priority:v&&B,enableLazyLoadImage:!0,className:A,isDisableAspectStyle:!0}),t("button",{type:"button","aria-label":"Play",className:P,children:e("svg",{height:"100%",version:"1.1",viewBox:"0 0 68 48",width:"100%",children:[t("path",{d:"M66.52,7.74c-0.78-2.93-2.49-5.41-5.42-6.19C55.79,.13,34,0,34,0S12.21,.13,6.9,1.55 C3.97,2.33,2.27,4.81,1.48,7.74C0.06,13.05,0,24,0,24s0.06,10.95,1.48,16.26c0.78,2.93,2.49,5.41,5.42,6.19 C12.21,47.87,34,48,34,48s21.79-0.13,27.1-1.55c2.93-0.78,4.64-3.26,5.42-6.19C67.94,34.95,68,24,68,24S67.94,13.05,66.52,7.74z",fill:"#f00"}),t("path",{d:"M 45,24 27,14 27,34",fill:"#fff"})]})}),I&&J()]})};export{LiteYouTubeEmbed as default};
@@ -1,24 +1,26 @@
1
- import{template as e,RenderIf as t,isLocalEnv as s,baseAssetURL as a}from"@gem-sdk/core";import l from"../../image/components/NextImage.liquid.js";import{getSettingPreloadData as r}from"../../helpers.js";import{createStateOrContext as i,createClass as o,createStyle as p,If as m}from"@gem-sdk/system";import{getButtonYoutubeClasses as d,getImageYoutubeClasses as c,getArticleYoutubeClasses as u,getIframeYoutubeClasses as f}from"../common/classes.js";import{getIframeYoutubeStyle as y,getArticleYoutubeStyle as b}from"../common/styles.js";import{getYoutubeParams as g}from"../common/helpers.js";let LiteYouTubeEmbed=n=>{let{style:$,iframeClass:h,wrapperClass:v,title:S,poster:j}=n,z=`gp-video-${n.uid}`,{posterUrl:E,iframeSrc:w}=g(n),C=j?.preload,L=i({lazy:n.lazy,style:$,title:S,iframeSrc:w}),N=!n.lazy,T=o({...d(N)}),k=o({...c()}),x=o({...u(C||!1,v)}),A=o({...f(h)}),I=p({...y($)}),M=p({...b($,E)}),G=()=>e`
1
+ import{template as e,RenderIf as t,isLocalEnv as s,baseAssetURL as r}from"@gem-sdk/core";import a from"../../image/components/NextImage.liquid.js";import{getSettingPreloadData as l}from"../../helpers.js";import{createStateOrContext as i,createClass as o,createStyle as p,If as m}from"@gem-sdk/system";import{getButtonYoutubeClasses as d,getImageYoutubeClasses as c,getArticleYoutubeClasses as u,getIframeYoutubeClasses as f,getYoutubeContentClasses as y}from"../common/classes.js";import{getIframeYoutubeStyle as n,getArticleYoutubeStyle as b}from"../common/styles.js";import{getYoutubeParams as g}from"../common/helpers.js";let LiteYouTubeEmbed=$=>{let{style:h,iframeClass:v,wrapperClass:S,title:j,poster:z}=$,E=`gp-video-${$.uid}`,{posterUrl:w,iframeSrc:C}=g($),L=z?.preload,N=i({lazy:$.lazy,style:h,title:j,iframeSrc:C}),T=!$.lazy,k=o({...d(T)}),x=o({...c()}),A=o({...u(L||!1,S)}),I=o({...f(v)}),M=p({...n(h)}),B=p({...b(h,w)}),G=o({...y()}),O=()=>{let t=e`
2
2
  <iframe
3
- id="player-wrapper-${n.uid}"
4
- class="${A}"
5
- style="${I}"
6
- title="${S}"
3
+ id="player-wrapper-${$.uid}"
4
+ class="${I}"
5
+ style="${M}"
6
+ title="${j}"
7
7
  frameborder="0"
8
8
  allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture"
9
9
  allowfullscreen
10
- src="${w}"
10
+ src="${C}"
11
11
  ></iframe>
12
- `;return e`
13
- <gp-lite-youtube-embed gp-data='${JSON.stringify(L)}'>
12
+ `;return $.isHeroBanner?e`
13
+ <div class="${G}">${t}</div>
14
+ `:t};return e`
15
+ <gp-lite-youtube-embed gp-data='${JSON.stringify(N)}'>
14
16
  <article
15
17
  aria-hidden
16
- class="${x}"
17
- data-title="${S}"
18
- style="${M}"
18
+ class="${A}"
19
+ data-title="${j}"
20
+ style="${B}"
19
21
  >
20
- ${l({id:z,src:E,alt:j?.altText,title:j?.imageTitle,priority:j?.preload,enableLazyLoadImage:!0,className:k,isDisableAspectStyle:!0,isNotLazyload:j?.preload})}
21
- <button type="button" aria-label="Play" class="${T}">
22
+ ${a({id:E,src:w,alt:z?.altText,title:z?.imageTitle,priority:z?.preload,enableLazyLoadImage:!0,className:x,isDisableAspectStyle:!0,isNotLazyload:z?.preload})}
23
+ <button type="button" aria-label="Play" class="${k}">
22
24
  <svg height="100%" version="1.1" viewBox="0 0 68 48" width="100%">
23
25
  <path
24
26
  d="M66.52,7.74c-0.78-2.93-2.49-5.41-5.42-6.19C55.79,.13,34,0,34,0S12.21,.13,6.9,1.55 C3.97,2.33,2.27,4.81,1.48,7.74C0.06,13.05,0,24,0,24s0.06,10.95,1.48,16.26c0.78,2.93,2.49,5.41,5.42,6.19 C12.21,47.87,34,48,34,48s21.79-0.13,27.1-1.55c2.93-0.78,4.64-3.26,5.42-6.19C67.94,34.95,68,24,68,24S67.94,13.05,66.52,7.74z"
@@ -27,8 +29,8 @@ import{template as e,RenderIf as t,isLocalEnv as s,baseAssetURL as a}from"@gem-s
27
29
  <path d="M 45,24 27,14 27,34" fill="#fff"></path>
28
30
  </svg>
29
31
  </button>
30
- ${m(N,G())}
32
+ ${m(T,O())}
31
33
  </article>
32
34
  </gp-lite-youtube-embed>
33
- ${t(s,`<script ${r('class="gps-link" delay',"src")}="{{ 'gp-lite-youtube-embed-v7-5.js' | asset_url }}" defer="defer"></script>`,`<script ${r('class="gps-link" delay',"src")}="${a}/assets-v2/gp-lite-youtube-embed-v7-5.js?v={{ shop.metafields.GEMPAGES.ASSETS_VERSION }}" defer="defer"></script>`)}
35
+ ${t(s,`<script ${l('class="gps-link" delay',"src")}="{{ 'gp-lite-youtube-embed-v7-5.js' | asset_url }}" defer="defer"></script>`,`<script ${l('class="gps-link" delay',"src")}="${r}/assets-v2/gp-lite-youtube-embed-v7-5.js?v={{ shop.metafields.GEMPAGES.ASSETS_VERSION }}" defer="defer"></script>`)}
34
36
  `};export{LiteYouTubeEmbed as default};
@@ -1 +1 @@
1
- import{youtubeShortsRegex as e}from"../../../helpers.js";let VideoSettings=[{id:"setting",controls:[{id:"ratioOptions",type:"ratio",min:1,useUnit:!1,useLink:!1,devices:{desktop:{default:{width:"16",height:"9"}}}},{id:"type",type:"select",label:"Video Type",options:[{label:"YouTube",value:"youtube"},{label:"Vimeo",value:"vimeo"},{label:"Video hosting",value:"html5"}],default:"html5"},{id:"youtubeUrl",type:"input",label:"Youtube Link",default:"https://www.youtube.com/watch?v=drIt4RH_kyQ",placeholder:"Insert video url here",hide:!0,action:{clear:!0},actionChangeControls:[{controlID:"loopVideo",condition:`${e}.test(youtubeUrl)`,newValue:!0},{controlID:"autoplay",condition:`${e}.test(youtubeUrl)`,newValue:!0},{controlID:"controls",condition:`${e}.test(youtubeUrl)`,newValue:!1},{controlID:"mute",condition:`${e}.test(youtubeUrl)`,newValue:!1},{controlID:"lazy",condition:`${e}.test(youtubeUrl)`,newValue:!1}]},{id:"vimeoUrl",type:"input",label:"Vimeo Link",default:"https://vimeo.com/1095883398",placeholder:"Insert video url here",hide:!0,action:{clear:!0}},{id:"html5Url",type:"input",label:"HTML5 Video Link",default:"https://cdn.shopify.com/videos/c/o/v/2cd3deb506b54b009063f7270ab5cf2e.mp4",placeholder:"Insert video url here",hide:!0,action:{clear:!0}},{id:"notes",type:"notes",default:'You can upload video to a hosting server e.g Shopify. <a class="no-underline text-[#8AA4FF] font-medium leading-5" target="_blank" href="https://help.gempages.net/articles/version-7-video-element#video-url">Learn more</a>'},{id:"poster",type:"image",label:"Video Poster",hiddenSetting:{seo:!0}},{id:"preload",type:"toggle",label:"Preload",default:!0},{id:"aspectRatio",type:"select",label:"Ratio",options:[{label:"Original",value:"auto"},{label:"Square",value:"1/1"},{label:"3:2",value:"3/2"},{label:"4:3",value:"4/3"},{label:"16:9",value:"16/9"},{label:"21:9",value:"21/9"},{label:"2:3",value:"2/3"},{label:"3:4",value:"3/4"},{label:"9:16",value:"9/16"},{label:"Custom",value:"custom"}],devices:{desktop:{default:"16/9"}}},{id:"width",type:"input:stepper",min:0,label:"Aspect Width",hide:!0,devices:{desktop:{default:16}}},{id:"height",type:"input:stepper",min:1,label:"Aspect Height",hide:!0,devices:{desktop:{default:9}}},{id:"startTime",type:"input",label:"Start time",placeholder:"mm:ss",info:"Start video at xx seconds",hide:!0},{id:"endTime",type:"input",label:"End time",placeholder:"mm:ss",info:"End video at xx seconds",hide:!0},{id:"autoplay",label:"Autoplay",type:"toggle",default:!1},{id:"mute",label:"Enable Sound",type:"toggle",default:!1},{id:"loopVideo",label:"Loop Video",type:"toggle",default:!1},{id:"controls",label:"Show Control Bar",type:"toggle",default:!0,info:"Player controls display in the player"},{id:"lazy",label:"Lazy load",type:"toggle",default:!0,info:"Optimize for pagespeed loading time"}]}];export{VideoSettings};
1
+ import{youtubeShortsRegex as e}from"../../../helpers.js";let VideoSettings=[{id:"setting",controls:[{id:"ratioOptions",type:"ratio",min:1,useUnit:!1,useLink:!1,devices:{desktop:{default:{width:"16",height:"9"}}}},{id:"type",type:"select",label:"Video Type",options:[{label:"YouTube",value:"youtube"},{label:"Vimeo",value:"vimeo"},{label:"Video hosting",value:"html5"}],default:"html5"},{id:"youtubeUrl",type:"input",label:"Youtube Link",default:"https://www.youtube.com/watch?v=NfASaHFN1zg",placeholder:"Insert video url here",hide:!0,action:{clear:!0},actionChangeControls:[{controlID:"loopVideo",condition:`${e}.test(youtubeUrl)`,newValue:!0},{controlID:"autoplay",condition:`${e}.test(youtubeUrl)`,newValue:!0},{controlID:"controls",condition:`${e}.test(youtubeUrl)`,newValue:!1},{controlID:"mute",condition:`${e}.test(youtubeUrl)`,newValue:!1},{controlID:"lazy",condition:`${e}.test(youtubeUrl)`,newValue:!1}]},{id:"vimeoUrl",type:"input",label:"Vimeo Link",default:"https://vimeo.com/1095883398",placeholder:"Insert video url here",hide:!0,action:{clear:!0}},{id:"html5Url",type:"input",label:"HTML5 Video Link",default:"https://cdn.shopify.com/videos/c/o/v/2cd3deb506b54b009063f7270ab5cf2e.mp4",placeholder:"Insert video url here",hide:!0,action:{clear:!0}},{id:"notes",type:"notes",default:'You can upload video to a hosting server e.g Shopify. <a class="no-underline text-[#8AA4FF] font-medium leading-5" target="_blank" href="https://help.gempages.net/articles/version-7-video-element#video-url">Learn more</a>'},{id:"poster",type:"image",label:"Video Poster",hiddenSetting:{seo:!0}},{id:"preload",type:"toggle",label:"Preload",default:!0},{id:"aspectRatio",type:"select",label:"Ratio",options:[{label:"Original",value:"auto"},{label:"Square",value:"1/1"},{label:"3:2",value:"3/2"},{label:"4:3",value:"4/3"},{label:"16:9",value:"16/9"},{label:"21:9",value:"21/9"},{label:"2:3",value:"2/3"},{label:"3:4",value:"3/4"},{label:"9:16",value:"9/16"},{label:"Custom",value:"custom"}],devices:{desktop:{default:"16/9"}}},{id:"width",type:"input:stepper",min:0,label:"Aspect Width",hide:!0,devices:{desktop:{default:16}}},{id:"height",type:"input:stepper",min:1,label:"Aspect Height",hide:!0,devices:{desktop:{default:9}}},{id:"startTime",type:"input",label:"Start time",placeholder:"mm:ss",info:"Start video at xx seconds",hide:!0},{id:"endTime",type:"input",label:"End time",placeholder:"mm:ss",info:"End video at xx seconds",hide:!0},{id:"autoplay",label:"Autoplay",type:"toggle",default:!1},{id:"mute",label:"Enable Sound",type:"toggle",default:!1},{id:"loopVideo",label:"Loop Video",type:"toggle",default:!1},{id:"controls",label:"Show Control Bar",type:"toggle",default:!0,info:"Player controls display in the player"},{id:"lazy",label:"Lazy load",type:"toggle",default:!0,info:"Optimize for pagespeed loading time"}]}];export{VideoSettings};
@@ -147,7 +147,7 @@ type TextProps = BasePropsWrap<TextSettingProps, TextStyleProps> & Omit<React.Co
147
147
  disableEdit?: boolean;
148
148
  };
149
149
 
150
- type ObjectFit$1 = 'contain' | 'cover' | 'fill' | 'none' | 'scale-down';
150
+ type ObjectFit$2 = 'contain' | 'cover' | 'fill' | 'none' | 'scale-down';
151
151
  type BaseImageData = {
152
152
  alt?: string;
153
153
  src?: string;
@@ -161,8 +161,8 @@ type BaseImageData = {
161
161
  };
162
162
  type SharedProps = {
163
163
  aspectRatio?: ObjectDevices<string>;
164
- layout?: ObjectDevices<ObjectFit$1>;
165
- objectFit?: ObjectDevices<ObjectFit$1>;
164
+ layout?: ObjectDevices<ObjectFit$2>;
165
+ objectFit?: ObjectDevices<ObjectFit$2>;
166
166
  borderRadius?: ResponsiveStateProp<string>;
167
167
  image?: BaseImageData;
168
168
  };
@@ -639,6 +639,7 @@ declare const articleListSetting: {
639
639
  ArticleReadMore: _gem_sdk_core.ComponentSetting<ArticleReadMoreSidebarSettingProps>;
640
640
  };
641
641
 
642
+ type ObjectFit$1 = 'cover' | 'contain';
642
643
  type HeroBannerSettingProps = {
643
644
  link?: {
644
645
  link?: string;
@@ -657,6 +658,7 @@ type HeroBannerSettingProps = {
657
658
  ratioOptions?: ObjectDevices<Ratio>;
658
659
  enableLink?: boolean;
659
660
  contentBanner?: string;
661
+ isYoutubeVideoMigrated?: boolean;
660
662
  } & Pick<RowSettingProps, 'layout' | 'horizontalAlign'>;
661
663
  type HeroBannerStyleProps = {
662
664
  height?: ObjectDevices<string>;
@@ -678,6 +680,7 @@ type HeroBannerStyleProps = {
678
680
  sizeSetting?: ObjectDevices<SizeSettingGlobal>;
679
681
  order?: ObjectDevices<number>;
680
682
  contentPadding?: ObjectDevices<PaddingType$2>;
683
+ videoObjectFit?: ObjectDevices<ObjectFit$1>;
681
684
  } & Pick<RowStyleProps, 'verticalGutter' | 'background'>;
682
685
  type HeroBannerProps = BasePropsWrap<HeroBannerSettingProps, HeroBannerStyleProps> & {
683
686
  children?: React.ReactNode;
@@ -1919,7 +1922,7 @@ type HeaderOriginalSettingProps = {
1919
1922
  logoWidth?: ObjectDevices<string>;
1920
1923
  logoAspectRatio?: ObjectDevices<string>;
1921
1924
  customAspectRadio?: ObjectDevices<Ratio>;
1922
- layout?: ObjectDevices<ObjectFit$1>;
1925
+ layout?: ObjectDevices<ObjectFit$2>;
1923
1926
  breakpoint?: 'tablet' | 'mobile' | 'desktop';
1924
1927
  cartIcon?: string;
1925
1928
  openMode?: 'popup' | 'page';
@@ -2201,7 +2204,7 @@ type ImageComparisonStyleProps = {
2201
2204
  customAspectRadio?: ObjectDevices<Ratio>;
2202
2205
  fullWidth?: ObjectDevices<boolean>;
2203
2206
  width?: ObjectDevices<number | string>;
2204
- imageScale?: ObjectDevices<ObjectFit$1>;
2207
+ imageScale?: ObjectDevices<ObjectFit$2>;
2205
2208
  labelPositionHoz?: ObjectDevices<string>;
2206
2209
  labelPositionVer?: ObjectDevices<string>;
2207
2210
  } & Pick<SharedProps, 'aspectRatio'>;
@@ -2887,7 +2890,7 @@ type PostPurchaseProductPriceBreakdownProps = BasePropsWrap<PostPurchaseProductP
2887
2890
  };
2888
2891
 
2889
2892
  type FeatureImageStyles$2 = {
2890
- ftLayout?: ObjectDevices<ObjectFit$1>;
2893
+ ftLayout?: ObjectDevices<ObjectFit$2>;
2891
2894
  ftShape?: ObjectDevices<SizeSettingGlobal>;
2892
2895
  ftCorner?: CornerRadius;
2893
2896
  };
@@ -2928,7 +2931,7 @@ type SelectDisplaySetting$1 = {
2928
2931
  preDisplay?: '1st-available-variant' | '1st-images' | '1st-video' | '1st-3d-mode';
2929
2932
  };
2930
2933
  type GalleryStyles$2 = {
2931
- layout?: ObjectDevices<ObjectFit$1>;
2934
+ layout?: ObjectDevices<ObjectFit$2>;
2932
2935
  shape?: ObjectDevices<SizeSettingGlobal>;
2933
2936
  shapeForBottom?: ObjectDevices<SizeSettingGlobal>;
2934
2937
  shapeForFtOnly?: ObjectDevices<SizeSettingGlobal>;
@@ -3044,9 +3047,10 @@ declare const PostPurchaseProductDescription: React.FC<PostPurchaseProductDescri
3044
3047
  type PostPurchaseProductPriceSettingProps = {
3045
3048
  moneyWithCurrentFormat?: boolean;
3046
3049
  discountAndShippingFee?: boolean;
3050
+ priceType?: 'offer' | 'compare';
3051
+ source?: 'price' | 'compare-price';
3047
3052
  };
3048
3053
  type OriginalStyleProps$4 = {
3049
- priceType?: 'regular' | 'compare';
3050
3054
  lineThrough?: boolean;
3051
3055
  };
3052
3056
  type PostPurchaseProductPriceStyleProps = OriginalStyleProps$4 & PostPurchaseTextSettingProps & PostPurchaseTextStyleProps;
@@ -3525,7 +3529,7 @@ declare const postPurchaseProductSetting: {
3525
3529
  };
3526
3530
 
3527
3531
  type FeatureImageStyles$1 = {
3528
- ftLayout?: ObjectDevices<ObjectFit$1>;
3532
+ ftLayout?: ObjectDevices<ObjectFit$2>;
3529
3533
  ftShape?: ObjectDevices<SizeSettingGlobal>;
3530
3534
  ftCorner?: CornerRadius;
3531
3535
  };
@@ -3565,7 +3569,7 @@ type SelectDisplaySetting = {
3565
3569
  preDisplay?: '1st-available-variant' | '1st-images' | '1st-video' | '1st-3d-mode';
3566
3570
  };
3567
3571
  type GalleryStyles$1 = {
3568
- layout?: ObjectDevices<ObjectFit$1>;
3572
+ layout?: ObjectDevices<ObjectFit$2>;
3569
3573
  shape?: ObjectDevices<SizeSettingGlobal>;
3570
3574
  shapeForBottom?: ObjectDevices<SizeSettingGlobal>;
3571
3575
  shapeForFtOnly?: ObjectDevices<SizeSettingGlobal>;
@@ -4026,7 +4030,7 @@ type DynamicCheckoutLiquidProps = DynamicCheckoutProps & {
4026
4030
  type FeatureImageStyles = {
4027
4031
  ftAspectRatio?: ObjectDevices<string>;
4028
4032
  ftCustomAspectRadio?: ObjectDevices<Ratio>;
4029
- ftLayout?: ObjectDevices<ObjectFit$1>;
4033
+ ftLayout?: ObjectDevices<ObjectFit$2>;
4030
4034
  ftFullWidth?: ObjectDevices<boolean>;
4031
4035
  ftWidth?: ObjectDevices<string>;
4032
4036
  ftWidthHorizontalLayout?: ObjectDevices<string>;
@@ -4047,7 +4051,7 @@ type FeatureImageSetting = {
4047
4051
  type GalleryStyles = {
4048
4052
  aspectRatio?: ObjectDevices<string>;
4049
4053
  customAspectRadio?: ObjectDevices<Ratio>;
4050
- layout?: ObjectDevices<ObjectFit$1>;
4054
+ layout?: ObjectDevices<ObjectFit$2>;
4051
4055
  align?: ObjectDevices<Property.AlignItems>;
4052
4056
  position?: ObjectDevices<string>;
4053
4057
  spacing?: ObjectDevices<string | number>;
@@ -7989,6 +7993,5 @@ declare const getAllHrefFromString: (htmlString: string) => string[];
7989
7993
  declare const replaceAllHrefFromString: (htmlString: string, hrefs: string[]) => string;
7990
7994
  declare function isEmptyObject(obj: Record<string, any>): boolean;
7991
7995
  declare const handleClickLink: (setting?: ImageLink, mode?: RenderMode) => void;
7992
- declare const safeSvgIcon: (str?: string) => string;
7993
7996
 
7994
- export { Accordion$1 as Accordion, AccordionItem$1 as AccordionItem, type AccordionItemProps, type AccordionProps, AftershipEmailMarketingsms$1 as AftershipEmailMarketingsms, type AftershipEmailMarketingsmsProps, AirProductReviewsAppUgc$1 as AirProductReviewsAppUgc, type AirProductReviewsAppUgcProps, AliReviews$1 as AliReviews, type AliReviewsProps, AlsoBoughtCbb$1 as AlsoBoughtCbb, type AlsoBoughtCbbProps, AovBundlesVolumeDiscounts$1 as AovBundlesVolumeDiscounts, type AovBundlesVolumeDiscountsProps, AovFreeGiftBuyXGetYBogo$1 as AovFreeGiftBuyXGetYBogo, type AovFreeGiftBuyXGetYBogoProps, AppointmentBookingCowlendar$1 as AppointmentBookingCowlendar, type AppointmentBookingCowlendarProps, AppstleBundlesDiscounts$1 as AppstleBundlesDiscounts, type AppstleBundlesDiscountsProps, AppstleSubscriptions$1 as AppstleSubscriptions, type AppstleSubscriptionsProps, ArticleAuthor$1 as ArticleAuthor, ArticleCategory$1 as ArticleCategory, ArticleContent$1 as ArticleContent, ArticleDate$1 as ArticleDate, ArticleExcerpt$1 as ArticleExcerpt, ArticleImage$1 as ArticleImage, ArticleList$1 as ArticleList, ArticlePagination$1 as ArticlePagination, ArticleReadMore$1 as ArticleReadMore, ArticleTag$1 as ArticleTag, ArticleTitle$1 as ArticleTitle, BasicHeader, BestBuyFulfillment$1 as BestBuyFulfillment, type BestBuyFulfillmentProps, BfSizeChartSizeGuide$1 as BfSizeChartSizeGuide, type BfSizeChartSizeGuideProps, BirdChime$1 as BirdChime, type BirdChimeProps, BloyRewardsProgramLoyalty$1 as BloyRewardsProgramLoyalty, type BloyRewardsProgramLoyaltyProps, Bogos$1 as Bogos, type BogosProps, BoldProductOptions$1 as BoldProductOptions, type BoldProductOptionsProps, BoldSubscriptions$1 as BoldSubscriptions, type BoldSubscriptionsProps, BonLoyaltyRewardsReferrals$1 as BonLoyaltyRewardsReferrals, type BonLoyaltyRewardsReferralsProps, BoostAISearchDiscovery$1 as BoostAISearchDiscovery, type BoostAISearchDiscoveryProps, Breadcrumb$1 as Breadcrumb, Breadcrumb$1 as BreadcrumbProps, Bundler$1 as Bundler, type BundlerProps, Button$2 as Button, type ButtonProps, CONTINUE_SELLING_WHEN_OUT_OF_STOCK, CSSCode$1 as CSSCode, type CSSCodeProps, type CalloutBoxProps, type CalloutTextProps, Carousel$2 as Carousel, CarouselItem$2 as CarouselItem, type CarouselItemProps, type CarouselItemProps$1 as CarouselItemPropsV3, CarouselItem$3 as CarouselItemV3, type CarouselProps, type CarouselProps$1 as CarouselPropsV3, type CarouselSettingProps, type CarouselSettingProps$1 as CarouselSettingPropsV3, type CarouselStyleProps, type CarouselStyleProps$1 as CarouselStylePropsV3, Carousel$3 as CarouselV3, Cart, CartCheckout, CartDiscount, CartLineAttribute, CartLineImage, CartLinePrice, CartLineVariant, CartList, CartOrderNote, type CartProps, CartTotalItem, CartTotalPrice, CheckoutNow, CleanSizeCharts$1 as CleanSizeCharts, type CleanSizeChartsProps, Column$1 as Col, type ColProps, CollectionBanner$1 as CollectionBanner, type CollectionBannerProps, CollectionDescription$1 as CollectionDescription, type CollectionDescriptionProps, CollectionPaginator$1 as CollectionPaginator, type CollectionPaginatorProps, CollectionTitle$1 as CollectionTitle, type CollectionTitleProps, CollectionToolbar$1 as CollectionToolbar, type CollectionToolbarProps, ContactForm$1 as ContactForm, Countdown$1 as Countdown, type CountdownProps, Coupon$1 as Coupon, CouponList, type CouponProps, CrossSellCartUpsell$1 as CrossSellCartUpsell, type CrossSellCartUpsellProps, CustomProductOptionsVariant$1 as CustomProductOptionsVariant, type CustomProductOptionsVariantProps, DEFAULT_FONT_SIZE, DEFAULT_HIGHLIGHT_TAG, DEFAULT_PROGRESS_BAR_HEIGHT, DEFAULT_QUANTITY_TEMPLATE, DEFAULT_RANGE_STEP, DEFAULT_REMAINING_PERCENT, DEFAULT_REMAINING_QUANTITY, DEFAULT_SCARCITY_THRESHOLD, type DataVideoType, DealeasyVolumeDiscounts$1 as DealeasyVolumeDiscounts, type DealeasyVolumeDiscountsProps, DesktopMenu, Dialog$1 as Dialog, DiscountInput, DiscountyBulkDiscountSales$1 as DiscountyBulkDiscountSales, type DiscountyBulkDiscountSalesProps, DynamicCheckout$1 as DynamicCheckout, type DynamicCheckoutProps, ELEMENT_Z_INDEX, EasifyProductOptions$1 as EasifyProductOptions, type EasifyProductOptionsProps, EasyBundleBuilderSkailama$1 as EasyBundleBuilderSkailama, type EasyBundleBuilderSkailamaProps, EasySell as EasySellCOD, type EasySellCODProps, EcoboostifyShoppableReelUgc$1 as EcoboostifyShoppableReelUgc, type EcoboostifyShoppableReelUgcProps, EcomsendBackInStockAlert$1 as EcomsendBackInStockAlert, type EcomsendBackInStockAlertProps, EssentialAnnouncementBar$1 as EssentialAnnouncementBar, type EssentialAnnouncementBarProps, EssentialCountdownTimerBar$1 as EssentialCountdownTimerBar, type EssentialCountdownTimerBarProps, EstimateDate$1 as EstimateDate, type EstimateDateProps, EstimatedDeliveryDatePlus$1 as EstimatedDeliveryDatePlus, type EstimatedDeliveryDatePlusProps, FastBundleBundlesDiscounts$1 as FastBundleBundlesDiscounts, type FastBundleBundlesDiscountsProps, FeraReviews$1 as FeraReviews, type FeraReviewsProps, FileUpload$1 as FileUpload, type FileUploadProps, FirePush$1 as FirePush, type FirePushProps, FlyBundlesUpsellsFbt$1 as FlyBundlesUpsellsFbt, type FlyBundlesUpsellsFbtProps, FordeerProductLabels$1 as FordeerProductLabels, type FordeerProductLabelsProps, FormCheckbox, type FormCheckboxProps, FormDropdown$1 as FormDropdown, type FormDropdownProps, FormEmail$1 as FormEmail, type FormEmailProps, FormTextArea as FormTextarea, FrequentlyBoughtTogether$1 as FrequentlyBoughtTogether, type FrequentlyBoughtTogetherProps, GloColorSwatchvariantImage$1 as GloColorSwatchvariantImage, type GloColorSwatchvariantImageProps, GloboProductOptionsVariant$1 as GloboProductOptionsVariant, type GloboProductOptionsVariantProps, GoogleReviewsByReputon$1 as GoogleReviewsByReputon, type GoogleReviewsByReputonProps, Growave$1 as Growave, type GrowaveProps, Header, type HeaderProps, Heading$1 as Heading, type HeadingProps, HeroBanner$1 as HeroBanner, type HeroBannerProps, HextomCountdownTimerBar$1 as HextomCountdownTimerBar, type HextomCountdownTimerBarProps, HextomFreeShippingBar$1 as HextomFreeShippingBar, type HextomFreeShippingBarProps, HulkFormBuilder$1 as HulkFormBuilder, type HulkFormBuilderProps, HulkProductOptions$1 as HulkProductOptions, type HulkProductOptionsProps, Icon$1 as Icon, IconList$1 as IconList, IconListHoz$1 as IconListHoz, type IconListHozProps, IconListItem$1 as IconListItem, IconListHozItem as IconListItemHoz, type IconListItemProps$1 as IconListItemProps, type IconListProps$1 as IconListProps, IconListV2$1 as IconListV2, type IconProps, Image$1 as Image, ImageComparison$1 as ImageComparison, type ImageComparisonItem, ImageDetection, type ImageDetectionProps, type ImageProps, type ImgProps, InfiniteOptions$1 as InfiniteOptions, type InfiniteOptionsProps, Input, type InputProps, Instafeed$1 as Instafeed, type InstafeedProps, InstantJudgemeReviews, InstantKlaviyo, InstantLooxReviews, InstantYotpoLoyalty, InstasellShoppableInstagram$1 as InstasellShoppableInstagram, type InstasellShoppableInstagramProps, JudgemeReviews$1 as JudgemeReviews, type JudgemeReviewsProps, JunipProductReviewsUgc$1 as JunipProductReviewsUgc, type JunipProductReviewsUgcProps, KachingBundles$1 as KachingBundles, type KachingBundlesProps, KachingSubscriptionsApp$1 as KachingSubscriptionsApp, type KachingSubscriptionsAppProps, KingProductOptions$1 as KingProductOptions, type KingProductOptionsProps, KiteFreeGiftDiscount$1 as KiteFreeGiftDiscount, type KiteFreeGiftDiscountProps, KlarnaMessaging$1 as KlarnaMessaging, type KlarnaMessagingProps, Klaviyo$1 as Klaviyo, type KlaviyoProps, KoalaBundleQuantityDiscount$1 as KoalaBundleQuantityDiscount, type KoalaBundleQuantityDiscountProps, LaiProductReviews$1 as LaiProductReviews, type LaiProductReviewsProps, Line$2 as Line, type LineProps, Link$1 as Link, type LinkProps, LoloyalLoyaltyReferrals$1 as LoloyalLoyaltyReferrals, type LoloyalLoyaltyReferralsProps, LoopSubscriptions$1 as LoopSubscriptions, type LoopSubscriptionsProps, LooxReviews$1 as LooxReviews, type LooxReviewsProps, MAX_PROGRESS_BAR_HEIGHT, MAX_REMAINING_PERCENT, MIN_PROGRESS_BAR_HEIGHT, MIN_REMAINING_PERCENT, MIN_REMAINING_QUANTITY, Marquee$1 as Marquee, _default$4 as MarqueeItem, type MarqueeItemProps, type MarqueeProps, MaxbundleProductBundles$1 as MaxbundleProductBundles, type MaxbundleProductBundlesProps, MbcBundleVolumeDiscount$1 as MbcBundleVolumeDiscount, type MbcBundleVolumeDiscountProps, Menu, type MenuProps, MobileMenu, Modal, ModernHeader, MyappgurusProductReviews$1 as MyappgurusProductReviews, type MyappgurusProductReviewsProps, NO_PRODUCT_LEFT, Newsletter$1 as Newsletter, type NewsletterProps, Notify as Notice, type NotificationAPI, type NotificationConfig, NotifyBackInStockPreOrder$1 as NotifyBackInStockPreOrder, type NotifyBackInStockPreOrderProps, OUT_OF_STOCK, type ObjectFit$1 as ObjectFit, OkendoReviewsLoyalty$1 as OkendoReviewsLoyalty, type OkendoReviewsLoyaltyProps, Omnisend$1 as Omnisend, type OmnisendProps, Opinew$1 as Opinew, type OpinewProps, Pagination, type PaginationProps, ParcelPanel$1 as ParcelPanel, type ParcelPanelProps, PickyStory$1 as PickyStory, type PickyStoryProps, PostPurchaseAcceptButton, PostPurchaseAdvancedList, PostPurchaseAdvancedListItem, type PostPurchaseAdvancedListProps, Button$1 as PostPurchaseButton, type PostPurchaseButtonProps, CalloutBox as PostPurchaseCalloutBox, CalloutText as PostPurchaseCalloutText, PostPurchaseCountdownTimer, type PostPurchaseCountdownTimerProps, PostPurchaseHeading, PostPurchaseImage, type PostPurchaseImageProps, Line$1 as PostPurchaseLine, type PostPurchaseLineProps, Link as PostPurchaseLink, type PostPurchaseLinkProps, PostPurchaseProductDescription, type PostPurchaseProductDescriptionProps, PostPurchaseProductDiscountTag, type PostPurchaseProductDiscountTagProps, PostPurchaseProductImages, type PostPurchaseProductImagesProps, PostPurchaseProductOffer, type PostPurchaseProductOfferProps$1 as PostPurchaseProductOfferProps, PostPurchaseProductPrice, PostPurchaseProductPriceBreakdown, type PostPurchaseProductPriceBreakdownProps, type PostPurchaseProductPriceProps, PostPurchaseProductQuantity, type PostPurchaseProductQuantityProps, PostPurchaseProductTitle, type PostPurchaseProductTitleProps, PostPurchaseProductVariants, type PostPurchaseProductVariantsProps, Text$2 as PostPurchaseText, type PostPurchaseTextProps, PowerfulContactFormBuilder$1 as PowerfulContactFormBuilder, type PowerfulContactFormBuilderProps, PreorderNowPreOrderPq$1 as PreorderNowPreOrderPq, type PreorderNowPreOrderPqProps, PreorderNowWodPresale$1 as PreorderNowWodPresale, type PreorderNowWodPresaleProps, Product$1 as Product, ProductBadge$1 as ProductBadge, type ProductBadgeProps, ProductBundleDiscount$1 as ProductBundleDiscount, ProductBundleDiscountItem$1 as ProductBundleDiscountItem, type ProductBundleDiscountProps, type ProductBundleItemDiscountProps, ProductButton$1 as ProductButton, type ProductButtonProps, ProductDescription$1 as ProductDescription, type ProductDescriptionProps, ProductImages$3 as ProductImages, type ProductImagesProps, ProductImagesV2, ProductImagesV3, ProductList$2 as ProductList, type ProductListProps, type ProductListProps$1 as ProductListPropsV3, ProductList$3 as ProductListV3, ProductOptionsCustomizer$1 as ProductOptionsCustomizer, type ProductOptionsCustomizerProps, ProductOptionsVariantOption$1 as ProductOptionsVariantOption, type ProductOptionsVariantOptionProps, ProductPrice$1 as ProductPrice, type ProductPriceProps, type ProductPropertiesProps, ProductProperties$1 as ProductPropertyInput, type ProductProps, ProductQuantity$1 as ProductQuantity, type ProductQuantityProps, QuickView as ProductQuickView, ProductReviews$1 as ProductReviews, type ProductReviewsProps, ProductSku$1 as ProductSku, ProductTag$1 as ProductTag, type ProductTagProps, ProductTitle$1 as ProductTitle, type ProductTitleProps, ProductVariants$1 as ProductVariants, type ProductVariantsProps, ProductVendor$1 as ProductVendor, ProductViewMore$1 as ProductViewMore, type ProductViewMoreProps, PumperBundlesVolumeDiscount$1 as PumperBundlesVolumeDiscount, type PumperBundlesVolumeDiscountProps, PushOwl$1 as PushOwl, type PushOwlProps, QUANTITY_SOURCE, QikifyUpsell$1 as QikifyUpsell, type QikifyUpsellProps, REGEX_PAGE_TYPE, Radio, RapiBundleQuantityBreaks$1 as RapiBundleQuantityBreaks, type RapiBundleQuantityBreaksProps, RechargeSubscriptions$1 as RechargeSubscriptions, type RechargeSubscriptionsProps, RecurpaySubscriptionApp$1 as RecurpaySubscriptionApp, type RecurpaySubscriptionAppProps, Releasit$1 as Releasit, type ReleasitProps, RequestQuoteHidePrice$1 as RequestQuoteHidePrice, type RequestQuoteHidePriceProps, ReviewxpoProductReviewsApp$1 as ReviewxpoProductReviewsApp, type ReviewxpoProductReviewsAppProps, Rivyo$1 as Rivyo, type RivyoProps, Root$1 as Root, type RootProps$2 as RootProps, Row$1 as Row, type RowProps, Ryviu$1 as Ryviu, type RyviuProps, SealSubscriptions$1 as SealSubscriptions, type SealSubscriptionsProps, Section$1 as Section, SegunoEmailMarketing$1 as SegunoEmailMarketing, type SegunoEmailMarketingProps, Select, Selleasy$1 as Selleasy, type SelleasyProps, SeoantTrustBadgesIcon$1 as SeoantTrustBadgesIcon, type SeoantTrustBadgesIconProps, ShopPayButton$1 as ShopPayButton, type ShopPayButtonProps, ShopPayInstallments$1 as ShopPayInstallments, ShopifyForms$1 as ShopifyForms, type ShopifyFormsProps, ShopifySubscriptions$1 as ShopifySubscriptions, type ShopifySubscriptionsProps, SimpleBundlesKits$1 as SimpleBundlesKits, type SimpleBundlesKitsProps, SkioSubscriptionsYcS20$1 as SkioSubscriptionsYcS20, type SkioSubscriptionsYcS20Props, type SkuProps, SmartSearchBarAndFilters$1 as SmartSearchBarAndFilters, type SmartSearchBarAndFiltersProps, SproutPlantTreesGrowSales$1 as SproutPlantTreesGrowSales, type SproutPlantTreesGrowSalesProps, Stamped$1 as Stamped, type StampedProps, StellarDeliveryDatePickup$1 as StellarDeliveryDatePickup, type StellarDeliveryDatePickupProps, Sticky$1 as Sticky, StockCounter$1 as StockCounter, SubifySubscriptionsApp$1 as SubifySubscriptionsApp, type SubifySubscriptionsAppProps, SubmitButton$1 as SubmitButton, type SubmitButtonProps, TabItem$1 as TabItem, type TabItemProps, Tabs$1 as Tabs, type TabsProps, TagembedSocialPostReview$1 as TagembedSocialPostReview, type TagembedSocialPostReviewProps, TagshopShoppableVideosUgc$1 as TagshopShoppableVideosUgc, type TagshopShoppableVideosUgcProps, TeeinblueProductPersonalizer$1 as TeeinblueProductPersonalizer, type TeeinblueProductPersonalizerProps, Text$1 as Text, type TextAreaProps, TextField$1 as TextField, type TextFieldProps, TextInput$1 as TextInput, type TextInputProps, type TextProps, TextArea as Textarea, type TextareaProps, ThirdPartySlot$1 as ThirdPartySlot, TrustBadgesBear$1 as TrustBadgesBear, type TrustBadgesBearProps, TrustMe$1 as TrustMe, type TrustMeProps, TrustedsiteTrustBadges$1 as TrustedsiteTrustBadges, type TrustedsiteTrustBadgesProps, Trustoo$1 as Trustoo, type TrustooProps, TrustreviewsProductReviews$1 as TrustreviewsProductReviews, type TrustreviewsProductReviewsProps, TrustshopProductReviews$1 as TrustshopProductReviews, type TrustshopProductReviewsProps, UltimateSalesBoost$1 as UltimateSalesBoost, type UltimateSalesBoostProps, UnlimitedBundlesDiscounts$1 as UnlimitedBundlesDiscounts, type UnlimitedBundlesDiscountsProps, UppromoteAffiliateMarketing$1 as UppromoteAffiliateMarketing, type UppromoteAffiliateMarketingProps, type VendorProps, Video$1 as Video, Vitals$1 as Vitals, type VitalsProps, WhatmoreShoppableVideosreel$1 as WhatmoreShoppableVideosreel, type WhatmoreShoppableVideosreelProps, WideBundle$1 as WideBundle, type WideBundleProps, Wiser$1 as Wiser, type WiserProps, WishlistKing$1 as WishlistKing, type WishlistKingProps, WishlistPlus$1 as WishlistPlus, type WishlistPlusProps, YotpoLoyalty, type YotpoLoyaltyProps, YotpoReviews$1 as YotpoReviews, type YotpoReviewsProps, accordionSetting, articleListSetting, bannerSetting, breadcrumbSetting, _default$2 as builderComponent, buttonSetting, carouselSetting, carouselSettingV3, cartSetting, checkIsOpenPopup, checkIsScrollToTop, codeSetting, collectionSetting, _default$1 as componentSettings, contactFormSetting, convertSizeToWidth, convertUnitToNumber, countdownSetting, couponSetting, dialogSetting, estimateDeliverySetting, filterTruthyObject, filterTruthyStyles, getAllHrefFromString, getDisplayStyle, getDynamicSourceLocales, getInlineCss, getInsertLinkData, getLinkArticle, getLinkData, getLiquidInitData, getLiquidTextContent, getSettingPreloadData, getStaticLocale, getTextDisplayData, gridSetting, handleClickLink, headerSetting, headingSetting, iconListHozSetting, iconListSetting, iconListSettingV2, iconSetting, imageComparisonSetting, imageDetectionSetting, imageSetting, inputSetting, isEmptyObject, isHexTransparent, isLinkedToSalesPage, isShopifyDomain, isTransparentColor, isTransparentRGBA, lineSetting, linkSetting, index_liquid as liquidComponents, marqueeSetting, menuSetting, modalSetting, _default$3 as nextComponent, normalizeMailto, openConfirm, paginationSetting, postPurchaseAdvancedListSetting, postPurchaseButtonSetting, postPurchaseCalloutBoxSetting, postPurchaseCountdownTimerSetting, postPurchaseImageSetting, postPurchaseLineSetting, postPurchaseLinkSetting, postPurchaseProduct1Col, postPurchaseProduct2Col, postPurchaseProductDefault, postPurchaseProductSetting, _default as postPurchaseSettings, postPurchaseTextSetting, productSetting, radioSetting, replaceAllHrefFromString, replaceLinkData, safeSvgIcon, selectSetting, shopPayInstallmentSetting, stickySetting, stockCounterSetting, tabSetting, textSetting, textareaSetting, thirdPartyInstantSetting, thirdPartySetting, thirdPartySlotSetting, transformHighlighTag, transformNumberTag, useNotification, videoSetting, youtubeShortsRegex };
7997
+ export { Accordion$1 as Accordion, AccordionItem$1 as AccordionItem, type AccordionItemProps, type AccordionProps, AftershipEmailMarketingsms$1 as AftershipEmailMarketingsms, type AftershipEmailMarketingsmsProps, AirProductReviewsAppUgc$1 as AirProductReviewsAppUgc, type AirProductReviewsAppUgcProps, AliReviews$1 as AliReviews, type AliReviewsProps, AlsoBoughtCbb$1 as AlsoBoughtCbb, type AlsoBoughtCbbProps, AovBundlesVolumeDiscounts$1 as AovBundlesVolumeDiscounts, type AovBundlesVolumeDiscountsProps, AovFreeGiftBuyXGetYBogo$1 as AovFreeGiftBuyXGetYBogo, type AovFreeGiftBuyXGetYBogoProps, AppointmentBookingCowlendar$1 as AppointmentBookingCowlendar, type AppointmentBookingCowlendarProps, AppstleBundlesDiscounts$1 as AppstleBundlesDiscounts, type AppstleBundlesDiscountsProps, AppstleSubscriptions$1 as AppstleSubscriptions, type AppstleSubscriptionsProps, ArticleAuthor$1 as ArticleAuthor, ArticleCategory$1 as ArticleCategory, ArticleContent$1 as ArticleContent, ArticleDate$1 as ArticleDate, ArticleExcerpt$1 as ArticleExcerpt, ArticleImage$1 as ArticleImage, ArticleList$1 as ArticleList, ArticlePagination$1 as ArticlePagination, ArticleReadMore$1 as ArticleReadMore, ArticleTag$1 as ArticleTag, ArticleTitle$1 as ArticleTitle, BasicHeader, BestBuyFulfillment$1 as BestBuyFulfillment, type BestBuyFulfillmentProps, BfSizeChartSizeGuide$1 as BfSizeChartSizeGuide, type BfSizeChartSizeGuideProps, BirdChime$1 as BirdChime, type BirdChimeProps, BloyRewardsProgramLoyalty$1 as BloyRewardsProgramLoyalty, type BloyRewardsProgramLoyaltyProps, Bogos$1 as Bogos, type BogosProps, BoldProductOptions$1 as BoldProductOptions, type BoldProductOptionsProps, BoldSubscriptions$1 as BoldSubscriptions, type BoldSubscriptionsProps, BonLoyaltyRewardsReferrals$1 as BonLoyaltyRewardsReferrals, type BonLoyaltyRewardsReferralsProps, BoostAISearchDiscovery$1 as BoostAISearchDiscovery, type BoostAISearchDiscoveryProps, Breadcrumb$1 as Breadcrumb, Breadcrumb$1 as BreadcrumbProps, Bundler$1 as Bundler, type BundlerProps, Button$2 as Button, type ButtonProps, CONTINUE_SELLING_WHEN_OUT_OF_STOCK, CSSCode$1 as CSSCode, type CSSCodeProps, type CalloutBoxProps, type CalloutTextProps, Carousel$2 as Carousel, CarouselItem$2 as CarouselItem, type CarouselItemProps, type CarouselItemProps$1 as CarouselItemPropsV3, CarouselItem$3 as CarouselItemV3, type CarouselProps, type CarouselProps$1 as CarouselPropsV3, type CarouselSettingProps, type CarouselSettingProps$1 as CarouselSettingPropsV3, type CarouselStyleProps, type CarouselStyleProps$1 as CarouselStylePropsV3, Carousel$3 as CarouselV3, Cart, CartCheckout, CartDiscount, CartLineAttribute, CartLineImage, CartLinePrice, CartLineVariant, CartList, CartOrderNote, type CartProps, CartTotalItem, CartTotalPrice, CheckoutNow, CleanSizeCharts$1 as CleanSizeCharts, type CleanSizeChartsProps, Column$1 as Col, type ColProps, CollectionBanner$1 as CollectionBanner, type CollectionBannerProps, CollectionDescription$1 as CollectionDescription, type CollectionDescriptionProps, CollectionPaginator$1 as CollectionPaginator, type CollectionPaginatorProps, CollectionTitle$1 as CollectionTitle, type CollectionTitleProps, CollectionToolbar$1 as CollectionToolbar, type CollectionToolbarProps, ContactForm$1 as ContactForm, Countdown$1 as Countdown, type CountdownProps, Coupon$1 as Coupon, CouponList, type CouponProps, CrossSellCartUpsell$1 as CrossSellCartUpsell, type CrossSellCartUpsellProps, CustomProductOptionsVariant$1 as CustomProductOptionsVariant, type CustomProductOptionsVariantProps, DEFAULT_FONT_SIZE, DEFAULT_HIGHLIGHT_TAG, DEFAULT_PROGRESS_BAR_HEIGHT, DEFAULT_QUANTITY_TEMPLATE, DEFAULT_RANGE_STEP, DEFAULT_REMAINING_PERCENT, DEFAULT_REMAINING_QUANTITY, DEFAULT_SCARCITY_THRESHOLD, type DataVideoType, DealeasyVolumeDiscounts$1 as DealeasyVolumeDiscounts, type DealeasyVolumeDiscountsProps, DesktopMenu, Dialog$1 as Dialog, DiscountInput, DiscountyBulkDiscountSales$1 as DiscountyBulkDiscountSales, type DiscountyBulkDiscountSalesProps, DynamicCheckout$1 as DynamicCheckout, type DynamicCheckoutProps, ELEMENT_Z_INDEX, EasifyProductOptions$1 as EasifyProductOptions, type EasifyProductOptionsProps, EasyBundleBuilderSkailama$1 as EasyBundleBuilderSkailama, type EasyBundleBuilderSkailamaProps, EasySell as EasySellCOD, type EasySellCODProps, EcoboostifyShoppableReelUgc$1 as EcoboostifyShoppableReelUgc, type EcoboostifyShoppableReelUgcProps, EcomsendBackInStockAlert$1 as EcomsendBackInStockAlert, type EcomsendBackInStockAlertProps, EssentialAnnouncementBar$1 as EssentialAnnouncementBar, type EssentialAnnouncementBarProps, EssentialCountdownTimerBar$1 as EssentialCountdownTimerBar, type EssentialCountdownTimerBarProps, EstimateDate$1 as EstimateDate, type EstimateDateProps, EstimatedDeliveryDatePlus$1 as EstimatedDeliveryDatePlus, type EstimatedDeliveryDatePlusProps, FastBundleBundlesDiscounts$1 as FastBundleBundlesDiscounts, type FastBundleBundlesDiscountsProps, FeraReviews$1 as FeraReviews, type FeraReviewsProps, FileUpload$1 as FileUpload, type FileUploadProps, FirePush$1 as FirePush, type FirePushProps, FlyBundlesUpsellsFbt$1 as FlyBundlesUpsellsFbt, type FlyBundlesUpsellsFbtProps, FordeerProductLabels$1 as FordeerProductLabels, type FordeerProductLabelsProps, FormCheckbox, type FormCheckboxProps, FormDropdown$1 as FormDropdown, type FormDropdownProps, FormEmail$1 as FormEmail, type FormEmailProps, FormTextArea as FormTextarea, FrequentlyBoughtTogether$1 as FrequentlyBoughtTogether, type FrequentlyBoughtTogetherProps, GloColorSwatchvariantImage$1 as GloColorSwatchvariantImage, type GloColorSwatchvariantImageProps, GloboProductOptionsVariant$1 as GloboProductOptionsVariant, type GloboProductOptionsVariantProps, GoogleReviewsByReputon$1 as GoogleReviewsByReputon, type GoogleReviewsByReputonProps, Growave$1 as Growave, type GrowaveProps, Header, type HeaderProps, Heading$1 as Heading, type HeadingProps, HeroBanner$1 as HeroBanner, type HeroBannerProps, HextomCountdownTimerBar$1 as HextomCountdownTimerBar, type HextomCountdownTimerBarProps, HextomFreeShippingBar$1 as HextomFreeShippingBar, type HextomFreeShippingBarProps, HulkFormBuilder$1 as HulkFormBuilder, type HulkFormBuilderProps, HulkProductOptions$1 as HulkProductOptions, type HulkProductOptionsProps, Icon$1 as Icon, IconList$1 as IconList, IconListHoz$1 as IconListHoz, type IconListHozProps, IconListItem$1 as IconListItem, IconListHozItem as IconListItemHoz, type IconListItemProps$1 as IconListItemProps, type IconListProps$1 as IconListProps, IconListV2$1 as IconListV2, type IconProps, Image$1 as Image, ImageComparison$1 as ImageComparison, type ImageComparisonItem, ImageDetection, type ImageDetectionProps, type ImageProps, type ImgProps, InfiniteOptions$1 as InfiniteOptions, type InfiniteOptionsProps, Input, type InputProps, Instafeed$1 as Instafeed, type InstafeedProps, InstantJudgemeReviews, InstantKlaviyo, InstantLooxReviews, InstantYotpoLoyalty, InstasellShoppableInstagram$1 as InstasellShoppableInstagram, type InstasellShoppableInstagramProps, JudgemeReviews$1 as JudgemeReviews, type JudgemeReviewsProps, JunipProductReviewsUgc$1 as JunipProductReviewsUgc, type JunipProductReviewsUgcProps, KachingBundles$1 as KachingBundles, type KachingBundlesProps, KachingSubscriptionsApp$1 as KachingSubscriptionsApp, type KachingSubscriptionsAppProps, KingProductOptions$1 as KingProductOptions, type KingProductOptionsProps, KiteFreeGiftDiscount$1 as KiteFreeGiftDiscount, type KiteFreeGiftDiscountProps, KlarnaMessaging$1 as KlarnaMessaging, type KlarnaMessagingProps, Klaviyo$1 as Klaviyo, type KlaviyoProps, KoalaBundleQuantityDiscount$1 as KoalaBundleQuantityDiscount, type KoalaBundleQuantityDiscountProps, LaiProductReviews$1 as LaiProductReviews, type LaiProductReviewsProps, Line$2 as Line, type LineProps, Link$1 as Link, type LinkProps, LoloyalLoyaltyReferrals$1 as LoloyalLoyaltyReferrals, type LoloyalLoyaltyReferralsProps, LoopSubscriptions$1 as LoopSubscriptions, type LoopSubscriptionsProps, LooxReviews$1 as LooxReviews, type LooxReviewsProps, MAX_PROGRESS_BAR_HEIGHT, MAX_REMAINING_PERCENT, MIN_PROGRESS_BAR_HEIGHT, MIN_REMAINING_PERCENT, MIN_REMAINING_QUANTITY, Marquee$1 as Marquee, _default$4 as MarqueeItem, type MarqueeItemProps, type MarqueeProps, MaxbundleProductBundles$1 as MaxbundleProductBundles, type MaxbundleProductBundlesProps, MbcBundleVolumeDiscount$1 as MbcBundleVolumeDiscount, type MbcBundleVolumeDiscountProps, Menu, type MenuProps, MobileMenu, Modal, ModernHeader, MyappgurusProductReviews$1 as MyappgurusProductReviews, type MyappgurusProductReviewsProps, NO_PRODUCT_LEFT, Newsletter$1 as Newsletter, type NewsletterProps, Notify as Notice, type NotificationAPI, type NotificationConfig, NotifyBackInStockPreOrder$1 as NotifyBackInStockPreOrder, type NotifyBackInStockPreOrderProps, OUT_OF_STOCK, type ObjectFit$2 as ObjectFit, OkendoReviewsLoyalty$1 as OkendoReviewsLoyalty, type OkendoReviewsLoyaltyProps, Omnisend$1 as Omnisend, type OmnisendProps, Opinew$1 as Opinew, type OpinewProps, Pagination, type PaginationProps, ParcelPanel$1 as ParcelPanel, type ParcelPanelProps, PickyStory$1 as PickyStory, type PickyStoryProps, PostPurchaseAcceptButton, PostPurchaseAdvancedList, PostPurchaseAdvancedListItem, type PostPurchaseAdvancedListProps, Button$1 as PostPurchaseButton, type PostPurchaseButtonProps, CalloutBox as PostPurchaseCalloutBox, CalloutText as PostPurchaseCalloutText, PostPurchaseCountdownTimer, type PostPurchaseCountdownTimerProps, PostPurchaseHeading, PostPurchaseImage, type PostPurchaseImageProps, Line$1 as PostPurchaseLine, type PostPurchaseLineProps, Link as PostPurchaseLink, type PostPurchaseLinkProps, PostPurchaseProductDescription, type PostPurchaseProductDescriptionProps, PostPurchaseProductDiscountTag, type PostPurchaseProductDiscountTagProps, PostPurchaseProductImages, type PostPurchaseProductImagesProps, PostPurchaseProductOffer, type PostPurchaseProductOfferProps$1 as PostPurchaseProductOfferProps, PostPurchaseProductPrice, PostPurchaseProductPriceBreakdown, type PostPurchaseProductPriceBreakdownProps, type PostPurchaseProductPriceProps, PostPurchaseProductQuantity, type PostPurchaseProductQuantityProps, PostPurchaseProductTitle, type PostPurchaseProductTitleProps, PostPurchaseProductVariants, type PostPurchaseProductVariantsProps, Text$2 as PostPurchaseText, type PostPurchaseTextProps, PowerfulContactFormBuilder$1 as PowerfulContactFormBuilder, type PowerfulContactFormBuilderProps, PreorderNowPreOrderPq$1 as PreorderNowPreOrderPq, type PreorderNowPreOrderPqProps, PreorderNowWodPresale$1 as PreorderNowWodPresale, type PreorderNowWodPresaleProps, Product$1 as Product, ProductBadge$1 as ProductBadge, type ProductBadgeProps, ProductBundleDiscount$1 as ProductBundleDiscount, ProductBundleDiscountItem$1 as ProductBundleDiscountItem, type ProductBundleDiscountProps, type ProductBundleItemDiscountProps, ProductButton$1 as ProductButton, type ProductButtonProps, ProductDescription$1 as ProductDescription, type ProductDescriptionProps, ProductImages$3 as ProductImages, type ProductImagesProps, ProductImagesV2, ProductImagesV3, ProductList$2 as ProductList, type ProductListProps, type ProductListProps$1 as ProductListPropsV3, ProductList$3 as ProductListV3, ProductOptionsCustomizer$1 as ProductOptionsCustomizer, type ProductOptionsCustomizerProps, ProductOptionsVariantOption$1 as ProductOptionsVariantOption, type ProductOptionsVariantOptionProps, ProductPrice$1 as ProductPrice, type ProductPriceProps, type ProductPropertiesProps, ProductProperties$1 as ProductPropertyInput, type ProductProps, ProductQuantity$1 as ProductQuantity, type ProductQuantityProps, QuickView as ProductQuickView, ProductReviews$1 as ProductReviews, type ProductReviewsProps, ProductSku$1 as ProductSku, ProductTag$1 as ProductTag, type ProductTagProps, ProductTitle$1 as ProductTitle, type ProductTitleProps, ProductVariants$1 as ProductVariants, type ProductVariantsProps, ProductVendor$1 as ProductVendor, ProductViewMore$1 as ProductViewMore, type ProductViewMoreProps, PumperBundlesVolumeDiscount$1 as PumperBundlesVolumeDiscount, type PumperBundlesVolumeDiscountProps, PushOwl$1 as PushOwl, type PushOwlProps, QUANTITY_SOURCE, QikifyUpsell$1 as QikifyUpsell, type QikifyUpsellProps, REGEX_PAGE_TYPE, Radio, RapiBundleQuantityBreaks$1 as RapiBundleQuantityBreaks, type RapiBundleQuantityBreaksProps, RechargeSubscriptions$1 as RechargeSubscriptions, type RechargeSubscriptionsProps, RecurpaySubscriptionApp$1 as RecurpaySubscriptionApp, type RecurpaySubscriptionAppProps, Releasit$1 as Releasit, type ReleasitProps, RequestQuoteHidePrice$1 as RequestQuoteHidePrice, type RequestQuoteHidePriceProps, ReviewxpoProductReviewsApp$1 as ReviewxpoProductReviewsApp, type ReviewxpoProductReviewsAppProps, Rivyo$1 as Rivyo, type RivyoProps, Root$1 as Root, type RootProps$2 as RootProps, Row$1 as Row, type RowProps, Ryviu$1 as Ryviu, type RyviuProps, SealSubscriptions$1 as SealSubscriptions, type SealSubscriptionsProps, Section$1 as Section, SegunoEmailMarketing$1 as SegunoEmailMarketing, type SegunoEmailMarketingProps, Select, Selleasy$1 as Selleasy, type SelleasyProps, SeoantTrustBadgesIcon$1 as SeoantTrustBadgesIcon, type SeoantTrustBadgesIconProps, ShopPayButton$1 as ShopPayButton, type ShopPayButtonProps, ShopPayInstallments$1 as ShopPayInstallments, ShopifyForms$1 as ShopifyForms, type ShopifyFormsProps, ShopifySubscriptions$1 as ShopifySubscriptions, type ShopifySubscriptionsProps, SimpleBundlesKits$1 as SimpleBundlesKits, type SimpleBundlesKitsProps, SkioSubscriptionsYcS20$1 as SkioSubscriptionsYcS20, type SkioSubscriptionsYcS20Props, type SkuProps, SmartSearchBarAndFilters$1 as SmartSearchBarAndFilters, type SmartSearchBarAndFiltersProps, SproutPlantTreesGrowSales$1 as SproutPlantTreesGrowSales, type SproutPlantTreesGrowSalesProps, Stamped$1 as Stamped, type StampedProps, StellarDeliveryDatePickup$1 as StellarDeliveryDatePickup, type StellarDeliveryDatePickupProps, Sticky$1 as Sticky, StockCounter$1 as StockCounter, SubifySubscriptionsApp$1 as SubifySubscriptionsApp, type SubifySubscriptionsAppProps, SubmitButton$1 as SubmitButton, type SubmitButtonProps, TabItem$1 as TabItem, type TabItemProps, Tabs$1 as Tabs, type TabsProps, TagembedSocialPostReview$1 as TagembedSocialPostReview, type TagembedSocialPostReviewProps, TagshopShoppableVideosUgc$1 as TagshopShoppableVideosUgc, type TagshopShoppableVideosUgcProps, TeeinblueProductPersonalizer$1 as TeeinblueProductPersonalizer, type TeeinblueProductPersonalizerProps, Text$1 as Text, type TextAreaProps, TextField$1 as TextField, type TextFieldProps, TextInput$1 as TextInput, type TextInputProps, type TextProps, TextArea as Textarea, type TextareaProps, ThirdPartySlot$1 as ThirdPartySlot, TrustBadgesBear$1 as TrustBadgesBear, type TrustBadgesBearProps, TrustMe$1 as TrustMe, type TrustMeProps, TrustedsiteTrustBadges$1 as TrustedsiteTrustBadges, type TrustedsiteTrustBadgesProps, Trustoo$1 as Trustoo, type TrustooProps, TrustreviewsProductReviews$1 as TrustreviewsProductReviews, type TrustreviewsProductReviewsProps, TrustshopProductReviews$1 as TrustshopProductReviews, type TrustshopProductReviewsProps, UltimateSalesBoost$1 as UltimateSalesBoost, type UltimateSalesBoostProps, UnlimitedBundlesDiscounts$1 as UnlimitedBundlesDiscounts, type UnlimitedBundlesDiscountsProps, UppromoteAffiliateMarketing$1 as UppromoteAffiliateMarketing, type UppromoteAffiliateMarketingProps, type VendorProps, Video$1 as Video, Vitals$1 as Vitals, type VitalsProps, WhatmoreShoppableVideosreel$1 as WhatmoreShoppableVideosreel, type WhatmoreShoppableVideosreelProps, WideBundle$1 as WideBundle, type WideBundleProps, Wiser$1 as Wiser, type WiserProps, WishlistKing$1 as WishlistKing, type WishlistKingProps, WishlistPlus$1 as WishlistPlus, type WishlistPlusProps, YotpoLoyalty, type YotpoLoyaltyProps, YotpoReviews$1 as YotpoReviews, type YotpoReviewsProps, accordionSetting, articleListSetting, bannerSetting, breadcrumbSetting, _default$2 as builderComponent, buttonSetting, carouselSetting, carouselSettingV3, cartSetting, checkIsOpenPopup, checkIsScrollToTop, codeSetting, collectionSetting, _default$1 as componentSettings, contactFormSetting, convertSizeToWidth, convertUnitToNumber, countdownSetting, couponSetting, dialogSetting, estimateDeliverySetting, filterTruthyObject, filterTruthyStyles, getAllHrefFromString, getDisplayStyle, getDynamicSourceLocales, getInlineCss, getInsertLinkData, getLinkArticle, getLinkData, getLiquidInitData, getLiquidTextContent, getSettingPreloadData, getStaticLocale, getTextDisplayData, gridSetting, handleClickLink, headerSetting, headingSetting, iconListHozSetting, iconListSetting, iconListSettingV2, iconSetting, imageComparisonSetting, imageDetectionSetting, imageSetting, inputSetting, isEmptyObject, isHexTransparent, isLinkedToSalesPage, isShopifyDomain, isTransparentColor, isTransparentRGBA, lineSetting, linkSetting, index_liquid as liquidComponents, marqueeSetting, menuSetting, modalSetting, _default$3 as nextComponent, normalizeMailto, openConfirm, paginationSetting, postPurchaseAdvancedListSetting, postPurchaseButtonSetting, postPurchaseCalloutBoxSetting, postPurchaseCountdownTimerSetting, postPurchaseImageSetting, postPurchaseLineSetting, postPurchaseLinkSetting, postPurchaseProduct1Col, postPurchaseProduct2Col, postPurchaseProductDefault, postPurchaseProductSetting, _default as postPurchaseSettings, postPurchaseTextSetting, productSetting, radioSetting, replaceAllHrefFromString, replaceLinkData, selectSetting, shopPayInstallmentSetting, stickySetting, stockCounterSetting, tabSetting, textSetting, textareaSetting, thirdPartyInstantSetting, thirdPartySetting, thirdPartySlotSetting, transformHighlighTag, transformNumberTag, useNotification, videoSetting, youtubeShortsRegex };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gem-sdk/components",
3
- "version": "12.0.3",
3
+ "version": "13.0.0",
4
4
  "license": "MIT",
5
5
  "sideEffects": false,
6
6
  "main": "dist/cjs/index.js",
@@ -26,9 +26,9 @@
26
26
  "scan-all-text": "rollup -c ./scripts/rollup.config.settings.mjs && node ./scripts/scan-all-text && node ./scripts/scan-all-text"
27
27
  },
28
28
  "devDependencies": {
29
- "@gem-sdk/core": "11.2.0",
30
- "@gem-sdk/styles": "11.2.0",
31
- "@gem-sdk/system": "11.2.0",
29
+ "@gem-sdk/core": "13.0.0",
30
+ "@gem-sdk/styles": "13.0.0",
31
+ "@gem-sdk/system": "13.0.0",
32
32
  "@types/react-transition-group": "^4.4.12",
33
33
  "tsup": "^8.5.0",
34
34
  "postcss-import": "^16.1.1",
@@ -43,7 +43,7 @@
43
43
  },
44
44
  "dependencies": {
45
45
  "@gem-sdk/keen-slider": "^6.8.8",
46
- "@gem-sdk/swiper": "0.0.8",
46
+ "@gem-sdk/swiper": "0.0.10",
47
47
  "node-html-parser": "^6.1.13",
48
48
  "react-transition-group": "^4.4.5",
49
49
  "react-youtube": "^10.1.0"