@gem-sdk/pages 2.0.0-dev.1136 → 2.0.0-dev.1143

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,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"),react=require("react"),getStorefrontApi=require("../../libs/get-storefront-api.js"),googleFonts=require("../../libs/google-fonts.js"),genCss=require("../../libs/helpers/gen-css.js"),genFonts=require("../../libs/helpers/gen-fonts.js"),shopifyCdnWithGoogleFonts=require("../../libs/shopify-cdn-with-google-fonts.js"),libsStore=require("../../store/libs-store.js"),checkOptionFont=require("../../libs/helpers/check-option-font.js");const globalStyleId="global-style",Toolbox=()=>{let e=core.useMatchMutate(),t=core.useShopStore(e=>e.provider),o=core.useShopStore(e=>e.changeStorefrontInfo),r=core.usePageStore(e=>e.setDynamicProduct),a=core.usePageStore(e=>e.setPostPurchaseProductOffers),i=core.usePageStore(e=>e.setDynamicDiscountOffer),n=core.usePageStore(e=>e.setSalePageProductId),d=core.usePageStore(e=>e.setDynamicCollection),l=core.useBuilderPreviewStore(e=>e.initState),s=core.useBuilderPreviewStore(e=>e.state),c=core.useBuilderPreviewStore(e=>e.forceChangeState),u=core.useBuilderPreviewStore(e=>e.forceChangeItemProp),p=core.useBuilderPreviewStore(e=>e.changeItemPropByKey),w=core.useBuilderPreviewStore(e=>e.addItem),v=core.useBuilderPreviewStore(e=>e.moveItem),m=core.useBuilderPreviewStore(e=>e.removeItem),y=core.useSectionStore(e=>e.addSection),g=core.useShopStore(e=>e.changeSwatches),f=core.useBuilderPreviewStore(e=>e.updateItemName),h=core.useBuilderPreviewStore(e=>e.updateItemAttribute),S=core.useShopStore(e=>e.changeLayoutSettings),b=core.useShopStore(e=>e.changeCreateThemeSectionCount),E=core.useShopStore(e=>e.changeShopPlan),L=core.useShopStore(e=>e.updatePriceWithCurrency),C=libsStore.libsStore(e=>e.changeFontType),k=libsStore.libsStore(e=>e.fontType),P=core.useModalStore(e=>e.clearModal),I=core.useShopStore(e=>e.changeLimitCreateThemeSection),q=core.usePageStore(e=>e.setInteractionIsSelectOnPage),T=core.usePageStore(e=>e.setInteractionItem),F=core.usePageStore(e=>e.setInteractionSelectType),j=core.usePageStore(e=>e.setInteractionSettingType),B=core.usePageStore(e=>e.setSidebarMode),x=react.useMemo(()=>genFonts.getFontsFromDataBuilder(s),[s]),O=react.useCallback((e,t)=>{if(!t?.length){let t=document.querySelectorAll(`.${e}`);t.forEach(e=>{e.remove()});return}let o=document.querySelectorAll(`.${e}`);for(let r of(o.forEach(e=>{let o=e.getAttribute("data-font"),r=e.getAttribute("data-font-variant");if(o&&r){let a=t.find(e=>e.family==o&&e.variants.includes(r));a||e.remove()}else e.remove()}),t))if(!(["bunny","google"].includes(r.type)&&checkOptionFont.checkNotInOptionFont(r.family,k))&&"custom"!==r.type&&r.variants?.length)for(let t of r.variants){let o=JSON.parse(JSON.stringify(r));o.variants=[t];let a=o.family,i=googleFonts.createFontUrl([o],void 0,k);if(i){let o=document.querySelector(`.${e}[data-font="${a}"][data-font-variant="${t}"]`);if(o)continue;{let o=document.createElement("link");o.className=e,o.dataset.font=a,o.dataset.fontVariant=t,o.href=i,o.rel="stylesheet",document.head.appendChild(o)}}}},[k]),A=react.useCallback(()=>{e(/query\//,{revalidate:!0})},[e]),M=react.useCallback(e=>{let r=e.detail;o({url:r.shopHandle?getStorefrontApi.getStorefrontApi(r.shopHandle,t):void 0,token:r.shopToken})},[o,t]),N=react.useCallback(e=>{let t=e.detail;try{if(t.data){let e=genCss.genCSS(t.data,t.mobileOnly),o=Object.entries(t.data?.font).map(([,e])=>e).map(e=>{if("custom"==e.type){let t=shopifyCdnWithGoogleFonts.shopifyCdnWithGoogleFonts.find(t=>t.family==e.family);if(t)return t}return e}),r=document.getElementById(globalStyleId);if(O("google-font-builder",o),r)r.innerHTML=e;else{let t=document.createElement("style");t.id=globalStyleId,t.innerHTML=e,document.head.appendChild(t)}}}catch{}},[O]),$=react.useCallback(e=>{P();try{let t=e.detail;t.data&&("flat"===t.type?c(t.data):l(t.data))}catch{}},[c,l,P]),D=react.useCallback(e=>{try{let t=e.detail;t.entity&&(w({data:t.entity,id:t.id,position:t.position,type:t.type??"component"}),t?.type!=="section"||Array.isArray(t.entity)||y(t.entity.uid,t.entity))}catch{}},[w,y]),H=react.useCallback(e=>{try{let t=e.detail;t.uid&&t.propName&&p({id:t.uid,key:t.propName,data:t.propValue,group:t.group})}catch{}},[p]),W=react.useCallback(e=>{try{let t=e.detail;t.uid&&u(t.uid,t.data,t.group)}catch{}},[u]),G=react.useCallback(e=>{try{let t=e.detail;t.to&&t.uid&&v(t.uid,t.to,Number(t.position)??0)}catch{}},[v]),J=react.useCallback(e=>{try{let t=e.detail;t.uid&&m(t.uid)}catch{}},[m]),R=react.useCallback(e=>{let t=e.detail;try{t.data&&g(t.data)}catch{}},[g]),V=react.useCallback(e=>{let t=e.detail;t&&S(t)},[S]),_=react.useCallback(e=>{let t=e.detail;t&&b(t)},[b]),K=react.useCallback(e=>{let t=e.detail;t&&E(t)},[E]),U=react.useCallback(e=>{let t=e.detail;t&&L(t)},[L]),z=react.useCallback(e=>{let t=e.detail;t&&C(t)},[C]),Q=react.useCallback(e=>{let t=e.detail;t&&r(t)},[r]),X=react.useCallback(e=>{let t=e.detail;t&&d(t)},[d]);react.useEffect(()=>{x&&O("google-font-element",x)},[x,O]);let Y=react.useCallback(e=>{let t=e.detail;t.uid&&f(t.uid,t.name||"")},[f]),Z=react.useCallback(e=>{let t=e.detail;t.uid&&h(t.uid,t.value||"",t.attr||"")},[h]),ee=react.useCallback(e=>{let t=e.detail;t?.length&&a(t)},[a]),et=react.useCallback(e=>{let t=e.detail;t&&i(t)},[i]),eo=react.useCallback(e=>{let t=e.detail;t&&n(t)},[n]),er=react.useCallback(e=>{let t=e.detail;t&&I(t)},[I]),ea=react.useCallback(e=>{let t=e.detail.value,o=e.detail.mode,r=e.detail.settingType;q(t),F(o),j(r)},[q,F,j]),ei=react.useCallback(e=>{let t=e.detail.settingType;j(t)},[j]),en=react.useCallback(e=>{let t=e.detail.mode;console.log(t),B(t)},[B]),ed=react.useCallback(e=>{let t=e.detail;T(t)},[T]);return react.useEffect(()=>(window.addEventListener("update-shop-info",M),window.addEventListener("revalidate-query",A),window.addEventListener("init-builder",$),window.addEventListener("add-entity",D),window.addEventListener("remove-entity",J),window.addEventListener("move-entity",G),window.addEventListener("force-update-entity-props",W),window.addEventListener("update-entity-prop",H),window.addEventListener("set-global-style",N),window.addEventListener("update-global-swatches-data",R),window.addEventListener("on-off-header-footer",V),window.addEventListener("update-create-theme-section-count",_),window.addEventListener("update-shop-plan",K),window.addEventListener("set-dynamic-product",Q),window.addEventListener("set-dynamic-collection",X),window.addEventListener("update-item-name",Y),window.addEventListener("update-item-attribute",Z),window.addEventListener("set-product-offer",ee),window.addEventListener("set-dynamic-discount-offer",et),window.addEventListener("update-sale-page-product-id",eo),window.addEventListener("limit-create-theme-section",er),window.addEventListener("update-interaction-is-select-on-page",ea),window.addEventListener("update-interaction-item",ed),window.addEventListener("update-interaction-setting-type",ei),window.addEventListener("change-sidebar-mode",en),window.addEventListener("update-font-type",z),window.addEventListener("update-price-with-currency",U),()=>{window.removeEventListener("update-shop-info",M),window.removeEventListener("revalidate-query",A),window.removeEventListener("init-builder",$),window.removeEventListener("add-entity",D),window.removeEventListener("remove-entity",J),window.removeEventListener("move-entity",G),window.removeEventListener("update-entity-prop",H),window.removeEventListener("set-global-style",N),window.removeEventListener("update-global-swatches-data",R),window.removeEventListener("on-off-header-footer",V),window.removeEventListener("update-create-theme-section-count",_),window.removeEventListener("update-shop-plan",K),window.removeEventListener("update-price-with-currency",U),window.removeEventListener("set-dynamic-product",Q),window.removeEventListener("set-dynamic-collection",X),window.removeEventListener("update-item-name",Y),window.removeEventListener("update-item-attribute",Z),window.removeEventListener("set-product-offer",ee),window.removeEventListener("update-sale-page-product-id",eo),window.removeEventListener("limit-create-theme-section",er),window.removeEventListener("update-interaction-is-select-on-page",ea),window.removeEventListener("update-interaction-item",ed),window.removeEventListener("update-interaction-setting-type",ei),window.removeEventListener("update-font-type",z)}),[D,K,W,H,$,G,J,N,R,A,M,V,_,Q,X,Y,Z,ee,eo,er,ed,ea,ei,z,en,et,U]),jsxRuntime.jsx("div",{className:"toolbox"})};var Toolbox$1=react.memo(Toolbox);exports.default=Toolbox$1;
2
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var jsxRuntime=require("react/jsx-runtime"),core=require("@gem-sdk/core"),react=require("react"),getStorefrontApi=require("../../libs/get-storefront-api.js"),googleFonts=require("../../libs/google-fonts.js"),genCss=require("../../libs/helpers/gen-css.js"),genFonts=require("../../libs/helpers/gen-fonts.js"),shopifyCdnWithGoogleFonts=require("../../libs/shopify-cdn-with-google-fonts.js"),libsStore=require("../../store/libs-store.js"),checkOptionFont=require("../../libs/helpers/check-option-font.js");const globalStyleId="global-style",Toolbox=()=>{let e=core.useMatchMutate(),t=core.useShopStore(e=>e.provider),o=core.useShopStore(e=>e.changeStorefrontInfo),r=core.usePageStore(e=>e.setDynamicProduct),a=core.usePageStore(e=>e.setPostPurchaseProductOffers),i=core.usePageStore(e=>e.setDynamicDiscountOffer),n=core.usePageStore(e=>e.setSalePageProductId),d=core.usePageStore(e=>e.setDynamicCollection),l=core.useBuilderPreviewStore(e=>e.initState),s=core.useBuilderPreviewStore(e=>e.state),c=core.useBuilderPreviewStore(e=>e.forceChangeState),u=core.useBuilderPreviewStore(e=>e.forceChangeItemProp),p=core.useBuilderPreviewStore(e=>e.changeItemPropByKey),w=core.useBuilderPreviewStore(e=>e.addItem),v=core.useBuilderPreviewStore(e=>e.moveItem),m=core.useBuilderPreviewStore(e=>e.removeItem),g=core.useSectionStore(e=>e.addSection),y=core.useShopStore(e=>e.changeSwatches),h=core.useBuilderPreviewStore(e=>e.updateItemName),f=core.useBuilderPreviewStore(e=>e.updateItemAttribute),S=core.useShopStore(e=>e.changeLayoutSettings),b=core.useShopStore(e=>e.changeCreateThemeSectionCount),E=core.useShopStore(e=>e.changeShopPlan),L=core.useShopStore(e=>e.updatePriceWithCurrency),C=libsStore.libsStore(e=>e.changeFontType),k=libsStore.libsStore(e=>e.fontType),P=core.useModalStore(e=>e.clearModal),I=core.useShopStore(e=>e.changeLimitCreateThemeSection),q=core.usePageStore(e=>e.setInteractionIsSelectOnPage),T=core.usePageStore(e=>e.setInteractionItem),F=core.usePageStore(e=>e.setInteractionSelectType),j=core.usePageStore(e=>e.setInteractionSettingType),B=core.usePageStore(e=>e.setSidebarMode),x=react.useMemo(()=>genFonts.getFontsFromDataBuilder(s),[s]),A=react.useCallback((e,t)=>{if(!t?.length){let t=document.querySelectorAll(`.${e}`);t.forEach(e=>{e.remove()});return}let o=document.querySelectorAll(`.${e}`);for(let r of(o.forEach(e=>{let o=e.getAttribute("data-font"),r=e.getAttribute("data-font-variant");if(o&&r){let a=t.find(e=>e.family==o&&e.variants.includes(r));a||e.remove()}else e.remove()}),t))if(!(["bunny","google"].includes(r.type)&&checkOptionFont.checkNotInOptionFont(r.family,k))&&"custom"!==r.type&&r.variants?.length)for(let t of r.variants){let o={...r,variants:[t]},a=googleFonts.createFontUrls([o],void 0,k)||[];if(a?.length)for(let o of a){let a=e=>window.CSS&&CSS.escape?CSS.escape(e):e.replace(/"/g,'\\"'),i=document.querySelector(`link.${e}[href="${a(o)}"]`);if(i)continue;let n=document.createElement("link");n.className=e,n.rel="stylesheet",n.href=o,n.dataset.font=r.family,n.dataset.fontVariant=t,document.head.appendChild(n)}}},[k]),M=react.useCallback(()=>{e(/query\//,{revalidate:!0})},[e]),O=react.useCallback(e=>{let r=e.detail;o({url:r.shopHandle?getStorefrontApi.getStorefrontApi(r.shopHandle,t):void 0,token:r.shopToken})},[o,t]),N=react.useCallback(e=>{let t=e.detail;try{if(t.data){let e=genCss.genCSS(t.data,t.mobileOnly),o=Object.entries(t.data?.font).map(([,e])=>e).map(e=>{if("custom"==e.type){let t=shopifyCdnWithGoogleFonts.shopifyCdnWithGoogleFonts.find(t=>t.family==e.family);if(t)return t}return e}),r=document.getElementById(globalStyleId);if(A("google-font-builder",o),r)r.innerHTML=e;else{let t=document.createElement("style");t.id=globalStyleId,t.innerHTML=e,document.head.appendChild(t)}}}catch{}},[A]),$=react.useCallback(e=>{P();try{let t=e.detail;t.data&&("flat"===t.type?c(t.data):l(t.data))}catch{}},[c,l,P]),D=react.useCallback(e=>{try{let t=e.detail;t.entity&&(w({data:t.entity,id:t.id,position:t.position,type:t.type??"component"}),t?.type!=="section"||Array.isArray(t.entity)||g(t.entity.uid,t.entity))}catch{}},[w,g]),H=react.useCallback(e=>{try{let t=e.detail;t.uid&&t.propName&&p({id:t.uid,key:t.propName,data:t.propValue,group:t.group})}catch{}},[p]),W=react.useCallback(e=>{try{let t=e.detail;t.uid&&u(t.uid,t.data,t.group)}catch{}},[u]),G=react.useCallback(e=>{try{let t=e.detail;t.to&&t.uid&&v(t.uid,t.to,Number(t.position)??0)}catch{}},[v]),R=react.useCallback(e=>{try{let t=e.detail;t.uid&&m(t.uid)}catch{}},[m]),V=react.useCallback(e=>{let t=e.detail;try{t.data&&y(t.data)}catch{}},[y]),_=react.useCallback(e=>{let t=e.detail;t&&S(t)},[S]),K=react.useCallback(e=>{let t=e.detail;t&&b(t)},[b]),U=react.useCallback(e=>{let t=e.detail;t&&E(t)},[E]),z=react.useCallback(e=>{let t=e.detail;t&&L(t)},[L]),J=react.useCallback(e=>{let t=e.detail;t&&C(t)},[C]),Q=react.useCallback(e=>{let t=e.detail;t&&r(t)},[r]),X=react.useCallback(e=>{let t=e.detail;t&&d(t)},[d]);react.useEffect(()=>{x&&A("google-font-element",x)},[x,A]);let Y=react.useCallback(e=>{let t=e.detail;t.uid&&h(t.uid,t.name||"")},[h]),Z=react.useCallback(e=>{let t=e.detail;t.uid&&f(t.uid,t.value||"",t.attr||"")},[f]),ee=react.useCallback(e=>{let t=e.detail;t?.length&&a(t)},[a]),et=react.useCallback(e=>{let t=e.detail;t&&i(t)},[i]),eo=react.useCallback(e=>{let t=e.detail;t&&n(t)},[n]),er=react.useCallback(e=>{let t=e.detail;t&&I(t)},[I]),ea=react.useCallback(e=>{let t=e.detail.value,o=e.detail.mode,r=e.detail.settingType;q(t),F(o),j(r)},[q,F,j]),ei=react.useCallback(e=>{let t=e.detail.settingType;j(t)},[j]),en=react.useCallback(e=>{let t=e.detail.mode;console.log(t),B(t)},[B]),ed=react.useCallback(e=>{let t=e.detail;T(t)},[T]);return react.useEffect(()=>(window.addEventListener("update-shop-info",O),window.addEventListener("revalidate-query",M),window.addEventListener("init-builder",$),window.addEventListener("add-entity",D),window.addEventListener("remove-entity",R),window.addEventListener("move-entity",G),window.addEventListener("force-update-entity-props",W),window.addEventListener("update-entity-prop",H),window.addEventListener("set-global-style",N),window.addEventListener("update-global-swatches-data",V),window.addEventListener("on-off-header-footer",_),window.addEventListener("update-create-theme-section-count",K),window.addEventListener("update-shop-plan",U),window.addEventListener("set-dynamic-product",Q),window.addEventListener("set-dynamic-collection",X),window.addEventListener("update-item-name",Y),window.addEventListener("update-item-attribute",Z),window.addEventListener("set-product-offer",ee),window.addEventListener("set-dynamic-discount-offer",et),window.addEventListener("update-sale-page-product-id",eo),window.addEventListener("limit-create-theme-section",er),window.addEventListener("update-interaction-is-select-on-page",ea),window.addEventListener("update-interaction-item",ed),window.addEventListener("update-interaction-setting-type",ei),window.addEventListener("change-sidebar-mode",en),window.addEventListener("update-font-type",J),window.addEventListener("update-price-with-currency",z),()=>{window.removeEventListener("update-shop-info",O),window.removeEventListener("revalidate-query",M),window.removeEventListener("init-builder",$),window.removeEventListener("add-entity",D),window.removeEventListener("remove-entity",R),window.removeEventListener("move-entity",G),window.removeEventListener("update-entity-prop",H),window.removeEventListener("set-global-style",N),window.removeEventListener("update-global-swatches-data",V),window.removeEventListener("on-off-header-footer",_),window.removeEventListener("update-create-theme-section-count",K),window.removeEventListener("update-shop-plan",U),window.removeEventListener("update-price-with-currency",z),window.removeEventListener("set-dynamic-product",Q),window.removeEventListener("set-dynamic-collection",X),window.removeEventListener("update-item-name",Y),window.removeEventListener("update-item-attribute",Z),window.removeEventListener("set-product-offer",ee),window.removeEventListener("update-sale-page-product-id",eo),window.removeEventListener("limit-create-theme-section",er),window.removeEventListener("update-interaction-is-select-on-page",ea),window.removeEventListener("update-interaction-item",ed),window.removeEventListener("update-interaction-setting-type",ei),window.removeEventListener("update-font-type",J)}),[D,U,W,H,$,G,R,N,V,M,O,_,K,Q,X,Y,Z,ee,eo,er,ed,ea,ei,J,en,et,z]),jsxRuntime.jsx("div",{className:"toolbox"})};var Toolbox$1=react.memo(Toolbox);exports.default=Toolbox$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;
@@ -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 i=process.env.NEXT_PUBLIC_API_URL;if(!i)throw Error("NEXT_PUBLIC_API_URL is not defined");let s=extractOperation.extractOperation(t);s&&(i=`${i}?gp-online-store-operation=${s}`);let p={"Content-Type":"application/json","X-GemX-Shop-Token":r};return fetch(i,{method:"POST",headers:p,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,i,s]=o;if(!e)throw Error("shopToken is not defined");if(!t)throw Error("NEXT_APP_API_URL is not defined");let p=extractOperation.extractOperation(n);p&&(t=`${t}?gp-online-store-operation=${p}`);let c={"Content-Type":"application/json",Authorization:`Token ${e}`,"X-GemX-Shop-ID":r||""};return fetch(`${t}?gp-online-store-operation=${s}`,{method:"POST",headers:c,body:JSON.stringify({query:n,variables:i,operationName:s})}).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,i]=e;return fetch(getStorefrontApi.getStorefrontApi(o),{method:"POST",headers:r,body:JSON.stringify({query:n,variables:i})}).then(e=>e.json()).then(e=>e.errors?Promise.reject(e.errors):e.data)}};exports.createAppAPIFetcher=createAppAPIFetcher,exports.createFetcher=createFetcher,exports.createShopifyFetcher=createShopifyFetcher;
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}})},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;
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(o=>200===o.status?o.text():(sentry.sentryCaptureException("getFontForUA",`Unexpected status ${o.status}`,{url:e,UA:t}),""))}catch(o){return sentry.sentryCaptureException("getFontForUA","Error fetching font",{url:e,UA:t,error:o}),""}}const composeFonts=e=>{let t=e.filter((e,t,o)=>t===o.findIndex(t=>t.family===e.family));return t.map(t=>{let o=e.filter(e=>e.family===t.family).reduce((e,t)=>[...e,...t.variants],[]).filter((e,t,o)=>t===o.findIndex(t=>t===e));return{...t,variants:o}})},GOOGLE_CSS2_OVERRIDES={"Roboto Flex":"https://fonts.googleapis.com/css2?family=Roboto+Flex:opsz,wght@8..144,100..1000&display=swap"},normalizeFamily=e=>e?.trim().replace(/\s+/g,"+")??"",getOverrideUrlForFamily=e=>{let t=normalizeFamily(e);return GOOGLE_CSS2_OVERRIDES[e]??GOOGLE_CSS2_OVERRIDES[t]},isValidFont=(e,t)=>{let o="google"===e.type||"bunny"===e.type,r=checkOptionFont.checkNotInOptionFont(e.family,t);return!(o&&r)&&(o||!e.type)},makeUrlBySourceFont=(e,t,o)=>{let r=composeFonts(e).map(e=>`${e.family.replace(/ /g,"+")}:${e.variants.join(",")}`).join("|");if("sans-serif"===r)return;let n=new URLSearchParams;n.append("family",r),n.append("display",o?.display||"swap"),o?.subset&&n.append("subset",o.subset),o?.effect&&n.append("effect",o.effect);let l=`https://fonts.bunny.net/css?family=${r}`,s=`https://fonts.googleapis.com/css?${decodeURIComponent(n.toString())}`;return"bunny"===t?l:s},createFontUrls=(e,t,o)=>{let r=e.filter(e=>isValidFont(e,o||"google"));if(!r.length)return;let n=r.filter((e,t,o)=>t===o.findIndex(t=>t.family===e.family)),l=[],s=[];for(let e of n){let t=getOverrideUrlForFamily(e.family);t&&"bunny"!==o?l.push(t):s.push(e)}let a=s.length?makeUrlBySourceFont(s,o||"google",t):void 0;return l.length&&a?[...l,a]:a?[a,...l]:l};async function getFonts(e,t,o=!0,r){let n=createFontUrls(e,t,r),l=Array.isArray(n)?n:n?[n]:[];if(!l.length)return"";if(o)return l.map(e=>`@import url('${e}');`).join("");let s="",a="";for(let e of l)try{let[t,o]=await Promise.all([getFontForUA(e,"Mozilla/5.0 (Windows NT 10.0; Trident/7.0; rv:11.0) like Gecko"),getFontForUA(e,"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")]),r=`${t}${o}`;s+=r,a+=`@import url('${e}');`}catch(t){sentry.sentryCaptureException("getFonts","Error fetching font",{url:e,fontType:r,error:String(t)}),a+="",s+=""}let i=new TextEncoder().encode(s).length;return i<51200?s:a}const getFontFromGlobalStyle=(e,t)=>{if(!e)return"";try{let o=JSON.parse(e),r=o?.font??{},n=Object.entries(r).map(([,e])=>e);return getFonts(n,void 0,void 0,t)}catch{return""}};async function getFontStyleFromPageTemplate(e,t){let o=e.map(e=>getFonts(genFonts.getFontsFromDataBuilder(e.data),void 0,void 0,t));return await Promise.all(o)}exports.composeFonts=composeFonts,exports.createFontUrls=createFontUrls,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;
@@ -1,2 +1,2 @@
1
1
  'use client';
