@gem-sdk/pages 10.0.2 → 12.0.0-dev.107

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 (46) hide show
  1. package/dist/cjs/components/builder/Footer.js +1 -1
  2. package/dist/cjs/components/builder/Header.js +1 -1
  3. package/dist/cjs/components/builder/SwitchView.js +1 -1
  4. package/dist/cjs/components/builder/Toolbox.js +1 -1
  5. package/dist/cjs/components/image-to-layout/DropElement.js +1 -1
  6. package/dist/cjs/components/image-to-layout-upsell/DropElement.js +2 -0
  7. package/dist/cjs/components/image-to-layout-upsell/ImageToLayout.js +2 -0
  8. package/dist/cjs/constants/googleFontV1.js +1 -0
  9. package/dist/cjs/constants/index.js +1 -1
  10. package/dist/cjs/index.js +1 -1
  11. package/dist/cjs/libs/api/get-home-page-props-v2.js +1 -1
  12. package/dist/cjs/libs/api/get-home-page-props.js +1 -1
  13. package/dist/cjs/libs/api/get-post-purchase-props-preview.js +1 -1
  14. package/dist/cjs/libs/api/get-static-page-props-preview.js +1 -1
  15. package/dist/cjs/libs/api/get-static-page-props-v2.js +1 -1
  16. package/dist/cjs/libs/api/get-static-page-props.js +1 -1
  17. package/dist/cjs/libs/constants/theme-font-keys.js +1 -0
  18. package/dist/cjs/libs/google-fonts.js +1 -1
  19. package/dist/cjs/libs/helpers/gen-css.js +1 -1
  20. package/dist/cjs/libs/helpers/gen-fonts.js +1 -1
  21. package/dist/cjs/pages/builder-upsell.js +2 -0
  22. package/dist/cjs/pages/static-v2.js +2 -2
  23. package/dist/esm/components/builder/Footer.js +1 -1
  24. package/dist/esm/components/builder/Header.js +1 -1
  25. package/dist/esm/components/builder/SwitchView.js +1 -1
  26. package/dist/esm/components/builder/Toolbox.js +1 -1
  27. package/dist/esm/components/image-to-layout/DropElement.js +1 -1
  28. package/dist/esm/components/image-to-layout-upsell/DropElement.js +2 -0
  29. package/dist/esm/components/image-to-layout-upsell/ImageToLayout.js +2 -0
  30. package/dist/esm/constants/googleFontV1.js +1 -0
  31. package/dist/esm/constants/index.js +1 -1
  32. package/dist/esm/index.js +1 -1
  33. package/dist/esm/libs/api/get-home-page-props-v2.js +1 -1
  34. package/dist/esm/libs/api/get-home-page-props.js +1 -1
  35. package/dist/esm/libs/api/get-post-purchase-props-preview.js +1 -1
  36. package/dist/esm/libs/api/get-static-page-props-preview.js +1 -1
  37. package/dist/esm/libs/api/get-static-page-props-v2.js +1 -1
  38. package/dist/esm/libs/api/get-static-page-props.js +1 -1
  39. package/dist/esm/libs/constants/theme-font-keys.js +1 -0
  40. package/dist/esm/libs/google-fonts.js +1 -1
  41. package/dist/esm/libs/helpers/gen-css.js +1 -1
  42. package/dist/esm/libs/helpers/gen-fonts.js +1 -1
  43. package/dist/esm/pages/builder-upsell.js +2 -0
  44. package/dist/esm/pages/static-v2.js +2 -2
  45. package/dist/types/index.d.ts +9 -1
  46. package/package.json +11 -10
