@gem-sdk/components 4.0.0-staging.1180 → 4.0.0-staging.1181

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"),helpers=require("../../link/common/helpers.js"),React=require("react");const useArticleLink=()=>{let e=core.useArticleStore(e=>e.article),r=core.useShopStore(e=>e.storefrontUrl),{isPreviewSharePageMode:t}=core.useRenderMode(),o=e?.handle?helpers.urlJoin("blogs",e?.blog?.handle??"",e.handle):"#",s=React.useMemo(()=>{if(t)return"javascript:void(0)";if(!r)return"#";let s=new URL(r);return e?`${s.protocol}//${s.host}/${o}`:"#"},[r,e,o,t]);return{shopifyArticleLink:s}};exports.useArticleLink=useArticleLink;
1
+ "use strict";var core=require("@gem-sdk/core"),helpers=require("../../link/common/helpers.js"),React=require("react");const useArticleLink=()=>{let e=core.useArticleStore(e=>e.article),r=core.useShopStore(e=>e.storefrontUrl),{isPreviewSharePageMode:t}=core.useRenderMode(),o=e?.handle?helpers.urlJoin("blogs",e?.blog?.handle??"",e.handle):"#",l=React.useMemo(()=>{if(t)return`/articles/${e?.handle}`;if(!r)return"#";let l=new URL(r);return e?`${l.protocol}//${l.host}/${o}`:"#"},[r,e,o,t]);return{shopifyArticleLink:l}};exports.useArticleLink=useArticleLink;
@@ -1,2 +1,2 @@
1
1
  'use client';
