@gem-sdk/pages 2.0.0-dev.1132 → 2.0.0-dev.1138
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.
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/libs/api/get-share-page-props.js +1 -0
- package/dist/cjs/libs/fetcher.js +1 -1
- package/dist/cjs/libs/google-fonts.js +1 -1
- package/dist/cjs/pages/preview-template.js +5 -0
- package/dist/esm/index.js +1 -1
- package/dist/esm/libs/api/get-share-page-props.js +1 -0
- package/dist/esm/libs/fetcher.js +1 -1
- package/dist/esm/libs/google-fonts.js +1 -1
- package/dist/esm/pages/preview-template.js +5 -0
- package/dist/types/index.d.ts +30 -1
- package/package.json +1 -1
package/dist/cjs/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var getCollectionProps=require("./libs/api/get-collection-props.js"),getHomePageProps=require("./libs/api/get-home-page-props.js"),getHomePagePropsV2=require("./libs/api/get-home-page-props-v2.js"),getPreviewProps=require("./libs/api/get-preview-props.js"),getBuilderProps=require("./libs/api/get-builder-props.js"),getProductProps=require("./libs/api/get-product-props.js"),getStaticPagePropsV2=require("./libs/api/get-static-page-props-v2.js"),getPostPurchasePropsPreview=require("./libs/api/get-post-purchase-props-preview.js"),getStaticPagePropsPreview=require("./libs/api/get-static-page-props-preview.js"),fetcher=require("./libs/fetcher.js"),getLayout=require("./libs/get-layout.js"),genCss=require("./libs/helpers/gen-css.js"),useTrackingView=require("./libs/hooks/use-tracking-view.js"),usePagePreview=require("./libs/hooks/usePagePreview.js"),userAgent=require("./libs/helpers/user-agent.js"),normalize=require("./libs/helpers/normalize.js"),getFallback=require("./libs/helpers/get-fallback.js"),common=require("./libs/helpers/common.js"),getStaticPaths=require("./libs/getStaticPaths.js"),genFonts=require("./libs/helpers/gen-fonts.js"),googleFonts=require("./libs/google-fonts.js"),getStorefrontApi=require("./libs/get-storefront-api.js"),ErrorBoundary=require("./components/ErrorBoundary.js"),ErrorFallback=require("./components/ErrorFallback.js"),_404=require("./pages/404.js"),_500=require("./pages/500.js"),GoogleAnalytic=require("./components/GoogleAnalytic.js"),FacebookPixel=require("./components/FacebookPixel.js"),TikTokPixel=require("./components/TikTokPixel.js"),collectionDetail=require("./pages/collection-detail.js"),preview=require("./pages/preview.js"),productDetail=require("./pages/product-detail.js"),_static=require("./pages/static.js"),builder=require("./pages/builder.js"),staticV2=require("./pages/static-v2.js");exports.getCollectionProps=getCollectionProps.getCollectionProps,exports.getHomePageProps=getHomePageProps.getHomePageProps,exports.getHomePagePropsV2=getHomePagePropsV2.getHomePagePropsV2,exports.getPreviewProps=getPreviewProps.getPreviewProps,exports.getBuilderProps=getBuilderProps.getBuilderProps,exports.getProductProps=getProductProps.getProductProps,exports.getStaticPagePropsV2=getStaticPagePropsV2.getStaticPagePropsV2,exports.getPostPurchasePropsPreview=getPostPurchasePropsPreview.getPostPurchasePropsPreview,exports.getStaticPagePropsPreview=getStaticPagePropsPreview.getStaticPagePropsPreview,exports.createAppAPIFetcher=fetcher.createAppAPIFetcher,exports.createFetcher=fetcher.createFetcher,exports.createShopifyFetcher=fetcher.createShopifyFetcher,exports.getLayout=getLayout.getLayout,exports.genCSS=genCss.genCSS,exports.useTrackingView=useTrackingView.useTrackingView,exports.usePagePreview=usePagePreview.usePagePreview,exports.isBot=userAgent.isBot,exports.normalizePageSectionResponseV2=normalize.normalizePageSectionResponseV2,exports.parseBuilderTemplateV2=normalize.parseBuilderTemplateV2,exports.getFallbackV2=getFallback.getFallbackV2,exports.retryWithDelay=common.retryWithDelay,exports.getStaticPaths=getStaticPaths.getStaticPaths,exports.getFontFromGroupSetting=genFonts.getFontFromGroupSetting,exports.getFontsFromDataBuilder=genFonts.getFontsFromDataBuilder,exports.getFontFromGlobalStyle=googleFonts.getFontFromGlobalStyle,exports.getFonts=googleFonts.getFonts,exports.getStorefrontApi=getStorefrontApi.getStorefrontApi,exports.ErrorBoundary=ErrorBoundary.ErrorBoundary,exports.ErrorFallback=ErrorFallback.ErrorFallback,exports.Page404=_404.Page404,exports.Page500=_500.Page500,exports.GoogleAnalytic=GoogleAnalytic.GoogleAnalytic,exports.FacebookPixel=FacebookPixel.FacebookPixel,exports.TikTokPixel=TikTokPixel.TikTokPixel,exports.CollectionDetailPage=collectionDetail.default,exports.PreviewPage=preview.PreviewPage,exports.ProductDetailPage=productDetail.default,exports.StaticPage=_static.default,exports.BuilderPage=builder.BuilderPage,exports.StaticPageV2=staticV2.StaticPageV2;
|
|
1
|
+
"use strict";var getCollectionProps=require("./libs/api/get-collection-props.js"),getHomePageProps=require("./libs/api/get-home-page-props.js"),getHomePagePropsV2=require("./libs/api/get-home-page-props-v2.js"),getPreviewProps=require("./libs/api/get-preview-props.js"),getBuilderProps=require("./libs/api/get-builder-props.js"),getProductProps=require("./libs/api/get-product-props.js"),getStaticPagePropsV2=require("./libs/api/get-static-page-props-v2.js"),getSharePageProps=require("./libs/api/get-share-page-props.js"),getPostPurchasePropsPreview=require("./libs/api/get-post-purchase-props-preview.js"),getStaticPagePropsPreview=require("./libs/api/get-static-page-props-preview.js"),fetcher=require("./libs/fetcher.js"),getLayout=require("./libs/get-layout.js"),genCss=require("./libs/helpers/gen-css.js"),useTrackingView=require("./libs/hooks/use-tracking-view.js"),usePagePreview=require("./libs/hooks/usePagePreview.js"),userAgent=require("./libs/helpers/user-agent.js"),normalize=require("./libs/helpers/normalize.js"),getFallback=require("./libs/helpers/get-fallback.js"),common=require("./libs/helpers/common.js"),getStaticPaths=require("./libs/getStaticPaths.js"),genFonts=require("./libs/helpers/gen-fonts.js"),googleFonts=require("./libs/google-fonts.js"),getStorefrontApi=require("./libs/get-storefront-api.js"),ErrorBoundary=require("./components/ErrorBoundary.js"),ErrorFallback=require("./components/ErrorFallback.js"),_404=require("./pages/404.js"),_500=require("./pages/500.js"),GoogleAnalytic=require("./components/GoogleAnalytic.js"),FacebookPixel=require("./components/FacebookPixel.js"),TikTokPixel=require("./components/TikTokPixel.js"),collectionDetail=require("./pages/collection-detail.js"),preview=require("./pages/preview.js"),productDetail=require("./pages/product-detail.js"),_static=require("./pages/static.js"),builder=require("./pages/builder.js"),staticV2=require("./pages/static-v2.js"),previewTemplate=require("./pages/preview-template.js");exports.getCollectionProps=getCollectionProps.getCollectionProps,exports.getHomePageProps=getHomePageProps.getHomePageProps,exports.getHomePagePropsV2=getHomePagePropsV2.getHomePagePropsV2,exports.getPreviewProps=getPreviewProps.getPreviewProps,exports.getBuilderProps=getBuilderProps.getBuilderProps,exports.getProductProps=getProductProps.getProductProps,exports.getStaticPagePropsV2=getStaticPagePropsV2.getStaticPagePropsV2,exports.getSharePageProps=getSharePageProps.getSharePageProps,exports.getPostPurchasePropsPreview=getPostPurchasePropsPreview.getPostPurchasePropsPreview,exports.getStaticPagePropsPreview=getStaticPagePropsPreview.getStaticPagePropsPreview,exports.createAppAPIFetcher=fetcher.createAppAPIFetcher,exports.createFetcher=fetcher.createFetcher,exports.createShopifyFetcher=fetcher.createShopifyFetcher,exports.createTemplateFetcher=fetcher.createTemplateFetcher,exports.getLayout=getLayout.getLayout,exports.genCSS=genCss.genCSS,exports.useTrackingView=useTrackingView.useTrackingView,exports.usePagePreview=usePagePreview.usePagePreview,exports.isBot=userAgent.isBot,exports.normalizePageSectionResponseV2=normalize.normalizePageSectionResponseV2,exports.parseBuilderTemplateV2=normalize.parseBuilderTemplateV2,exports.getFallbackV2=getFallback.getFallbackV2,exports.retryWithDelay=common.retryWithDelay,exports.getStaticPaths=getStaticPaths.getStaticPaths,exports.getFontFromGroupSetting=genFonts.getFontFromGroupSetting,exports.getFontsFromDataBuilder=genFonts.getFontsFromDataBuilder,exports.getFontFromGlobalStyle=googleFonts.getFontFromGlobalStyle,exports.getFonts=googleFonts.getFonts,exports.getStorefrontApi=getStorefrontApi.getStorefrontApi,exports.ErrorBoundary=ErrorBoundary.ErrorBoundary,exports.ErrorFallback=ErrorFallback.ErrorFallback,exports.Page404=_404.Page404,exports.Page500=_500.Page500,exports.GoogleAnalytic=GoogleAnalytic.GoogleAnalytic,exports.FacebookPixel=FacebookPixel.FacebookPixel,exports.TikTokPixel=TikTokPixel.TikTokPixel,exports.CollectionDetailPage=collectionDetail.default,exports.PreviewPage=preview.PreviewPage,exports.ProductDetailPage=productDetail.default,exports.StaticPage=_static.default,exports.BuilderPage=builder.BuilderPage,exports.StaticPageV2=staticV2.StaticPageV2,exports.PreviewTemplate=previewTemplate.PreviewTemplate;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var nextjs=require("@sentry/nextjs"),normalize=require("../helpers/normalize.js"),parseJson=require("../helpers/parse-json.js"),genCss=require("../helpers/gen-css.js"),googleFonts=require("../google-fonts.js"),customFonts=require("../custom-fonts.js");const getSharePageProps=e=>async t=>{try{let{sharedPage:s,customFonts:o}=await e([t]);if(!s)return null;let{page:r,themeStyle:n,share:a,pageSections:l,pageMeta:i,shopMeta:u,products:p,collections:g,articles:m}=s,c=normalize.parseBuilderTemplateV2(s),[h,F,d]=await Promise.all([googleFonts.getFontStyleFromPageTemplate(c),googleFonts.getFontFromGlobalStyle(n?.data),customFonts.getCustomFonts(o)]),j={defaultTitle:u?.shop?.name??"",title:a?.title,openGraph:{site_name:u?.shop?.name??"",locale:u?.localization?.country?.isoCode??"",title:a?.title??u?.shop?.name??"",description:a?.description??u?.shop?.description??"",images:a?.thumbnails?a.thumbnails:[]},nofollow:!0,noindex:!0};return parseJson.serializableJson({seo:j,builderData:c,page:r,themeStyle:genCss.genCSS(n?.data,!1),share:a,pageSections:l,pageMeta:i,shopMeta:u,products:p,collections:g,articles:m,elementFontStyle:h,fontStyle:F,customFonts:d})}catch(e){return nextjs.captureException(e),null}};exports.getSharePageProps=getSharePageProps;
|
package/dist/cjs/libs/fetcher.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var getStorefrontApi=require("./get-storefront-api.js"),extractOperation=require("./helpers/extract-operation.js");const createFetcher=e=>{let r=e||process.env.NEXT_PUBLIC_SHOP_TOKEN;return async e=>{let[t,o,n]=e;if(!r)throw Error("shopToken is not defined");let
|
|
1
|
+
"use strict";var getStorefrontApi=require("./get-storefront-api.js"),extractOperation=require("./helpers/extract-operation.js");const createFetcher=e=>{let r=e||process.env.NEXT_PUBLIC_SHOP_TOKEN;return async e=>{let[t,o,n]=e;if(!r)throw Error("shopToken is not defined");let s=process.env.NEXT_PUBLIC_API_URL;if(!s)throw Error("NEXT_PUBLIC_API_URL is not defined");let i=extractOperation.extractOperation(t);i&&(s=`${s}?gp-online-store-operation=${i}`);let a={"Content-Type":"application/json","X-GemX-Shop-Token":r};return fetch(s,{method:"POST",headers:a,body:JSON.stringify({query:t,variables:o,operationName:n})}).then(e=>e.json()).then(e=>e.errors?Promise.reject(e.errors):e.data)}},createAppAPIFetcher=(e,r)=>{let t=process.env.NEXT_APP_API_URL;return async o=>{let[n,s,i]=o;if(!e)throw Error("shopToken is not defined");if(!t)throw Error("NEXT_APP_API_URL is not defined");let a=extractOperation.extractOperation(n);a&&(t=`${t}?gp-online-store-operation=${a}`);let c={"Content-Type":"application/json",Authorization:`Token ${e}`,"X-GemX-Shop-ID":r||""};return fetch(`${t}?gp-online-store-operation=${i}`,{method:"POST",headers:c,body:JSON.stringify({query:n,variables:s,operationName:i})}).then(e=>e.json()).then(e=>e.errors?Promise.reject(e.errors):e.data)}},createShopifyFetcher=(e,r)=>{let t=e??process.env.NEXT_PUBLIC_STOREFRONT_TOKEN,o=r??process.env.NEXT_PUBLIC_STOREFRONT_HANDLE;return async e=>{if(!t)throw Error("NEXT_PUBLIC_STOREFRONT_TOKEN is not defined");if(!o)throw Error("NEXT_PUBLIC_STOREFRONT_HANDLE is not defined");let r={"Content-Type":"application/json","X-Shopify-Storefront-Access-Token":t},[n,s]=e;return fetch(getStorefrontApi.getStorefrontApi(o),{method:"POST",headers:r,body:JSON.stringify({query:n,variables:s})}).then(e=>e.json()).then(e=>e.errors?Promise.reject(e.errors):e.data)}},createTemplateFetcher=e=>{let r=process.env.NEXT_PUBLIC_URL_SHARE_PAGE;return async()=>{if(!r)throw Error("NEXT_PUBLIC_URL_SHARE_PAGE is not defined");try{let t=await fetch(`${r}/share/page/${e}`,{method:"GET"});if(!t.ok)throw Error(`HTTP error! status: ${t.status}`);let o=await t.json();if(o.errors)throw Error(`API errors: ${JSON.stringify(o.errors)}`);return o.result}catch(e){throw console.error("Template fetcher error:",e),e}}};exports.createAppAPIFetcher=createAppAPIFetcher,exports.createFetcher=createFetcher,exports.createShopifyFetcher=createShopifyFetcher,exports.createTemplateFetcher=createTemplateFetcher;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var checkOptionFont=require("./helpers/check-option-font.js"),genFonts=require("./helpers/gen-fonts.js"),sentry=require("./helpers/sentry.js");const 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(e,t){try{return fetch(e,{headers:{"User-Agent":t}}).then(n=>200===n.status?n.text():(sentry.sentryCaptureException("getFontForUA",`Unexpected status ${n.status}`,{url:e,UA:t}),""))}catch(n){return sentry.sentryCaptureException("getFontForUA","Error fetching font",{url:e,UA:t,error:n}),""}}const composeFonts=e=>{let t=e.filter((e,t,n)=>t===n.findIndex(t=>t.family===e.family));return t.map(t=>{let n=e.filter(e=>e.family===t.family).reduce((e,t)=>[...e,...t.variants],[]).filter((e,t,n)=>t===n.findIndex(t=>t===e));return{...t,variants:n}})},createFontUrl=(e,t,n)=>{let o=e.filter(e=>!(["bunny","google"].includes(e.type)&&checkOptionFont.checkNotInOptionFont(e.family,n||"google"))&&("google"===e.type||"bunny"===e.type||!e.type));if(!o.length)return;let r=new URLSearchParams,
|
|
1
|
+
"use strict";var checkOptionFont=require("./helpers/check-option-font.js"),genFonts=require("./helpers/gen-fonts.js"),sentry=require("./helpers/sentry.js");const 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(e,t){try{return fetch(e,{headers:{"User-Agent":t}}).then(n=>200===n.status?n.text():(sentry.sentryCaptureException("getFontForUA",`Unexpected status ${n.status}`,{url:e,UA:t}),""))}catch(n){return sentry.sentryCaptureException("getFontForUA","Error fetching font",{url:e,UA:t,error:n}),""}}const composeFonts=e=>{let t=e.filter((e,t,n)=>t===n.findIndex(t=>t.family===e.family));return t.map(t=>{let n=e.filter(e=>e.family===t.family).reduce((e,t)=>[...e,...t.variants],[]).filter((e,t,n)=>t===n.findIndex(t=>t===e));return{...t,variants:n}})},GOOGLE_CSS2_OVERRIDES={"Roboto+Flex":"https://fonts.googleapis.com/css2?family=Roboto+Flex:opsz,wght@8..144,100..1000&display=swap"},normalizeFamily=e=>e?.replace(/ /g,"+")??"",isRenderGoggleFontCss2=(e,t)=>{if("bunny"===t||1!==e.length)return!1;let n=normalizeFamily(e?.[0]?.family);return!!GOOGLE_CSS2_OVERRIDES[n]},getGoggleFontCss2URL=(e,t)=>{let n=GOOGLE_CSS2_OVERRIDES[e];if(n)return n.includes("display=")?n.replace(/display=[^&]+/,`display=${t}`):`${n}${n.includes("?")?"&":"?"}display=${t}`},createFontUrl=(e,t,n)=>{let o=e.filter(e=>!(["bunny","google"].includes(e.type)&&checkOptionFont.checkNotInOptionFont(e.family,n||"google"))&&("google"===e.type||"bunny"===e.type||!e.type));if(!o.length)return;let r=new URLSearchParams,l=t?.display||"swap",s=o.filter((e,t,n)=>t===n.findIndex(t=>t.family===e.family));if(isRenderGoggleFontCss2(s,n)){let e=normalizeFamily(s?.[0]?.family),t=getGoggleFontCss2URL(e,l);if(t)return t}let i=composeFonts(s).map(e=>`${e.family.replace(/ /g,"+")}:${e.variants.join(",")}`).join("|");if("sans-serif"===i)return;r.append("family",i),r.append("display",l),t?.subset&&r.append("subset",t.subset),t?.effect&&r.append("effect",t.effect);let a=`https://fonts.bunny.net/css?family=${i}`,c=`https://fonts.googleapis.com/css?${decodeURIComponent(r.toString())}`;return"bunny"===n?a:c};async function getFonts(e,t,n=!0,o){let r=createFontUrl(e,t,o);if(!r)return"";try{if(n)return`@import url('${r}');`;let[e,t]=await Promise.all([getFontForUA(r,"Mozilla/5.0 (Windows NT 10.0; Trident/7.0; rv:11.0) like Gecko"),getFontForUA(r,"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+t;{let e=new TextEncoder,t=o?e.encode(o).length:0;if(Math.ceil(t/1024)>=50)return`@import url('${r}');`}return o}catch(e){return sentry.sentryCaptureException("getFonts","Error fetching font",{url:r,fontType:o}),""}}const getFontFromGlobalStyle=(e,t)=>{if(!e)return"";try{let n=JSON.parse(e),o=n?.font??{},r=Object.entries(o).map(([,e])=>e);return getFonts(r,void 0,void 0,t)}catch{return""}};async function getFontStyleFromPageTemplate(e,t){let n=e.map(e=>getFonts(genFonts.getFontsFromDataBuilder(e.data),void 0,void 0,t));return await Promise.all(n)}exports.composeFonts=composeFonts,exports.createFontUrl=createFontUrl,exports.getFontFromGlobalStyle=getFontFromGlobalStyle,exports.getFontStyleFromPageTemplate=getFontStyleFromPageTemplate,exports.getFonts=getFonts;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
"use strict";var jsxRuntime=require("react/jsx-runtime"),core=require("@gem-sdk/core"),nextSeo=require("next-seo"),Head=require("next/head"),router=require("next/router"),parseHtml=require("../libs/parse-html.js"),react=require("react");const PreviewTemplate=({components:e,builderData:t,sectionData:s,seo:r,themeStyle:n,fontStyle:a,elementFontStyle:i,customCodeHeader:l,customFonts:u,productOffers:o,publicStoreFrontData:m,dynamicDiscountOffer:c,isPreview:d,pageBackground:x})=>{let g=router.useRouter(),{t:p}=core.useI18n(),j="custom-code-header";return(react.useEffect(()=>{let e=document.querySelectorAll(`[class*="${j}-"]`),t=[];e.length>1&&e.forEach(e=>{let s=e.className;if(t.includes(s)){e.remove();return}t.push(s)})},[]),g.isFallback)?jsxRuntime.jsx("div",{className:"gp-flex gp-h-[100vh] gp-items-center gp-justify-center",children:jsxRuntime.jsxs("div",{className:"gp-flex gp-gap-2",children:[jsxRuntime.jsx("span",{className:"gp-aspect-square gp-h-2 gp-animate-[flashing_500ms_infinite_alternate] gp-rounded-full gp-bg-slate-800"}),jsxRuntime.jsx("span",{className:"gp-aspect-square gp-h-2 gp-animate-[flashing_500ms_infinite_200ms_linear_alternate] gp-rounded-full gp-bg-slate-800"}),jsxRuntime.jsx("span",{className:"gp-aspect-square gp-h-2 gp-animate-[flashing_500ms_infinite_500ms_alternate] gp-rounded-full gp-bg-slate-800"})]})}):jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(nextSeo.NextSeo,{...r}),jsxRuntime.jsxs(Head,{children:[parseHtml.parseHtml(j,l,!0),n&&jsxRuntime.jsx("style",{"data-id":"global-style",type:"text/css",dangerouslySetInnerHTML:{__html:n}},"global-style"),a&&jsxRuntime.jsx("style",{"data-id":"google-fonts",type:"text/css",dangerouslySetInnerHTML:{__html:a}},"google-fonts"),i&&i.map(e=>jsxRuntime.jsx("style",{"data-id":"google-element-fonts",type:"text/css",dangerouslySetInnerHTML:{__html:e}},e)),u&&jsxRuntime.jsx("style",{"data-id":"custom-element-fonts",type:"text/css",dangerouslySetInnerHTML:{__html:u}},a),x?.isUsePageBackground&&x?.background&&jsxRuntime.jsx("style",{children:`
|
|
2
|
+
body {
|
|
3
|
+
background: ${x.background};
|
|
4
|
+
}
|
|
5
|
+
`},`page_background_${x?.background}`)]}),jsxRuntime.jsx(core.PageProvider,{productOffers:o,publicStoreFrontData:m,dynamicDiscountOffer:c,children:jsxRuntime.jsx(core.BuilderComponentProvider,{components:e,children:jsxRuntime.jsx("div",{children:jsxRuntime.jsx(core.SectionProvider,{data:s,children:jsxRuntime.jsx(core.I18nProvider,{t:p,children:t?.map(e=>jsxRuntime.jsx(jsxRuntime.Fragment,{children:jsxRuntime.jsx(core.BuilderProvider,{state:e.data,lazy:e.lazy,priority:e.priority,isPreview:d,children:jsxRuntime.jsx(core.Render,{uid:e.uid})},e.uid)}))})})})})})]})};exports.PreviewTemplate=PreviewTemplate;
|
package/dist/esm/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{getCollectionProps}from"./libs/api/get-collection-props.js";export{getHomePageProps}from"./libs/api/get-home-page-props.js";export{getHomePagePropsV2}from"./libs/api/get-home-page-props-v2.js";export{getPreviewProps}from"./libs/api/get-preview-props.js";export{getBuilderProps}from"./libs/api/get-builder-props.js";export{getProductProps}from"./libs/api/get-product-props.js";export{getStaticPagePropsV2}from"./libs/api/get-static-page-props-v2.js";export{getPostPurchasePropsPreview}from"./libs/api/get-post-purchase-props-preview.js";export{getStaticPagePropsPreview}from"./libs/api/get-static-page-props-preview.js";export{createAppAPIFetcher,createFetcher,createShopifyFetcher}from"./libs/fetcher.js";export{getLayout}from"./libs/get-layout.js";export{genCSS}from"./libs/helpers/gen-css.js";export{useTrackingView}from"./libs/hooks/use-tracking-view.js";export{usePagePreview}from"./libs/hooks/usePagePreview.js";export{isBot}from"./libs/helpers/user-agent.js";export{normalizePageSectionResponseV2,parseBuilderTemplateV2}from"./libs/helpers/normalize.js";export{getFallbackV2}from"./libs/helpers/get-fallback.js";export{retryWithDelay}from"./libs/helpers/common.js";export{getStaticPaths}from"./libs/getStaticPaths.js";export{getFontFromGroupSetting,getFontsFromDataBuilder}from"./libs/helpers/gen-fonts.js";export{getFontFromGlobalStyle,getFonts}from"./libs/google-fonts.js";export{getStorefrontApi}from"./libs/get-storefront-api.js";export{ErrorBoundary}from"./components/ErrorBoundary.js";export{ErrorFallback}from"./components/ErrorFallback.js";export{Page404}from"./pages/404.js";export{Page500}from"./pages/500.js";export{GoogleAnalytic}from"./components/GoogleAnalytic.js";export{FacebookPixel}from"./components/FacebookPixel.js";export{TikTokPixel}from"./components/TikTokPixel.js";export{default as CollectionDetailPage}from"./pages/collection-detail.js";export{PreviewPage}from"./pages/preview.js";export{default as ProductDetailPage}from"./pages/product-detail.js";export{default as StaticPage}from"./pages/static.js";export{BuilderPage}from"./pages/builder.js";export{StaticPageV2}from"./pages/static-v2.js";
|
|
1
|
+
export{getCollectionProps}from"./libs/api/get-collection-props.js";export{getHomePageProps}from"./libs/api/get-home-page-props.js";export{getHomePagePropsV2}from"./libs/api/get-home-page-props-v2.js";export{getPreviewProps}from"./libs/api/get-preview-props.js";export{getBuilderProps}from"./libs/api/get-builder-props.js";export{getProductProps}from"./libs/api/get-product-props.js";export{getStaticPagePropsV2}from"./libs/api/get-static-page-props-v2.js";export{getSharePageProps}from"./libs/api/get-share-page-props.js";export{getPostPurchasePropsPreview}from"./libs/api/get-post-purchase-props-preview.js";export{getStaticPagePropsPreview}from"./libs/api/get-static-page-props-preview.js";export{createAppAPIFetcher,createFetcher,createShopifyFetcher,createTemplateFetcher}from"./libs/fetcher.js";export{getLayout}from"./libs/get-layout.js";export{genCSS}from"./libs/helpers/gen-css.js";export{useTrackingView}from"./libs/hooks/use-tracking-view.js";export{usePagePreview}from"./libs/hooks/usePagePreview.js";export{isBot}from"./libs/helpers/user-agent.js";export{normalizePageSectionResponseV2,parseBuilderTemplateV2}from"./libs/helpers/normalize.js";export{getFallbackV2}from"./libs/helpers/get-fallback.js";export{retryWithDelay}from"./libs/helpers/common.js";export{getStaticPaths}from"./libs/getStaticPaths.js";export{getFontFromGroupSetting,getFontsFromDataBuilder}from"./libs/helpers/gen-fonts.js";export{getFontFromGlobalStyle,getFonts}from"./libs/google-fonts.js";export{getStorefrontApi}from"./libs/get-storefront-api.js";export{ErrorBoundary}from"./components/ErrorBoundary.js";export{ErrorFallback}from"./components/ErrorFallback.js";export{Page404}from"./pages/404.js";export{Page500}from"./pages/500.js";export{GoogleAnalytic}from"./components/GoogleAnalytic.js";export{FacebookPixel}from"./components/FacebookPixel.js";export{TikTokPixel}from"./components/TikTokPixel.js";export{default as CollectionDetailPage}from"./pages/collection-detail.js";export{PreviewPage}from"./pages/preview.js";export{default as ProductDetailPage}from"./pages/product-detail.js";export{default as StaticPage}from"./pages/static.js";export{BuilderPage}from"./pages/builder.js";export{StaticPageV2}from"./pages/static-v2.js";export{PreviewTemplate}from"./pages/preview-template.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{captureException as e}from"@sentry/nextjs";import{parseBuilderTemplateV2 as t}from"../helpers/normalize.js";import{serializableJson as o}from"../helpers/parse-json.js";import{genCSS as r}from"../helpers/gen-css.js";import{getFontStyleFromPageTemplate as s,getFontFromGlobalStyle as a}from"../google-fonts.js";import{getCustomFonts as i}from"../custom-fonts.js";let getSharePageProps=l=>async n=>{try{let{sharedPage:e,customFonts:m}=await l([n]);if(!e)return null;let{page:p,themeStyle:h,share:c,pageSections:u,pageMeta:f,shopMeta:d,products:g,collections:j,articles:y}=e,P=t(e),[b,w,x]=await Promise.all([s(P),a(h?.data),i(m)]),S={defaultTitle:d?.shop?.name??"",title:c?.title,openGraph:{site_name:d?.shop?.name??"",locale:d?.localization?.country?.isoCode??"",title:c?.title??d?.shop?.name??"",description:c?.description??d?.shop?.description??"",images:c?.thumbnails?c.thumbnails:[]},nofollow:!0,noindex:!0};return o({seo:S,builderData:P,page:p,themeStyle:r(h?.data,!1),share:c,pageSections:u,pageMeta:f,shopMeta:d,products:g,collections:j,articles:y,elementFontStyle:b,fontStyle:w,customFonts:x})}catch(t){return e(t),null}};export{getSharePageProps};
|
package/dist/esm/libs/fetcher.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{getStorefrontApi as e}from"./get-storefront-api.js";import{extractOperation as r}from"./helpers/extract-operation.js";let createFetcher=e=>{let t=e||process.env.NEXT_PUBLIC_SHOP_TOKEN;return async e=>{let[o,n,
|
|
1
|
+
import{getStorefrontApi as e}from"./get-storefront-api.js";import{extractOperation as r}from"./helpers/extract-operation.js";let createFetcher=e=>{let t=e||process.env.NEXT_PUBLIC_SHOP_TOKEN;return async e=>{let[o,n,s]=e;if(!t)throw Error("shopToken is not defined");let i=process.env.NEXT_PUBLIC_API_URL;if(!i)throw Error("NEXT_PUBLIC_API_URL is not defined");let h=r(o);h&&(i=`${i}?gp-online-store-operation=${h}`);let a={"Content-Type":"application/json","X-GemX-Shop-Token":t};return fetch(i,{method:"POST",headers:a,body:JSON.stringify({query:o,variables:n,operationName:s})}).then(e=>e.json()).then(e=>e.errors?Promise.reject(e.errors):e.data)}},createAppAPIFetcher=(e,t)=>{let o=process.env.NEXT_APP_API_URL;return async n=>{let[s,i,h]=n;if(!e)throw Error("shopToken is not defined");if(!o)throw Error("NEXT_APP_API_URL is not defined");let a=r(s);a&&(o=`${o}?gp-online-store-operation=${a}`);let c={"Content-Type":"application/json",Authorization:`Token ${e}`,"X-GemX-Shop-ID":t||""};return fetch(`${o}?gp-online-store-operation=${h}`,{method:"POST",headers:c,body:JSON.stringify({query:s,variables:i,operationName:h})}).then(e=>e.json()).then(e=>e.errors?Promise.reject(e.errors):e.data)}},createShopifyFetcher=(r,t)=>{let o=r??process.env.NEXT_PUBLIC_STOREFRONT_TOKEN,n=t??process.env.NEXT_PUBLIC_STOREFRONT_HANDLE;return async r=>{if(!o)throw Error("NEXT_PUBLIC_STOREFRONT_TOKEN is not defined");if(!n)throw Error("NEXT_PUBLIC_STOREFRONT_HANDLE is not defined");let t={"Content-Type":"application/json","X-Shopify-Storefront-Access-Token":o},[s,i]=r;return fetch(e(n),{method:"POST",headers:t,body:JSON.stringify({query:s,variables:i})}).then(e=>e.json()).then(e=>e.errors?Promise.reject(e.errors):e.data)}},createTemplateFetcher=e=>{let r=process.env.NEXT_PUBLIC_URL_SHARE_PAGE;return async()=>{if(!r)throw Error("NEXT_PUBLIC_URL_SHARE_PAGE is not defined");try{let t=await fetch(`${r}/share/page/${e}`,{method:"GET"});if(!t.ok)throw Error(`HTTP error! status: ${t.status}`);let o=await t.json();if(o.errors)throw Error(`API errors: ${JSON.stringify(o.errors)}`);return o.result}catch(e){throw console.error("Template fetcher error:",e),e}}};export{createAppAPIFetcher,createFetcher,createShopifyFetcher,createTemplateFetcher};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{checkNotInOptionFont as e}from"./helpers/check-option-font.js";import{getFontsFromDataBuilder as t}from"./helpers/gen-fonts.js";import{sentryCaptureException as n}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(e,t){try{return fetch(e,{headers:{"User-Agent":t}}).then(
|
|
1
|
+
import{checkNotInOptionFont as e}from"./helpers/check-option-font.js";import{getFontsFromDataBuilder as t}from"./helpers/gen-fonts.js";import{sentryCaptureException as n}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(e,t){try{return fetch(e,{headers:{"User-Agent":t}}).then(o=>200===o.status?o.text():(n("getFontForUA",`Unexpected status ${o.status}`,{url:e,UA:t}),""))}catch(o){return n("getFontForUA","Error fetching font",{url:e,UA:t,error:o}),""}}let composeFonts=e=>{let t=e.filter((e,t,n)=>t===n.findIndex(t=>t.family===e.family));return t.map(t=>{let n=e.filter(e=>e.family===t.family).reduce((e,t)=>[...e,...t.variants],[]).filter((e,t,n)=>t===n.findIndex(t=>t===e));return{...t,variants:n}})},GOOGLE_CSS2_OVERRIDES={"Roboto+Flex":"https://fonts.googleapis.com/css2?family=Roboto+Flex:opsz,wght@8..144,100..1000&display=swap"},normalizeFamily=e=>e?.replace(/ /g,"+")??"",isRenderGoggleFontCss2=(e,t)=>{if("bunny"===t||1!==e.length)return!1;let n=normalizeFamily(e?.[0]?.family);return!!GOOGLE_CSS2_OVERRIDES[n]},getGoggleFontCss2URL=(e,t)=>{let n=GOOGLE_CSS2_OVERRIDES[e];if(n)return n.includes("display=")?n.replace(/display=[^&]+/,`display=${t}`):`${n}${n.includes("?")?"&":"?"}display=${t}`},createFontUrl=(t,n,o)=>{let r=t.filter(t=>!(["bunny","google"].includes(t.type)&&e(t.family,o||"google"))&&("google"===t.type||"bunny"===t.type||!t.type));if(!r.length)return;let l=new URLSearchParams,i=n?.display||"swap",a=r.filter((e,t,n)=>t===n.findIndex(t=>t.family===e.family));if(isRenderGoggleFontCss2(a,o)){let e=normalizeFamily(a?.[0]?.family),t=getGoggleFontCss2URL(e,i);if(t)return t}let s=composeFonts(a).map(e=>`${e.family.replace(/ /g,"+")}:${e.variants.join(",")}`).join("|");if("sans-serif"===s)return;l.append("family",s),l.append("display",i),n?.subset&&l.append("subset",n.subset),n?.effect&&l.append("effect",n.effect);let f=`https://fonts.bunny.net/css?family=${s}`,p=`https://fonts.googleapis.com/css?${decodeURIComponent(l.toString())}`;return"bunny"===o?f:p};async function getFonts(e,t,o=!0,r){let l=createFontUrl(e,t,r);if(!l)return"";try{if(o)return`@import url('${l}');`;let[e,t]=await Promise.all([getFontForUA(l,"Mozilla/5.0 (Windows NT 10.0; Trident/7.0; rv:11.0) like Gecko"),getFontForUA(l,"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")]),n=e+t;{let e=new TextEncoder,t=n?e.encode(n).length:0;if(Math.ceil(t/1024)>=50)return`@import url('${l}');`}return n}catch(e){return n("getFonts","Error fetching font",{url:l,fontType:r}),""}}let getFontFromGlobalStyle=(e,t)=>{if(!e)return"";try{let n=JSON.parse(e),o=n?.font??{},r=Object.entries(o).map(([,e])=>e);return getFonts(r,void 0,void 0,t)}catch{return""}};async function getFontStyleFromPageTemplate(e,n){let o=e.map(e=>getFonts(t(e.data),void 0,void 0,n));return await Promise.all(o)}export{composeFonts,createFontUrl,getFontFromGlobalStyle,getFontStyleFromPageTemplate,getFonts};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import{jsx as e,jsxs as t,Fragment as a}from"react/jsx-runtime";import{useI18n as r,PageProvider as l,BuilderComponentProvider as s,SectionProvider as n,I18nProvider as i,BuilderProvider as o,Render as d}from"@gem-sdk/core";import{NextSeo as p}from"next-seo";import c from"next/head";import{useRouter as g}from"next/router";import{parseHtml as m}from"../libs/parse-html.js";import{useEffect as u}from"react";let PreviewTemplate=({components:h,builderData:f,sectionData:y,seo:_,themeStyle:b,fontStyle:x,elementFontStyle:k,customCodeHeader:v,customFonts:N,productOffers:S,publicStoreFrontData:T,dynamicDiscountOffer:q,isPreview:H,pageBackground:I})=>{let L=g(),{t:M}=r(),P="custom-code-header";return(u(()=>{let e=document.querySelectorAll(`[class*="${P}-"]`),t=[];e.length>1&&e.forEach(e=>{let a=e.className;if(t.includes(a)){e.remove();return}t.push(a)})},[]),L.isFallback)?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"})]})}):t(a,{children:[e(p,{..._}),t(c,{children:[m(P,v,!0),b&&e("style",{"data-id":"global-style",type:"text/css",dangerouslySetInnerHTML:{__html:b}},"global-style"),x&&e("style",{"data-id":"google-fonts",type:"text/css",dangerouslySetInnerHTML:{__html:x}},"google-fonts"),k&&k.map(t=>e("style",{"data-id":"google-element-fonts",type:"text/css",dangerouslySetInnerHTML:{__html:t}},t)),N&&e("style",{"data-id":"custom-element-fonts",type:"text/css",dangerouslySetInnerHTML:{__html:N}},x),I?.isUsePageBackground&&I?.background&&e("style",{children:`
|
|
2
|
+
body {
|
|
3
|
+
background: ${I.background};
|
|
4
|
+
}
|
|
5
|
+
`},`page_background_${I?.background}`)]}),e(l,{productOffers:S,publicStoreFrontData:T,dynamicDiscountOffer:q,children:e(s,{components:h,children:e("div",{children:e(n,{data:y,children:e(i,{t:M,children:f?.map(t=>e(a,{children:e(o,{state:t.data,lazy:t.lazy,priority:t.priority,isPreview:H,children:e(d,{uid:t.uid})},t.uid)}))})})})})})]})};export{PreviewTemplate};
|
package/dist/types/index.d.ts
CHANGED
|
@@ -102,6 +102,30 @@ type StaticPagePropsV2 = PageBuilderPropsV2 & {
|
|
|
102
102
|
isPreview?: boolean;
|
|
103
103
|
domain?: string;
|
|
104
104
|
};
|
|
105
|
+
type SharePageAPIResponse = {
|
|
106
|
+
sharedPage: SharePageProps;
|
|
107
|
+
products: any;
|
|
108
|
+
collections: any;
|
|
109
|
+
customFonts: ShopType.CustomFont[];
|
|
110
|
+
};
|
|
111
|
+
type SharePageProps = {
|
|
112
|
+
seo?: NextSeoProps;
|
|
113
|
+
builderData?: {
|
|
114
|
+
uid: string;
|
|
115
|
+
lazy?: boolean;
|
|
116
|
+
priority?: boolean;
|
|
117
|
+
data: BuilderState;
|
|
118
|
+
}[];
|
|
119
|
+
page?: any;
|
|
120
|
+
themeStyle?: any;
|
|
121
|
+
share?: any;
|
|
122
|
+
pageSections?: any;
|
|
123
|
+
pageMeta?: any;
|
|
124
|
+
shopMeta?: any;
|
|
125
|
+
products?: any;
|
|
126
|
+
collections?: any;
|
|
127
|
+
articles?: any;
|
|
128
|
+
};
|
|
105
129
|
|
|
106
130
|
declare const getCollectionProps: (fetcher: FetchFunc) => (handle?: string) => Promise<CollectionDetailPageProps>;
|
|
107
131
|
|
|
@@ -118,6 +142,8 @@ declare const getProductProps: (fetcher: FetchFunc) => (handle?: string) => Prom
|
|
|
118
142
|
|
|
119
143
|
declare const getStaticPagePropsV2: (fetcher: FetchFunc, shopifyFetcher: FetchFunc) => (slug: string) => Promise<PageBuilderPropsV2>;
|
|
120
144
|
|
|
145
|
+
declare const getSharePageProps: (fetcher: FetchFunc) => (slug: string) => Promise<SharePageProps | null>;
|
|
146
|
+
|
|
121
147
|
declare const getPostPurchasePropsPreview: (fetcher: FetchFunc, librarySaleFunnelID?: string, storeFrontFetcher?: FetchFunc) => (data: {
|
|
122
148
|
id: string;
|
|
123
149
|
currentOfferID: string;
|
|
@@ -130,6 +156,7 @@ declare const getStaticPagePropsPreview: (fetcher: FetchFunc, shopifyFetcher: Fe
|
|
|
130
156
|
declare const createFetcher: (token?: string | null) => FetchFunc;
|
|
131
157
|
declare const createAppAPIFetcher: (token?: string | null, shopID?: string) => FetchFunc;
|
|
132
158
|
declare const createShopifyFetcher: (storefrontToken?: string, handle?: string) => FetchFunc;
|
|
159
|
+
declare const createTemplateFetcher: (token: string) => FetchFunc;
|
|
133
160
|
|
|
134
161
|
declare const getLayout: (page: React.ReactElement, pageProps?: any) => react_jsx_runtime.JSX.Element;
|
|
135
162
|
|
|
@@ -268,4 +295,6 @@ declare const BuilderPage: React.FC<BuilderPageProps>;
|
|
|
268
295
|
|
|
269
296
|
declare const StaticPageV2: React.FC<StaticPagePropsV2 & AdditionalPageBuilderProps>;
|
|
270
297
|
|
|
271
|
-
|
|
298
|
+
declare const PreviewTemplate: React.FC<StaticPagePropsV2 & AdditionalPageBuilderProps>;
|
|
299
|
+
|
|
300
|
+
export { AppPropsWithLayout, BuilderPage, CollectionDetailPage, ErrorBoundary, ErrorFallback, FacebookPixel, GoogleAnalytic, NextPageWithLayout, Page404, Page500, PageBuilderProps, PageBuilderPropsV2, PreviewPage, PreviewTemplate, ProductDetailPage, SharePageAPIResponse, SharePageProps, StaticPage, StaticPagePropsV2, StaticPageV2, TikTokPixel, createAppAPIFetcher, createFetcher, createShopifyFetcher, createTemplateFetcher, genCSS, getBuilderProps, getCollectionProps, getFallbackV2, getFontFromGlobalStyle, getFontFromGroupSetting, getFonts, getFontsFromDataBuilder, getHomePageProps, getHomePagePropsV2, getLayout, getPostPurchasePropsPreview, getPreviewProps, getProductProps, getSharePageProps, getStaticPagePropsPreview, getStaticPagePropsV2, getStaticPaths, getStorefrontApi, isBot, normalizePageSectionResponseV2, parseBuilderTemplateV2, retryWithDelay, usePagePreview, useTrackingView };
|