@@ -1 +1 @@
1
- import{PublishedThemePagesDocument as e,StorePropertyDocument as t,PublishedShopMetasDocument as o,prefetchQueries as s}from"@gem-sdk/core";import{ShopMetaDocument as a}from"@gem-sdk/adapter-shopify";import{getFontLinkFromGlobalStyle as r}from"../google-fonts.js";import{genCSS as i}from"../helpers/gen-css.js";import{generateManifest as l}from"../helpers/generate-manifres.js";import{parseBuilderTemplate as n}from"../helpers/normalize.js";import{parseJson as p,serializableJson as c}from"../helpers/parse-json.js";import{PublishedThemePageMetafields as m}from"../../constants/index.js";import{getPublishedThemePageMetafieldByKey as d}from"../helpers/get-metafield.js";let getStaticPageProps=(f,u)=>async h=>{let g="STATIC",_={slug:h,slugType:g},[y,T,A,L]=await Promise.allSettled([f([e,_]),f([t]),u([a]),f([o,{keys:["source_font",m.GLOBAL_META_DESCRIPTION,m.GLOBAL_META_THUMBNAIL]}])]);if("rejected"===y.status)return{pageType:g};let z="fulfilled"===L.status?L.value:void 0,v=y.value.publishedThemePages?.[0],x=n(v),S=await r(v?.pageStyle?.data),M=s(x),P=await Promise.allSettled(M.map(({query:e,variables:t,func:o})=>o?o(f,t):e?f([e,t]):{})),I=M.reduce((e,{key:t},o)=>{let s=P[o];return s?.status==="fulfilled"?{...e,[t]:s.value}:e},{}),j=d(m.GLOBAL_META_DESCRIPTION,v?.metafields)||z?.publishedShopMetas?.find(e=>e?.key===m.GLOBAL_META_DESCRIPTION)?.value,B=p(d(m.GLOBAL_META_THUMBNAIL,v?.metafields)||z?.publishedShopMetas?.find(e=>e?.key===m.GLOBAL_META_THUMBNAIL)?.value),C="fulfilled"===A.status?A.value:void 0,E="fulfilled"===T.status?T.value:void 0,O=E?.storeProperty?.favicon??"/favicon/favicon-32x32.png",k={defaultTitle:C?.shop.name??"",title:v?.name??"",description:j??C?.shop.description??"",openGraph:{site_name:C?.shop.name??"",locale:C?.localization.country.isoCode??"",title:v?.name??C?.shop.name??"",description:j??C?.shop.description??"",images:B?[B]:[]},additionalMetaTags:[{name:"theme-color",content:"#000000"}],canonical:`/${h}`,additionalLinkTags:[{rel:"icon",sizes:"32x32",href:`${O}-/crop/1:1/center/-/smart_resize/32x32/`},{rel:"icon",sizes:"16x16",href:`${O}-/crop/1:1/center/-/smart_resize/16x16/`},{rel:"apple-touch-icon",sizes:"180x180",href:`${O}-/crop/1:1/center/-/smart_resize/180x180/`},{rel:"manifest",href:l({theme_color:"#000000",background_color:"#ffffff",display:"standalone",scope:"/",start_url:"/",name:C?.shop.name,short_name:C?.shop.name,description:C?.shop.description,icons:[{src:`${O}-/crop/1:1/center/-/smart_resize/192x192/`,sizes:"192x192",type:"image/png",purpose:"any maskable"},{src:`${O}-/crop/1:1/center/-/smart_resize/512x512/`,sizes:"512x512",type:"image/png"}]})}]},$=C?.localization.language.isoCode??null,G=C?.localization.country.isoCode??null,b=$&&G?`${$}-${G}`:null;return c({themeStyle:i(v?.pageStyle?.data),fontStyle:S,builderData:x,pageType:g,moneyFormat:C?.shop.moneyFormat??null,currency:C?.localization.country.currency.isoCode??null,languageIsoCode:$,countryIsoCode:G,locale:b,swr:{fallback:I},swatches:p(E?.storeProperty?.swatchesConfig),seo:k})};export{getStaticPageProps};
1
+ import{PublishedThemePagesDocument as e,StorePropertyDocument as t,PublishedShopMetasDocument as o,prefetchQueries as s}from"@gem-sdk/core";import{ShopMetaDocument as r}from"@gem-sdk/adapter-shopify";import{getFontLinkFromGlobalStyle as a}from"../google-fonts.js";import{genCSS as i}from"../helpers/gen-css.js";import{generateManifest as l}from"../helpers/generate-manifres.js";import{parseBuilderTemplate as n}from"../helpers/normalize.js";import{parseJson as p,serializableJson as c}from"../helpers/parse-json.js";import{PublishedThemePageMetafields as m}from"../../constants/index.js";import{getPublishedThemePageMetafieldByKey as d}from"../helpers/get-metafield.js";let getStaticPageProps=(f,u)=>async h=>{let g="STATIC",y={slug:h,slugType:g},[_,T,A,L]=await Promise.allSettled([f([e,y]),f([t]),u([r]),f([o,{keys:["source_font",m.GLOBAL_META_DESCRIPTION,m.GLOBAL_META_THUMBNAIL]}])]);if("rejected"===_.status)return{pageType:g};let z="fulfilled"===L.status?L.value:void 0,v=_.value.publishedThemePages?.[0],x=n(v),S=await a(v?.pageStyle?.data),M=s(x),P=await Promise.allSettled(M.map(({query:e,variables:t,func:o})=>o?o(f,t):e?f([e,t]):{})),I=M.reduce((e,{key:t},o)=>{let s=P[o];return s?.status==="fulfilled"?{...e,[t]:s.value}:e},{}),j=d(m.GLOBAL_META_DESCRIPTION,v?.metafields)||z?.publishedShopMetas?.find(e=>e?.key===m.GLOBAL_META_DESCRIPTION)?.value,B=p(d(m.GLOBAL_META_THUMBNAIL,v?.metafields)||z?.publishedShopMetas?.find(e=>e?.key===m.GLOBAL_META_THUMBNAIL)?.value),C="fulfilled"===A.status?A.value:void 0,E="fulfilled"===T.status?T.value:void 0,O=E?.storeProperty?.favicon??"/favicon/favicon-32x32.png",k={defaultTitle:C?.shop.name??"",title:v?.name??"",description:j??C?.shop.description??"",openGraph:{locale:C?.localization.country.isoCode??"",title:v?.name??C?.shop.name??"",description:j??C?.shop.description??"",images:B?[B]:[]},additionalMetaTags:[{name:"theme-color",content:"#000000"}],canonical:`/${h}`,additionalLinkTags:[{rel:"icon",sizes:"32x32",href:`${O}-/crop/1:1/center/-/smart_resize/32x32/`},{rel:"icon",sizes:"16x16",href:`${O}-/crop/1:1/center/-/smart_resize/16x16/`},{rel:"apple-touch-icon",sizes:"180x180",href:`${O}-/crop/1:1/center/-/smart_resize/180x180/`},{rel:"manifest",href:l({theme_color:"#000000",background_color:"#ffffff",display:"standalone",scope:"/",start_url:"/",name:C?.shop.name,short_name:C?.shop.name,description:C?.shop.description,icons:[{src:`${O}-/crop/1:1/center/-/smart_resize/192x192/`,sizes:"192x192",type:"image/png",purpose:"any maskable"},{src:`${O}-/crop/1:1/center/-/smart_resize/512x512/`,sizes:"512x512",type:"image/png"}]})}]},$=C?.localization.language.isoCode??null,G=C?.localization.country.isoCode??null,b=$&&G?`${$}-${G}`:null;return c({themeStyle:i(v?.pageStyle?.data),fontStyle:S,builderData:x,pageType:g,moneyFormat:C?.shop.moneyFormat??null,currency:C?.localization.country.currency.isoCode??null,languageIsoCode:$,countryIsoCode:G,locale:b,swr:{fallback:I},swatches:p(E?.storeProperty?.swatchesConfig),seo:k})};export{getStaticPageProps};
@@ -0,0 +1 @@
1
+ let THEME_FONT_CSS_KEYS=["font-heading","font-body","theme-font-heading","theme-font-body"];export{THEME_FONT_CSS_KEYS};
@@ -1 +1 @@
1
- import{checkNotInOptionFont as t}from"./helpers/check-option-font.js";import{getFontsFromDataBuilder as e}from"./helpers/gen-fonts.js";import{sentryCaptureException as r}from"./helpers/sentry.js";let CHROME_UA="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36",IE_UA="Mozilla/5.0 (Windows NT 10.0; Trident/7.0; rv:11.0) like Gecko";async function getFontForUA(t,e){try{return fetch(t,{headers:{"User-Agent":e}}).then(a=>200===a.status?a.text():(r("getFontForUA",`Unexpected status ${a.status}`,{url:t,UA:e}),""))}catch(a){return r("getFontForUA","Error fetching font",{url:t,UA:e,error:a}),""}}let composeFonts=t=>{let e=t.filter((t,e,r)=>e===r.findIndex(e=>e.family===t.family));return e.map(e=>{let r=t.filter(t=>t.family===e.family).reduce((t,e)=>[...t,...e.variants],[]).filter((t,e,r)=>e===r.findIndex(e=>e===t));return{...e,variants:r}})},GOOGLE_CSS2_OVERRIDES={"Roboto Flex":"https://fonts.googleapis.com/css2?family=Roboto+Flex:opsz,wght@8..144,100..1000&display=swap"},normalizeFamily=t=>t?.trim().replace(/\s+/g,"+")??"",getOverrideUrlForFamily=t=>{let e=normalizeFamily(t);return GOOGLE_CSS2_OVERRIDES[t]??GOOGLE_CSS2_OVERRIDES[e]},VARIANT_WEIGHT_MAP={regular:"400",normal:"400",bold:"700",italic:"400italic"},isValidFont=(e,r,a)=>{let o="google"===e.type||"bunny"===e.type,n="theme"===e.type&&a,i=t(e.family,r);return!(o&&i)&&(o||!e.type||n)},normalizeVariant=t=>{let e=String(t).toLowerCase().trim();return VARIANT_WEIGHT_MAP[e]??t},sortFontVariants=t=>{let e=t=>{let e=String(t).toLowerCase().trim(),r=e.includes("italic"),a=e.replace("italic","").trim(),o=VARIANT_WEIGHT_MAP[a]??a,n=parseInt(o,10)||400;return{weight:n,isItalic:r}};return[...t].sort((t,r)=>{let a=e(t),o=e(r);return a.weight!==o.weight?a.weight-o.weight:a.isItalic!==o.isItalic?a.isItalic?1:-1:0})},makeUrlBySourceFont=(t,e,r)=>{let a=composeFonts(t).map(t=>{let e=t.variants.map(t=>normalizeVariant(t)),r=sortFontVariants(e);return`${t.family.replace(/ /g,"+")}:${r.join(",")}`}).join("|");if("sans-serif"===a)return;let o=new URLSearchParams;o.append("family",a),o.append("display",r?.display||"swap"),r?.subset&&o.append("subset",r.subset),r?.effect&&o.append("effect",r.effect);let n=`https://fonts.bunny.net/css?family=${a}`,i=`https://fonts.googleapis.com/css?${decodeURIComponent(o.toString())}`;return"bunny"===e?n:i},createFontUrls=(t,e,r,a)=>{let o=t.filter(t=>isValidFont(t,r||"google",a));if(!o.length)return;let n=o.filter((t,e,r)=>e===r.findIndex(e=>e.family===t.family)),i=[],l=[];for(let t of n){let e=getOverrideUrlForFamily(t.family);e&&"bunny"!==r?i.push(e):l.push(t)}let s=l.length?makeUrlBySourceFont(l,r||"google",e):void 0;return i.length&&s?[...i,s]:s?[s,...i]:i};async function getFonts(t,e,a=!0,o){let n=createFontUrls(t,e,o),i=Array.isArray(n)?n:n?[n]:[];if(!i.length)return"";if(a)return i.map(t=>`@import url('${t}');`).join("");let l="",s="";for(let t of i)try{let[e,r]=await Promise.all([getFontForUA(t,"Mozilla/5.0 (Windows NT 10.0; Trident/7.0; rv:11.0) like Gecko"),getFontForUA(t,"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36")]),a=`${e}${r}`;l+=a,s+=`@import url('${t}');`}catch(e){r("getFonts","Error fetching font",{url:t,fontType:o,error:String(e)}),s+="",l+=""}let f=new TextEncoder().encode(l).length;return f<51200?l:s}let extractFontsFromPageTemplate=(t,r)=>{let a=[];return t.forEach(t=>{a.push(...e(t.data,r))}),composeFonts(a)},extractVariantFromTypography=(t,e)=>{let r="400";if(null!=t){let e=String(t).toLowerCase().trim();r=normalizeVariant(e)}let a=r,o=e&&"italic"===e.toLowerCase();return o&&!r.includes("italic")&&(a=r.includes("i")?r:`${r}italic`),a},HEADING_FONT_PREFIX="heading-",SUBHEADING_FONT_PREFIX="subheading-",PARAGRAPH_FONT_PREFIX="paragraph-",extractTypographyVariants=t=>{let e=t?.typography??{},r=t?.font??{},a=new Map;Object.entries(e).forEach(([t,e])=>{if(!e||"object"!=typeof e)return;let o=t.startsWith(HEADING_FONT_PREFIX)||t.startsWith(SUBHEADING_FONT_PREFIX)?r.heading?"heading":void 0:t.startsWith(PARAGRAPH_FONT_PREFIX)&&r.body?"body":void 0,n=e.desktop,i=n?.fontFamily,l=i||o;["desktop","mobile","tablet"].forEach(t=>{let o=e[t];if(!o||"object"!=typeof o)return;let i=o.fontFamily||l;if(!i||"string"!=typeof i||!r[i])return;let s=o.fontWeight??n?.fontWeight,f=o.fontStyle??n?.fontStyle;if(null==s)return;let p=extractVariantFromTypography(s,f);a.has(i)||a.set(i,new Set),a.get(i).add(p)})});let o={};return a.forEach((t,e)=>{let a=r[e];a&&(o[e]={variants:Array.from(t).sort(),family:a.family})}),o},mapTypographyToFontFamily=t=>{let e=t?.typography??{},r=t?.font??{},a=t?.font??{},o={};return Object.entries(e).forEach(([t,e])=>{if(!e||"object"!=typeof e)return;let n=e.desktop,i=e.mobile,l=e.tablet,s=t.startsWith(HEADING_FONT_PREFIX)||t.startsWith(SUBHEADING_FONT_PREFIX)?a.heading?"heading":void 0:t.startsWith(PARAGRAPH_FONT_PREFIX)&&a.body?"body":void 0,f=n?.fontFamily||i?.fontFamily||l?.fontFamily||s;if(!f||"string"!=typeof f)return;let p=r[f],y=a[f],c=p?.family||y?.family||f,m=p?.type||y?.type||"google";c&&(o[t]={family:c,type:m})}),o},getFontLinkFromGlobalStyle=async(t,e)=>{if(!t)return"";try{let r=JSON.parse(t),a=r?.font??{},o=Object.values(a),n=extractTypographyVariants(r);Object.keys(n).length>0&&(o=Object.entries(a).filter(([t])=>n[t]).map(([t,e])=>({...e,variants:n[t].variants})));let i=composeFonts(o);return getFonts(i,void 0,void 0,e)}catch{return""}},getFontFromGlobalStyle=(t,e)=>{if(!t)return"";try{let r=JSON.parse(t),a=r?.font??{},o=Object.entries(a).map(([,t])=>t);return getFonts(o,void 0,void 0,e)}catch{return""}};async function getFontStyleFromPageTemplate(t,e,r){let a,o=null;if(r)try{o=JSON.parse(r),a=mapTypographyToFontFamily(o)}catch{}let n=extractFontsFromPageTemplate(t,a);if(!o){if(0===n.length)return[];let t=await getFonts(n,void 0,void 0,e);return t?[t]:[]}let i=extractTypographyVariants(o),l=new Map;for(let t of Object.values(i)){let e=l.get(t.family);if(!e){l.set(t.family,new Set(t.variants));continue}t.variants.forEach(t=>e.add(t))}if(0===(n=n.map(t=>{let e=l.get(t.family);if(!e)return t;let r=t.variants.filter(t=>!e.has(t));return 0===r.length?null:{...t,variants:r}}).filter(t=>null!==t)).length)return[];let s=await getFonts(n,void 0,void 0,e);return s?[s]:[]}export{composeFonts,createFontUrls,extractTypographyVariants,getFontFromGlobalStyle,getFontLinkFromGlobalStyle,getFontStyleFromPageTemplate,getFonts,mapTypographyToFontFamily};
1
+ import{checkNotInOptionFont as t}from"./helpers/check-option-font.js";import{getFontsFromDataBuilder as e}from"./helpers/gen-fonts.js";import{sentryCaptureException as r}from"./helpers/sentry.js";import{THEME_FONT_CSS_KEYS as o}from"./constants/theme-font-keys.js";import{googleFontFamilies as n}from"../constants/googleFontV1.js";let CHROME_UA="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36",IE_UA="Mozilla/5.0 (Windows NT 10.0; Trident/7.0; rv:11.0) like Gecko";async function getFontForUA(t,e){try{return fetch(t,{headers:{"User-Agent":e}}).then(o=>200===o.status?o.text():(r("getFontForUA",`Unexpected status ${o.status}`,{url:t,UA:e}),""))}catch(o){return r("getFontForUA","Error fetching font",{url:t,UA:e,error:o}),""}}let composeFonts=t=>{let e=t.filter((t,e,r)=>e===r.findIndex(e=>e.family===t.family));return e.map(e=>{let r=t.filter(t=>t.family===e.family).reduce((t,e)=>[...t,...e.variants],[]).filter((t,e,r)=>e===r.findIndex(e=>e===t));return{...e,variants:r}})},GOOGLE_CSS2_OVERRIDES={"Roboto Flex":"https://fonts.googleapis.com/css2?family=Roboto+Flex:opsz,wght@8..144,100..1000&display=swap"},normalizeFamily=t=>t?.trim().replace(/\s+/g,"+")??"",getFontApiVersion=t=>t.includes("fonts.googleapis.com/css2")?"css2":t.includes("fonts.bunny.net")?"bunny":"css1",getOverrideUrlForFamily=t=>{let e=normalizeFamily(t);return GOOGLE_CSS2_OVERRIDES[t]??GOOGLE_CSS2_OVERRIDES[e]},VARIANT_WEIGHT_MAP={regular:"400",normal:"400",bold:"700",italic:"400italic"},googleFontFamiliesSet=new Set(n),IGNORED_FONT_FAMILIES=[...o,...o.map(t=>`--g-${t}`)],isValidFont=(e,r,o)=>{if(("google"===r||"google"===e.type)&&!googleFontFamiliesSet.has(e.family))return!1;let n="google"===e.type||"bunny"===e.type,a="theme"===e.type&&o,i=t(e.family,r);return!(n&&i)&&(n||!e.type||a)},normalizeVariant=t=>{let e=String(t).toLowerCase().trim();return VARIANT_WEIGHT_MAP[e]??t},sortFontVariants=t=>{let e=t=>{let e=String(t).toLowerCase().trim(),r=e.includes("italic"),o=e.replace("italic","").trim(),n=VARIANT_WEIGHT_MAP[o]??o,a=parseInt(n,10)||400;return{weight:a,isItalic:r}};return[...t].sort((t,r)=>{let o=e(t),n=e(r);return o.weight!==n.weight?o.weight-n.weight:o.isItalic!==n.isItalic?o.isItalic?1:-1:0})},makeUrlBySourceFont=(t,e,r)=>{let o=composeFonts(t).map(t=>{let e=t.variants.map(t=>normalizeVariant(t)),r=sortFontVariants(e);return`${t.family.replace(/ /g,"+")}:${r.join(",")}`}).join("|");if("sans-serif"===o)return;let n=new URLSearchParams;return(n.append("family",o),n.append("display",r?.display||"swap"),"bunny"===e)?`https://fonts.bunny.net/css?${decodeURIComponent(n.toString())}`:(r?.subset&&n.append("subset",r.subset),r?.effect&&n.append("effect",r.effect),`https://fonts.googleapis.com/css?${decodeURIComponent(n.toString())}`)},createFontUrls=(t,e,r,o)=>{let n=t.filter(t=>isValidFont(t,r||"google",o));if(!n.length)return;let a=n.filter((t,e,r)=>e===r.findIndex(e=>e.family===t.family)),i=[],l=[];for(let t of a){let e=getOverrideUrlForFamily(t.family);e&&"bunny"!==r?i.push(e):l.push(t)}let s=l.length?makeUrlBySourceFont(l,r||"google",e):void 0;return i.length&&s?[...i,s]:s?[s,...i]:i};async function getFonts(t,e,o=!0,n){let a=t.filter(t=>!IGNORED_FONT_FAMILIES.includes(t.family)),i=createFontUrls(a,e,n),l=Array.isArray(i)?i:i?[i]:[];if(!l.length)return"";if(o)return l.map(t=>`@import url('${t}');`).join("");let s="",f="";for(let t of l)try{let[e,r]=await Promise.all([getFontForUA(t,"Mozilla/5.0 (Windows NT 10.0; Trident/7.0; rv:11.0) like Gecko"),getFontForUA(t,"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36")]),o=`${e}${r}`;s+=o,f+=`@import url('${t}');`}catch(o){let e=getFontApiVersion(t);r("getFonts",`Error fetching font ${e}`,{url:t,fontType:n,fontApiVersion:e,error:String(o)}),f+="",s+=""}let p=new TextEncoder().encode(s).length;return p<51200?s:f}let extractFontsFromPageTemplate=(t,r)=>{let o=[];return t.forEach(t=>{o.push(...e(t.data,r))}),composeFonts(o)},extractVariantFromTypography=(t,e)=>{let r="400";if(null!=t){let e=String(t).toLowerCase().trim();r=normalizeVariant(e)}let o=r,n=e&&"italic"===e.toLowerCase();return n&&!r.includes("italic")&&(o=r.includes("i")?r:`${r}italic`),o},HEADING_FONT_PREFIX="heading-",SUBHEADING_FONT_PREFIX="subheading-",PARAGRAPH_FONT_PREFIX="paragraph-",extractTypographyVariants=t=>{let e=t?.typography??{},r=t?.font??{},o=new Map;Object.entries(e).forEach(([t,e])=>{if(!e||"object"!=typeof e)return;let n=t.startsWith(HEADING_FONT_PREFIX)||t.startsWith(SUBHEADING_FONT_PREFIX)?r.heading?"heading":void 0:t.startsWith(PARAGRAPH_FONT_PREFIX)&&r.body?"body":void 0,a=e.desktop,i=a?.fontFamily,l=i||n;["desktop","mobile","tablet"].forEach(t=>{let n=e[t];if(!n||"object"!=typeof n)return;let i=n.fontFamily||l;if(!i||"string"!=typeof i||!r[i])return;let s=n.fontWeight??a?.fontWeight,f=n.fontStyle??a?.fontStyle;if(null==s)return;let p=extractVariantFromTypography(s,f);o.has(i)||o.set(i,new Set),o.get(i).add(p)})});let n={};return o.forEach((t,e)=>{let o=r[e];o&&(n[e]={variants:Array.from(t).sort(),family:o.family})}),n},mapTypographyToFontFamily=t=>{let e=t?.typography??{},r=t?.font??{},o=t?.font??{},n={};return Object.entries(e).forEach(([t,e])=>{if(!e||"object"!=typeof e)return;let a=e.desktop,i=e.mobile,l=e.tablet,s=t.startsWith(HEADING_FONT_PREFIX)||t.startsWith(SUBHEADING_FONT_PREFIX)?o.heading?"heading":void 0:t.startsWith(PARAGRAPH_FONT_PREFIX)&&o.body?"body":void 0,f=a?.fontFamily||i?.fontFamily||l?.fontFamily||s;if(!f||"string"!=typeof f)return;let p=r[f],y=o[f],c=p?.family||y?.family||f,m=p?.type||y?.type||"google";c&&(n[t]={family:c,type:m})}),n},getFontLinkFromGlobalStyle=async(t,e)=>{if(!t)return"";try{let r=JSON.parse(t),o=r?.font??{},n=Object.values(o),a=extractTypographyVariants(r);Object.keys(a).length>0&&(n=Object.entries(o).filter(([t])=>a[t]).map(([t,e])=>({...e,variants:a[t].variants})));let i=composeFonts(n);return getFonts(i,void 0,void 0,e)}catch{return""}},getFontFromGlobalStyle=(t,e)=>{if(!t)return"";try{let r=JSON.parse(t),o=r?.font??{},n=Object.entries(o).map(([,t])=>t);return getFonts(n,void 0,void 0,e)}catch{return""}};async function getFontStyleFromPageTemplate(t,e,r){let o,n=null;if(r)try{n=JSON.parse(r),o=mapTypographyToFontFamily(n)}catch{}let a=extractFontsFromPageTemplate(t,o);if(!n){if(0===a.length)return[];let t=await getFonts(a,void 0,void 0,e);return t?[t]:[]}let i=extractTypographyVariants(n),l=new Map;for(let t of Object.values(i)){let e=l.get(t.family);if(!e){l.set(t.family,new Set(t.variants));continue}t.variants.forEach(t=>e.add(t))}if(0===(a=a.map(t=>{let e=l.get(t.family);if(!e)return t;let r=t.variants.filter(t=>!e.has(t));return 0===r.length?null:{...t,variants:r}}).filter(t=>null!==t)).length)return[];let s=await getFonts(a,void 0,void 0,e);return s?[s]:[]}export{composeFonts,createFontUrls,extractTypographyVariants,getFontFromGlobalStyle,getFontLinkFromGlobalStyle,getFontStyleFromPageTemplate,getFonts,mapTypographyToFontFamily};
@@ -1 +1 @@
1
- import{DEVICES as e,getShortName as t}from"@gem-sdk/core";import r from"deepmerge";let baseDevices={tablet:"1024px",mobile:"767px"},flattenObject=(e,t)=>Object.keys(e).reduce((r,n)=>{let o=t?`${t}-`:"";return"object"==typeof e[n]&&null!==e[n]&&Object.keys(e[n]).length>0?Object.assign(r,flattenObject(e[n],o+n)):r[o+n]=e[n],r},{}),mapObject=e=>Object.entries(e??{}).reduce((e,[r,n])=>({...e,[t(r)]:"object"==typeof n?mapObject(n):n}),{}),getValueByDevice=(e,t)=>{let r={typography:Object.fromEntries(Object.entries(e?.typography??{}).map(([e,r])=>{let n={...r?.[t]};return n?(n.fontFamily&&(n.fontFamily=`var(--g-font-${n.fontFamily}, ${n.fontFamily})`),[e,n]):[e,void 0]})),spacing:Object.fromEntries(Object.entries(e?.spacing??{}).map(([e,r])=>[e,r?.[t]])),container:Object.fromEntries(Object.entries(e?.container??{}).map(([e,r])=>[e,r?.[t]])),font:Object.fromEntries(Object.entries(e?.font??{}).map(([e,t])=>[e,t?.family])),theme:{font:Object.fromEntries(Object.entries(e?.theme?.font??{}).map(([e,t])=>[e,t?.family]))}};return r},quoteFontName=e=>["sans-serif"].includes(e)?e:`'${e}'`,convertLetterSpacingToEm=e=>"string"==typeof e&&e.includes("%")?`${(.01*parseFloat(e)).toFixed(2)}em`:e,genCSSVariable=e=>Object.entries(mapObject(flattenObject(e))).map(([e,t])=>{if(void 0!==t){if(["font-heading","font-body","theme-font-heading","theme-font-body"].includes(e))return`--g-${e}: ${quoteFontName(t)}`;if(e.includes("-ls")){let r=convertLetterSpacingToEm(t);return`--g-${e}:${r}`}return`--g-${e}:${t}`}}).filter(e=>void 0!==e).join(";"),genCSS=(t,n)=>{if(!t)return"";let o={};try{if(o="string"==typeof t?JSON.parse(t):t,n){let e=getValueByDevice(o,"desktop"),t=getValueByDevice(o,"mobile"),n=r(e,t);n.color=o.color,n.radius=o.radius;let i=genCSSVariable(n);return`:root{${i}}`}return e.map(e=>{let t=getValueByDevice(o,e);"desktop"===e&&(t.color=o.color,t.radius=o.radius);let r=genCSSVariable(t);return"desktop"===e?`:root{${r}}`:`@media (max-width: ${baseDevices[e]}) {:root{${r}}}`}).join("\n")}catch{return""}};export{genCSS};
1
+ import{DEVICES as e,getShortName as t}from"@gem-sdk/core";import{THEME_FONT_CSS_KEYS as r}from"../constants/theme-font-keys.js";import n from"deepmerge";let baseDevices={tablet:"1024px",mobile:"767px"},flattenObject=(e,t)=>Object.keys(e).reduce((r,n)=>{let o=t?`${t}-`:"";return"object"==typeof e[n]&&null!==e[n]&&Object.keys(e[n]).length>0?Object.assign(r,flattenObject(e[n],o+n)):r[o+n]=e[n],r},{}),mapObject=e=>Object.entries(e??{}).reduce((e,[r,n])=>({...e,[t(r)]:"object"==typeof n?mapObject(n):n}),{}),getValueByDevice=(e,t)=>{let r={typography:Object.fromEntries(Object.entries(e?.typography??{}).map(([e,r])=>{let n={...r?.[t]};return n?(n.fontFamily&&(n.fontFamily=`var(--g-font-${n.fontFamily}, ${n.fontFamily})`),[e,n]):[e,void 0]})),spacing:Object.fromEntries(Object.entries(e?.spacing??{}).map(([e,r])=>[e,r?.[t]])),container:Object.fromEntries(Object.entries(e?.container??{}).map(([e,r])=>[e,r?.[t]])),font:Object.fromEntries(Object.entries(e?.font??{}).map(([e,t])=>[e,t?.family])),theme:{font:Object.fromEntries(Object.entries(e?.theme?.font??{}).map(([e,t])=>[e,t?.family]))}};return r},quoteFontName=e=>["sans-serif"].includes(e)?e:`'${e}'`,convertLetterSpacingToEm=e=>"string"==typeof e&&e.includes("%")?`${(.01*parseFloat(e)).toFixed(2)}em`:e,genCSSVariable=e=>Object.entries(mapObject(flattenObject(e))).map(([e,t])=>{if(void 0!==t){if(r.includes(e))return`--g-${e}: ${quoteFontName(t)}`;if(e.includes("-ls")){let r=convertLetterSpacingToEm(t);return`--g-${e}:${r}`}return`--g-${e}:${t}`}}).filter(e=>void 0!==e).join(";"),genCSS=(t,r)=>{if(!t)return"";let o={};try{if(o="string"==typeof t?JSON.parse(t):t,r){let e=getValueByDevice(o,"desktop"),t=getValueByDevice(o,"mobile"),r=n(e,t);r.color=o.color,r.radius=o.radius;let i=genCSSVariable(r);return`:root{${i}}`}return e.map(e=>{let t=getValueByDevice(o,e);"desktop"===e&&(t.color=o.color,t.radius=o.radius);let r=genCSSVariable(t);return"desktop"===e?`:root{${r}}`:`@media (max-width: ${baseDevices[e]}) {:root{${r}}}`}).join("\n")}catch{return""}};export{genCSS};
@@ -1 +1 @@
1
- let EXCLUDED_FONT_FAMILIES=["sans-serif"],getFallbackFontFamilyFromGlobalStyle=(t,e)=>{if(e&&t?.type&&!t?.custom?.fontFamily){let o=e[t.type];if(o){let e=JSON.parse(JSON.stringify(t));return e.custom||(e.custom={}),e.custom.fontFamily={value:o.family,type:o.type},e}}return t},getFontsFromDataBuilder=(t,e)=>{let o=[];for(let l in t)if(Object.prototype.hasOwnProperty.call(t,l)){let i=t[l],n=i.styles,a=i.settings;getFontFromGroupSetting(o,n,e),getFontFromGroupSetting(o,a,e)}return o},getFontFromGroupSetting=(t,e,o)=>{let l=["normal","hover","focus","active","disabled","price","compareAtPrice"];for(let i in e)if(Object.prototype.hasOwnProperty.call(e,i)){let n=e[i];if(!n)continue;let a=o?getFallbackFontFamilyFromGlobalStyle(n,o):n;for(let e of(getFontValue(t,a),l)){if(!n[e])continue;let l=o?getFallbackFontFamilyFromGlobalStyle(n[e],o):n[e];getFontValue(t,l)}}},uniqueArray=t=>Array.from(new Set(t)),getFontValue=(t,e)=>{let o=e.custom?.fontFamily;"string"==typeof o&&(o={value:e.custom?.fontFamily||"",type:"google"});let l=o?.value;if(EXCLUDED_FONT_FAMILIES.includes(l))return;let i=e.custom?.fontVariants;if(i?.length||(i=[e.custom?.fontWeight]),o&&i?.length){let n=i.map(t=>"regular"===t?"400":t),a=e.custom?.fontWeight&&n.includes(e.custom?.fontWeight)?e.custom?.fontWeight:n[0];if(a){let i=uniqueArray([a,...e?.attrs?.isAlwaysLoadBold?["700"]:[]]),r=t.find(t=>t.family==l&&t.variants.includes(a));if(!r){let e=t.find(t=>t.family==l);e?e.variants.push(a):("700"!==a&&n.includes("700")&&i.push("700"),t.push({family:l||"",variants:i,subsets:[],type:o.type}))}}}};export{getFontFromGroupSetting,getFontsFromDataBuilder};
1
+ let EXCLUDED_FONT_FAMILIES=["sans-serif"],getFallbackFontFamilyFromGlobalStyle=(t,e)=>{if(e&&t?.type&&!t?.custom?.fontFamily){let l=e[t.type];if(l){let e=JSON.parse(JSON.stringify(t));return e.custom||(e.custom={}),e.custom.fontFamily={value:l.family,type:l.type},e}}return t},getFontsFromDataBuilder=(t,e)=>{let l=[];for(let o in t)if(Object.prototype.hasOwnProperty.call(t,o)){let i=t[o],n=i.styles,a=i.settings;getFontFromGroupSetting(l,n,e),getFontFromGroupSetting(l,a,e)}return l},getFontFromGroupSetting=(t,e,l)=>{let o=["normal","hover","focus","active","disabled","price","compareAtPrice"];for(let i in e)if(Object.prototype.hasOwnProperty.call(e,i)){let n=e[i];if(!n)continue;let a=l?getFallbackFontFamilyFromGlobalStyle(n,l):n;for(let e of(getFontValue(t,a),o)){if(!n[e])continue;let o=l?getFallbackFontFamilyFromGlobalStyle(n[e],l):n[e];getFontValue(t,o)}}},uniqueArray=t=>Array.from(new Set(t)),getFontValue=(t,e)=>{let l=e.custom?.fontFamily;"string"==typeof l&&(l={value:e.custom?.fontFamily||"",type:"google"});let o=l?.value;if(EXCLUDED_FONT_FAMILIES.includes(o))return;let i=e.custom?.fontVariants;if(i?.length||(i=[e.custom?.fontWeight]),l&&i?.length){let n=i.map(t=>"regular"===t?"400":t),a=e.custom?.fontWeight&&n.includes(e.custom?.fontWeight)?e.custom?.fontWeight:n[0];if(a){let i=uniqueArray([a,...e?.attrs?.isAlwaysLoadBold?["700"]:[],...e?.attrs?.loadFontStyles?.includes("bold")?["700"]:[]]);if(e?.attrs?.loadFontStyles?.includes("italic")){let t=i.map(t=>"string"==typeof t&&/^\d+$/.test(t)?`${t}i`:null).filter(t=>null!==t);i.push(...t)}let r=t.find(t=>t.family==o&&i.every(e=>t.variants.includes(e)));if(!r){let e=t.find(t=>t.family==o);e?i.forEach(t=>{e.variants.includes(t)||e.variants.push(t)}):("700"!==a&&n.includes("700")&&i.push("700"),t.push({family:o||"",variants:uniqueArray(i),subsets:[],type:l.type}))}}}};export{getFontFromGroupSetting,getFontsFromDataBuilder};
@@ -0,0 +1,2 @@
1
+ 'use client';
2
+ import{jsxs as e,Fragment as o,jsx as t}from"react/jsx-runtime";import{useI18n as r,PageProvider as i,BuilderComponentProvider as n,SectionProvider as p,I18nProvider as m,BuilderPreviewProvider as l}from"@gem-sdk/core";import{NextSeo as s}from"next-seo";import a from"next/head";import{useState as d,useMemo as g,useEffect as c}from"react";import u from"../components/builder/Toolbox.js";import f from"../components/builder/Header.js";import y from"../components/builder/Footer.js";import h from"../components/builder/PopupManager.js";import T from"../components/image-to-layout-upsell/ImageToLayout.js";import b from"../components/image-to-layout/AddSectionImageToLayout.js";import j from"../components/builder/Toolbar.js";import x from"../components/builder/SwitchView.js";import S from"../components/builder/Body.js";let BuilderUpsellPage=({components:O,seo:v,themeStyle:I,fontStyle:L,sectionData:w,pageType:P,editorImageToLayout:M,isThemeSectionEditor:N,hiddenToolbar:R,pageName:_,isOriginTemplate:B})=>{let[H,E]=d(!1),{t:U}=r(),k=g(()=>({ROOT:{uid:"ROOT",tag:"Root",label:"Root",childrens:[]}}),[]);c(()=>{E(!0)},[]);let z=()=>{window?.parent?.postMessage(JSON.stringify({type:"open-page-setting"}),"*")};return e(o,{children:[t(s,{...v}),e(a,{children:[I&&t("style",{type:"text/css",id:"global-style",dangerouslySetInnerHTML:{__html:I}}),L&&t("style",{"data-id":"google-fonts",type:"text/css",dangerouslySetInnerHTML:{__html:L}})]}),t(i,{children:t(n,{components:O,children:t(p,{data:w,children:t(m,{t:U,children:e(l,{pageName:_,state:k,isThemeSectionEditor:N,children:[t(u,{}),!R&&t(j,{}),t(h,{}),H&&e("div",{className:"builder gp-z-1 gp-relative",children:[!R&&(N?t("div",{className:"gp-h-[40px] gp-bg-[#ffffff] gp-border-b-[1px] gp-border-[#eeeeee]",children:t(x,{})}):t(f,{pageType:P,isOriginTemplate:B,openPageSetting:z})),t(S,{pageType:P,isThemeSectionEditor:N}),t(T,{editorImageToLayout:M||!1}),t(b,{editorImageToLayout:M||!1}),t("div",{id:"visual-content"}),!N&&!R&&t(y,{pageType:P,isOriginTemplate:B,openPageSetting:z})]})]},"preview")})})})})]})};export{BuilderUpsellPage};
@@ -1,5 +1,5 @@
1
- import{jsx as e,jsxs as t,Fragment as s}from"react/jsx-runtime";import{useI18n as a,PageProvider as r,BuilderComponentProvider as l,SectionProvider as n,I18nProvider as i,BuilderProvider as o,Render as p}from"@gem-sdk/core";import{NextSeo as c}from"next-seo";import g from"next/head";import{useRouter as m}from"next/router";import{useTrackingView as d}from"../libs/hooks/use-tracking-view.js";import{parseHtml as u}from"../libs/parse-html.js";import h from"../components/builder/Header.js";import f from"../components/FooterForPostPurchase.js";import y from"next/script";import{useEffect as _}from"react";let StaticPageV2=({components:b,builderData:v,sectionData:S,seo:x,themeStyle:k,fontStyle:P,elementFontStyle:N,customCodeHeader:T,shopToken:j,pageHandle:H,customFonts:L,isPostPurchase:$,shopName:E,productOffers:F,publicStoreFrontData:I,dynamicDiscountOffer:M,isPreview:q,interaction:w,pageBackground:A})=>{let O=m(),{t:z}=a(),U=process.env.NEXT_GP_BASE_ASSET_URL||"https://assets.gemcommerce.xyz";d(j,H,O.isFallback);let B="custom-code-header";if(_(()=>{let e=document.querySelectorAll(`[class*="${B}-"]`),t=[];e.length>1&&e.forEach(e=>{let s=e.className;if(t.includes(s)){e.remove();return}t.push(s)})},[]),O.isFallback)return e("div",{className:"gp-flex gp-h-[100vh] gp-items-center gp-justify-center",children:t("div",{className:"gp-flex gp-gap-2",children:[e("span",{className:"gp-aspect-square gp-h-2 gp-animate-[flashing_500ms_infinite_alternate] gp-rounded-full gp-bg-slate-800"}),e("span",{className:"gp-aspect-square gp-h-2 gp-animate-[flashing_500ms_infinite_200ms_linear_alternate] gp-rounded-full gp-bg-slate-800"}),e("span",{className:"gp-aspect-square gp-h-2 gp-animate-[flashing_500ms_infinite_500ms_alternate] gp-rounded-full gp-bg-slate-800"})]})});let D=(w?.value||[]).length>0;return t(s,{children:[e(c,{...x}),t(g,{children:[u(B,T,!0),k&&e("style",{"data-id":"global-style",type:"text/css",dangerouslySetInnerHTML:{__html:k}},"global-style"),P&&e("style",{"data-id":"google-fonts",type:"text/css",dangerouslySetInnerHTML:{__html:P}},"google-fonts"),N&&N.map(t=>e("style",{"data-id":"google-element-fonts",type:"text/css",dangerouslySetInnerHTML:{__html:t}},t)),L&&e("style",{"data-id":"custom-element-fonts",type:"text/css",dangerouslySetInnerHTML:{__html:L}},P),A?.isUsePageBackground&&A?.background&&e("style",{children:`
1
+ import{jsx as e,jsxs as t,Fragment as s}from"react/jsx-runtime";import{useI18n as a,PageProvider as r,BuilderComponentProvider as l,I18nProvider as n,SectionProvider as i,BuilderProvider as o,Render as p}from"@gem-sdk/core";import{NextSeo as c}from"next-seo";import g from"next/head";import{useRouter as m}from"next/router";import{useTrackingView as d}from"../libs/hooks/use-tracking-view.js";import{parseHtml as u}from"../libs/parse-html.js";import h from"../components/builder/Header.js";import f from"../components/FooterForPostPurchase.js";import y from"next/script";import{useEffect as _}from"react";let StaticPageV2=({components:b,builderData:v,sectionData:S,seo:x,themeStyle:k,fontStyle:P,elementFontStyle:N,customCodeHeader:T,shopToken:j,pageHandle:H,customFonts:L,isPostPurchase:M,shopName:$,productOffers:E,publicStoreFrontData:F,dynamicDiscountOffer:I,isPreview:q,interaction:w,pageBackground:A,sellingPlanSetting:O,buyerConsentPreCheck:z})=>{let C=m(),{t:U}=a(),B=process.env.NEXT_GP_BASE_ASSET_URL||"https://assets.gemcommerce.xyz";d(j,H,C.isFallback);let D="custom-code-header";if(_(()=>{let e=document.querySelectorAll(`[class*="${D}-"]`),t=[];e.length>1&&e.forEach(e=>{let s=e.className;if(t.includes(s)){e.remove();return}t.push(s)})},[]),C.isFallback)return e("div",{className:"gp-flex gp-h-[100vh] gp-items-center gp-justify-center",children:t("div",{className:"gp-flex gp-gap-2",children:[e("span",{className:"gp-aspect-square gp-h-2 gp-animate-[flashing_500ms_infinite_alternate] gp-rounded-full gp-bg-slate-800"}),e("span",{className:"gp-aspect-square gp-h-2 gp-animate-[flashing_500ms_infinite_200ms_linear_alternate] gp-rounded-full gp-bg-slate-800"}),e("span",{className:"gp-aspect-square gp-h-2 gp-animate-[flashing_500ms_infinite_500ms_alternate] gp-rounded-full gp-bg-slate-800"})]})});let R=(w?.value||[]).length>0;return t(s,{children:[e(c,{...x}),t(g,{children:[u(D,T,!0),k&&e("style",{"data-id":"global-style",type:"text/css",dangerouslySetInnerHTML:{__html:k}},"global-style"),P&&e("style",{"data-id":"google-fonts",type:"text/css",dangerouslySetInnerHTML:{__html:P}},"google-fonts"),N&&N.map(t=>e("style",{"data-id":"google-element-fonts",type:"text/css",dangerouslySetInnerHTML:{__html:t}},t)),L&&e("style",{"data-id":"custom-element-fonts",type:"text/css",dangerouslySetInnerHTML:{__html:L}},P),A?.isUsePageBackground&&A?.background&&e("style",{children:`
2
2
  body {
3
3
  background: ${A.background};
4
4
  }
5
- `},`page_background_${A?.background}`)]}),e(r,{productOffers:F,publicStoreFrontData:I,dynamicDiscountOffer:M,children:e(l,{components:b,children:t("div",{className:`${$?"gp-bg-white post-purchase-page":""} `,role:"main",children:[$&&e(h,{pageType:"POST_PURCHASE"}),D&&e("div",{dangerouslySetInnerHTML:{__html:`<div id="gp-interaction" style="display: none;">${JSON.stringify(w?.value||[])}</div>`}}),e(n,{data:S,children:e(i,{t:z,children:v?.map(s=>t(o,{state:s.data,lazy:s.lazy,priority:s.priority,isPostPurchase:$,isPreview:q,children:[e(p,{uid:s.uid}),D&&e(y,{defer:!0,src:`${U}/assets-v2/gp-flow-action-lip-v7-5.js`})]},s.uid))})}),$&&e(f,{shopName:E||""})]})})})]})};export{StaticPageV2};
5
+ `},`page_background_${A?.background}`)]}),e(r,{productOffers:E,publicStoreFrontData:F,dynamicDiscountOffer:I,sellingPlanMeta:O,buyerConsentChecked:z,children:e(l,{components:b,children:e(n,{t:U,children:t("div",{className:`${M?"gp-bg-white post-purchase-page":""} `,role:"main",children:[M&&e(h,{pageType:"POST_PURCHASE"}),R&&e("div",{dangerouslySetInnerHTML:{__html:`<div id="gp-interaction" style="display: none;">${JSON.stringify(w?.value||[])}</div>`}}),e(i,{data:S,children:v?.map(s=>t(o,{state:s.data,lazy:s.lazy,priority:s.priority,isPostPurchase:M,isPreview:q,children:[e(p,{uid:s.uid}),R&&e(y,{defer:!0,src:`${B}/assets-v2/gp-flow-action-lip-v7-5.js`})]},s.uid))}),M&&e(f,{shopName:$||""})]})})})})]})};export{StaticPageV2};
@@ -92,6 +92,9 @@ type BuilderPageProps = {
92
92
  pageName: string;
93
93
  isOriginTemplate?: boolean;
94
94
  };
