@gem-sdk/components 12.0.0-dev.78 → 12.0.0-dev.80

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.
@@ -1 +1 @@
1
- "use strict";var core=require("@gem-sdk/core"),Link=require("./link/components/Link.js"),translate=require("./hero-banner/settings/configs/translate.js");const REGEX_PAGE_TYPE=new RegExp(/^\/?(?:collections|pages|products|blogs|checkout|cart|policies)\/?/i),isShopifyDomain=(e,t)=>{let r=new RegExp(/^https?:\/\//i);return e&&!r.test(t)&&REGEX_PAGE_TYPE.test(t)},getLinkArticle=(e,t)=>"scroll-to"==e?t?.link:"{{article.url}}",isTransparentColor=e=>!!e&&(e.startsWith("#")?isHexTransparent(e):e.startsWith("rgb")?isTransparentRGBA(e):"transparent"==e),isTransparentRGBA=e=>{let t=e.replace(/\s/g,"").match(/^rgba?\((\d+),(\d+),(\d+),?([^,\s)]+)?/i)?.map(Number).filter(e=>!isNaN(e))??[0,0,0,1];return 0===t[t.length-1]},isHexTransparent=e=>{let t=!1,r=e.slice(e.startsWith("#")?1:0);3===r.length?r=[...r].map(e=>e+e).join(""):8===r.length&&(t=!0);let i=parseInt(r,16),n=t?255&i:void 0;return 0===n||!!n},youtubeShortsRegex=/^(?:https?:\/\/)?(?:www\.)?youtube\.com\/shorts\/([^"&?/\s]{11})$/i,createTranslateKey=(e,t)=>`g${e}_${t}`,createSettingId=({id:e,index:t,suffix:r})=>e?"number"==typeof t&&t>=0?`${e}_${t}`:r?`${e}_${r}`:e:"",getDynamicSourceLocales=({val:e,uid:t,settingId:r,isLiquid:i,pageContext:n,isCapitalize:o,defaultVal:a="",isReplaceLocationOrigin:l,isReplaceMaxSize:s,isReplaceInventoryQuantity:c})=>{let p=new RegExp(/\{\{.*?\}\}|\{%.*?%\}/).test(e?.toString()??""),g=n?.isTranslateWithLocale?1e3:5e3;if(!r||!e?.toString().trim()||e.toString().length>g||p)return e??a;let u=createTranslateKey(t,r),d=`section.settings.${u}`;return(n?.isTranslateWithLocale&&(d=`'sections.${n.sectionName}.${u}_html' | t`),l&&(d+=" | replace: '$locationOrigin', locationOrigin"),s&&(d+=" | replace: '$max_size', '10MB'"),c&&(d+=" | replace: '<$quantity$>', inventory_quantity | replace: '&lt;$quantity$&gt;', inventory_quantity"),o&&(d=`${d} | downcase`),i)?d:`{{ ${d} }}`},getStaticLocale=(e,t)=>`{{ 'gempages.${e}.${t}' | t }}`,getSettingPreloadData=(e,t)=>`{% if section.settings.section_preload == "false" %}${e} ${t?`{% else %}${t}`:""}{% endif %}`,getHttpUrl=e=>e?e.match(/^https?:\/\//i)?e:`http://${e}`:"";function normalizeMailto(e){if(e.startsWith("mailto:")){let[t,r]=e.split("?");if(r){let i=r.replace(/\+/g,"%20");e=`${t}?${i}`}}return e}const getInsertLinkData=(e,t,r)=>{let i=["#","mailto:","tel:"],n=["product.url"],o=t?.link!==void 0&&""!==t.link,a=t?.link??"",l="/"===a,s=new RegExp(/^(?:https?:\/\/)?[\w.-]+\.[a-z]{2,}/i),c=o&&s.test(a);c&&(a=getHttpUrl(a)),o&&a.toLowerCase().startsWith("mailto:")&&a.includes("+")&&(a=normalizeMailto(a));let p=()=>!!(i.find(e=>a.startsWith(e))||n.find(e=>a.includes(e))),g=c||isShopifyDomain(o,a)||p()||l||isLinkedToSalesPage(t?.type);(isShopifyDomain(o,a)||l)&&(a=t?.isTranslate?"$locationOrigin"+a:"{{ request.origin }}{{ routes.root_url | split: '/' | join: '/' }}"+a);let u=g?t?.isLiquid?"a":Link.default:e,d={href:a,target:t?.target,...t?.noFollow&&{rel:"nofollow"}},f=g?d:o?{...d,type:r}:{type:r};return{Wrap:u,urlData:f,shouldRenderLink:g}},isLinkedToSalesPage=e=>"go-to-sales-page"===e,checkIsScrollToTop=e=>e?.type==="scroll-to"&&e?.link==="#scroll-to-top",checkIsOpenPopup=e=>e?.type==="open-popup"&&e?.link?.startsWith("#el-"),getLinkData=({setting:e,htmlType:t,defaultWrap:r,isLiquid:i=!1,enableImageLink:n=!1})=>{let o=["product.url"],a=["#","mailto:","tel:"],l=e?.link??"",s="/"===l,c=e?.link!==void 0&&""!==e.link,p=new RegExp(/^https?:\/\//i),g=c&&p.test(l);c&&l.toLowerCase().startsWith("mailto:")&&l.includes("+")&&(l=normalizeMailto(l));let u=()=>!!(o.find(e=>l.includes(e))||a.find(e=>l.startsWith(e))),d=n&&(g||isShopifyDomain(c,l)||u()||s||isLinkedToSalesPage(e?.type)),f=l;i&&(isShopifyDomain(c,l)||s)&&(f=e?.isTranslate?"$locationOrigin"+l:"{{ request.origin }}{{ routes.root_url | split: '/' | join: '/' }}"+l);let h=d?i?"a":Link.default:r,m={href:f,target:e?.target,...e?.noFollow&&{rel:"nofollow"}},y=d?m:c?{...m,type:t}:{type:t};return{Wrapper:h,urlData:y,shouldRenderLink:d}},replaceLinkData=(e,t)=>{let r=/<a\s[^>]*>.*?<\/a>/;if(e&&r.test(e)){let r;let i=/<a\s+(?:[^>]*?\s+)?href=["']([^"']*)["'](?:\s+[^>]*?)?(?:target=["']([^"']*)["'])?.*?>.*?<\/a>/gi,n=e.toString();for(;null!==(r=i.exec(n));){let e=r[1],{urlData:i}=getInsertLinkData("",{link:e,isTranslate:t});n=n.replace(r[0],r[0].replace(/(href=['"])([^'"]*)(['"])/i,`$1${i.href}$3`))}return n}return e};function filterTruthyStyles(e){return Object.fromEntries(Object.entries(e||{}).filter(([,e])=>!!e))}function filterTruthyObject(e){return Object.fromEntries(Object.entries(e||{}).filter(([,e])=>!!e))}const getDisplayStyle=(e,t)=>{let r={};return core.DEVICES.forEach(i=>{r={...r,[`--d${"desktop"===i?"":`-${i}`}`]:`${e(i)?"none":t}`}}),r},convertUnitToNumber=(e,t)=>{if(!e)return t;if("number"==typeof e)return e;let r="string"==typeof e?e.replaceAll("px","").replaceAll("%","").replaceAll("rem","").replaceAll("em",""):t;return isNaN(Number(r))?t:Number(r)},getAllHrefFromString=e=>{let t;if(!e)return[];let r=/href="([^"]*)"/g,i=[];for(;null!==(t=r.exec(e));)t[1]&&i.push(t[1]);return i},replaceAllHrefFromString=(e,t)=>{let r;if(!e)return"";let i=/href="([^"]*)"/g,n=0;for(;null!==(r=i.exec(e));)r[1]&&(e=e.replace(r[1],t[n]??""),n++);return e};function isEmptyObject(e){return 0===Object.keys(e).length&&"object"==typeof e}const handleClickLink=(e,t)=>{if("edit"!==t){if(checkIsScrollToTop(e)){window.scrollTo({top:0,behavior:"smooth"});return}if(checkIsOpenPopup(e)){let t=e?.link?.replace("#el-","#");core.globalEvent.dispatch("onOpenDialog",{popupUId:t});return}e?.link?.startsWith("#")&&core.globalEvent.dispatch("onOpenDialog",{popupUId:e?.link})}},getSeoTranslated=({valueTranslate:e,uid:t,settingId:r})=>{if(!t||!translate.HeroBanner?.[r]?.id)return e;let i=getDynamicSourceLocales({val:e,settingId:createSettingId({id:translate.HeroBanner?.[r]?.id}),uid:t});return null!=i?String(i):e},getBackgroundTranslated=({background:e,enableTranslate:t,uid:r,pageContext:i,isTranslateVideo:n=!0})=>{if(!e)return{};if(!t||!r||i?.isPreviewing)return e;let o=core.cloneDeep(e);for(let e in o){let t=o[e];if(t){if(t.image?.src){let n=getDynamicSourceLocales({val:t.image.src,uid:r,settingId:createSettingId({id:"background",suffix:`${e}_image_src`}),pageContext:i});t.image.src=String(n)}if(n){if("youtube"===t.videoType&&t.video){let n=getDynamicSourceLocales({val:t.video,uid:r,settingId:createSettingId({id:"background",suffix:`${e}_video`}),pageContext:i});t.video=String(n)}if("html5"===t.videoType&&t.videoHtml5){let n=getDynamicSourceLocales({val:t.videoHtml5,uid:r,settingId:createSettingId({id:"background",suffix:`${e}_videoHtml5`}),pageContext:i});t.videoHtml5=String(n)}}}}return o},extractProductID=e=>e.replace("gid://shopify/Product/","");exports.REGEX_PAGE_TYPE=REGEX_PAGE_TYPE,exports.checkIsOpenPopup=checkIsOpenPopup,exports.checkIsScrollToTop=checkIsScrollToTop,exports.convertUnitToNumber=convertUnitToNumber,exports.createSettingId=createSettingId,exports.createTranslateKey=createTranslateKey,exports.extractProductID=extractProductID,exports.filterTruthyObject=filterTruthyObject,exports.filterTruthyStyles=filterTruthyStyles,exports.getAllHrefFromString=getAllHrefFromString,exports.getBackgroundTranslated=getBackgroundTranslated,exports.getDisplayStyle=getDisplayStyle,exports.getDynamicSourceLocales=getDynamicSourceLocales,exports.getInsertLinkData=getInsertLinkData,exports.getLinkArticle=getLinkArticle,exports.getLinkData=getLinkData,exports.getSeoTranslated=getSeoTranslated,exports.getSettingPreloadData=getSettingPreloadData,exports.getStaticLocale=getStaticLocale,exports.handleClickLink=handleClickLink,exports.isEmptyObject=isEmptyObject,exports.isHexTransparent=isHexTransparent,exports.isLinkedToSalesPage=isLinkedToSalesPage,exports.isShopifyDomain=isShopifyDomain,exports.isTransparentColor=isTransparentColor,exports.isTransparentRGBA=isTransparentRGBA,exports.normalizeMailto=normalizeMailto,exports.replaceAllHrefFromString=replaceAllHrefFromString,exports.replaceLinkData=replaceLinkData,exports.youtubeShortsRegex=youtubeShortsRegex;
1
+ "use strict";var core=require("@gem-sdk/core"),Link=require("./link/components/Link.js"),translate=require("./hero-banner/settings/configs/translate.js");const REGEX_PAGE_TYPE=new RegExp(/^\/?(?:collections|pages|products|blogs|checkout|cart|policies)\/?/i),isShopifyDomain=(e,t)=>{let r=new RegExp(/^https?:\/\//i);return e&&!r.test(t)&&REGEX_PAGE_TYPE.test(t)},getLinkArticle=(e,t)=>"scroll-to"==e?t?.link:"{{article.url}}",isTransparentColor=e=>!!e&&(e.startsWith("#")?isHexTransparent(e):e.startsWith("rgb")?isTransparentRGBA(e):"transparent"==e),isTransparentRGBA=e=>{let t=e.replace(/\s/g,"").match(/^rgba?\((\d+),(\d+),(\d+),?([^,\s)]+)?/i)?.map(Number).filter(e=>!isNaN(e))??[0,0,0,1];return 0===t[t.length-1]},isHexTransparent=e=>{let t=!1,r=e.slice(e.startsWith("#")?1:0);3===r.length?r=[...r].map(e=>e+e).join(""):8===r.length&&(t=!0);let i=parseInt(r,16),n=t?255&i:void 0;return 0===n||!!n},youtubeShortsRegex=/^(?:https?:\/\/)?(?:www\.)?youtube\.com\/shorts\/([^"&?/\s]{11})$/i,createTranslateKey=(e,t)=>`g${e}_${t}`,createSettingId=({id:e,index:t,suffix:r})=>e?"number"==typeof t&&t>=0?`${e}_${t}`:r?`${e}_${r}`:e:"",getDynamicSourceLocales=({val:e,uid:t,settingId:r,isLiquid:i,pageContext:n,isCapitalize:o,defaultVal:a="",isReplaceLocationOrigin:l,isReplaceMaxSize:s,isReplaceInventoryQuantity:c})=>{let p=new RegExp(/\{\{.*?\}\}|\{%.*?%\}/).test(e?.toString()??""),g=n?.isTranslateWithLocale?1e3:5e3;if(!r||!e?.toString().trim()||e.toString().length>g||p||n?.isPreviewing)return e??a;let u=createTranslateKey(t,r),d=`section.settings.${u}`;return(n?.isTranslateWithLocale&&(d=`'sections.${n.sectionName}.${u}_html' | t`),l&&(d+=" | replace: '$locationOrigin', locationOrigin"),s&&(d+=" | replace: '$max_size', '10MB'"),c&&(d+=" | replace: '<$quantity$>', inventory_quantity | replace: '&lt;$quantity$&gt;', inventory_quantity"),o&&(d=`${d} | downcase`),i)?d:`{{ ${d} }}`},getStaticLocale=(e,t)=>`{{ 'gempages.${e}.${t}' | t }}`,getSettingPreloadData=(e,t)=>`{% if section.settings.section_preload == "false" %}${e} ${t?`{% else %}${t}`:""}{% endif %}`,getHttpUrl=e=>e?e.match(/^https?:\/\//i)?e:`http://${e}`:"";function normalizeMailto(e){if(e.startsWith("mailto:")){let[t,r]=e.split("?");if(r){let i=r.replace(/\+/g,"%20");e=`${t}?${i}`}}return e}const getInsertLinkData=(e,t,r)=>{let i=["#","mailto:","tel:"],n=["product.url"],o=t?.link!==void 0&&""!==t.link,a=t?.link??"",l="/"===a,s=new RegExp(/^(?:https?:\/\/)?[\w.-]+\.[a-z]{2,}/i),c=o&&s.test(a);c&&(a=getHttpUrl(a)),o&&a.toLowerCase().startsWith("mailto:")&&a.includes("+")&&(a=normalizeMailto(a));let p=()=>!!(i.find(e=>a.startsWith(e))||n.find(e=>a.includes(e))),g=c||isShopifyDomain(o,a)||p()||l||isLinkedToSalesPage(t?.type);(isShopifyDomain(o,a)||l)&&(a=t?.isTranslate?"$locationOrigin"+a:"{{ request.origin }}{{ routes.root_url | split: '/' | join: '/' }}"+a);let u=g?t?.isLiquid?"a":Link.default:e,d={href:a,target:t?.target,...t?.noFollow&&{rel:"nofollow"}},f=g?d:o?{...d,type:r}:{type:r};return{Wrap:u,urlData:f,shouldRenderLink:g}},isLinkedToSalesPage=e=>"go-to-sales-page"===e,checkIsScrollToTop=e=>e?.type==="scroll-to"&&e?.link==="#scroll-to-top",checkIsOpenPopup=e=>e?.type==="open-popup"&&e?.link?.startsWith("#el-"),getLinkData=({setting:e,htmlType:t,defaultWrap:r,isLiquid:i=!1,enableImageLink:n=!1})=>{let o=["product.url"],a=["#","mailto:","tel:"],l=e?.link??"",s="/"===l,c=e?.link!==void 0&&""!==e.link,p=new RegExp(/^https?:\/\//i),g=c&&p.test(l);c&&l.toLowerCase().startsWith("mailto:")&&l.includes("+")&&(l=normalizeMailto(l));let u=()=>!!(o.find(e=>l.includes(e))||a.find(e=>l.startsWith(e))),d=n&&(g||isShopifyDomain(c,l)||u()||s||isLinkedToSalesPage(e?.type)),f=l;i&&(isShopifyDomain(c,l)||s)&&(f=e?.isTranslate?"$locationOrigin"+l:"{{ request.origin }}{{ routes.root_url | split: '/' | join: '/' }}"+l);let h=d?i?"a":Link.default:r,m={href:f,target:e?.target,...e?.noFollow&&{rel:"nofollow"}},y=d?m:c?{...m,type:t}:{type:t};return{Wrapper:h,urlData:y,shouldRenderLink:d}},replaceLinkData=(e,t)=>{let r=/<a\s[^>]*>.*?<\/a>/;if(e&&r.test(e)){let r;let i=/<a\s+(?:[^>]*?\s+)?href=["']([^"']*)["'](?:\s+[^>]*?)?(?:target=["']([^"']*)["'])?.*?>.*?<\/a>/gi,n=e.toString();for(;null!==(r=i.exec(n));){let e=r[1],{urlData:i}=getInsertLinkData("",{link:e,isTranslate:t});n=n.replace(r[0],r[0].replace(/(href=['"])([^'"]*)(['"])/i,`$1${i.href}$3`))}return n}return e};function filterTruthyStyles(e){return Object.fromEntries(Object.entries(e||{}).filter(([,e])=>!!e))}function filterTruthyObject(e){return Object.fromEntries(Object.entries(e||{}).filter(([,e])=>!!e))}const getDisplayStyle=(e,t)=>{let r={};return core.DEVICES.forEach(i=>{r={...r,[`--d${"desktop"===i?"":`-${i}`}`]:`${e(i)?"none":t}`}}),r},convertUnitToNumber=(e,t)=>{if(!e)return t;if("number"==typeof e)return e;let r="string"==typeof e?e.replaceAll("px","").replaceAll("%","").replaceAll("rem","").replaceAll("em",""):t;return isNaN(Number(r))?t:Number(r)},getAllHrefFromString=e=>{let t;if(!e)return[];let r=/href="([^"]*)"/g,i=[];for(;null!==(t=r.exec(e));)t[1]&&i.push(t[1]);return i},replaceAllHrefFromString=(e,t)=>{let r;if(!e)return"";let i=/href="([^"]*)"/g,n=0;for(;null!==(r=i.exec(e));)r[1]&&(e=e.replace(r[1],t[n]??""),n++);return e};function isEmptyObject(e){return 0===Object.keys(e).length&&"object"==typeof e}const handleClickLink=(e,t)=>{if("edit"!==t){if(checkIsScrollToTop(e)){window.scrollTo({top:0,behavior:"smooth"});return}if(checkIsOpenPopup(e)){let t=e?.link?.replace("#el-","#");core.globalEvent.dispatch("onOpenDialog",{popupUId:t});return}e?.link?.startsWith("#")&&core.globalEvent.dispatch("onOpenDialog",{popupUId:e?.link})}},getSeoTranslated=({valueTranslate:e,uid:t,settingId:r})=>{if(!t||!translate.HeroBanner?.[r]?.id)return e;let i=getDynamicSourceLocales({val:e,settingId:createSettingId({id:translate.HeroBanner?.[r]?.id}),uid:t});return null!=i?String(i):e},getBackgroundTranslated=({background:e,enableTranslate:t,uid:r,pageContext:i,isTranslateVideo:n=!0})=>{if(!e)return{};if(!t||!r||i?.isPreviewing)return e;let o=core.cloneDeep(e);for(let e in o){let t=o[e];if(t){if(t.image?.src){let n=getDynamicSourceLocales({val:t.image.src,uid:r,settingId:createSettingId({id:"background",suffix:`${e}_image_src`}),pageContext:i});t.image.src=String(n)}if(n){if("youtube"===t.videoType&&t.video){let n=getDynamicSourceLocales({val:t.video,uid:r,settingId:createSettingId({id:"background",suffix:`${e}_video`}),pageContext:i});t.video=String(n)}if("html5"===t.videoType&&t.videoHtml5){let n=getDynamicSourceLocales({val:t.videoHtml5,uid:r,settingId:createSettingId({id:"background",suffix:`${e}_videoHtml5`}),pageContext:i});t.videoHtml5=String(n)}}}}return o},extractProductID=e=>e.replace("gid://shopify/Product/","");exports.REGEX_PAGE_TYPE=REGEX_PAGE_TYPE,exports.checkIsOpenPopup=checkIsOpenPopup,exports.checkIsScrollToTop=checkIsScrollToTop,exports.convertUnitToNumber=convertUnitToNumber,exports.createSettingId=createSettingId,exports.createTranslateKey=createTranslateKey,exports.extractProductID=extractProductID,exports.filterTruthyObject=filterTruthyObject,exports.filterTruthyStyles=filterTruthyStyles,exports.getAllHrefFromString=getAllHrefFromString,exports.getBackgroundTranslated=getBackgroundTranslated,exports.getDisplayStyle=getDisplayStyle,exports.getDynamicSourceLocales=getDynamicSourceLocales,exports.getInsertLinkData=getInsertLinkData,exports.getLinkArticle=getLinkArticle,exports.getLinkData=getLinkData,exports.getSeoTranslated=getSeoTranslated,exports.getSettingPreloadData=getSettingPreloadData,exports.getStaticLocale=getStaticLocale,exports.handleClickLink=handleClickLink,exports.isEmptyObject=isEmptyObject,exports.isHexTransparent=isHexTransparent,exports.isLinkedToSalesPage=isLinkedToSalesPage,exports.isShopifyDomain=isShopifyDomain,exports.isTransparentColor=isTransparentColor,exports.isTransparentRGBA=isTransparentRGBA,exports.normalizeMailto=normalizeMailto,exports.replaceAllHrefFromString=replaceAllHrefFromString,exports.replaceLinkData=replaceLinkData,exports.youtubeShortsRegex=youtubeShortsRegex;
@@ -1,4 +1,4 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var styles=require("./common/styles.js"),helpers$1=require("./common/helpers.js"),core=require("@gem-sdk/core"),system=require("@gem-sdk/system"),helpers=require("../../../helpers.js"),getButtonDynamicSourceLocales=require("./helpers/getButtonDynamicSourceLocales.js"),SoldOutButton_liquid=require("./SoldOutButton.liquid.js"),AddToCartButton_liquid=require("./AddToCartButton.liquid.js");const ProductButton=t=>{let{setting:e,builderProps:s,style:r,styles:o,pageContext:a}=t,{wrapStyle:i,restStyle:l}=styles.getSplitStyle(r),{outOfStockButtonLabel:n,unavailableButtonLabel:u,variantSelectionRequiredMessage:c}=getButtonDynamicSourceLocales.getButtonDynamicSourceLocales({setting:e,pageContext:a,builderProps:s}),{urlData:d}=helpers.getInsertLinkData("",e?.actionEffect==="open-cart-drawer"?{link:"/cart",target:"_self"}:e?.customURL),p=system.createStateOrContext(helpers$1.getGPProductButtonState(o,e)),g=()=>AddToCartButton_liquid.AddToCartButton({...t,style:l}),y=()=>SoldOutButton_liquid.SoldOutButton({...t,style:l,label:n}),m=()=>system.If(core.isLocalEnv,`<script ${helpers.getSettingPreloadData('class="gps-link" delay',"src")}="{{ 'gp-product-button-v7-5.js' | asset_url }}" defer="defer"></script>`,`<script ${helpers.getSettingPreloadData('class="gps-link" delay',"src")}="${core.baseAssetURL}/assets-v2/gp-product-button-v7-5.js?v={{ shop.metafields.GEMPAGES.ASSETS_VERSION }}" defer="defer"></script>`);return core.template`
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var styles=require("./common/styles.js"),helpers$1=require("./common/helpers.js"),core=require("@gem-sdk/core"),system=require("@gem-sdk/system"),helpers=require("../../../helpers.js"),getButtonDynamicSourceLocales=require("./helpers/getButtonDynamicSourceLocales.js"),SoldOutButton_liquid=require("./SoldOutButton.liquid.js"),AddToCartButton_liquid=require("./AddToCartButton.liquid.js");const ProductButton=t=>{let{setting:e,builderProps:s,style:r,styles:o,pageContext:a}=t,{wrapStyle:i,restStyle:l}=styles.getSplitStyle(r),{outOfStockButtonLabel:n,unavailableButtonLabel:u,variantSelectionRequiredMessage:c,successMessage:d,errorMessage:p}=getButtonDynamicSourceLocales.getButtonDynamicSourceLocales({setting:e,pageContext:a,builderProps:s}),{urlData:g}=helpers.getInsertLinkData("",e?.actionEffect==="open-cart-drawer"?{link:"/cart",target:"_self"}:e?.customURL),y=system.createStateOrContext(helpers$1.getGPProductButtonState({styles:o,setting:e,successMessage:d,errorMessage:p})),m=()=>AddToCartButton_liquid.AddToCartButton({...t,style:l}),S=()=>SoldOutButton_liquid.SoldOutButton({...t,style:l,label:n}),q=()=>system.If(core.isLocalEnv,`<script ${helpers.getSettingPreloadData('class="gps-link" delay',"src")}="{{ 'gp-product-button-v7-5.js' | asset_url }}" defer="defer"></script>`,`<script ${helpers.getSettingPreloadData('class="gps-link" delay',"src")}="${core.baseAssetURL}/assets-v2/gp-product-button-v7-5.js?v={{ shop.metafields.GEMPAGES.ASSETS_VERSION }}" defer="defer"></script>`);return core.template`
2
2
  ${system.Liquid("{%- assign total_combinations = 1 -%}")}
3
3
  ${system.LiquidFor("option in product.options_with_values","{%- assign total_combinations = total_combinations | times: option.values.size -%}")}
4
4
  {%- liquid
@@ -8,16 +8,16 @@
8
8
  <gp-product-button
9
9
  style="${i}"
10
10
  gp-data-wrapper="true"
11
- gp-href="${d.href}"
11
+ gp-href="${g.href}"
12
12
  class="gp-product-button"
13
13
  gp-label-out-of-stock="${n}"
14
14
  gp-label-unavailable="${u}"
15
15
  data-variant-selection-required-message="${c}"
16
16
  gp-enable-third-partycart="{{shop.metafields.GEMPAGES.enableThirdPartyCart}}"
17
17
  >
18
- <script gp-data type="application/json">${JSON.stringify(p).replaceAll("'","&#039;")}</script>
19
- ${g()}
20
- ${y()}
18
+ <script gp-data type="application/json">${JSON.stringify(y).replaceAll("'","&#039;")}</script>
19
+ ${m()}
20
+ ${S()}
21
21
  </gp-product-button>
22
- ${m()}
22
+ ${q()}
23
23
  `};exports.default=ProductButton;
@@ -1 +1 @@
1
- "use strict";var constants=require("./constants.js");const checkIconVisibility=e=>e?.enableIcon===!0,getRenderRegularPriceSettings=e=>({lineThrough:!1,typo:removeColorFromTypo(e?.priceTypo)}),getRenderComparePriceSettings=e=>({lineThrough:!0,typo:removeColorFromTypo(e?.compareAtPriceTypo),opacityPrice:e?.opacityPrice}),getGPProductButtonState=(e,t)=>({styles:{errorTypo:e?.errorTypo,successTypo:e?.successTypo},setting:{errorType:t?.errorType,actionEffect:t?.actionEffect,enableMessage:t?.enableMessage,label:t?.label?.replaceAll("'","&#039;"),errorMessage:t?.errorMessage?.replaceAll("'","&#039;"),successMessage:t?.successMessage?.replaceAll("'","&#039;"),outOfStockLabel:t?.outOfStockLabel?.replaceAll("'","&#039;"),customURL:{link:t?.customURL?.link?.replaceAll("'","&#039;"),target:t?.customURL?.target}},variantID:"{{variant.id}}",disabled:"{{variant.available}}",totalVariant:"{{total_combinations}}"}),renderSeparator=e=>{let t=e??"horizontal-line";return({dot:constants.SEPARATOR.DOT,"vertical-line":constants.SEPARATOR.VERTICAL_LINE,"horizontal-line":constants.SEPARATOR.HORIZONTAL_LINE})[t]??constants.SEPARATOR.HORIZONTAL_LINE},removeColorFromTypo=e=>(e?.attrs&&e?.attrs.color&&delete e.attrs.color,e);exports.checkIconVisibility=checkIconVisibility,exports.getGPProductButtonState=getGPProductButtonState,exports.getRenderComparePriceSettings=getRenderComparePriceSettings,exports.getRenderRegularPriceSettings=getRenderRegularPriceSettings,exports.renderSeparator=renderSeparator;
1
+ "use strict";var constants=require("./constants.js");const checkIconVisibility=e=>e?.enableIcon===!0,getRenderRegularPriceSettings=e=>({lineThrough:!1,typo:removeColorFromTypo(e?.priceTypo)}),getRenderComparePriceSettings=e=>({lineThrough:!0,typo:removeColorFromTypo(e?.compareAtPriceTypo),opacityPrice:e?.opacityPrice}),getGPProductButtonState=({styles:e,setting:t,successMessage:r,errorMessage:o})=>({styles:{errorTypo:e?.errorTypo,successTypo:e?.successTypo},setting:{errorType:t?.errorType,actionEffect:t?.actionEffect,enableMessage:t?.enableMessage,label:t?.label?.replaceAll("'","&#039;"),errorMessage:o??t?.errorMessage?.replaceAll("'","&#039;"),successMessage:r??t?.successMessage?.replaceAll("'","&#039;"),outOfStockLabel:t?.outOfStockLabel?.replaceAll("'","&#039;"),customURL:{link:t?.customURL?.link?.replaceAll("'","&#039;"),target:t?.customURL?.target}},variantID:"{{variant.id}}",disabled:"{{variant.available}}",totalVariant:"{{total_combinations}}"}),renderSeparator=e=>{let t=e??"horizontal-line";return({dot:constants.SEPARATOR.DOT,"vertical-line":constants.SEPARATOR.VERTICAL_LINE,"horizontal-line":constants.SEPARATOR.HORIZONTAL_LINE})[t]??constants.SEPARATOR.HORIZONTAL_LINE},removeColorFromTypo=e=>(e?.attrs&&e?.attrs.color&&delete e.attrs.color,e);exports.checkIconVisibility=checkIconVisibility,exports.getGPProductButtonState=getGPProductButtonState,exports.getRenderComparePriceSettings=getRenderComparePriceSettings,exports.getRenderRegularPriceSettings=getRenderRegularPriceSettings,exports.renderSeparator=renderSeparator;
@@ -1 +1 @@
1
- "use strict";var helpers=require("../../../../helpers.js"),translate=require("../../../settings/product-button/configs/translate.js");const getButtonDynamicSourceLocales=({setting:e,builderProps:t,pageContext:a})=>{let r={pageContext:a,uid:t?.uid},n=(e,t)=>{let a=helpers.getDynamicSourceLocales({...r,settingId:helpers.createSettingId({id:translate.ProductButton[e]?.id}),val:t??""});return a};return{outOfStockButtonLabel:n("outOfStockLabel",e?.outOfStockLabel),unavailableButtonLabel:n("unavailableLabel","Unavailable"),variantSelectionRequiredMessage:n("variantSelectionRequiredMessage",e?.variantSelectionRequiredMessage)}};exports.getButtonDynamicSourceLocales=getButtonDynamicSourceLocales;
1
+ "use strict";var helpers=require("../../../../helpers.js"),translate=require("../../../settings/product-button/configs/translate.js");const getButtonDynamicSourceLocales=({setting:e,builderProps:t,pageContext:s})=>{let a={pageContext:s,uid:t?.uid},r=(e,t)=>{let s=helpers.getDynamicSourceLocales({...a,settingId:helpers.createSettingId({id:translate.ProductButton[e]?.id}),val:t??""});return s};return{outOfStockButtonLabel:r("outOfStockLabel",e?.outOfStockLabel),unavailableButtonLabel:r("unavailableLabel","Unavailable"),variantSelectionRequiredMessage:r("variantSelectionRequiredMessage",e?.variantSelectionRequiredMessage),successMessage:r("successMessage",e?.successMessage),errorMessage:r("errorMessage",e?.errorMessage)}};exports.getButtonDynamicSourceLocales=getButtonDynamicSourceLocales;
@@ -1 +1 @@
1
- "use strict";const ProductButton={label:{id:"label"},outOfStockLabel:{id:"outOfStockLabel"},unavailableLabel:{id:"unavailableLabel"},variantSelectionRequiredMessage:{id:"variantSelectionRequiredMessage"}};exports.ProductButton=ProductButton;
1
+ "use strict";const ProductButton={label:{id:"label"},outOfStockLabel:{id:"outOfStockLabel"},unavailableLabel:{id:"unavailableLabel"},variantSelectionRequiredMessage:{id:"variantSelectionRequiredMessage"},successMessage:{id:"successMessage"},errorMessage:{id:"errorMessage"}};exports.ProductButton=ProductButton;
@@ -1 +1 @@
1
- import{DEVICES as e,globalEvent as t,cloneDeep as r}from"@gem-sdk/core";import i from"./link/components/Link.js";import{HeroBanner as n}from"./hero-banner/settings/configs/translate.js";let REGEX_PAGE_TYPE=new RegExp(/^\/?(?:collections|pages|products|blogs|checkout|cart|policies)\/?/i),isShopifyDomain=(e,t)=>{let r=new RegExp(/^https?:\/\//i);return e&&!r.test(t)&&REGEX_PAGE_TYPE.test(t)},getLinkArticle=(e,t)=>"scroll-to"==e?t?.link:"{{article.url}}",isTransparentColor=e=>!!e&&(e.startsWith("#")?isHexTransparent(e):e.startsWith("rgb")?isTransparentRGBA(e):"transparent"==e),isTransparentRGBA=e=>{let t=e.replace(/\s/g,"").match(/^rgba?\((\d+),(\d+),(\d+),?([^,\s)]+)?/i)?.map(Number).filter(e=>!isNaN(e))??[0,0,0,1];return 0===t[t.length-1]},isHexTransparent=e=>{let t=!1,r=e.slice(e.startsWith("#")?1:0);3===r.length?r=[...r].map(e=>e+e).join(""):8===r.length&&(t=!0);let i=parseInt(r,16),n=t?255&i:void 0;return 0===n||!!n},youtubeShortsRegex=/^(?:https?:\/\/)?(?:www\.)?youtube\.com\/shorts\/([^"&?/\s]{11})$/i,createTranslateKey=(e,t)=>`g${e}_${t}`,createSettingId=({id:e,index:t,suffix:r})=>e?"number"==typeof t&&t>=0?`${e}_${t}`:r?`${e}_${r}`:e:"",getDynamicSourceLocales=({val:e,uid:t,settingId:r,isLiquid:i,pageContext:n,isCapitalize:l,defaultVal:a="",isReplaceLocationOrigin:o,isReplaceMaxSize:s,isReplaceInventoryQuantity:c})=>{let p=new RegExp(/\{\{.*?\}\}|\{%.*?%\}/).test(e?.toString()??""),g=n?.isTranslateWithLocale?1e3:5e3;if(!r||!e?.toString().trim()||e.toString().length>g||p)return e??a;let u=createTranslateKey(t,r),f=`section.settings.${u}`;return(n?.isTranslateWithLocale&&(f=`'sections.${n.sectionName}.${u}_html' | t`),o&&(f+=" | replace: '$locationOrigin', locationOrigin"),s&&(f+=" | replace: '$max_size', '10MB'"),c&&(f+=" | replace: '<$quantity$>', inventory_quantity | replace: '&lt;$quantity$&gt;', inventory_quantity"),l&&(f=`${f} | downcase`),i)?f:`{{ ${f} }}`},getStaticLocale=(e,t)=>`{{ 'gempages.${e}.${t}' | t }}`,getSettingPreloadData=(e,t)=>`{% if section.settings.section_preload == "false" %}${e} ${t?`{% else %}${t}`:""}{% endif %}`,getHttpUrl=e=>e?e.match(/^https?:\/\//i)?e:`http://${e}`:"";function normalizeMailto(e){if(e.startsWith("mailto:")){let[t,r]=e.split("?");if(r){let i=r.replace(/\+/g,"%20");e=`${t}?${i}`}}return e}let getInsertLinkData=(e,t,r)=>{let n=["#","mailto:","tel:"],l=["product.url"],a=t?.link!==void 0&&""!==t.link,o=t?.link??"",s="/"===o,c=new RegExp(/^(?:https?:\/\/)?[\w.-]+\.[a-z]{2,}/i),p=a&&c.test(o);p&&(o=getHttpUrl(o)),a&&o.toLowerCase().startsWith("mailto:")&&o.includes("+")&&(o=normalizeMailto(o));let g=()=>!!(n.find(e=>o.startsWith(e))||l.find(e=>o.includes(e))),u=p||isShopifyDomain(a,o)||g()||s||isLinkedToSalesPage(t?.type);(isShopifyDomain(a,o)||s)&&(o=t?.isTranslate?"$locationOrigin"+o:"{{ request.origin }}{{ routes.root_url | split: '/' | join: '/' }}"+o);let f=u?t?.isLiquid?"a":i:e,d={href:o,target:t?.target,...t?.noFollow&&{rel:"nofollow"}},m=u?d:a?{...d,type:r}:{type:r};return{Wrap:f,urlData:m,shouldRenderLink:u}},isLinkedToSalesPage=e=>"go-to-sales-page"===e,checkIsScrollToTop=e=>e?.type==="scroll-to"&&e?.link==="#scroll-to-top",checkIsOpenPopup=e=>e?.type==="open-popup"&&e?.link?.startsWith("#el-"),getLinkData=({setting:e,htmlType:t,defaultWrap:r,isLiquid:n=!1,enableImageLink:l=!1})=>{let a=["product.url"],o=["#","mailto:","tel:"],s=e?.link??"",c="/"===s,p=e?.link!==void 0&&""!==e.link,g=new RegExp(/^https?:\/\//i),u=p&&g.test(s);p&&s.toLowerCase().startsWith("mailto:")&&s.includes("+")&&(s=normalizeMailto(s));let f=()=>!!(a.find(e=>s.includes(e))||o.find(e=>s.startsWith(e))),d=l&&(u||isShopifyDomain(p,s)||f()||c||isLinkedToSalesPage(e?.type)),m=s;n&&(isShopifyDomain(p,s)||c)&&(m=e?.isTranslate?"$locationOrigin"+s:"{{ request.origin }}{{ routes.root_url | split: '/' | join: '/' }}"+s);let h=d?n?"a":i:r,y={href:m,target:e?.target,...e?.noFollow&&{rel:"nofollow"}},S=d?y:p?{...y,type:t}:{type:t};return{Wrapper:h,urlData:S,shouldRenderLink:d}},replaceLinkData=(e,t)=>{let r=/<a\s[^>]*>.*?<\/a>/;if(e&&r.test(e)){let r;let i=/<a\s+(?:[^>]*?\s+)?href=["']([^"']*)["'](?:\s+[^>]*?)?(?:target=["']([^"']*)["'])?.*?>.*?<\/a>/gi,n=e.toString();for(;null!==(r=i.exec(n));){let e=r[1],{urlData:i}=getInsertLinkData("",{link:e,isTranslate:t});n=n.replace(r[0],r[0].replace(/(href=['"])([^'"]*)(['"])/i,`$1${i.href}$3`))}return n}return e};function filterTruthyStyles(e){return Object.fromEntries(Object.entries(e||{}).filter(([,e])=>!!e))}function filterTruthyObject(e){return Object.fromEntries(Object.entries(e||{}).filter(([,e])=>!!e))}let getDisplayStyle=(t,r)=>{let i={};return e.forEach(e=>{i={...i,[`--d${"desktop"===e?"":`-${e}`}`]:`${t(e)?"none":r}`}}),i},convertUnitToNumber=(e,t)=>{if(!e)return t;if("number"==typeof e)return e;let r="string"==typeof e?e.replaceAll("px","").replaceAll("%","").replaceAll("rem","").replaceAll("em",""):t;return isNaN(Number(r))?t:Number(r)},getAllHrefFromString=e=>{let t;if(!e)return[];let r=/href="([^"]*)"/g,i=[];for(;null!==(t=r.exec(e));)t[1]&&i.push(t[1]);return i},replaceAllHrefFromString=(e,t)=>{let r;if(!e)return"";let i=/href="([^"]*)"/g,n=0;for(;null!==(r=i.exec(e));)r[1]&&(e=e.replace(r[1],t[n]??""),n++);return e};function isEmptyObject(e){return 0===Object.keys(e).length&&"object"==typeof e}let handleClickLink=(e,r)=>{if("edit"!==r){if(checkIsScrollToTop(e)){window.scrollTo({top:0,behavior:"smooth"});return}if(checkIsOpenPopup(e)){let r=e?.link?.replace("#el-","#");t.dispatch("onOpenDialog",{popupUId:r});return}e?.link?.startsWith("#")&&t.dispatch("onOpenDialog",{popupUId:e?.link})}},getSeoTranslated=({valueTranslate:e,uid:t,settingId:r})=>{if(!t||!n?.[r]?.id)return e;let i=getDynamicSourceLocales({val:e,settingId:createSettingId({id:n?.[r]?.id}),uid:t});return null!=i?String(i):e},getBackgroundTranslated=({background:e,enableTranslate:t,uid:i,pageContext:n,isTranslateVideo:l=!0})=>{if(!e)return{};if(!t||!i||n?.isPreviewing)return e;let a=r(e);for(let e in a){let t=a[e];if(t){if(t.image?.src){let r=getDynamicSourceLocales({val:t.image.src,uid:i,settingId:createSettingId({id:"background",suffix:`${e}_image_src`}),pageContext:n});t.image.src=String(r)}if(l){if("youtube"===t.videoType&&t.video){let r=getDynamicSourceLocales({val:t.video,uid:i,settingId:createSettingId({id:"background",suffix:`${e}_video`}),pageContext:n});t.video=String(r)}if("html5"===t.videoType&&t.videoHtml5){let r=getDynamicSourceLocales({val:t.videoHtml5,uid:i,settingId:createSettingId({id:"background",suffix:`${e}_videoHtml5`}),pageContext:n});t.videoHtml5=String(r)}}}}return a},extractProductID=e=>e.replace("gid://shopify/Product/","");export{REGEX_PAGE_TYPE,checkIsOpenPopup,checkIsScrollToTop,convertUnitToNumber,createSettingId,createTranslateKey,extractProductID,filterTruthyObject,filterTruthyStyles,getAllHrefFromString,getBackgroundTranslated,getDisplayStyle,getDynamicSourceLocales,getInsertLinkData,getLinkArticle,getLinkData,getSeoTranslated,getSettingPreloadData,getStaticLocale,handleClickLink,isEmptyObject,isHexTransparent,isLinkedToSalesPage,isShopifyDomain,isTransparentColor,isTransparentRGBA,normalizeMailto,replaceAllHrefFromString,replaceLinkData,youtubeShortsRegex};
1
+ import{DEVICES as e,globalEvent as t,cloneDeep as r}from"@gem-sdk/core";import i from"./link/components/Link.js";import{HeroBanner as n}from"./hero-banner/settings/configs/translate.js";let REGEX_PAGE_TYPE=new RegExp(/^\/?(?:collections|pages|products|blogs|checkout|cart|policies)\/?/i),isShopifyDomain=(e,t)=>{let r=new RegExp(/^https?:\/\//i);return e&&!r.test(t)&&REGEX_PAGE_TYPE.test(t)},getLinkArticle=(e,t)=>"scroll-to"==e?t?.link:"{{article.url}}",isTransparentColor=e=>!!e&&(e.startsWith("#")?isHexTransparent(e):e.startsWith("rgb")?isTransparentRGBA(e):"transparent"==e),isTransparentRGBA=e=>{let t=e.replace(/\s/g,"").match(/^rgba?\((\d+),(\d+),(\d+),?([^,\s)]+)?/i)?.map(Number).filter(e=>!isNaN(e))??[0,0,0,1];return 0===t[t.length-1]},isHexTransparent=e=>{let t=!1,r=e.slice(e.startsWith("#")?1:0);3===r.length?r=[...r].map(e=>e+e).join(""):8===r.length&&(t=!0);let i=parseInt(r,16),n=t?255&i:void 0;return 0===n||!!n},youtubeShortsRegex=/^(?:https?:\/\/)?(?:www\.)?youtube\.com\/shorts\/([^"&?/\s]{11})$/i,createTranslateKey=(e,t)=>`g${e}_${t}`,createSettingId=({id:e,index:t,suffix:r})=>e?"number"==typeof t&&t>=0?`${e}_${t}`:r?`${e}_${r}`:e:"",getDynamicSourceLocales=({val:e,uid:t,settingId:r,isLiquid:i,pageContext:n,isCapitalize:l,defaultVal:a="",isReplaceLocationOrigin:o,isReplaceMaxSize:s,isReplaceInventoryQuantity:c})=>{let g=new RegExp(/\{\{.*?\}\}|\{%.*?%\}/).test(e?.toString()??""),p=n?.isTranslateWithLocale?1e3:5e3;if(!r||!e?.toString().trim()||e.toString().length>p||g||n?.isPreviewing)return e??a;let u=createTranslateKey(t,r),f=`section.settings.${u}`;return(n?.isTranslateWithLocale&&(f=`'sections.${n.sectionName}.${u}_html' | t`),o&&(f+=" | replace: '$locationOrigin', locationOrigin"),s&&(f+=" | replace: '$max_size', '10MB'"),c&&(f+=" | replace: '<$quantity$>', inventory_quantity | replace: '&lt;$quantity$&gt;', inventory_quantity"),l&&(f=`${f} | downcase`),i)?f:`{{ ${f} }}`},getStaticLocale=(e,t)=>`{{ 'gempages.${e}.${t}' | t }}`,getSettingPreloadData=(e,t)=>`{% if section.settings.section_preload == "false" %}${e} ${t?`{% else %}${t}`:""}{% endif %}`,getHttpUrl=e=>e?e.match(/^https?:\/\//i)?e:`http://${e}`:"";function normalizeMailto(e){if(e.startsWith("mailto:")){let[t,r]=e.split("?");if(r){let i=r.replace(/\+/g,"%20");e=`${t}?${i}`}}return e}let getInsertLinkData=(e,t,r)=>{let n=["#","mailto:","tel:"],l=["product.url"],a=t?.link!==void 0&&""!==t.link,o=t?.link??"",s="/"===o,c=new RegExp(/^(?:https?:\/\/)?[\w.-]+\.[a-z]{2,}/i),g=a&&c.test(o);g&&(o=getHttpUrl(o)),a&&o.toLowerCase().startsWith("mailto:")&&o.includes("+")&&(o=normalizeMailto(o));let p=()=>!!(n.find(e=>o.startsWith(e))||l.find(e=>o.includes(e))),u=g||isShopifyDomain(a,o)||p()||s||isLinkedToSalesPage(t?.type);(isShopifyDomain(a,o)||s)&&(o=t?.isTranslate?"$locationOrigin"+o:"{{ request.origin }}{{ routes.root_url | split: '/' | join: '/' }}"+o);let f=u?t?.isLiquid?"a":i:e,d={href:o,target:t?.target,...t?.noFollow&&{rel:"nofollow"}},m=u?d:a?{...d,type:r}:{type:r};return{Wrap:f,urlData:m,shouldRenderLink:u}},isLinkedToSalesPage=e=>"go-to-sales-page"===e,checkIsScrollToTop=e=>e?.type==="scroll-to"&&e?.link==="#scroll-to-top",checkIsOpenPopup=e=>e?.type==="open-popup"&&e?.link?.startsWith("#el-"),getLinkData=({setting:e,htmlType:t,defaultWrap:r,isLiquid:n=!1,enableImageLink:l=!1})=>{let a=["product.url"],o=["#","mailto:","tel:"],s=e?.link??"",c="/"===s,g=e?.link!==void 0&&""!==e.link,p=new RegExp(/^https?:\/\//i),u=g&&p.test(s);g&&s.toLowerCase().startsWith("mailto:")&&s.includes("+")&&(s=normalizeMailto(s));let f=()=>!!(a.find(e=>s.includes(e))||o.find(e=>s.startsWith(e))),d=l&&(u||isShopifyDomain(g,s)||f()||c||isLinkedToSalesPage(e?.type)),m=s;n&&(isShopifyDomain(g,s)||c)&&(m=e?.isTranslate?"$locationOrigin"+s:"{{ request.origin }}{{ routes.root_url | split: '/' | join: '/' }}"+s);let h=d?n?"a":i:r,y={href:m,target:e?.target,...e?.noFollow&&{rel:"nofollow"}},S=d?y:g?{...y,type:t}:{type:t};return{Wrapper:h,urlData:S,shouldRenderLink:d}},replaceLinkData=(e,t)=>{let r=/<a\s[^>]*>.*?<\/a>/;if(e&&r.test(e)){let r;let i=/<a\s+(?:[^>]*?\s+)?href=["']([^"']*)["'](?:\s+[^>]*?)?(?:target=["']([^"']*)["'])?.*?>.*?<\/a>/gi,n=e.toString();for(;null!==(r=i.exec(n));){let e=r[1],{urlData:i}=getInsertLinkData("",{link:e,isTranslate:t});n=n.replace(r[0],r[0].replace(/(href=['"])([^'"]*)(['"])/i,`$1${i.href}$3`))}return n}return e};function filterTruthyStyles(e){return Object.fromEntries(Object.entries(e||{}).filter(([,e])=>!!e))}function filterTruthyObject(e){return Object.fromEntries(Object.entries(e||{}).filter(([,e])=>!!e))}let getDisplayStyle=(t,r)=>{let i={};return e.forEach(e=>{i={...i,[`--d${"desktop"===e?"":`-${e}`}`]:`${t(e)?"none":r}`}}),i},convertUnitToNumber=(e,t)=>{if(!e)return t;if("number"==typeof e)return e;let r="string"==typeof e?e.replaceAll("px","").replaceAll("%","").replaceAll("rem","").replaceAll("em",""):t;return isNaN(Number(r))?t:Number(r)},getAllHrefFromString=e=>{let t;if(!e)return[];let r=/href="([^"]*)"/g,i=[];for(;null!==(t=r.exec(e));)t[1]&&i.push(t[1]);return i},replaceAllHrefFromString=(e,t)=>{let r;if(!e)return"";let i=/href="([^"]*)"/g,n=0;for(;null!==(r=i.exec(e));)r[1]&&(e=e.replace(r[1],t[n]??""),n++);return e};function isEmptyObject(e){return 0===Object.keys(e).length&&"object"==typeof e}let handleClickLink=(e,r)=>{if("edit"!==r){if(checkIsScrollToTop(e)){window.scrollTo({top:0,behavior:"smooth"});return}if(checkIsOpenPopup(e)){let r=e?.link?.replace("#el-","#");t.dispatch("onOpenDialog",{popupUId:r});return}e?.link?.startsWith("#")&&t.dispatch("onOpenDialog",{popupUId:e?.link})}},getSeoTranslated=({valueTranslate:e,uid:t,settingId:r})=>{if(!t||!n?.[r]?.id)return e;let i=getDynamicSourceLocales({val:e,settingId:createSettingId({id:n?.[r]?.id}),uid:t});return null!=i?String(i):e},getBackgroundTranslated=({background:e,enableTranslate:t,uid:i,pageContext:n,isTranslateVideo:l=!0})=>{if(!e)return{};if(!t||!i||n?.isPreviewing)return e;let a=r(e);for(let e in a){let t=a[e];if(t){if(t.image?.src){let r=getDynamicSourceLocales({val:t.image.src,uid:i,settingId:createSettingId({id:"background",suffix:`${e}_image_src`}),pageContext:n});t.image.src=String(r)}if(l){if("youtube"===t.videoType&&t.video){let r=getDynamicSourceLocales({val:t.video,uid:i,settingId:createSettingId({id:"background",suffix:`${e}_video`}),pageContext:n});t.video=String(r)}if("html5"===t.videoType&&t.videoHtml5){let r=getDynamicSourceLocales({val:t.videoHtml5,uid:i,settingId:createSettingId({id:"background",suffix:`${e}_videoHtml5`}),pageContext:n});t.videoHtml5=String(r)}}}}return a},extractProductID=e=>e.replace("gid://shopify/Product/","");export{REGEX_PAGE_TYPE,checkIsOpenPopup,checkIsScrollToTop,convertUnitToNumber,createSettingId,createTranslateKey,extractProductID,filterTruthyObject,filterTruthyStyles,getAllHrefFromString,getBackgroundTranslated,getDisplayStyle,getDynamicSourceLocales,getInsertLinkData,getLinkArticle,getLinkData,getSeoTranslated,getSettingPreloadData,getStaticLocale,handleClickLink,isEmptyObject,isHexTransparent,isLinkedToSalesPage,isShopifyDomain,isTransparentColor,isTransparentRGBA,normalizeMailto,replaceAllHrefFromString,replaceLinkData,youtubeShortsRegex};
@@ -1,4 +1,4 @@
1
- import{getSplitStyle as t}from"./common/styles.js";import{getGPProductButtonState as o}from"./common/helpers.js";import{template as s,isLocalEnv as e,baseAssetURL as r}from"@gem-sdk/core";import{createStateOrContext as a,Liquid as i,LiquidFor as l,If as n}from"@gem-sdk/system";import{getInsertLinkData as p,getSettingPreloadData as c}from"../../../helpers.js";import{getButtonDynamicSourceLocales as u}from"./helpers/getButtonDynamicSourceLocales.js";import{SoldOutButton as d}from"./SoldOutButton.liquid.js";import{AddToCartButton as m}from"./AddToCartButton.liquid.js";let ProductButton=f=>{let{setting:g,builderProps:y,style:b,styles:$,pageContext:v}=f,{wrapStyle:_,restStyle:h}=t(b),{outOfStockButtonLabel:j,unavailableButtonLabel:S,variantSelectionRequiredMessage:k}=u({setting:g,pageContext:v,builderProps:y}),{urlData:E}=p("",g?.actionEffect==="open-cart-drawer"?{link:"/cart",target:"_self"}:g?.customURL),q=a(o($,g)),A=()=>m({...f,style:h}),B=()=>d({...f,style:h,label:j}),P=()=>n(e,`<script ${c('class="gps-link" delay',"src")}="{{ 'gp-product-button-v7-5.js' | asset_url }}" defer="defer"></script>`,`<script ${c('class="gps-link" delay',"src")}="${r}/assets-v2/gp-product-button-v7-5.js?v={{ shop.metafields.GEMPAGES.ASSETS_VERSION }}" defer="defer"></script>`);return s`
1
+ import{getSplitStyle as t}from"./common/styles.js";import{getGPProductButtonState as o}from"./common/helpers.js";import{template as s,isLocalEnv as e,baseAssetURL as r}from"@gem-sdk/core";import{createStateOrContext as a,Liquid as i,LiquidFor as l,If as n}from"@gem-sdk/system";import{getInsertLinkData as p,getSettingPreloadData as c}from"../../../helpers.js";import{getButtonDynamicSourceLocales as u}from"./helpers/getButtonDynamicSourceLocales.js";import{SoldOutButton as d}from"./SoldOutButton.liquid.js";import{AddToCartButton as m}from"./AddToCartButton.liquid.js";let ProductButton=f=>{let{setting:g,builderProps:y,style:b,styles:$,pageContext:v}=f,{wrapStyle:_,restStyle:h}=t(b),{outOfStockButtonLabel:j,unavailableButtonLabel:S,variantSelectionRequiredMessage:k,successMessage:E,errorMessage:q}=u({setting:g,pageContext:v,builderProps:y}),{urlData:A}=p("",g?.actionEffect==="open-cart-drawer"?{link:"/cart",target:"_self"}:g?.customURL),B=a(o({styles:$,setting:g,successMessage:E,errorMessage:q})),P=()=>m({...f,style:h}),G=()=>d({...f,style:h,label:j}),w=()=>n(e,`<script ${c('class="gps-link" delay',"src")}="{{ 'gp-product-button-v7-5.js' | asset_url }}" defer="defer"></script>`,`<script ${c('class="gps-link" delay',"src")}="${r}/assets-v2/gp-product-button-v7-5.js?v={{ shop.metafields.GEMPAGES.ASSETS_VERSION }}" defer="defer"></script>`);return s`
2
2
  ${i("{%- assign total_combinations = 1 -%}")}
3
3
  ${l("option in product.options_with_values","{%- assign total_combinations = total_combinations | times: option.values.size -%}")}
4
4
  {%- liquid
@@ -8,16 +8,16 @@ import{getSplitStyle as t}from"./common/styles.js";import{getGPProductButtonStat
8
8
  <gp-product-button
9
9
  style="${_}"
10
10
  gp-data-wrapper="true"
11
- gp-href="${E.href}"
11
+ gp-href="${A.href}"
12
12
  class="gp-product-button"
13
13
  gp-label-out-of-stock="${j}"
14
14
  gp-label-unavailable="${S}"
15
15
  data-variant-selection-required-message="${k}"
16
16
  gp-enable-third-partycart="{{shop.metafields.GEMPAGES.enableThirdPartyCart}}"
17
17
  >
18
- <script gp-data type="application/json">${JSON.stringify(q).replaceAll("'","&#039;")}</script>
19
- ${A()}
20
- ${B()}
18
+ <script gp-data type="application/json">${JSON.stringify(B).replaceAll("'","&#039;")}</script>
19
+ ${P()}
20
+ ${G()}
21
21
  </gp-product-button>
22
- ${P()}
22
+ ${w()}
23
23
  `};export{ProductButton as default};
@@ -1 +1 @@
1
- import{SEPARATOR as e}from"./constants.js";let checkIconVisibility=e=>e?.enableIcon===!0,getRenderRegularPriceSettings=e=>({lineThrough:!1,typo:removeColorFromTypo(e?.priceTypo)}),getRenderComparePriceSettings=e=>({lineThrough:!0,typo:removeColorFromTypo(e?.compareAtPriceTypo),opacityPrice:e?.opacityPrice}),getGPProductButtonState=(e,r)=>({styles:{errorTypo:e?.errorTypo,successTypo:e?.successTypo},setting:{errorType:r?.errorType,actionEffect:r?.actionEffect,enableMessage:r?.enableMessage,label:r?.label?.replaceAll("'","&#039;"),errorMessage:r?.errorMessage?.replaceAll("'","&#039;"),successMessage:r?.successMessage?.replaceAll("'","&#039;"),outOfStockLabel:r?.outOfStockLabel?.replaceAll("'","&#039;"),customURL:{link:r?.customURL?.link?.replaceAll("'","&#039;"),target:r?.customURL?.target}},variantID:"{{variant.id}}",disabled:"{{variant.available}}",totalVariant:"{{total_combinations}}"}),renderSeparator=r=>{let t=r??"horizontal-line";return({dot:e.DOT,"vertical-line":e.VERTICAL_LINE,"horizontal-line":e.HORIZONTAL_LINE})[t]??e.HORIZONTAL_LINE},removeColorFromTypo=e=>(e?.attrs&&e?.attrs.color&&delete e.attrs.color,e);export{checkIconVisibility,getGPProductButtonState,getRenderComparePriceSettings,getRenderRegularPriceSettings,renderSeparator};
1
+ import{SEPARATOR as e}from"./constants.js";let checkIconVisibility=e=>e?.enableIcon===!0,getRenderRegularPriceSettings=e=>({lineThrough:!1,typo:removeColorFromTypo(e?.priceTypo)}),getRenderComparePriceSettings=e=>({lineThrough:!0,typo:removeColorFromTypo(e?.compareAtPriceTypo),opacityPrice:e?.opacityPrice}),getGPProductButtonState=({styles:e,setting:r,successMessage:t,errorMessage:o})=>({styles:{errorTypo:e?.errorTypo,successTypo:e?.successTypo},setting:{errorType:r?.errorType,actionEffect:r?.actionEffect,enableMessage:r?.enableMessage,label:r?.label?.replaceAll("'","&#039;"),errorMessage:o??r?.errorMessage?.replaceAll("'","&#039;"),successMessage:t??r?.successMessage?.replaceAll("'","&#039;"),outOfStockLabel:r?.outOfStockLabel?.replaceAll("'","&#039;"),customURL:{link:r?.customURL?.link?.replaceAll("'","&#039;"),target:r?.customURL?.target}},variantID:"{{variant.id}}",disabled:"{{variant.available}}",totalVariant:"{{total_combinations}}"}),renderSeparator=r=>{let t=r??"horizontal-line";return({dot:e.DOT,"vertical-line":e.VERTICAL_LINE,"horizontal-line":e.HORIZONTAL_LINE})[t]??e.HORIZONTAL_LINE},removeColorFromTypo=e=>(e?.attrs&&e?.attrs.color&&delete e.attrs.color,e);export{checkIconVisibility,getGPProductButtonState,getRenderComparePriceSettings,getRenderRegularPriceSettings,renderSeparator};
@@ -1 +1 @@
1
- import{getDynamicSourceLocales as e,createSettingId as t}from"../../../../helpers.js";import{ProductButton as a}from"../../../settings/product-button/configs/translate.js";let getButtonDynamicSourceLocales=({setting:o,builderProps:i,pageContext:l})=>{let n={pageContext:l,uid:i?.uid},r=(o,i)=>{let l=e({...n,settingId:t({id:a[o]?.id}),val:i??""});return l};return{outOfStockButtonLabel:r("outOfStockLabel",o?.outOfStockLabel),unavailableButtonLabel:r("unavailableLabel","Unavailable"),variantSelectionRequiredMessage:r("variantSelectionRequiredMessage",o?.variantSelectionRequiredMessage)}};export{getButtonDynamicSourceLocales};
1
+ import{getDynamicSourceLocales as e,createSettingId as t}from"../../../../helpers.js";import{ProductButton as s}from"../../../settings/product-button/configs/translate.js";let getButtonDynamicSourceLocales=({setting:a,builderProps:r,pageContext:o})=>{let i={pageContext:o,uid:r?.uid},u=(a,r)=>{let o=e({...i,settingId:t({id:s[a]?.id}),val:r??""});return o};return{outOfStockButtonLabel:u("outOfStockLabel",a?.outOfStockLabel),unavailableButtonLabel:u("unavailableLabel","Unavailable"),variantSelectionRequiredMessage:u("variantSelectionRequiredMessage",a?.variantSelectionRequiredMessage),successMessage:u("successMessage",a?.successMessage),errorMessage:u("errorMessage",a?.errorMessage)}};export{getButtonDynamicSourceLocales};
@@ -1 +1 @@
1
- let ProductButton={label:{id:"label"},outOfStockLabel:{id:"outOfStockLabel"},unavailableLabel:{id:"unavailableLabel"},variantSelectionRequiredMessage:{id:"variantSelectionRequiredMessage"}};export{ProductButton};
1
+ let ProductButton={label:{id:"label"},outOfStockLabel:{id:"outOfStockLabel"},unavailableLabel:{id:"unavailableLabel"},variantSelectionRequiredMessage:{id:"variantSelectionRequiredMessage"},successMessage:{id:"successMessage"},errorMessage:{id:"errorMessage"}};export{ProductButton};
@@ -3790,6 +3790,7 @@ type ProductButtonProps = BasePropsWrap<ProductButtonSettingProps, ProductButton
3790
3790
  style?: React.CSSProperties;
3791
3791
  children?: React.ReactNode;
3792
3792
  };
3793
+ type ProductButtonPropsTranslateKeys = keyof (ProductButtonSettingProps & ProductButtonStyleProps);
3793
3794
  type Separator = 'horizontal-line' | 'vertical-line' | 'dot';
3794
3795
  type ButtonLayout = 'cart-only' | 'cart-icon' | 'cart-price' | 'cart-price-icon' | 'cart-full' | 'icon-only';
3795
3796
 
@@ -8087,7 +8088,7 @@ declare const ProductTag: TranslateObject<keyof ProductTagSidebarSettingProps['s
8087
8088
 
8088
8089
  declare const ProductDescription: TranslateObject<'viewMoreText' | 'viewLessText'>;
8089
8090
 
8090
- declare const ProductButton: TranslateObject<'label' | 'outOfStockLabel' | 'unavailableLabel' | 'variantSelectionRequiredMessage'>;
8091
+ declare const ProductButton: TranslateObject<ProductButtonPropsTranslateKeys>;
8091
8092
 
8092
8093
  declare const ProductBadge: TranslateObject<'displayContent'>;
8093
8094
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gem-sdk/components",
3
- "version": "12.0.0-dev.78",
3
+ "version": "12.0.0-dev.80",
4
4
  "license": "MIT",
5
5
  "sideEffects": false,
6
6
  "main": "dist/cjs/index.js",
@@ -26,7 +26,7 @@
26
26
  "i18n:extract": "rollup -c ./scripts/rollup.config.settings.mjs && node ./scripts/translate/extract-texts-to-locales.js && node ./scripts/translate/en-keys-usage.js"
27
27
  },
28
28
  "devDependencies": {
29
- "@gem-sdk/core": "12.0.0-dev.78",
29
+ "@gem-sdk/core": "12.0.0-dev.79",
30
30
  "@gem-sdk/styles": "12.0.0-dev.71",
31
31
  "@gem-sdk/system": "12.0.0-dev.53",
32
32
  "@types/react-transition-group": "^4.4.12",