2
- import{jsx as e}from"react/jsx-runtime";import{useMatchMutate as t,useShopStore as n,usePageStore as i,useBuilderPreviewStore as o,useSectionStore as d,useModalStore as a}from"@gem-sdk/core";import{memo as r,useMemo as l,useCallback as s,useEffect as c}from"react";import{getStorefrontApi as m}from"../../libs/get-storefront-api.js";import{createFontUrl as p}from"../../libs/google-fonts.js";import{genCSS as w}from"../../libs/helpers/gen-css.js";import{getFontsFromDataBuilder as u}from"../../libs/helpers/gen-fonts.js";import{shopifyCdnWithGoogleFonts as v}from"../../libs/shopify-cdn-with-google-fonts.js";import{libsStore as y}from"../../store/libs-store.js";import{checkNotInOptionFont as f}from"../../libs/helpers/check-option-font.js";let globalStyleId="global-style",Toolbox=()=>{let r=t(),h=n(e=>e.provider),g=n(e=>e.changeStorefrontInfo),E=i(e=>e.setDynamicProduct),L=i(e=>e.setPostPurchaseProductOffers),b=i(e=>e.setDynamicDiscountOffer),S=i(e=>e.setSalePageProductId),I=i(e=>e.setDynamicCollection),T=o(e=>e.initState),P=o(e=>e.state),j=o(e=>e.forceChangeState),C=o(e=>e.forceChangeItemProp),N=o(e=>e.changeItemPropByKey),x=o(e=>e.addItem),A=o(e=>e.moveItem),O=o(e=>e.removeItem),$=d(e=>e.addSection),k=n(e=>e.changeSwatches),q=o(e=>e.updateItemName),D=o(e=>e.updateItemAttribute),H=n(e=>e.changeLayoutSettings),M=n(e=>e.changeCreateThemeSectionCount),B=n(e=>e.changeShopPlan),J=n(e=>e.updatePriceWithCurrency),V=y(e=>e.changeFontType),F=y(e=>e.fontType),K=a(e=>e.clearModal),W=n(e=>e.changeLimitCreateThemeSection),z=i(e=>e.setInteractionIsSelectOnPage),G=i(e=>e.setInteractionItem),Q=i(e=>e.setInteractionSelectType),R=i(e=>e.setInteractionSettingType),U=i(e=>e.setSidebarMode),X=l(()=>u(P),[P]),Y=s((e,t)=>{if(!t?.length){let t=document.querySelectorAll(`.${e}`);t.forEach(e=>{e.remove()});return}let n=document.querySelectorAll(`.${e}`);for(let i of(n.forEach(e=>{let n=e.getAttribute("data-font"),i=e.getAttribute("data-font-variant");if(n&&i){let o=t.find(e=>e.family==n&&e.variants.includes(i));o||e.remove()}else e.remove()}),t))if(!(["bunny","google"].includes(i.type)&&f(i.family,F))&&"custom"!==i.type&&i.variants?.length)for(let t of i.variants){let n=JSON.parse(JSON.stringify(i));n.variants=[t];let o=n.family,d=p([n],void 0,F);if(d){let n=document.querySelector(`.${e}[data-font="${o}"][data-font-variant="${t}"]`);if(n)continue;{let n=document.createElement("link");n.className=e,n.dataset.font=o,n.dataset.fontVariant=t,n.href=d,n.rel="stylesheet",document.head.appendChild(n)}}}},[F]),Z=s(()=>{r(/query\//,{revalidate:!0})},[r]),_=s(e=>{let t=e.detail;g({url:t.shopHandle?m(t.shopHandle,h):void 0,token:t.shopToken})},[g,h]),ee=s(e=>{let t=e.detail;try{if(t.data){let e=w(t.data,t.mobileOnly),n=Object.entries(t.data?.font).map(([,e])=>e).map(e=>{if("custom"==e.type){let t=v.find(t=>t.family==e.family);if(t)return t}return e}),i=document.getElementById(globalStyleId);if(Y("google-font-builder",n),i)i.innerHTML=e;else{let t=document.createElement("style");t.id=globalStyleId,t.innerHTML=e,document.head.appendChild(t)}}}catch{}},[Y]),et=s(e=>{K();try{let t=e.detail;t.data&&("flat"===t.type?j(t.data):T(t.data))}catch{}},[j,T,K]),en=s(e=>{try{let t=e.detail;t.entity&&(x({data:t.entity,id:t.id,position:t.position,type:t.type??"component"}),t?.type!=="section"||Array.isArray(t.entity)||$(t.entity.uid,t.entity))}catch{}},[x,$]),ei=s(e=>{try{let t=e.detail;t.uid&&t.propName&&N({id:t.uid,key:t.propName,data:t.propValue,group:t.group})}catch{}},[N]),eo=s(e=>{try{let t=e.detail;t.uid&&C(t.uid,t.data,t.group)}catch{}},[C]),ed=s(e=>{try{let t=e.detail;t.to&&t.uid&&A(t.uid,t.to,Number(t.position)??0)}catch{}},[A]),ea=s(e=>{try{let t=e.detail;t.uid&&O(t.uid)}catch{}},[O]),er=s(e=>{let t=e.detail;try{t.data&&k(t.data)}catch{}},[k]),el=s(e=>{let t=e.detail;t&&H(t)},[H]),es=s(e=>{let t=e.detail;t&&M(t)},[M]),ec=s(e=>{let t=e.detail;t&&B(t)},[B]),em=s(e=>{let t=e.detail;t&&J(t)},[J]),ep=s(e=>{let t=e.detail;t&&V(t)},[V]),ew=s(e=>{let t=e.detail;t&&E(t)},[E]),eu=s(e=>{let t=e.detail;t&&I(t)},[I]);c(()=>{X&&Y("google-font-element",X)},[X,Y]);let ev=s(e=>{let t=e.detail;t.uid&&q(t.uid,t.name||"")},[q]),ey=s(e=>{let t=e.detail;t.uid&&D(t.uid,t.value||"",t.attr||"")},[D]),ef=s(e=>{let t=e.detail;t?.length&&L(t)},[L]),eh=s(e=>{let t=e.detail;t&&b(t)},[b]),eg=s(e=>{let t=e.detail;t&&S(t)},[S]),eE=s(e=>{let t=e.detail;t&&W(t)},[W]),eL=s(e=>{let t=e.detail.value,n=e.detail.mode,i=e.detail.settingType;z(t),Q(n),R(i)},[z,Q,R]),eb=s(e=>{let t=e.detail.settingType;R(t)},[R]),eS=s(e=>{let t=e.detail.mode;console.log(t),U(t)},[U]),eI=s(e=>{let t=e.detail;G(t)},[G]);return c(()=>(window.addEventListener("update-shop-info",_),window.addEventListener("revalidate-query",Z),window.addEventListener("init-builder",et),window.addEventListener("add-entity",en),window.addEventListener("remove-entity",ea),window.addEventListener("move-entity",ed),window.addEventListener("force-update-entity-props",eo),window.addEventListener("update-entity-prop",ei),window.addEventListener("set-global-style",ee),window.addEventListener("update-global-swatches-data",er),window.addEventListener("on-off-header-footer",el),window.addEventListener("update-create-theme-section-count",es),window.addEventListener("update-shop-plan",ec),window.addEventListener("set-dynamic-product",ew),window.addEventListener("set-dynamic-collection",eu),window.addEventListener("update-item-name",ev),window.addEventListener("update-item-attribute",ey),window.addEventListener("set-product-offer",ef),window.addEventListener("set-dynamic-discount-offer",eh),window.addEventListener("update-sale-page-product-id",eg),window.addEventListener("limit-create-theme-section",eE),window.addEventListener("update-interaction-is-select-on-page",eL),window.addEventListener("update-interaction-item",eI),window.addEventListener("update-interaction-setting-type",eb),window.addEventListener("change-sidebar-mode",eS),window.addEventListener("update-font-type",ep),window.addEventListener("update-price-with-currency",em),()=>{window.removeEventListener("update-shop-info",_),window.removeEventListener("revalidate-query",Z),window.removeEventListener("init-builder",et),window.removeEventListener("add-entity",en),window.removeEventListener("remove-entity",ea),window.removeEventListener("move-entity",ed),window.removeEventListener("update-entity-prop",ei),window.removeEventListener("set-global-style",ee),window.removeEventListener("update-global-swatches-data",er),window.removeEventListener("on-off-header-footer",el),window.removeEventListener("update-create-theme-section-count",es),window.removeEventListener("update-shop-plan",ec),window.removeEventListener("update-price-with-currency",em),window.removeEventListener("set-dynamic-product",ew),window.removeEventListener("set-dynamic-collection",eu),window.removeEventListener("update-item-name",ev),window.removeEventListener("update-item-attribute",ey),window.removeEventListener("set-product-offer",ef),window.removeEventListener("update-sale-page-product-id",eg),window.removeEventListener("limit-create-theme-section",eE),window.removeEventListener("update-interaction-is-select-on-page",eL),window.removeEventListener("update-interaction-item",eI),window.removeEventListener("update-interaction-setting-type",eb),window.removeEventListener("update-font-type",ep)}),[en,ec,eo,ei,et,ed,ea,ee,er,Z,_,el,es,ew,eu,ev,ey,ef,eg,eE,eI,eL,eb,ep,eS,eh,em]),e("div",{className:"toolbox"})};var Toolbox$1=r(Toolbox);export{Toolbox$1 as default};
2
+ import{jsx as e}from"react/jsx-runtime";import{useMatchMutate as t,useShopStore as n,usePageStore as i,useBuilderPreviewStore as o,useSectionStore as d,useModalStore as a}from"@gem-sdk/core";import{memo as r,useMemo as l,useCallback as s,useEffect as c}from"react";import{getStorefrontApi as m}from"../../libs/get-storefront-api.js";import{createFontUrls as p}from"../../libs/google-fonts.js";import{genCSS as w}from"../../libs/helpers/gen-css.js";import{getFontsFromDataBuilder as u}from"../../libs/helpers/gen-fonts.js";import{shopifyCdnWithGoogleFonts as v}from"../../libs/shopify-cdn-with-google-fonts.js";import{libsStore as y}from"../../store/libs-store.js";import{checkNotInOptionFont as f}from"../../libs/helpers/check-option-font.js";let globalStyleId="global-style",Toolbox=()=>{let r=t(),h=n(e=>e.provider),g=n(e=>e.changeStorefrontInfo),E=i(e=>e.setDynamicProduct),L=i(e=>e.setPostPurchaseProductOffers),b=i(e=>e.setDynamicDiscountOffer),S=i(e=>e.setSalePageProductId),I=i(e=>e.setDynamicCollection),T=o(e=>e.initState),C=o(e=>e.state),P=o(e=>e.forceChangeState),j=o(e=>e.forceChangeItemProp),k=o(e=>e.changeItemPropByKey),x=o(e=>e.addItem),A=o(e=>e.moveItem),q=o(e=>e.removeItem),N=d(e=>e.addSection),$=n(e=>e.changeSwatches),O=o(e=>e.updateItemName),D=o(e=>e.updateItemAttribute),H=n(e=>e.changeLayoutSettings),M=n(e=>e.changeCreateThemeSectionCount),B=n(e=>e.changeShopPlan),V=n(e=>e.updatePriceWithCurrency),F=y(e=>e.changeFontType),K=y(e=>e.fontType),W=a(e=>e.clearModal),z=n(e=>e.changeLimitCreateThemeSection),G=i(e=>e.setInteractionIsSelectOnPage),J=i(e=>e.setInteractionItem),Q=i(e=>e.setInteractionSelectType),R=i(e=>e.setInteractionSettingType),U=i(e=>e.setSidebarMode),X=l(()=>u(C),[C]),Y=s((e,t)=>{if(!t?.length){let t=document.querySelectorAll(`.${e}`);t.forEach(e=>{e.remove()});return}let n=document.querySelectorAll(`.${e}`);for(let i of(n.forEach(e=>{let n=e.getAttribute("data-font"),i=e.getAttribute("data-font-variant");if(n&&i){let o=t.find(e=>e.family==n&&e.variants.includes(i));o||e.remove()}else e.remove()}),t))if(!(["bunny","google"].includes(i.type)&&f(i.family,K))&&"custom"!==i.type&&i.variants?.length)for(let t of i.variants){let n={...i,variants:[t]},o=p([n],void 0,K)||[];if(o?.length)for(let n of o){let o=e=>window.CSS&&CSS.escape?CSS.escape(e):e.replace(/"/g,'\\"'),d=document.querySelector(`link.${e}[href="${o(n)}"]`);if(d)continue;let a=document.createElement("link");a.className=e,a.rel="stylesheet",a.href=n,a.dataset.font=i.family,a.dataset.fontVariant=t,document.head.appendChild(a)}}},[K]),Z=s(()=>{r(/query\//,{revalidate:!0})},[r]),_=s(e=>{let t=e.detail;g({url:t.shopHandle?m(t.shopHandle,h):void 0,token:t.shopToken})},[g,h]),ee=s(e=>{let t=e.detail;try{if(t.data){let e=w(t.data,t.mobileOnly),n=Object.entries(t.data?.font).map(([,e])=>e).map(e=>{if("custom"==e.type){let t=v.find(t=>t.family==e.family);if(t)return t}return e}),i=document.getElementById(globalStyleId);if(Y("google-font-builder",n),i)i.innerHTML=e;else{let t=document.createElement("style");t.id=globalStyleId,t.innerHTML=e,document.head.appendChild(t)}}}catch{}},[Y]),et=s(e=>{W();try{let t=e.detail;t.data&&("flat"===t.type?P(t.data):T(t.data))}catch{}},[P,T,W]),en=s(e=>{try{let t=e.detail;t.entity&&(x({data:t.entity,id:t.id,position:t.position,type:t.type??"component"}),t?.type!=="section"||Array.isArray(t.entity)||N(t.entity.uid,t.entity))}catch{}},[x,N]),ei=s(e=>{try{let t=e.detail;t.uid&&t.propName&&k({id:t.uid,key:t.propName,data:t.propValue,group:t.group})}catch{}},[k]),eo=s(e=>{try{let t=e.detail;t.uid&&j(t.uid,t.data,t.group)}catch{}},[j]),ed=s(e=>{try{let t=e.detail;t.to&&t.uid&&A(t.uid,t.to,Number(t.position)??0)}catch{}},[A]),ea=s(e=>{try{let t=e.detail;t.uid&&q(t.uid)}catch{}},[q]),er=s(e=>{let t=e.detail;try{t.data&&$(t.data)}catch{}},[$]),el=s(e=>{let t=e.detail;t&&H(t)},[H]),es=s(e=>{let t=e.detail;t&&M(t)},[M]),ec=s(e=>{let t=e.detail;t&&B(t)},[B]),em=s(e=>{let t=e.detail;t&&V(t)},[V]),ep=s(e=>{let t=e.detail;t&&F(t)},[F]),ew=s(e=>{let t=e.detail;t&&E(t)},[E]),eu=s(e=>{let t=e.detail;t&&I(t)},[I]);c(()=>{X&&Y("google-font-element",X)},[X,Y]);let ev=s(e=>{let t=e.detail;t.uid&&O(t.uid,t.name||"")},[O]),ey=s(e=>{let t=e.detail;t.uid&&D(t.uid,t.value||"",t.attr||"")},[D]),ef=s(e=>{let t=e.detail;t?.length&&L(t)},[L]),eh=s(e=>{let t=e.detail;t&&b(t)},[b]),eg=s(e=>{let t=e.detail;t&&S(t)},[S]),eE=s(e=>{let t=e.detail;t&&z(t)},[z]),eL=s(e=>{let t=e.detail.value,n=e.detail.mode,i=e.detail.settingType;G(t),Q(n),R(i)},[G,Q,R]),eb=s(e=>{let t=e.detail.settingType;R(t)},[R]),eS=s(e=>{let t=e.detail.mode;console.log(t),U(t)},[U]),eI=s(e=>{let t=e.detail;J(t)},[J]);return c(()=>(window.addEventListener("update-shop-info",_),window.addEventListener("revalidate-query",Z),window.addEventListener("init-builder",et),window.addEventListener("add-entity",en),window.addEventListener("remove-entity",ea),window.addEventListener("move-entity",ed),window.addEventListener("force-update-entity-props",eo),window.addEventListener("update-entity-prop",ei),window.addEventListener("set-global-style",ee),window.addEventListener("update-global-swatches-data",er),window.addEventListener("on-off-header-footer",el),window.addEventListener("update-create-theme-section-count",es),window.addEventListener("update-shop-plan",ec),window.addEventListener("set-dynamic-product",ew),window.addEventListener("set-dynamic-collection",eu),window.addEventListener("update-item-name",ev),window.addEventListener("update-item-attribute",ey),window.addEventListener("set-product-offer",ef),window.addEventListener("set-dynamic-discount-offer",eh),window.addEventListener("update-sale-page-product-id",eg),window.addEventListener("limit-create-theme-section",eE),window.addEventListener("update-interaction-is-select-on-page",eL),window.addEventListener("update-interaction-item",eI),window.addEventListener("update-interaction-setting-type",eb),window.addEventListener("change-sidebar-mode",eS),window.addEventListener("update-font-type",ep),window.addEventListener("update-price-with-currency",em),()=>{window.removeEventListener("update-shop-info",_),window.removeEventListener("revalidate-query",Z),window.removeEventListener("init-builder",et),window.removeEventListener("add-entity",en),window.removeEventListener("remove-entity",ea),window.removeEventListener("move-entity",ed),window.removeEventListener("update-entity-prop",ei),window.removeEventListener("set-global-style",ee),window.removeEventListener("update-global-swatches-data",er),window.removeEventListener("on-off-header-footer",el),window.removeEventListener("update-create-theme-section-count",es),window.removeEventListener("update-shop-plan",ec),window.removeEventListener("update-price-with-currency",em),window.removeEventListener("set-dynamic-product",ew),window.removeEventListener("set-dynamic-collection",eu),window.removeEventListener("update-item-name",ev),window.removeEventListener("update-item-attribute",ey),window.removeEventListener("set-product-offer",ef),window.removeEventListener("update-sale-page-product-id",eg),window.removeEventListener("limit-create-theme-section",eE),window.removeEventListener("update-interaction-is-select-on-page",eL),window.removeEventListener("update-interaction-item",eI),window.removeEventListener("update-interaction-setting-type",eb),window.removeEventListener("update-font-type",ep)}),[en,ec,eo,ei,et,ed,ea,ee,er,Z,_,el,es,ew,eu,ev,ey,ef,eg,eE,eI,eL,eb,ep,eS,eh,em]),e("div",{className:"toolbox"})};var Toolbox$1=r(Toolbox);export{Toolbox$1 as default};
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};
@@ -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,i]=e;if(!t)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 p=r(o);p&&(s=`${s}?gp-online-store-operation=${p}`);let h={"Content-Type":"application/json","X-GemX-Shop-Token":t};return fetch(s,{method:"POST",headers:h,body:JSON.stringify({query:o,variables:n,operationName:i})}).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[i,s,p]=n;if(!e)throw Error("shopToken is not defined");if(!o)throw Error("NEXT_APP_API_URL is not defined");let h=r(i);h&&(o=`${o}?gp-online-store-operation=${h}`);let c={"Content-Type":"application/json",Authorization:`Token ${e}`,"X-GemX-Shop-ID":t||""};return fetch(`${o}?gp-online-store-operation=${p}`,{method:"POST",headers:c,body:JSON.stringify({query:i,variables:s,operationName:p})}).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},[i,s]=r;return fetch(e(n),{method:"POST",headers:t,body:JSON.stringify({query:i,variables:s})}).then(e=>e.json()).then(e=>e.errors?Promise.reject(e.errors):e.data)}};export{createAppAPIFetcher,createFetcher,createShopifyFetcher};
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(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};
1
+ import{checkNotInOptionFont as e}from"./helpers/check-option-font.js";import{getFontsFromDataBuilder as t}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(e,t){try{return fetch(e,{headers:{"User-Agent":t}}).then(o=>200===o.status?o.text():(r("getFontForUA",`Unexpected status ${o.status}`,{url:e,UA:t}),""))}catch(o){return r("getFontForUA","Error fetching font",{url:e,UA:t,error:o}),""}}let composeFonts=e=>{let t=e.filter((e,t,r)=>t===r.findIndex(t=>t.family===e.family));return t.map(t=>{let r=e.filter(e=>e.family===t.family).reduce((e,t)=>[...e,...t.variants],[]).filter((e,t,r)=>t===r.findIndex(t=>t===e));return{...t,variants:r}})},GOOGLE_CSS2_OVERRIDES={"Roboto Flex":"https://fonts.googleapis.com/css2?family=Roboto+Flex:opsz,wght@8..144,100..1000&display=swap"},normalizeFamily=e=>e?.trim().replace(/\s+/g,"+")??"",getOverrideUrlForFamily=e=>{let t=normalizeFamily(e);return GOOGLE_CSS2_OVERRIDES[e]??GOOGLE_CSS2_OVERRIDES[t]},isValidFont=(t,r)=>{let o="google"===t.type||"bunny"===t.type,n=e(t.family,r);return!(o&&n)&&(o||!t.type)},makeUrlBySourceFont=(e,t,r)=>{let o=composeFonts(e).map(e=>`${e.family.replace(/ /g,"+")}:${e.variants.join(",")}`).join("|");if("sans-serif"===o)return;let n=new URLSearchParams;n.append("family",o),n.append("display",r?.display||"swap"),r?.subset&&n.append("subset",r.subset),r?.effect&&n.append("effect",r.effect);let l=`https://fonts.bunny.net/css?family=${o}`,i=`https://fonts.googleapis.com/css?${decodeURIComponent(n.toString())}`;return"bunny"===t?l:i},createFontUrls=(e,t,r)=>{let o=e.filter(e=>isValidFont(e,r||"google"));if(!o.length)return;let n=o.filter((e,t,r)=>t===r.findIndex(t=>t.family===e.family)),l=[],i=[];for(let e of n){let t=getOverrideUrlForFamily(e.family);t&&"bunny"!==r?l.push(t):i.push(e)}let a=i.length?makeUrlBySourceFont(i,r||"google",t):void 0;return l.length&&a?[...l,a]:a?[a,...l]:l};async function getFonts(e,t,o=!0,n){let l=createFontUrls(e,t,n),i=Array.isArray(l)?l:l?[l]:[];if(!i.length)return"";if(o)return i.map(e=>`@import url('${e}');`).join("");let a="",s="";for(let e of i)try{let[t,r]=await Promise.all([getFontForUA(e,"Mozilla/5.0 (Windows NT 10.0; Trident/7.0; rv:11.0) like Gecko"),getFontForUA(e,"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=`${t}${r}`;a+=o,s+=`@import url('${e}');`}catch(t){r("getFonts","Error fetching font",{url:e,fontType:n,error:String(t)}),s+="",a+=""}let f=new TextEncoder().encode(a).length;return f<51200?a:s}let getFontFromGlobalStyle=(e,t)=>{if(!e)return"";try{let r=JSON.parse(e),o=r?.font??{},n=Object.entries(o).map(([,e])=>e);return getFonts(n,void 0,void 0,t)}catch{return""}};async function getFontStyleFromPageTemplate(e,r){let o=e.map(e=>getFonts(t(e.data),void 0,void 0,r));return await Promise.all(o)}export{composeFonts,createFontUrls,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};
@@ -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
- export { AppPropsWithLayout, BuilderPage, CollectionDetailPage, ErrorBoundary, ErrorFallback, FacebookPixel, GoogleAnalytic, NextPageWithLayout, Page404, Page500, PageBuilderProps, PageBuilderPropsV2, PreviewPage, ProductDetailPage, StaticPage, StaticPagePropsV2, StaticPageV2, TikTokPixel, createAppAPIFetcher, createFetcher, createShopifyFetcher, genCSS, getBuilderProps, getCollectionProps, getFallbackV2, getFontFromGlobalStyle, getFontFromGroupSetting, getFonts, getFontsFromDataBuilder, getHomePageProps, getHomePagePropsV2, getLayout, getPostPurchasePropsPreview, getPreviewProps, getProductProps, getStaticPagePropsPreview, getStaticPagePropsV2, getStaticPaths, getStorefrontApi, isBot, normalizePageSectionResponseV2, parseBuilderTemplateV2, retryWithDelay, usePagePreview, useTrackingView };
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 };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gem-sdk/pages",
3
- "version": "2.0.0-dev.1136",
3
+ "version": "2.0.0-dev.1143",
4
4
  "license": "MIT",
5
5
  "sideEffects": false,
6
6
  "main": "dist/cjs/index.js",