95
+ type BuilderUpsellPageProps = BuilderPageProps & {
96
+ isUpsellBuilder?: boolean;
97
+ };
95
98
  type CollectionDetailPageProps = PageBuilderProps & {
96
99
  collection?: CollectionQueryResponse['collection'];
97
100
  };
@@ -110,6 +113,8 @@ type StaticPagePropsV2 = PageBuilderPropsV2 & {
110
113
  publicStoreFrontData?: PublicStoreFrontData | null;
111
114
  isPreview?: boolean;
112
115
  domain?: string;
116
+ sellingPlanSetting?: Record<string, any>;
117
+ buyerConsentPreCheck?: Record<string, boolean>;
113
118
  };
114
119
  type SharePageAPIResponse = {
115
120
  sharedPage: SharePageProps;
@@ -187,6 +192,7 @@ declare const getPostPurchasePropsPreview: (fetcher: FetchFunc, librarySaleFunne
187
192
  currentOfferID: string;
188
193
  isLibraryTemplate?: boolean;
189
194
  isShopLibraryPage?: boolean;
195
+ sellingPlanSetting?: Record<string, any>;
190
196
  }) => Promise<Omit<StaticPagePropsV2, 'publicStoreFrontData'>>;
191
197
 
192
198
  declare const getStaticPagePropsPreview: (fetcher: FetchFunc, shopifyFetcher: FetchFunc) => (slug: string) => Promise<PageBuilderPropsV2>;