2
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var jsxRuntime=require("react/jsx-runtime"),core=require("@gem-sdk/core"),styles=require("./common/styles.js"),classes=require("./common/classes.js"),system=require("@gem-sdk/system"),helpers=require("./common/helpers.js"),useDescription=require("../../hooks/useDescription.js");const DescriptionNotFoundString="This collection does not have a description",CollectionDescription=({setting:e,builderProps:s,pageContext:t,advanced:l})=>{let r=core.useCollection(),{ref:i,open:a,isShowViewMore:n,handleToggleShowMore:c,hasLineClamp:o}=useDescription.useGpDescription(e),m=r?.descriptionHtml,u=system.createClass(classes.getClassContainerCollectionDes({setting:e})),y=system.createClass(classes.getClassEmptyCollectionDes()),p=system.createClass(classes.getClassButtonViewMore({setting:e})),d=system.createClass(classes.getDescriptionClasses({advanced:l})),x=system.createClass({...classes.getShowMoreIconClasses(),...a?{"gp-rotate-180":!0}:{}}),j=system.createClass(classes.getShowMoreTextClasses()),C=system.createClass(classes.getClassPreBuilt()),g=system.createStyle({...styles.getDefaultStyleCollectionDes({setting:e}),...a?{}:core.makeStyleResponsive("line-clamp",core.makeLineClamp(e?.lineClamp,e?.hasLineClamp))}),h=system.createStyle({...styles.getStyleDefaultViewMore(e)}),S=helpers.getViewLessText({setting:e,builderProps:s,pageContext:t,type:"react"}),D=helpers.getViewMoreText({setting:e,builderProps:s,pageContext:t,type:"react"}),R=system.createAttr({"data-id":`${s?.uid}`}),I=system.createAttr({"data-gp-text":""}),{gpDescriptionCss:M,textDescriptionCss:f}=styles.getStaticCss();return jsxRuntime.jsx(jsxRuntime.Fragment,{children:system.If(!m,jsxRuntime.jsx("div",{className:y,dangerouslySetInnerHTML:{__html:"This collection does not have a description"}}),jsxRuntime.jsxs("div",{...R,className:d,children:[jsxRuntime.jsx("style",{children:f}),jsxRuntime.jsx("style",{children:M}),jsxRuntime.jsx("div",{className:C}),jsxRuntime.jsx("div",{ref:i,className:u,style:g,dangerouslySetInnerHTML:{__html:r?.descriptionHtml??""},...I}),system.If(o&&n,jsxRuntime.jsxs("button",{type:"button",className:p,style:h,onClick:c,children:[jsxRuntime.jsx("span",{className:j,children:system.If(a,S?.toString()??"",D?.toString()??"")}),system.If(e?.enableViewMoreIcon,jsxRuntime.jsx("span",{className:x,dangerouslySetInnerHTML:{__html:helpers.ICON_SVG}}),"")]}),"")]}))})};exports.default=CollectionDescription;
2
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var jsxRuntime=require("react/jsx-runtime"),core=require("@gem-sdk/core"),styles=require("./common/styles.js"),classes=require("./common/classes.js"),system=require("@gem-sdk/system"),helpers=require("./common/helpers.js"),useDescription=require("../../hooks/useDescription.js");const DescriptionNotFoundString="This collection does not have a description",CollectionDescription=({setting:e,builderProps:s,pageContext:t,advanced:l})=>{let{isPreviewSharePageMode:r}=core.useRenderMode(),i=core.useCollection(),{ref:a,open:n,isShowViewMore:o,handleToggleShowMore:c,hasLineClamp:m}=useDescription.useGpDescription(e),u=i?.descriptionHtml,y=system.createClass(classes.getClassContainerCollectionDes({setting:e})),p=system.createClass(classes.getClassEmptyCollectionDes()),d=system.createClass(classes.getClassButtonViewMore({setting:e})),x=system.createClass(classes.getDescriptionClasses({advanced:l})),j=system.createClass({...classes.getShowMoreIconClasses(),...n?{"gp-rotate-180":!0}:{}}),C=system.createClass(classes.getShowMoreTextClasses()),g=system.createClass(classes.getClassPreBuilt()),h=system.createStyle({...styles.getDefaultStyleCollectionDes({setting:e}),...n?{}:core.makeStyleResponsive("line-clamp",core.makeLineClamp(e?.lineClamp,e?.hasLineClamp))}),S=system.createStyle({...styles.getStyleDefaultViewMore(e)}),R=helpers.getViewLessText({setting:e,builderProps:s,pageContext:t,type:"react"}),D=helpers.getViewMoreText({setting:e,builderProps:s,pageContext:t,type:"react"}),M=system.createAttr({"data-id":`${s?.uid}`}),I=system.createAttr({"data-gp-text":""}),{gpDescriptionCss:f,textDescriptionCss:v}=styles.getStaticCss(),N=r?"":jsxRuntime.jsx("div",{className:p,dangerouslySetInnerHTML:{__html:"This collection does not have a description"}});return jsxRuntime.jsx(jsxRuntime.Fragment,{children:system.If(!u,N,jsxRuntime.jsxs("div",{...M,className:x,children:[jsxRuntime.jsx("style",{children:v}),jsxRuntime.jsx("style",{children:f}),jsxRuntime.jsx("div",{className:g}),jsxRuntime.jsx("div",{ref:a,className:y,style:h,dangerouslySetInnerHTML:{__html:i?.descriptionHtml??""},...I}),system.If(m&&o,jsxRuntime.jsxs("button",{type:"button",className:d,style:S,onClick:c,children:[jsxRuntime.jsx("span",{className:C,children:system.If(n,R?.toString()??"",D?.toString()??"")}),system.If(e?.enableViewMoreIcon,jsxRuntime.jsx("span",{className:j,dangerouslySetInnerHTML:{__html:helpers.ICON_SVG}}),"")]}),"")]}))})};exports.default=CollectionDescription;
@@ -1 +1 @@
1
- "use strict";function normalize(e){let r=[];if(0===e.length)return"";if("string"!=typeof e[0])throw TypeError("Url must be a string. Received "+e[0]);e[0].match(/^[^/:]+:\/*$/)&&e.length>1&&(e[0]=e.shift()+e[0]),e[0].match(/^file:\/\/\//)?e[0]=e[0].replace(/^([^/:]+):\/*/,"$1:///"):e[0]=e[0].replace(/^([^/:]+):\/*/,"$1://");for(let t=0;t<e.length;t++){let i=e[t];if("string"!=typeof i)throw TypeError("Url must be a string. Received "+i);""!==i&&(t>0&&(i=i.replace(/^\/+/,"")),i=t<e.length-1?i.replace(/\/+$/,""):i.replace(/\/+$/,"/"),r.push(i))}let t=r.join("/");t=t.replace(/\/(\?|&|#[^!])/g,"$1");let i=t.split("?");return i.shift()+(i.length>0?"?":"")+i.join("&")}function urlJoin(...e){let r=Array.from(Array.isArray(e[0])?e[0]:e);return normalize(r)}function isExternalLink(e){return!!e&&/^(https?:\/\/|\/\/|\/)/i.test(e)}exports.isExternalLink=isExternalLink,exports.urlJoin=urlJoin;
1
+ "use strict";function normalize(e){let r=[];if(0===e.length)return"";if("string"!=typeof e[0])throw TypeError("Url must be a string. Received "+e[0]);e[0].match(/^[^/:]+:\/*$/)&&e.length>1&&(e[0]=e.shift()+e[0]),e[0].match(/^file:\/\/\//)?e[0]=e[0].replace(/^([^/:]+):\/*/,"$1:///"):e[0]=e[0].replace(/^([^/:]+):\/*/,"$1://");for(let t=0;t<e.length;t++){let l=e[t];if("string"!=typeof l)throw TypeError("Url must be a string. Received "+l);""!==l&&(t>0&&(l=l.replace(/^\/+/,"")),l=t<e.length-1?l.replace(/\/+$/,""):l.replace(/\/+$/,"/"),r.push(l))}let t=r.join("/");t=t.replace(/\/(\?|&|#[^!])/g,"$1");let l=t.split("?");return l.shift()+(l.length>0?"?":"")+l.join("&")}function urlJoin(...e){let r=Array.from(Array.isArray(e[0])?e[0]:e);return normalize(r)}exports.urlJoin=urlJoin;
@@ -1,2 +1,2 @@
1
1
  'use client';
2
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var jsxRuntime=require("react/jsx-runtime"),Link=require("next/link"),core=require("@gem-sdk/core");const CustomLink=({children:e,dataId:r,...t})=>{let{isPreviewSharePageMode:i}=core.useRenderMode(),n={title:t.title,"data-id":r};return i?jsxRuntime.jsx("a",{...n,...t,href:t.href?.toString()??"javascript:void(0)",children:e}):jsxRuntime.jsx(Link,{...n,...t,children:e})};exports.default=CustomLink;
2
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var jsxRuntime=require("react/jsx-runtime"),Link=require("next/link"),core=require("@gem-sdk/core"),helpers=require("../../helpers.js");const CustomLink=({children:e,dataId:r,...t})=>{let{isPreviewSharePageMode:i}=core.useRenderMode(),n={title:t.title,"data-id":r},s=t.href?.toString(),l=()=>{helpers.handleClickLink({link:s,type:s?.startsWith("#el")?"open-popup":void 0})};return i?jsxRuntime.jsx("a",{...n,...t,href:s,onClick:l,children:e}):jsxRuntime.jsx(Link,{...n,...t,children:e})};exports.default=CustomLink;
@@ -1,2 +1,2 @@
1
1
  'use client';
2
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var jsxRuntime=require("react/jsx-runtime"),React=require("react"),CustomLink=require("./CustomLink.js"),ProductLink=require("./ProductLink.js"),core=require("@gem-sdk/core"),helpers=require("../common/helpers.js");const Link=({setting:e,className:r,style:t,children:i,title:o,dataId:s})=>{let{isPreviewSharePageMode:u}=core.useRenderMode(),l=React.useMemo(()=>e?.type==="product"?ProductLink.default:CustomLink.default,[e?.type]),a={};l==CustomLink.default&&(a.title=o);let n=u&&helpers.isExternalLink(e?.href)?"javascript:void(0)":e?.href;return jsxRuntime.jsx(l,{...a,"data-id":s,target:e?.target,rel:e?.noFollow?"nofollow":void 0,"aria-label":e?.label,href:n,className:r,style:t,children:i})};exports.default=Link;
2
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var jsxRuntime=require("react/jsx-runtime"),React=require("react"),CustomLink=require("./CustomLink.js"),ProductLink=require("./ProductLink.js");const Link=({setting:e,className:t,style:r,children:u,title:i,dataId:o})=>{let a=React.useMemo(()=>e?.type==="product"?ProductLink.default:CustomLink.default,[e?.type]),l={};return a==CustomLink.default&&(l.title=i),jsxRuntime.jsx(a,{...l,"data-id":o,target:e?.target,rel:e?.noFollow?"nofollow":void 0,"aria-label":e?.label,href:e?.href,className:t,style:r,children:u})};exports.default=Link;
@@ -1,2 +1,2 @@
1
1
  'use client';
2
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var jsxRuntime=require("react/jsx-runtime"),core=require("@gem-sdk/core");const ProductLink=({children:e,...r})=>{let t=core.useProduct(),{isPreviewSharePageMode:o}=core.useRenderMode();console.log("\uD83D\uDE80 ~ ProductLink ~ isPreviewSharePageMode:",o);let i=o?"javascript:void(0)":t?`/products/${t.handle}`:"#";return jsxRuntime.jsx("a",{title:t?.title,href:i,...r,children:core.isEmptyChildren(e)?t?t.title:null:e})};exports.default=ProductLink;
2
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var jsxRuntime=require("react/jsx-runtime"),core=require("@gem-sdk/core");const ProductLink=({children:e,...r})=>{let t=core.useProduct();return jsxRuntime.jsx("a",{title:t?.title,href:t?`/products/${t.handle}`:"#",...r,children:core.isEmptyChildren(e)?t?t.title:null:e})};exports.default=ProductLink;
@@ -1,2 +1,2 @@
1
1
  'use client';
2
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var jsxRuntime=require("react/jsx-runtime"),Link=require("next/link"),core=require("@gem-sdk/core"),helpers=require("../../../link/common/helpers.js"),Text=require("../../../text/components/Text.js"),system=require("@gem-sdk/system"),helpers$1=require("./common/helpers.js");const ProductTitle=e=>{let{setting:t,builderProps:r}=e,{isPreviewSharePageMode:s}=core.useRenderMode(),i=core.useProduct(),o=s?"javascript:void(0)":i?.handle?helpers.urlJoin("/products",i.handle):"#",l=i?.baseID?.replace("gid://shopify/Product/",""),u=core.useEditorMode(),d=()=>jsxRuntime.jsx(Text.default,{...helpers$1.getTextProps(e,i?.title)}),c={href:o,title:i?.title},n=t?.linkProduct,p=system.createClass({"gp-product-title-link-wrapper":!0}),m=system.createAttr({id:`shopify-text-element-${r?.uid}`,...l&&{"data-product-id":l}});return jsxRuntime.jsx("div",{..."edit"===u&&m,children:system.Unless(!!i,"",system.If(n,jsxRuntime.jsx(Link,{...c,className:p,children:d()}),d()))})};exports.default=ProductTitle;
2
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var jsxRuntime=require("react/jsx-runtime"),Link=require("next/link"),core=require("@gem-sdk/core"),helpers=require("../../../link/common/helpers.js"),Text=require("../../../text/components/Text.js"),system=require("@gem-sdk/system"),helpers$1=require("./common/helpers.js");const ProductTitle=e=>{let{setting:t,builderProps:r}=e,{isPreviewSharePageMode:s}=core.useRenderMode(),i=core.useProduct(),l=s?`/products/${i?.handle}`:i?.handle?helpers.urlJoin("/products",i.handle):"#",o=i?.baseID?.replace("gid://shopify/Product/",""),u=core.useEditorMode(),d=()=>jsxRuntime.jsx(Text.default,{...helpers$1.getTextProps(e,i?.title)}),n={href:l,title:i?.title},c=t?.linkProduct,p=system.createClass({"gp-product-title-link-wrapper":!0}),m=system.createAttr({id:`shopify-text-element-${r?.uid}`,...o&&{"data-product-id":o}});return jsxRuntime.jsx("div",{..."edit"===u&&m,children:system.Unless(!!i,"",system.If(c,jsxRuntime.jsx(Link,{...n,className:p,children:d()}),d()))})};exports.default=ProductTitle;
@@ -1 +1 @@
1
- import{useArticleStore as r,useShopStore as e,useRenderMode as t}from"@gem-sdk/core";import{urlJoin as o}from"../../link/common/helpers.js";import{useMemo as l}from"react";let useArticleLink=()=>{let i=r(r=>r.article),n=e(r=>r.storefrontUrl),{isPreviewSharePageMode:m}=t(),s=i?.handle?o("blogs",i?.blog?.handle??"",i.handle):"#",c=l(()=>{if(m)return"javascript:void(0)";if(!n)return"#";let r=new URL(n);return i?`${r.protocol}//${r.host}/${s}`:"#"},[n,i,s,m]);return{shopifyArticleLink:c}};export{useArticleLink};
1
+ import{useArticleStore as r,useShopStore as e,useRenderMode as t}from"@gem-sdk/core";import{urlJoin as o}from"../../link/common/helpers.js";import{useMemo as l}from"react";let useArticleLink=()=>{let n=r(r=>r.article),i=e(r=>r.storefrontUrl),{isPreviewSharePageMode:m}=t(),s=n?.handle?o("blogs",n?.blog?.handle??"",n.handle):"#",c=l(()=>{if(m)return`/articles/${n?.handle}`;if(!i)return"#";let r=new URL(i);return n?`${r.protocol}//${r.host}/${s}`:"#"},[i,n,s,m]);return{shopifyArticleLink:c}};export{useArticleLink};
@@ -1,2 +1,2 @@
1
1
  'use client';
2
- import{jsx as e,Fragment as t,jsxs as o}from"react/jsx-runtime";import{useCollection as s,makeStyleResponsive as i,makeLineClamp as r}from"@gem-sdk/core";import{getDefaultStyleCollectionDes as n,getStyleDefaultViewMore as l,getStaticCss as a}from"./common/styles.js";import{getClassContainerCollectionDes as m,getClassEmptyCollectionDes as c,getClassButtonViewMore as d,getDescriptionClasses as p,getShowMoreIconClasses as h,getShowMoreTextClasses as y,getClassPreBuilt as u}from"./common/classes.js";import{createClass as g,createStyle as f,createAttr as N,If as v}from"@gem-sdk/system";import{getViewLessText as S,getViewMoreText as _,ICON_SVG as j}from"./common/helpers.js";import{useGpDescription as C}from"../../hooks/useDescription.js";let DescriptionNotFoundString="This collection does not have a description",CollectionDescription=({setting:H,builderProps:T,pageContext:k,advanced:D})=>{let I=s(),{ref:L,open:M,isShowViewMore:b,handleToggleShowMore:x,hasLineClamp:w}=C(H),F=I?.descriptionHtml,V=g(m({setting:H})),$=g(c()),q=g(d({setting:H})),z=g(p({advanced:D})),A=g({...h(),...M?{"gp-rotate-180":!0}:{}}),B=g(y()),E=g(u()),G=f({...n({setting:H}),...M?{}:i("line-clamp",r(H?.lineClamp,H?.hasLineClamp))}),J=f({...l(H)}),K=S({setting:H,builderProps:T,pageContext:k,type:"react"}),O=_({setting:H,builderProps:T,pageContext:k,type:"react"}),P=N({"data-id":`${T?.uid}`}),Q=N({"data-gp-text":""}),{gpDescriptionCss:R,textDescriptionCss:U}=a();return e(t,{children:v(!F,e("div",{className:$,dangerouslySetInnerHTML:{__html:"This collection does not have a description"}}),o("div",{...P,className:z,children:[e("style",{children:U}),e("style",{children:R}),e("div",{className:E}),e("div",{ref:L,className:V,style:G,dangerouslySetInnerHTML:{__html:I?.descriptionHtml??""},...Q}),v(w&&b,o("button",{type:"button",className:q,style:J,onClick:x,children:[e("span",{className:B,children:v(M,K?.toString()??"",O?.toString()??"")}),v(H?.enableViewMoreIcon,e("span",{className:A,dangerouslySetInnerHTML:{__html:j}}),"")]}),"")]}))})};export{CollectionDescription as default};
2
+ import{jsx as e,Fragment as t,jsxs as o}from"react/jsx-runtime";import{useRenderMode as s,useCollection as i,makeStyleResponsive as r,makeLineClamp as n}from"@gem-sdk/core";import{getDefaultStyleCollectionDes as l,getStyleDefaultViewMore as a,getStaticCss as m}from"./common/styles.js";import{getClassContainerCollectionDes as c,getClassEmptyCollectionDes as d,getClassButtonViewMore as p,getDescriptionClasses as h,getShowMoreIconClasses as y,getShowMoreTextClasses as u,getClassPreBuilt as g}from"./common/classes.js";import{createClass as f,createStyle as N,createAttr as v,If as S}from"@gem-sdk/system";import{getViewLessText as _,getViewMoreText as j,ICON_SVG as C}from"./common/helpers.js";import{useGpDescription as H}from"../../hooks/useDescription.js";let DescriptionNotFoundString="This collection does not have a description",CollectionDescription=({setting:T,builderProps:k,pageContext:D,advanced:I})=>{let{isPreviewSharePageMode:L}=s(),M=i(),{ref:b,open:x,isShowViewMore:w,handleToggleShowMore:F,hasLineClamp:V}=H(T),$=M?.descriptionHtml,q=f(c({setting:T})),z=f(d()),A=f(p({setting:T})),B=f(h({advanced:I})),E=f({...y(),...x?{"gp-rotate-180":!0}:{}}),G=f(u()),J=f(g()),K=N({...l({setting:T}),...x?{}:r("line-clamp",n(T?.lineClamp,T?.hasLineClamp))}),O=N({...a(T)}),P=_({setting:T,builderProps:k,pageContext:D,type:"react"}),Q=j({setting:T,builderProps:k,pageContext:D,type:"react"}),R=v({"data-id":`${k?.uid}`}),U=v({"data-gp-text":""}),{gpDescriptionCss:W,textDescriptionCss:X}=m(),Y=L?"":e("div",{className:z,dangerouslySetInnerHTML:{__html:"This collection does not have a description"}});return e(t,{children:S(!$,Y,o("div",{...R,className:B,children:[e("style",{children:X}),e("style",{children:W}),e("div",{className:J}),e("div",{ref:b,className:q,style:K,dangerouslySetInnerHTML:{__html:M?.descriptionHtml??""},...U}),S(V&&w,o("button",{type:"button",className:A,style:O,onClick:F,children:[e("span",{className:G,children:S(x,P?.toString()??"",Q?.toString()??"")}),S(T?.enableViewMoreIcon,e("span",{className:E,dangerouslySetInnerHTML:{__html:C}}),"")]}),"")]}))})};export{CollectionDescription as default};
@@ -1 +1 @@
1
- function normalize(e){let r=[];if(0===e.length)return"";if("string"!=typeof e[0])throw TypeError("Url must be a string. Received "+e[0]);e[0].match(/^[^/:]+:\/*$/)&&e.length>1&&(e[0]=e.shift()+e[0]),e[0].match(/^file:\/\/\//)?e[0]=e[0].replace(/^([^/:]+):\/*/,"$1:///"):e[0]=e[0].replace(/^([^/:]+):\/*/,"$1://");for(let t=0;t<e.length;t++){let n=e[t];if("string"!=typeof n)throw TypeError("Url must be a string. Received "+n);""!==n&&(t>0&&(n=n.replace(/^\/+/,"")),n=t<e.length-1?n.replace(/\/+$/,""):n.replace(/\/+$/,"/"),r.push(n))}let t=r.join("/");t=t.replace(/\/(\?|&|#[^!])/g,"$1");let n=t.split("?");return n.shift()+(n.length>0?"?":"")+n.join("&")}function urlJoin(...e){let r=Array.from(Array.isArray(e[0])?e[0]:e);return normalize(r)}function isExternalLink(e){return!!e&&/^(https?:\/\/|\/\/|\/)/i.test(e)}export{isExternalLink,urlJoin};
1
+ function normalize(e){let r=[];if(0===e.length)return"";if("string"!=typeof e[0])throw TypeError("Url must be a string. Received "+e[0]);e[0].match(/^[^/:]+:\/*$/)&&e.length>1&&(e[0]=e.shift()+e[0]),e[0].match(/^file:\/\/\//)?e[0]=e[0].replace(/^([^/:]+):\/*/,"$1:///"):e[0]=e[0].replace(/^([^/:]+):\/*/,"$1://");for(let t=0;t<e.length;t++){let l=e[t];if("string"!=typeof l)throw TypeError("Url must be a string. Received "+l);""!==l&&(t>0&&(l=l.replace(/^\/+/,"")),l=t<e.length-1?l.replace(/\/+$/,""):l.replace(/\/+$/,"/"),r.push(l))}let t=r.join("/");t=t.replace(/\/(\?|&|#[^!])/g,"$1");let l=t.split("?");return l.shift()+(l.length>0?"?":"")+l.join("&")}function urlJoin(...e){let r=Array.from(Array.isArray(e[0])?e[0]:e);return normalize(r)}export{urlJoin};
@@ -1,2 +1,2 @@
1
1
  'use client';
2
- import{jsx as t}from"react/jsx-runtime";import r from"next/link";import{useRenderMode as e}from"@gem-sdk/core";let CustomLink=({children:i,dataId:o,...m})=>{let{isPreviewSharePageMode:n}=e(),a={title:m.title,"data-id":o};return n?t("a",{...a,...m,href:m.href?.toString()??"javascript:void(0)",children:i}):t(r,{...a,...m,children:i})};export{CustomLink as default};
2
+ import{jsx as t}from"react/jsx-runtime";import e from"next/link";import{useRenderMode as r}from"@gem-sdk/core";import{handleClickLink as i}from"../../helpers.js";let CustomLink=({children:o,dataId:l,...m})=>{let{isPreviewSharePageMode:n}=r(),p={title:m.title,"data-id":l},s=m.href?.toString(),a=()=>{i({link:s,type:s?.startsWith("#el")?"open-popup":void 0})};return n?t("a",{...p,...m,href:s,onClick:a,children:o}):t(e,{...p,...m,children:o})};export{CustomLink as default};
@@ -1,2 +1,2 @@
1
1
  'use client';
2
- import{jsx as r}from"react/jsx-runtime";import{useMemo as t}from"react";import e from"./CustomLink.js";import o from"./ProductLink.js";import{useRenderMode as i}from"@gem-sdk/core";import{isExternalLink as l}from"../common/helpers.js";let Link=({setting:m,className:a,style:p,children:s,title:f,dataId:n})=>{let{isPreviewSharePageMode:c}=i(),d=t(()=>m?.type==="product"?o:e,[m?.type]),u={};d==e&&(u.title=f);let h=c&&l(m?.href)?"javascript:void(0)":m?.href;return r(d,{...u,"data-id":n,target:m?.target,rel:m?.noFollow?"nofollow":void 0,"aria-label":m?.label,href:h,className:a,style:p,children:s})};export{Link as default};
2
+ import{jsx as t}from"react/jsx-runtime";import{useMemo as r}from"react";import e from"./CustomLink.js";import o from"./ProductLink.js";let Link=({setting:l,className:a,style:i,children:m,title:n,dataId:f})=>{let p=r(()=>l?.type==="product"?o:e,[l?.type]),s={};return p==e&&(s.title=n),t(p,{...s,"data-id":f,target:l?.target,rel:l?.noFollow?"nofollow":void 0,"aria-label":l?.label,href:l?.href,className:a,style:i,children:m})};export{Link as default};
@@ -1,2 +1,2 @@
1
1
  'use client';
2
- import{jsx as e}from"react/jsx-runtime";import{useProduct as t,useRenderMode as r,isEmptyChildren as o}from"@gem-sdk/core";let ProductLink=({children:i,...l})=>{let d=t(),{isPreviewSharePageMode:a}=r();console.log("\uD83D\uDE80 ~ ProductLink ~ isPreviewSharePageMode:",a);let c=a?"javascript:void(0)":d?`/products/${d.handle}`:"#";return e("a",{title:d?.title,href:c,...l,children:o(i)?d?d.title:null:i})};export{ProductLink as default};
2
+ import{jsx as t}from"react/jsx-runtime";import{useProduct as e,isEmptyChildren as r}from"@gem-sdk/core";let ProductLink=({children:l,...i})=>{let o=e();return t("a",{title:o?.title,href:o?`/products/${o.handle}`:"#",...i,children:r(l)?o?o.title:null:l})};export{ProductLink as default};
@@ -1,2 +1,2 @@
1
1
  'use client';
2
- import{jsx as t}from"react/jsx-runtime";import e from"next/link";import{useRenderMode as r,useProduct as o,useEditorMode as i}from"@gem-sdk/core";import{urlJoin as m}from"../../../link/common/helpers.js";import d from"../../../text/components/Text.js";import{createClass as l,createAttr as p,Unless as s,If as c}from"@gem-sdk/system";import{getTextProps as n}from"./common/helpers.js";let ProductTitle=a=>{let{setting:f,builderProps:u}=a,{isPreviewSharePageMode:h}=r(),k=o(),x=h?"javascript:void(0)":k?.handle?m("/products",k.handle):"#",j=k?.baseID?.replace("gid://shopify/Product/",""),g=i(),P=()=>t(d,{...n(a,k?.title)}),v={href:x,title:k?.title},y=f?.linkProduct,T=l({"gp-product-title-link-wrapper":!0}),b=p({id:`shopify-text-element-${u?.uid}`,...j&&{"data-product-id":j}});return t("div",{..."edit"===g&&b,children:s(!!k,"",c(y,t(e,{...v,className:T,children:P()}),P()))})};export{ProductTitle as default};
2
+ import{jsx as t}from"react/jsx-runtime";import e from"next/link";import{useRenderMode as r,useProduct as o,useEditorMode as i}from"@gem-sdk/core";import{urlJoin as m}from"../../../link/common/helpers.js";import d from"../../../text/components/Text.js";import{createClass as l,createAttr as p,Unless as s,If as c}from"@gem-sdk/system";import{getTextProps as n}from"./common/helpers.js";let ProductTitle=a=>{let{setting:u,builderProps:f}=a,{isPreviewSharePageMode:h}=r(),k=o(),x=h?`/products/${k?.handle}`:k?.handle?m("/products",k.handle):"#",g=k?.baseID?.replace("gid://shopify/Product/",""),j=i(),P=()=>t(d,{...n(a,k?.title)}),y={href:x,title:k?.title},T=u?.linkProduct,$=l({"gp-product-title-link-wrapper":!0}),b=p({id:`shopify-text-element-${f?.uid}`,...g&&{"data-product-id":g}});return t("div",{..."edit"===j&&b,children:s(!!k,"",c(T,t(e,{...y,className:$,children:P()}),P()))})};export{ProductTitle as default};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gem-sdk/components",
3
- "version": "4.0.0-staging.1180",
3
+ "version": "4.0.0-staging.1181",
4
4
  "license": "MIT",
5
5
  "sideEffects": false,
6
6
  "main": "dist/cjs/index.js",
@@ -25,7 +25,7 @@
25
25
  "scan-all-text": "rollup -c ./scripts/rollup.config.settings.mjs && node ./scripts/scan-all-text && node ./scripts/scan-all-text"
26
26
  },
27
27
  "devDependencies": {
28
- "@gem-sdk/core": "4.0.0-staging.1179",
28
+ "@gem-sdk/core": "4.0.0-staging.1181",
29
29
  "@gem-sdk/styles": "3.1.0-staging.1137",
30
30
  "@gem-sdk/system": "3.1.0-staging.1137",
31
31
  "tsup": "^8.5.0",