@@ -349,8 +355,10 @@ declare const StaticPage: React.FC<PageBuilderProps & AdditionalPageBuilderProps
349
355
 
350
356
  declare const BuilderPage: React.FC<BuilderPageProps>;
351
357
 
358
+ declare const BuilderUpsellPage: React.FC<BuilderUpsellPageProps>;
359
+
352
360
  declare const StaticPageV2: React.FC<StaticPagePropsV2 & AdditionalPageBuilderProps>;
353
361
 
354
362
  declare const PreviewTemplate: React.FC<SharePageProps & AdditionalPageBuilderProps>;
355
363
 
356
- export { AppPropsWithLayout, BuilderPage, CollectionDetailPage, ErrorBoundary, ErrorFallback, FacebookPixel, GoogleAnalytic, NextPageWithLayout, Page404, Page500, PageBuilderProps, PageBuilderPropsV2, PreviewPage, PreviewTemplate, ProductDetailPage, SharePageAPIResponse, SharePageProps, SharePageTracking, StaticPage, StaticPagePropsV2, StaticPageV2, TikTokPixel, createAppAPIFetcher, createFetcher, createShopifyFetcher, createTemplateFetcher, genCSS, getBuilderProps, getCollectionProps, getCollectionSharePageProps, getFallbackV2, getFontFromGlobalStyle, getFontFromGroupSetting, getFontLinkFromGlobalStyle, getFonts, getFontsFromDataBuilder, getHomePageProps, getHomePagePropsV2, getLayout, getPostPurchasePropsPreview, getPreviewProps, getProductProps, getSharePageContentProps, getSharePageProps, getStaticPagePropsPreview, getStaticPagePropsV2, getStaticPaths, getStorefrontApi, isBot, normalizePageSectionResponseV2, parseBuilderTemplateV2, retryWithDelay, usePagePreview, useTrackingView };
364
+ export { AppPropsWithLayout, BuilderPage, BuilderUpsellPage, CollectionDetailPage, ErrorBoundary, ErrorFallback, FacebookPixel, GoogleAnalytic, NextPageWithLayout, Page404, Page500, PageBuilderProps, PageBuilderPropsV2, PreviewPage, PreviewTemplate, ProductDetailPage, SharePageAPIResponse, SharePageProps, SharePageTracking, StaticPage, StaticPagePropsV2, StaticPageV2, TikTokPixel, createAppAPIFetcher, createFetcher, createShopifyFetcher, createTemplateFetcher, genCSS, getBuilderProps, getCollectionProps, getCollectionSharePageProps, getFallbackV2, getFontFromGlobalStyle, getFontFromGroupSetting, getFontLinkFromGlobalStyle, getFonts, getFontsFromDataBuilder, getHomePageProps, getHomePagePropsV2, getLayout, getPostPurchasePropsPreview, getPreviewProps, getProductProps, getSharePageContentProps, getSharePageProps, getStaticPagePropsPreview, getStaticPagePropsV2, getStaticPaths, getStorefrontApi, isBot, normalizePageSectionResponseV2, parseBuilderTemplateV2, retryWithDelay, usePagePreview, useTrackingView };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gem-sdk/pages",
3
- "version": "10.0.2",
3
+ "version": "12.0.0-dev.107",
4
4
  "license": "MIT",
5
5
  "sideEffects": false,
6
6
  "main": "dist/cjs/index.js",
@@ -16,23 +16,24 @@
16
16
  "build": "rollup -c ./../../helpers/rollup.config.mjs --environment NODE_ENV:production",
17
17
  "lint": "eslint ./src --ext .tsx,.ts",
18
18
  "type-check": "yarn tsc --noEmit",
19
- "test": "jest -c ./../../helpers/jest.config.ts"
19
+ "test": "jest -c ./../../helpers/jest.config.ts",
20
+ "gen-google-fonts": "node ./scripts/genFontGoogle.js"
20
21
  },
21
22
  "dependencies": {
22
23
  "@sentry/nextjs": "7.77.0",
23
24
  "deepmerge": "4.3.1",
24
- "html-react-parser": "3.0.15",
25
- "next-seo": "^6.0.0",
26
- "next": "14.2.20"
25
+ "html-react-parser": "4.2.10",
26
+ "next-seo": "6.8.0",
27
+ "next": "14.2.35"
27
28
  },
28
29
  "devDependencies": {
29
- "@gem-sdk/core": "8.0.1",
30
- "@gem-sdk/plugin-cookie-bar": "7.0.0",
31
- "@gem-sdk/plugin-quick-view": "7.0.0",
32
- "@gem-sdk/plugin-sticky-add-to-cart": "7.0.0"
30
+ "@gem-sdk/core": "12.0.0-dev.103",
31
+ "@gem-sdk/plugin-cookie-bar": "12.0.0-dev.53",
32
+ "@gem-sdk/plugin-quick-view": "12.0.0-dev.53",
33
+ "@gem-sdk/plugin-sticky-add-to-cart": "12.0.0-dev.53"
33
34
  },
34
35
  "peerDependencies": {
35
- "next": ">=14"
36
+ "next": "14.2.35"
36
37
  },
37
38
  "module": "dist/esm/index.js",
38
39
  "types": "dist/types/index.d.ts",