@gem-sdk/pages 12.0.0-dev.29 → 12.0.0-dev.32

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",ENABLE_THEME_FONT_EDITOR=!0,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.setAssignedProductIds),n=core.usePageStore(e=>e.setIsApplyAllProducts),i=core.usePageStore(e=>e.setPostPurchaseProductOffers),d=core.usePageStore(e=>e.setDynamicDiscountOffer),l=core.usePageStore(e=>e.setSalePageProductId),s=core.usePageStore(e=>e.setDynamicCollection),c=core.useBuilderPreviewStore(e=>e.initState),u=core.useBuilderPreviewStore(e=>e.state),p=core.useBuilderPreviewStore(e=>e.forceChangeState),w=core.useBuilderPreviewStore(e=>e.forceChangeItemProp),v=core.useBuilderPreviewStore(e=>e.changeItemPropByKey),m=core.useBuilderPreviewStore(e=>e.addItem),g=core.useBuilderPreviewStore(e=>e.moveItem),y=core.useBuilderPreviewStore(e=>e.removeItem),S=core.useSectionStore(e=>e.addSection),f=core.useShopStore(e=>e.changeSwatches),h=core.useBuilderPreviewStore(e=>e.updateItemName),b=core.useBuilderPreviewStore(e=>e.updateItemAttribute),E=core.useShopStore(e=>e.changeLayoutSettings),L=core.useShopStore(e=>e.changeCreateThemeSectionCount),C=core.useShopStore(e=>e.changeShopPlan),k=core.useShopStore(e=>e.updatePriceWithCurrency),P=libsStore.libsStore(e=>e.changeFontType),I=libsStore.libsStore(e=>e.fontType),T=core.useModalStore(e=>e.clearModal),q=core.useShopStore(e=>e.changeLimitCreateThemeSection),F=core.usePageStore(e=>e.setInteractionIsSelectOnPage),A=core.usePageStore(e=>e.setInteractionItem),B=core.usePageStore(e=>e.setInteractionSelectType),j=core.usePageStore(e=>e.setInteractionSettingType),x=core.usePageStore(e=>e.setSidebarMode),M=core.usePageStore(e=>e.setSellingPlanMeta),O=react.useMemo(()=>genFonts.getFontsFromDataBuilder(u),[u]),N=({currentFontTypeSetting:e,fontType:t,fontHref:o})=>{let r;return o.includes("bunny.net")?r="bunny":o.includes("googleapis.com")&&(r="google"),!r||t===r&&r===e},D=react.useCallback((e,t)=>{if(!I)return;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"),a=e.getAttribute("href")||"";if(!o||!r){e.remove();return}let n=t.find(e=>{let t=e.family===o,n=e.variants.includes(r);return!!t&&!!n&&N({currentFontTypeSetting:e.type,fontType:I,fontHref:a})});n||e.remove()}),t))if(!(["bunny","google"].includes(r.type)&&checkOptionFont.checkNotInOptionFont(r.family,I))&&"custom"!==r.type&&r.variants?.length)for(let t of r.variants){let o={...r,variants:[t.toString()]},a=googleFonts.createFontUrls([o],void 0,I,!0)||[];if(a?.length)for(let o of a){let a=e=>window.CSS&&CSS.escape?CSS.escape(e):e.replace(/"/g,'\\"'),n=document.querySelector(`link.${e}[href="${a(o)}"]`);if(n)continue;let i=document.createElement("link");i.className=e,i.rel="stylesheet",i.href=o,i.dataset.font=r.family,i.dataset.fontVariant=t,document.head.appendChild(i)}}},[I]),$=react.useCallback(()=>{e(/query\//,{revalidate:!0})},[e]),H=react.useCallback(e=>{let r=e.detail;o({url:r.shopHandle?getStorefrontApi.getStorefrontApi(r.shopHandle,t):void 0,token:r.shopToken})},[o,t]),_=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(D("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{}},[D]),W=react.useCallback(e=>{T();try{let t=e.detail;t.data&&("flat"===t.type?p(t.data):c(t.data))}catch{}},[p,c,T]),G=react.useCallback(e=>{try{let t=e.detail;t.entity&&(m({data:t.entity,id:t.id,position:t.position,type:t.type??"component"}),t?.type!=="section"||Array.isArray(t.entity)||S(t.entity.uid,t.entity))}catch{}},[m,S]),R=react.useCallback(e=>{try{let t=e.detail;t.uid&&t.propName&&v({id:t.uid,key:t.propName,data:t.propValue,group:t.group})}catch{}},[v]),V=react.useCallback(e=>{try{let t=e.detail;t.uid&&w(t.uid,t.data,t.group)}catch{}},[w]),K=react.useCallback(e=>{try{let t=e.detail;t.to&&t.uid&&g(t.uid,t.to,Number(t.position)??0)}catch{}},[g]),U=react.useCallback(e=>{try{let t=e.detail;t.uid&&y(t.uid)}catch{}},[y]),z=react.useCallback(e=>{let t=e.detail;try{t.data&&f(t.data)}catch{}},[f]),J=react.useCallback(e=>{let t=e.detail;t&&E(t)},[E]),Q=react.useCallback(e=>{let t=e.detail;t&&L(t)},[L]),X=react.useCallback(e=>{let t=e.detail;t&&C(t)},[C]),Y=react.useCallback(e=>{let t=e.detail;t&&k(t)},[k]),Z=react.useCallback(e=>{let t=e.detail;t&&P(t)},[P]),ee=react.useCallback(e=>{let t=e.detail;t&&r(t)},[r]),et=react.useCallback(e=>{let{assignedIds:t,isApplyAllProducts:o}=e.detail;t&&a(t??[]),n(!!o)},[a,n]),eo=react.useCallback(e=>{let t=e.detail;t&&s(t)},[s]);react.useEffect(()=>{O&&I&&D("google-font-element",O)},[O,I,D]);let er=react.useCallback(e=>{let t=e.detail;t.uid&&h(t.uid,t.name||"")},[h]),ea=react.useCallback(e=>{let t=e.detail;t.uid&&b(t.uid,t.value||"",t.attr||"")},[b]),en=react.useCallback(e=>{let t=e.detail;t?.length&&i(t)},[i]),ei=react.useCallback(e=>{let t=e.detail;t&&d(t)},[d]),ed=react.useCallback(e=>{let t=e.detail;t&&l(t)},[l]),el=react.useCallback(e=>{let t=e.detail;t&&q(t)},[q]),es=react.useCallback(e=>{let t=e.detail.value,o=e.detail.mode,r=e.detail.settingType;F(t),B(o),j(r)},[F,B,j]),ec=react.useCallback(e=>{let t=e.detail.settingType;j(t)},[j]),eu=react.useCallback(e=>{let t=e.detail.mode;console.log(t),x(t)},[x]),ep=react.useCallback(e=>{let t=e.detail;A(t)},[A]),ew=react.useCallback(e=>{e.detail&&M(e.detail)},[M]);return react.useEffect(()=>(window.addEventListener("update-shop-info",H),window.addEventListener("revalidate-query",$),window.addEventListener("init-builder",W),window.addEventListener("add-entity",G),window.addEventListener("remove-entity",U),window.addEventListener("move-entity",K),window.addEventListener("force-update-entity-props",V),window.addEventListener("update-entity-prop",R),window.addEventListener("set-global-style",_),window.addEventListener("update-global-swatches-data",z),window.addEventListener("on-off-header-footer",J),window.addEventListener("update-create-theme-section-count",Q),window.addEventListener("update-shop-plan",X),window.addEventListener("set-dynamic-product",ee),window.addEventListener("set-assigned-product-ids",et),window.addEventListener("set-dynamic-collection",eo),window.addEventListener("update-item-name",er),window.addEventListener("update-item-attribute",ea),window.addEventListener("set-product-offer",en),window.addEventListener("set-dynamic-discount-offer",ei),window.addEventListener("update-sale-page-product-id",ed),window.addEventListener("limit-create-theme-section",el),window.addEventListener("update-interaction-is-select-on-page",es),window.addEventListener("update-interaction-item",ep),window.addEventListener("update-interaction-setting-type",ec),window.addEventListener("change-sidebar-mode",eu),window.addEventListener("update-font-type",Z),window.addEventListener("update-price-with-currency",Y),window.addEventListener("selling-plan-meta-loaded",ew),window.addEventListener("selling-plan-meta-updated",ew),()=>{window.removeEventListener("update-shop-info",H),window.removeEventListener("revalidate-query",$),window.removeEventListener("init-builder",W),window.removeEventListener("add-entity",G),window.removeEventListener("remove-entity",U),window.removeEventListener("move-entity",K),window.removeEventListener("update-entity-prop",R),window.removeEventListener("set-global-style",_),window.removeEventListener("update-global-swatches-data",z),window.removeEventListener("on-off-header-footer",J),window.removeEventListener("update-create-theme-section-count",Q),window.removeEventListener("update-shop-plan",X),window.removeEventListener("update-price-with-currency",Y),window.removeEventListener("set-dynamic-product",ee),window.removeEventListener("set-dynamic-collection",eo),window.removeEventListener("update-item-name",er),window.removeEventListener("update-item-attribute",ea),window.removeEventListener("set-product-offer",en),window.removeEventListener("update-sale-page-product-id",ed),window.removeEventListener("limit-create-theme-section",el),window.removeEventListener("update-interaction-is-select-on-page",es),window.removeEventListener("update-interaction-item",ep),window.removeEventListener("update-interaction-setting-type",ec),window.removeEventListener("update-font-type",Z),window.removeEventListener("selling-plan-meta-loaded",ew),window.removeEventListener("selling-plan-meta-updated",ew)}),[G,X,V,R,W,K,U,_,z,$,H,J,Q,ee,eo,er,ea,en,ed,el,ep,es,ec,Z,eu,ei,Y,ew]),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",ENABLE_THEME_FONT_EDITOR=!0,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.setAssignedProductIds),n=core.usePageStore(e=>e.setIsApplyAllProducts),i=core.usePageStore(e=>e.setPostPurchaseProductOffers),d=core.usePageStore(e=>e.setDynamicDiscountOffer),l=core.usePageStore(e=>e.setSalePageProductId),s=core.usePageStore(e=>e.setDynamicCollection),c=core.useBuilderPreviewStore(e=>e.initState),u=core.useBuilderPreviewStore(e=>e.state),p=core.useBuilderPreviewStore(e=>e.forceChangeState),w=core.useBuilderPreviewStore(e=>e.forceChangeItemProp),v=core.useBuilderPreviewStore(e=>e.changeItemPropByKey),m=core.useBuilderPreviewStore(e=>e.addItem),g=core.useBuilderPreviewStore(e=>e.moveItem),y=core.useBuilderPreviewStore(e=>e.removeItem),f=core.useSectionStore(e=>e.addSection),h=core.useShopStore(e=>e.changeSwatches),S=core.useBuilderPreviewStore(e=>e.updateItemName),b=core.useBuilderPreviewStore(e=>e.updateItemAttribute),E=core.useShopStore(e=>e.changeLayoutSettings),L=core.useShopStore(e=>e.changeCreateThemeSectionCount),C=core.useShopStore(e=>e.changeShopPlan),k=core.useShopStore(e=>e.updatePriceWithCurrency),P=libsStore.libsStore(e=>e.changeFontType),I=libsStore.libsStore(e=>e.fontType),T=core.useModalStore(e=>e.clearModal),q=core.useShopStore(e=>e.changeLimitCreateThemeSection),F=core.usePageStore(e=>e.setInteractionIsSelectOnPage),A=core.usePageStore(e=>e.setInteractionItem),B=core.usePageStore(e=>e.setInteractionSelectType),j=core.usePageStore(e=>e.setInteractionSettingType),x=core.usePageStore(e=>e.setSidebarMode),O=react.useMemo(()=>genFonts.getFontsFromDataBuilder(u),[u]),M=({currentFontTypeSetting:e,fontType:t,fontHref:o})=>{let r;return o.includes("bunny.net")?r="bunny":o.includes("googleapis.com")&&(r="google"),!r||t===r&&r===e},N=react.useCallback((e,t)=>{if(!I)return;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"),a=e.getAttribute("href")||"";if(!o||!r){e.remove();return}let n=t.find(e=>{let t=e.family===o,n=e.variants.includes(r);return!!t&&!!n&&M({currentFontTypeSetting:e.type,fontType:I,fontHref:a})});n||e.remove()}),t))if(!(["bunny","google"].includes(r.type)&&checkOptionFont.checkNotInOptionFont(r.family,I))&&"custom"!==r.type&&r.variants?.length)for(let t of r.variants){let o={...r,variants:[t.toString()]},a=googleFonts.createFontUrls([o],void 0,I,!0)||[];if(a?.length)for(let o of a){let a=e=>window.CSS&&CSS.escape?CSS.escape(e):e.replace(/"/g,'\\"'),n=document.querySelector(`link.${e}[href="${a(o)}"]`);if(n)continue;let i=document.createElement("link");i.className=e,i.rel="stylesheet",i.href=o,i.dataset.font=r.family,i.dataset.fontVariant=t,document.head.appendChild(i)}}},[I]),D=react.useCallback(()=>{e(/query\//,{revalidate:!0})},[e]),$=react.useCallback(e=>{let r=e.detail;o({url:r.shopHandle?getStorefrontApi.getStorefrontApi(r.shopHandle,t):void 0,token:r.shopToken})},[o,t]),H=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(N("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{}},[N]),_=react.useCallback(e=>{T();try{let t=e.detail;t.data&&("flat"===t.type?p(t.data):c(t.data))}catch{}},[p,c,T]),W=react.useCallback(e=>{try{let t=e.detail;t.entity&&(m({data:t.entity,id:t.id,position:t.position,type:t.type??"component"}),t?.type!=="section"||Array.isArray(t.entity)||f(t.entity.uid,t.entity))}catch{}},[m,f]),G=react.useCallback(e=>{try{let t=e.detail;t.uid&&t.propName&&v({id:t.uid,key:t.propName,data:t.propValue,group:t.group})}catch{}},[v]),R=react.useCallback(e=>{try{let t=e.detail;t.uid&&w(t.uid,t.data,t.group)}catch{}},[w]),V=react.useCallback(e=>{try{let t=e.detail;t.to&&t.uid&&g(t.uid,t.to,Number(t.position)??0)}catch{}},[g]),K=react.useCallback(e=>{try{let t=e.detail;t.uid&&y(t.uid)}catch{}},[y]),U=react.useCallback(e=>{let t=e.detail;try{t.data&&h(t.data)}catch{}},[h]),z=react.useCallback(e=>{let t=e.detail;t&&E(t)},[E]),J=react.useCallback(e=>{let t=e.detail;t&&L(t)},[L]),Q=react.useCallback(e=>{let t=e.detail;t&&C(t)},[C]),X=react.useCallback(e=>{let t=e.detail;t&&k(t)},[k]),Y=react.useCallback(e=>{let t=e.detail;t&&P(t)},[P]),Z=react.useCallback(e=>{let t=e.detail;t&&r(t)},[r]),ee=react.useCallback(e=>{let{assignedIds:t,isApplyAllProducts:o}=e.detail;t&&a(t??[]),n(!!o)},[a,n]),et=react.useCallback(e=>{let t=e.detail;t&&s(t)},[s]);react.useEffect(()=>{O&&I&&N("google-font-element",O)},[O,I,N]);let eo=react.useCallback(e=>{let t=e.detail;t.uid&&S(t.uid,t.name||"")},[S]),er=react.useCallback(e=>{let t=e.detail;t.uid&&b(t.uid,t.value||"",t.attr||"")},[b]),ea=react.useCallback(e=>{let t=e.detail;t?.length&&i(t)},[i]),en=react.useCallback(e=>{let t=e.detail;t&&d(t)},[d]),ei=react.useCallback(e=>{let t=e.detail;t&&l(t)},[l]),ed=react.useCallback(e=>{let t=e.detail;t&&q(t)},[q]),el=react.useCallback(e=>{let t=e.detail.value,o=e.detail.mode,r=e.detail.settingType;F(t),B(o),j(r)},[F,B,j]),es=react.useCallback(e=>{let t=e.detail.settingType;j(t)},[j]),ec=react.useCallback(e=>{let t=e.detail.mode;console.log(t),x(t)},[x]),eu=react.useCallback(e=>{let t=e.detail;A(t)},[A]);return react.useEffect(()=>(window.addEventListener("update-shop-info",$),window.addEventListener("revalidate-query",D),window.addEventListener("init-builder",_),window.addEventListener("add-entity",W),window.addEventListener("remove-entity",K),window.addEventListener("move-entity",V),window.addEventListener("force-update-entity-props",R),window.addEventListener("update-entity-prop",G),window.addEventListener("set-global-style",H),window.addEventListener("update-global-swatches-data",U),window.addEventListener("on-off-header-footer",z),window.addEventListener("update-create-theme-section-count",J),window.addEventListener("update-shop-plan",Q),window.addEventListener("set-dynamic-product",Z),window.addEventListener("set-assigned-product-ids",ee),window.addEventListener("set-dynamic-collection",et),window.addEventListener("update-item-name",eo),window.addEventListener("update-item-attribute",er),window.addEventListener("set-product-offer",ea),window.addEventListener("set-dynamic-discount-offer",en),window.addEventListener("update-sale-page-product-id",ei),window.addEventListener("limit-create-theme-section",ed),window.addEventListener("update-interaction-is-select-on-page",el),window.addEventListener("update-interaction-item",eu),window.addEventListener("update-interaction-setting-type",es),window.addEventListener("change-sidebar-mode",ec),window.addEventListener("update-font-type",Y),window.addEventListener("update-price-with-currency",X),()=>{window.removeEventListener("update-shop-info",$),window.removeEventListener("revalidate-query",D),window.removeEventListener("init-builder",_),window.removeEventListener("add-entity",W),window.removeEventListener("remove-entity",K),window.removeEventListener("move-entity",V),window.removeEventListener("update-entity-prop",G),window.removeEventListener("set-global-style",H),window.removeEventListener("update-global-swatches-data",U),window.removeEventListener("on-off-header-footer",z),window.removeEventListener("update-create-theme-section-count",J),window.removeEventListener("update-shop-plan",Q),window.removeEventListener("update-price-with-currency",X),window.removeEventListener("set-dynamic-product",Z),window.removeEventListener("set-dynamic-collection",et),window.removeEventListener("update-item-name",eo),window.removeEventListener("update-item-attribute",er),window.removeEventListener("set-product-offer",ea),window.removeEventListener("update-sale-page-product-id",ei),window.removeEventListener("limit-create-theme-section",ed),window.removeEventListener("update-interaction-is-select-on-page",el),window.removeEventListener("update-interaction-item",eu),window.removeEventListener("update-interaction-setting-type",es),window.removeEventListener("update-font-type",Y)}),[W,Q,R,G,_,V,K,H,U,D,$,z,J,Z,et,eo,er,ea,ei,ed,eu,el,es,Y,ec,en,X]),jsxRuntime.jsx("div",{className:"toolbox"})};var Toolbox$1=react.memo(Toolbox);exports.default=Toolbox$1;
@@ -1 +1 @@
1
- "use strict";var core=require("@gem-sdk/core"),nextjs=require("@sentry/nextjs"),googleFonts=require("../google-fonts.js"),getFallback=require("../helpers/get-fallback.js"),normalize=require("../helpers/normalize.js"),usePagePreview=require("../hooks/usePagePreview.js"),parseJson=require("../helpers/parse-json.js"),genCss=require("../helpers/gen-css.js");const PAGE_SETTINGS_KEY="page_settings",SELLING_PLAN_SETTING_KEY="sellingPlanSetting",fetchSalePageDataByID=async(e,r)=>{let t={themePageId:e.themePageId,first:1,where:{default:!0}},[a,l]=await Promise.allSettled([r([core.ThemePageDocument,t]),r([core.StorePropertyDocument])]);if("rejected"===a.status)throw Error(a.reason?.[0]);return{dataBuilder:a.value.themePage,pageStyle:a.value.themePage?.theme?.themeStyles?.edges?.[0]?.node?.data,storeProperty:l,dynamicDiscountOffer:void 0,productOffers:[],sellingPlanSetting:{}}},fetchPostPurchasePageDataByID=async(e,r)=>{let t={themePageId:e.themePageId,first:1,where:{default:!0}},a={themePageID:e.themePageId,where:{key:PAGE_SETTINGS_KEY}},[l,o,s,n,i]=await Promise.allSettled([r([core.ThemePageDocument,t]),r([core.StorePropertyDocument]),r([core.SaleFunnelDiscountsDocument,{where:{saleFunnelOfferID:e.currentOfferID}}]),r([core.SaleFunnelOfferDocument,{saleFunnelOfferId:e.currentOfferID}]),r([core.ThemePageMetaDocument,a])]);if("rejected"===l.status)throw Error(l.reason?.[0]);if("rejected"===s.status)throw Error(s.reason?.[0]);if("rejected"===n.status)throw Error(n.reason?.[0]);if("rejected"===i.status)throw Error(i.reason?.[0]);let c={};if("fulfilled"===i.status){let e=i.value.themePageMeta?.edges?.find(e=>e?.node?.key===PAGE_SETTINGS_KEY)?.node?.value;if(e)try{let r=JSON.parse(e);c=r?.sellingPlanSetting}catch(e){console.error("Error parsing selling plan setting:",e)}}return{dataBuilder:l.value.themePage,pageStyle:l.value.themePage?.theme?.themeStyles?.edges?.[0]?.node?.data,storeProperty:o,dynamicDiscountOffer:n.value.saleFunnelOffer?.dynamicDiscounts?.[0],productOffers:s.value.saleFunnelDiscounts?.edges?.filter(e=>e?.node?.objectType==="PRODUCT"&&e?.node?.type==="ORDER_VALUE")||[],sellingPlanSetting:c}},fetchThemePageDataByTemplateID=async(e,r)=>{let t={libraryTemplateId:e.libraryTemplateId},a=[],[l,o]=await Promise.allSettled([r([core.LibraryTemplateDocument,t]),r([core.StorePropertyDocument])]);if(e.currentOfferID){let[t]=await Promise.allSettled([r([core.LibrarySaleFunnelDocument,{librarySaleFunnelId:e.librarySaleFunnelID}])]);if("rejected"===t.status)throw Error(t.reason?.[0]);let l=t.value.librarySaleFunnel?.offers?.find(r=>r?.id===e.currentOfferID);l&&(a=l.discounts?.filter(e=>e?.objectType==="PRODUCT"&&"ORDER_VALUE"===e.type).map(e=>({node:{...e}}))||[])}if("rejected"===l.status)throw Error(l.reason?.[0]);return{dataBuilder:l.value.libraryTemplate,pageStyle:void 0,storeProperty:o,dynamicDiscountOffer:void 0,productOffers:a,sellingPlanSetting:{}}},fetchShopLibraryPageDataByID=async(e,r)=>{let t={shopLibraryPageId:e.shopLibraryPageId},[a,l,o,s]=await Promise.allSettled([r([core.ShopLibraryPageDocument,t]),r([core.StorePropertyDocument]),r([core.SaleFunnelDiscountsDocument,{where:{saleFunnelOfferID:e.currentOfferID}}]),r([core.SaleFunnelOfferDocument,{saleFunnelOfferId:e.currentOfferID}])]);if("rejected"===a.status)throw Error(a.reason?.[0]);if("rejected"===o.status)throw Error(o.reason?.[0]);if("rejected"===s.status)throw Error(s.reason?.[0]);return{dataBuilder:a.value.shopLibraryPage,pageStyle:void 0,storeProperty:l,dynamicDiscountOffer:s.value.saleFunnelOffer?.dynamicDiscounts?.[0],productOffers:o.value.saleFunnelDiscounts?.edges?.filter(e=>e?.node?.objectType==="PRODUCT"&&e?.node?.type==="ORDER_VALUE")||[],sellingPlanSetting:{}}},fetchLibraryTemplateDataByID=async(e,r)=>{let t={libraryTemplateId:e.libraryTemplateId},[a,l,o,s]=await Promise.allSettled([r([core.LibraryTemplateDocument,t]),r([core.StorePropertyDocument]),r([core.SaleFunnelDiscountsDocument,{where:{saleFunnelOfferID:e.currentOfferID}}]),r([core.SaleFunnelOfferDocument,{saleFunnelOfferId:e.currentOfferID}])]);if("rejected"===a.status)throw Error(a.reason?.[0]);if("rejected"===o.status)throw Error(o.reason?.[0]);if("rejected"===s.status)throw Error(s.reason?.[0]);return{dataBuilder:a.value.libraryTemplate,pageStyle:void 0,storeProperty:l,dynamicDiscountOffer:s.value.saleFunnelOffer?.dynamicDiscounts?.[0],productOffers:o.value.saleFunnelDiscounts?.edges?.filter(e=>e?.node?.objectType==="PRODUCT"&&e?.node?.type==="ORDER_VALUE")||[],sellingPlanSetting:{}}},getRelevantPageData=async e=>{let{id:r,currentOfferID:t,fetcher:a,isLibraryTemplate:l,librarySaleFunnelID:o,isShopLibraryPage:s}=e;return o?await fetchThemePageDataByTemplateID({libraryTemplateId:r,currentOfferID:t,librarySaleFunnelID:o},a):s&&t?await fetchShopLibraryPageDataByID({shopLibraryPageId:r,currentOfferID:t},a):l&&t?await fetchLibraryTemplateDataByID({libraryTemplateId:r,currentOfferID:t},a):t?await fetchPostPurchasePageDataByID({themePageId:r,currentOfferID:t},a):await fetchSalePageDataByID({themePageId:r},a)},getPostPurchasePropsPreview=(e,r,t)=>async a=>{try{let{id:l,currentOfferID:o,isLibraryTemplate:s,isShopLibraryPage:n}=a,{dataBuilder:i,storeProperty:c,productOffers:u,pageStyle:f,dynamicDiscountOffer:g,sellingPlanSetting:d}=await getRelevantPageData({id:l,currentOfferID:o,fetcher:e,isLibraryTemplate:s,isShopLibraryPage:n,librarySaleFunnelID:r});if(!i)throw Error(`No data builder found for slug: /preview/${l}`);let D=r||s&&o?normalize.parseBuilderLibraryTemplate(i):n?normalize.parseShopLibraryPageTemplate(i):normalize.parseBuilderTemplateV2(i),P=t||e,[y,h,m]=await Promise.all([googleFonts.getFontStyleFromPageTemplate(D,void 0,f),googleFonts.getFontLinkFromGlobalStyle(f,void 0),getFallback.getFallbackV2(P,D,!1)]),{seo:p,pageConfig:I}=usePagePreview.usePagePreview(i,c);return parseJson.serializableJson({themeStyle:genCss.genCSS(f),seo:p,...I,elementFontStyle:y,fontStyle:h,builderData:D,swr:{fallback:m},productOffers:u,dynamicDiscountOffer:g,sellingPlanSetting:d})}catch(e){throw console.log("error",e),nextjs.captureException(e),e}};exports.fetchLibraryTemplateDataByID=fetchLibraryTemplateDataByID,exports.fetchPostPurchasePageDataByID=fetchPostPurchasePageDataByID,exports.fetchSalePageDataByID=fetchSalePageDataByID,exports.fetchShopLibraryPageDataByID=fetchShopLibraryPageDataByID,exports.fetchThemePageDataByTemplateID=fetchThemePageDataByTemplateID,exports.getPostPurchasePropsPreview=getPostPurchasePropsPreview,exports.getRelevantPageData=getRelevantPageData;
1
+ "use strict";var core=require("@gem-sdk/core"),nextjs=require("@sentry/nextjs"),googleFonts=require("../google-fonts.js"),getFallback=require("../helpers/get-fallback.js"),normalize=require("../helpers/normalize.js"),usePagePreview=require("../hooks/usePagePreview.js"),parseJson=require("../helpers/parse-json.js"),genCss=require("../helpers/gen-css.js");const fetchSalePageDataByID=async(e,r)=>{let a={themePageId:e.themePageId,first:1,where:{default:!0}},[t,o]=await Promise.allSettled([r([core.ThemePageDocument,a]),r([core.StorePropertyDocument])]);if("rejected"===t.status)throw Error(t.reason?.[0]);return{dataBuilder:t.value.themePage,pageStyle:t.value.themePage?.theme?.themeStyles?.edges?.[0]?.node?.data,storeProperty:o,dynamicDiscountOffer:void 0,productOffers:[]}},fetchPostPurchasePageDataByID=async(e,r)=>{let a={themePageId:e.themePageId,first:1,where:{default:!0}},[t,o,l,s]=await Promise.allSettled([r([core.ThemePageDocument,a]),r([core.StorePropertyDocument]),r([core.SaleFunnelDiscountsDocument,{where:{saleFunnelOfferID:e.currentOfferID}}]),r([core.SaleFunnelOfferDocument,{saleFunnelOfferId:e.currentOfferID}])]);if("rejected"===t.status)throw Error(t.reason?.[0]);if("rejected"===l.status)throw Error(l.reason?.[0]);if("rejected"===s.status)throw Error(s.reason?.[0]);return{dataBuilder:t.value.themePage,pageStyle:t.value.themePage?.theme?.themeStyles?.edges?.[0]?.node?.data,storeProperty:o,dynamicDiscountOffer:s.value.saleFunnelOffer?.dynamicDiscounts?.[0],productOffers:l.value.saleFunnelDiscounts?.edges?.filter(e=>e?.node?.objectType==="PRODUCT"&&e?.node?.type==="ORDER_VALUE")||[]}},fetchThemePageDataByTemplateID=async(e,r)=>{let a={libraryTemplateId:e.libraryTemplateId},t=[],[o,l]=await Promise.allSettled([r([core.LibraryTemplateDocument,a]),r([core.StorePropertyDocument])]);if(e.currentOfferID){let[a]=await Promise.allSettled([r([core.LibrarySaleFunnelDocument,{librarySaleFunnelId:e.librarySaleFunnelID}])]);if("rejected"===a.status)throw Error(a.reason?.[0]);let o=a.value.librarySaleFunnel?.offers?.find(r=>r?.id===e.currentOfferID);o&&(t=o.discounts?.filter(e=>e?.objectType==="PRODUCT"&&"ORDER_VALUE"===e.type).map(e=>({node:{...e}}))||[])}if("rejected"===o.status)throw Error(o.reason?.[0]);return{dataBuilder:o.value.libraryTemplate,pageStyle:void 0,storeProperty:l,dynamicDiscountOffer:void 0,productOffers:t}},fetchShopLibraryPageDataByID=async(e,r)=>{let a={shopLibraryPageId:e.shopLibraryPageId},[t,o,l,s]=await Promise.allSettled([r([core.ShopLibraryPageDocument,a]),r([core.StorePropertyDocument]),r([core.SaleFunnelDiscountsDocument,{where:{saleFunnelOfferID:e.currentOfferID}}]),r([core.SaleFunnelOfferDocument,{saleFunnelOfferId:e.currentOfferID}])]);if("rejected"===t.status)throw Error(t.reason?.[0]);if("rejected"===l.status)throw Error(l.reason?.[0]);if("rejected"===s.status)throw Error(s.reason?.[0]);return{dataBuilder:t.value.shopLibraryPage,pageStyle:void 0,storeProperty:o,dynamicDiscountOffer:s.value.saleFunnelOffer?.dynamicDiscounts?.[0],productOffers:l.value.saleFunnelDiscounts?.edges?.filter(e=>e?.node?.objectType==="PRODUCT"&&e?.node?.type==="ORDER_VALUE")||[]}},fetchLibraryTemplateDataByID=async(e,r)=>{let a={libraryTemplateId:e.libraryTemplateId},[t,o,l,s]=await Promise.allSettled([r([core.LibraryTemplateDocument,a]),r([core.StorePropertyDocument]),r([core.SaleFunnelDiscountsDocument,{where:{saleFunnelOfferID:e.currentOfferID}}]),r([core.SaleFunnelOfferDocument,{saleFunnelOfferId:e.currentOfferID}])]);if("rejected"===t.status)throw Error(t.reason?.[0]);if("rejected"===l.status)throw Error(l.reason?.[0]);if("rejected"===s.status)throw Error(s.reason?.[0]);return{dataBuilder:t.value.libraryTemplate,pageStyle:void 0,storeProperty:o,dynamicDiscountOffer:s.value.saleFunnelOffer?.dynamicDiscounts?.[0],productOffers:l.value.saleFunnelDiscounts?.edges?.filter(e=>e?.node?.objectType==="PRODUCT"&&e?.node?.type==="ORDER_VALUE")||[]}},getRelevantPageData=async e=>{let{id:r,currentOfferID:a,fetcher:t,isLibraryTemplate:o,librarySaleFunnelID:l,isShopLibraryPage:s}=e;return l?await fetchThemePageDataByTemplateID({libraryTemplateId:r,currentOfferID:a,librarySaleFunnelID:l},t):s&&a?await fetchShopLibraryPageDataByID({shopLibraryPageId:r,currentOfferID:a},t):o&&a?await fetchLibraryTemplateDataByID({libraryTemplateId:r,currentOfferID:a},t):a?await fetchPostPurchasePageDataByID({themePageId:r,currentOfferID:a},t):await fetchSalePageDataByID({themePageId:r},t)},getPostPurchasePropsPreview=(e,r,a)=>async t=>{try{let{id:o,currentOfferID:l,isLibraryTemplate:s,isShopLibraryPage:n}=t,{dataBuilder:i,storeProperty:c,productOffers:u,pageStyle:f,dynamicDiscountOffer:D}=await getRelevantPageData({id:o,currentOfferID:l,fetcher:e,isLibraryTemplate:s,isShopLibraryPage:n,librarySaleFunnelID:r});if(!i)throw Error(`No data builder found for slug: /preview/${o}`);let d=r||s&&l?normalize.parseBuilderLibraryTemplate(i):n?normalize.parseShopLibraryPageTemplate(i):normalize.parseBuilderTemplateV2(i),y=a||e,[m,h,P]=await Promise.all([googleFonts.getFontStyleFromPageTemplate(d,void 0,f),googleFonts.getFontLinkFromGlobalStyle(f,void 0),getFallback.getFallbackV2(y,d,!1)]),{seo:g,pageConfig:p}=usePagePreview.usePagePreview(i,c);return parseJson.serializableJson({themeStyle:genCss.genCSS(f),seo:g,...p,elementFontStyle:m,fontStyle:h,builderData:d,swr:{fallback:P},productOffers:u,dynamicDiscountOffer:D})}catch(e){throw console.log("error",e),nextjs.captureException(e),e}};exports.fetchLibraryTemplateDataByID=fetchLibraryTemplateDataByID,exports.fetchPostPurchasePageDataByID=fetchPostPurchasePageDataByID,exports.fetchSalePageDataByID=fetchSalePageDataByID,exports.fetchShopLibraryPageDataByID=fetchShopLibraryPageDataByID,exports.fetchThemePageDataByTemplateID=fetchThemePageDataByTemplateID,exports.getPostPurchasePropsPreview=getPostPurchasePropsPreview,exports.getRelevantPageData=getRelevantPageData;
@@ -1,5 +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"),useTrackingView=require("../libs/hooks/use-tracking-view.js"),parseHtml=require("../libs/parse-html.js"),Header=require("../components/builder/Header.js"),FooterForPostPurchase=require("../components/FooterForPostPurchase.js"),Script=require("next/script"),react=require("react");const StaticPageV2=({components:e,builderData:s,sectionData:t,seo:r,themeStyle:i,fontStyle:n,elementFontStyle:a,customCodeHeader:l,shopToken:u,pageHandle:o,customFonts:c,isPostPurchase:d,shopName:m,productOffers:g,publicStoreFrontData:x,dynamicDiscountOffer:p,isPreview:j,interaction:h,pageBackground:f,sellingPlanSetting:R})=>{let y=router.useRouter(),{t:_}=core.useI18n(),P=process.env.NEXT_GP_BASE_ASSET_URL||"https://assets.gemcommerce.xyz";useTrackingView.useTrackingView(u,o,y.isFallback);let S="custom-code-header";if(react.useEffect(()=>{let e=document.querySelectorAll(`[class*="${S}-"]`),s=[];e.length>1&&e.forEach(e=>{let t=e.className;if(s.includes(t)){e.remove();return}s.push(t)})},[]),y.isFallback)return 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"})]})});let v=(h?.value||[]).length>0;return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(nextSeo.NextSeo,{...r}),jsxRuntime.jsxs(Head,{children:[parseHtml.parseHtml(S,l,!0),i&&jsxRuntime.jsx("style",{"data-id":"global-style",type:"text/css",dangerouslySetInnerHTML:{__html:i}},"global-style"),n&&jsxRuntime.jsx("style",{"data-id":"google-fonts",type:"text/css",dangerouslySetInnerHTML:{__html:n}},"google-fonts"),a&&a.map(e=>jsxRuntime.jsx("style",{"data-id":"google-element-fonts",type:"text/css",dangerouslySetInnerHTML:{__html:e}},e)),c&&jsxRuntime.jsx("style",{"data-id":"custom-element-fonts",type:"text/css",dangerouslySetInnerHTML:{__html:c}},n),f?.isUsePageBackground&&f?.background&&jsxRuntime.jsx("style",{children:`
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"),useTrackingView=require("../libs/hooks/use-tracking-view.js"),parseHtml=require("../libs/parse-html.js"),Header=require("../components/builder/Header.js"),FooterForPostPurchase=require("../components/FooterForPostPurchase.js"),Script=require("next/script"),react=require("react");const StaticPageV2=({components:e,builderData:s,sectionData:t,seo:r,themeStyle:i,fontStyle:n,elementFontStyle:a,customCodeHeader:l,shopToken:u,pageHandle:o,customFonts:c,isPostPurchase:d,shopName:m,productOffers:g,publicStoreFrontData:x,dynamicDiscountOffer:p,isPreview:j,interaction:h,pageBackground:f})=>{let R=router.useRouter(),{t:y}=core.useI18n(),_=process.env.NEXT_GP_BASE_ASSET_URL||"https://assets.gemcommerce.xyz";useTrackingView.useTrackingView(u,o,R.isFallback);let P="custom-code-header";if(react.useEffect(()=>{let e=document.querySelectorAll(`[class*="${P}-"]`),s=[];e.length>1&&e.forEach(e=>{let t=e.className;if(s.includes(t)){e.remove();return}s.push(t)})},[]),R.isFallback)return 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"})]})});let S=(h?.value||[]).length>0;return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(nextSeo.NextSeo,{...r}),jsxRuntime.jsxs(Head,{children:[parseHtml.parseHtml(P,l,!0),i&&jsxRuntime.jsx("style",{"data-id":"global-style",type:"text/css",dangerouslySetInnerHTML:{__html:i}},"global-style"),n&&jsxRuntime.jsx("style",{"data-id":"google-fonts",type:"text/css",dangerouslySetInnerHTML:{__html:n}},"google-fonts"),a&&a.map(e=>jsxRuntime.jsx("style",{"data-id":"google-element-fonts",type:"text/css",dangerouslySetInnerHTML:{__html:e}},e)),c&&jsxRuntime.jsx("style",{"data-id":"custom-element-fonts",type:"text/css",dangerouslySetInnerHTML:{__html:c}},n),f?.isUsePageBackground&&f?.background&&jsxRuntime.jsx("style",{children:`
2
2
  body {
3
3
  background: ${f.background};
4
4
  }
5
- `},`page_background_${f?.background}`)]}),jsxRuntime.jsx(core.PageProvider,{productOffers:g,publicStoreFrontData:x,dynamicDiscountOffer:p,sellingPlanMeta:R,children:jsxRuntime.jsx(core.BuilderComponentProvider,{components:e,children:jsxRuntime.jsxs("div",{className:`${d?"gp-bg-white post-purchase-page":""} `,role:"main",children:[d&&jsxRuntime.jsx(Header.default,{pageType:"POST_PURCHASE"}),v&&jsxRuntime.jsx("div",{dangerouslySetInnerHTML:{__html:`<div id="gp-interaction" style="display: none;">${JSON.stringify(h?.value||[])}</div>`}}),jsxRuntime.jsx(core.SectionProvider,{data:t,children:jsxRuntime.jsx(core.I18nProvider,{t:_,children:s?.map(e=>jsxRuntime.jsxs(core.BuilderProvider,{state:e.data,lazy:e.lazy,priority:e.priority,isPostPurchase:d,isPreview:j,children:[jsxRuntime.jsx(core.Render,{uid:e.uid}),v&&jsxRuntime.jsx(Script,{defer:!0,src:`${P}/assets-v2/gp-flow-action-lip-v7-5.js`})]},e.uid))})}),d&&jsxRuntime.jsx(FooterForPostPurchase.default,{shopName:m||""})]})})})]})};exports.StaticPageV2=StaticPageV2;
5
+ `},`page_background_${f?.background}`)]}),jsxRuntime.jsx(core.PageProvider,{productOffers:g,publicStoreFrontData:x,dynamicDiscountOffer:p,children:jsxRuntime.jsx(core.BuilderComponentProvider,{components:e,children:jsxRuntime.jsxs("div",{className:`${d?"gp-bg-white post-purchase-page":""} `,role:"main",children:[d&&jsxRuntime.jsx(Header.default,{pageType:"POST_PURCHASE"}),S&&jsxRuntime.jsx("div",{dangerouslySetInnerHTML:{__html:`<div id="gp-interaction" style="display: none;">${JSON.stringify(h?.value||[])}</div>`}}),jsxRuntime.jsx(core.SectionProvider,{data:t,children:jsxRuntime.jsx(core.I18nProvider,{t:y,children:s?.map(e=>jsxRuntime.jsxs(core.BuilderProvider,{state:e.data,lazy:e.lazy,priority:e.priority,isPostPurchase:d,isPreview:j,children:[jsxRuntime.jsx(core.Render,{uid:e.uid}),S&&jsxRuntime.jsx(Script,{defer:!0,src:`${_}/assets-v2/gp-flow-action-lip-v7-5.js`})]},e.uid))})}),d&&jsxRuntime.jsx(FooterForPostPurchase.default,{shopName:m||""})]})})})]})};exports.StaticPageV2=StaticPageV2;
@@ -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 p}from"../../libs/get-storefront-api.js";import{createFontUrls as m}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",ENABLE_THEME_FONT_EDITOR=!0,Toolbox=()=>{let r=t(),g=n(e=>e.provider),E=n(e=>e.changeStorefrontInfo),h=i(e=>e.setDynamicProduct),L=i(e=>e.setAssignedProductIds),b=i(e=>e.setIsApplyAllProducts),S=i(e=>e.setPostPurchaseProductOffers),I=i(e=>e.setDynamicDiscountOffer),T=i(e=>e.setSalePageProductId),P=i(e=>e.setDynamicCollection),A=o(e=>e.initState),C=o(e=>e.state),j=o(e=>e.forceChangeState),N=o(e=>e.forceChangeItemProp),k=o(e=>e.changeItemPropByKey),x=o(e=>e.addItem),O=o(e=>e.moveItem),q=o(e=>e.removeItem),M=d(e=>e.addSection),$=n(e=>e.changeSwatches),D=o(e=>e.updateItemName),H=o(e=>e.updateItemAttribute),B=n(e=>e.changeLayoutSettings),F=n(e=>e.changeCreateThemeSectionCount),_=n(e=>e.changeShopPlan),V=n(e=>e.updatePriceWithCurrency),K=y(e=>e.changeFontType),R=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),U=i(e=>e.setInteractionSettingType),X=i(e=>e.setSidebarMode),Y=i(e=>e.setSellingPlanMeta),Z=l(()=>u(C),[C]),ee=({currentFontTypeSetting:e,fontType:t,fontHref:n})=>{let i;return n.includes("bunny.net")?i="bunny":n.includes("googleapis.com")&&(i="google"),!i||t===i&&i===e},et=s((e,t)=>{if(!R)return;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"),o=e.getAttribute("href")||"";if(!n||!i){e.remove();return}let d=t.find(e=>{let t=e.family===n,d=e.variants.includes(i);return!!t&&!!d&&ee({currentFontTypeSetting:e.type,fontType:R,fontHref:o})});d||e.remove()}),t))if(!(["bunny","google"].includes(i.type)&&f(i.family,R))&&"custom"!==i.type&&i.variants?.length)for(let t of i.variants){let n={...i,variants:[t.toString()]},o=m([n],void 0,R,!0)||[];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)}}},[R]),en=s(()=>{r(/query\//,{revalidate:!0})},[r]),ei=s(e=>{let t=e.detail;E({url:t.shopHandle?p(t.shopHandle,g):void 0,token:t.shopToken})},[E,g]),eo=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(et("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{}},[et]),ed=s(e=>{W();try{let t=e.detail;t.data&&("flat"===t.type?j(t.data):A(t.data))}catch{}},[j,A,W]),ea=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)||M(t.entity.uid,t.entity))}catch{}},[x,M]),er=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]),el=s(e=>{try{let t=e.detail;t.uid&&N(t.uid,t.data,t.group)}catch{}},[N]),es=s(e=>{try{let t=e.detail;t.to&&t.uid&&O(t.uid,t.to,Number(t.position)??0)}catch{}},[O]),ec=s(e=>{try{let t=e.detail;t.uid&&q(t.uid)}catch{}},[q]),ep=s(e=>{let t=e.detail;try{t.data&&$(t.data)}catch{}},[$]),em=s(e=>{let t=e.detail;t&&B(t)},[B]),ew=s(e=>{let t=e.detail;t&&F(t)},[F]),eu=s(e=>{let t=e.detail;t&&_(t)},[_]),ev=s(e=>{let t=e.detail;t&&V(t)},[V]),ey=s(e=>{let t=e.detail;t&&K(t)},[K]),ef=s(e=>{let t=e.detail;t&&h(t)},[h]),eg=s(e=>{let{assignedIds:t,isApplyAllProducts:n}=e.detail;t&&L(t??[]),b(!!n)},[L,b]),eE=s(e=>{let t=e.detail;t&&P(t)},[P]);c(()=>{Z&&R&&et("google-font-element",Z)},[Z,R,et]);let eh=s(e=>{let t=e.detail;t.uid&&D(t.uid,t.name||"")},[D]),eL=s(e=>{let t=e.detail;t.uid&&H(t.uid,t.value||"",t.attr||"")},[H]),eb=s(e=>{let t=e.detail;t?.length&&S(t)},[S]),eS=s(e=>{let t=e.detail;t&&I(t)},[I]),eI=s(e=>{let t=e.detail;t&&T(t)},[T]),eT=s(e=>{let t=e.detail;t&&z(t)},[z]),eP=s(e=>{let t=e.detail.value,n=e.detail.mode,i=e.detail.settingType;G(t),Q(n),U(i)},[G,Q,U]),eA=s(e=>{let t=e.detail.settingType;U(t)},[U]),eC=s(e=>{let t=e.detail.mode;console.log(t),X(t)},[X]),ej=s(e=>{let t=e.detail;J(t)},[J]),eN=s(e=>{e.detail&&Y(e.detail)},[Y]);return c(()=>(window.addEventListener("update-shop-info",ei),window.addEventListener("revalidate-query",en),window.addEventListener("init-builder",ed),window.addEventListener("add-entity",ea),window.addEventListener("remove-entity",ec),window.addEventListener("move-entity",es),window.addEventListener("force-update-entity-props",el),window.addEventListener("update-entity-prop",er),window.addEventListener("set-global-style",eo),window.addEventListener("update-global-swatches-data",ep),window.addEventListener("on-off-header-footer",em),window.addEventListener("update-create-theme-section-count",ew),window.addEventListener("update-shop-plan",eu),window.addEventListener("set-dynamic-product",ef),window.addEventListener("set-assigned-product-ids",eg),window.addEventListener("set-dynamic-collection",eE),window.addEventListener("update-item-name",eh),window.addEventListener("update-item-attribute",eL),window.addEventListener("set-product-offer",eb),window.addEventListener("set-dynamic-discount-offer",eS),window.addEventListener("update-sale-page-product-id",eI),window.addEventListener("limit-create-theme-section",eT),window.addEventListener("update-interaction-is-select-on-page",eP),window.addEventListener("update-interaction-item",ej),window.addEventListener("update-interaction-setting-type",eA),window.addEventListener("change-sidebar-mode",eC),window.addEventListener("update-font-type",ey),window.addEventListener("update-price-with-currency",ev),window.addEventListener("selling-plan-meta-loaded",eN),window.addEventListener("selling-plan-meta-updated",eN),()=>{window.removeEventListener("update-shop-info",ei),window.removeEventListener("revalidate-query",en),window.removeEventListener("init-builder",ed),window.removeEventListener("add-entity",ea),window.removeEventListener("remove-entity",ec),window.removeEventListener("move-entity",es),window.removeEventListener("update-entity-prop",er),window.removeEventListener("set-global-style",eo),window.removeEventListener("update-global-swatches-data",ep),window.removeEventListener("on-off-header-footer",em),window.removeEventListener("update-create-theme-section-count",ew),window.removeEventListener("update-shop-plan",eu),window.removeEventListener("update-price-with-currency",ev),window.removeEventListener("set-dynamic-product",ef),window.removeEventListener("set-dynamic-collection",eE),window.removeEventListener("update-item-name",eh),window.removeEventListener("update-item-attribute",eL),window.removeEventListener("set-product-offer",eb),window.removeEventListener("update-sale-page-product-id",eI),window.removeEventListener("limit-create-theme-section",eT),window.removeEventListener("update-interaction-is-select-on-page",eP),window.removeEventListener("update-interaction-item",ej),window.removeEventListener("update-interaction-setting-type",eA),window.removeEventListener("update-font-type",ey),window.removeEventListener("selling-plan-meta-loaded",eN),window.removeEventListener("selling-plan-meta-updated",eN)}),[ea,eu,el,er,ed,es,ec,eo,ep,en,ei,em,ew,ef,eE,eh,eL,eb,eI,eT,ej,eP,eA,ey,eC,eS,ev,eN]),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 p}from"../../libs/get-storefront-api.js";import{createFontUrls as m}from"../../libs/google-fonts.js";import{genCSS as u}from"../../libs/helpers/gen-css.js";import{getFontsFromDataBuilder as w}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",ENABLE_THEME_FONT_EDITOR=!0,Toolbox=()=>{let r=t(),g=n(e=>e.provider),h=n(e=>e.changeStorefrontInfo),E=i(e=>e.setDynamicProduct),L=i(e=>e.setAssignedProductIds),b=i(e=>e.setIsApplyAllProducts),S=i(e=>e.setPostPurchaseProductOffers),I=i(e=>e.setDynamicDiscountOffer),T=i(e=>e.setSalePageProductId),P=i(e=>e.setDynamicCollection),A=o(e=>e.initState),C=o(e=>e.state),j=o(e=>e.forceChangeState),N=o(e=>e.forceChangeItemProp),k=o(e=>e.changeItemPropByKey),x=o(e=>e.addItem),O=o(e=>e.moveItem),q=o(e=>e.removeItem),$=d(e=>e.addSection),D=n(e=>e.changeSwatches),H=o(e=>e.updateItemName),M=o(e=>e.updateItemAttribute),B=n(e=>e.changeLayoutSettings),F=n(e=>e.changeCreateThemeSectionCount),_=n(e=>e.changeShopPlan),V=n(e=>e.updatePriceWithCurrency),K=y(e=>e.changeFontType),R=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),U=i(e=>e.setInteractionSettingType),X=i(e=>e.setSidebarMode),Y=l(()=>w(C),[C]),Z=({currentFontTypeSetting:e,fontType:t,fontHref:n})=>{let i;return n.includes("bunny.net")?i="bunny":n.includes("googleapis.com")&&(i="google"),!i||t===i&&i===e},ee=s((e,t)=>{if(!R)return;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"),o=e.getAttribute("href")||"";if(!n||!i){e.remove();return}let d=t.find(e=>{let t=e.family===n,d=e.variants.includes(i);return!!t&&!!d&&Z({currentFontTypeSetting:e.type,fontType:R,fontHref:o})});d||e.remove()}),t))if(!(["bunny","google"].includes(i.type)&&f(i.family,R))&&"custom"!==i.type&&i.variants?.length)for(let t of i.variants){let n={...i,variants:[t.toString()]},o=m([n],void 0,R,!0)||[];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)}}},[R]),et=s(()=>{r(/query\//,{revalidate:!0})},[r]),en=s(e=>{let t=e.detail;h({url:t.shopHandle?p(t.shopHandle,g):void 0,token:t.shopToken})},[h,g]),ei=s(e=>{let t=e.detail;try{if(t.data){let e=u(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(ee("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{}},[ee]),eo=s(e=>{W();try{let t=e.detail;t.data&&("flat"===t.type?j(t.data):A(t.data))}catch{}},[j,A,W]),ed=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,$]),ea=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]),er=s(e=>{try{let t=e.detail;t.uid&&N(t.uid,t.data,t.group)}catch{}},[N]),el=s(e=>{try{let t=e.detail;t.to&&t.uid&&O(t.uid,t.to,Number(t.position)??0)}catch{}},[O]),es=s(e=>{try{let t=e.detail;t.uid&&q(t.uid)}catch{}},[q]),ec=s(e=>{let t=e.detail;try{t.data&&D(t.data)}catch{}},[D]),ep=s(e=>{let t=e.detail;t&&B(t)},[B]),em=s(e=>{let t=e.detail;t&&F(t)},[F]),eu=s(e=>{let t=e.detail;t&&_(t)},[_]),ew=s(e=>{let t=e.detail;t&&V(t)},[V]),ev=s(e=>{let t=e.detail;t&&K(t)},[K]),ey=s(e=>{let t=e.detail;t&&E(t)},[E]),ef=s(e=>{let{assignedIds:t,isApplyAllProducts:n}=e.detail;t&&L(t??[]),b(!!n)},[L,b]),eg=s(e=>{let t=e.detail;t&&P(t)},[P]);c(()=>{Y&&R&&ee("google-font-element",Y)},[Y,R,ee]);let eh=s(e=>{let t=e.detail;t.uid&&H(t.uid,t.name||"")},[H]),eE=s(e=>{let t=e.detail;t.uid&&M(t.uid,t.value||"",t.attr||"")},[M]),eL=s(e=>{let t=e.detail;t?.length&&S(t)},[S]),eb=s(e=>{let t=e.detail;t&&I(t)},[I]),eS=s(e=>{let t=e.detail;t&&T(t)},[T]),eI=s(e=>{let t=e.detail;t&&z(t)},[z]),eT=s(e=>{let t=e.detail.value,n=e.detail.mode,i=e.detail.settingType;G(t),Q(n),U(i)},[G,Q,U]),eP=s(e=>{let t=e.detail.settingType;U(t)},[U]),eA=s(e=>{let t=e.detail.mode;console.log(t),X(t)},[X]),eC=s(e=>{let t=e.detail;J(t)},[J]);return c(()=>(window.addEventListener("update-shop-info",en),window.addEventListener("revalidate-query",et),window.addEventListener("init-builder",eo),window.addEventListener("add-entity",ed),window.addEventListener("remove-entity",es),window.addEventListener("move-entity",el),window.addEventListener("force-update-entity-props",er),window.addEventListener("update-entity-prop",ea),window.addEventListener("set-global-style",ei),window.addEventListener("update-global-swatches-data",ec),window.addEventListener("on-off-header-footer",ep),window.addEventListener("update-create-theme-section-count",em),window.addEventListener("update-shop-plan",eu),window.addEventListener("set-dynamic-product",ey),window.addEventListener("set-assigned-product-ids",ef),window.addEventListener("set-dynamic-collection",eg),window.addEventListener("update-item-name",eh),window.addEventListener("update-item-attribute",eE),window.addEventListener("set-product-offer",eL),window.addEventListener("set-dynamic-discount-offer",eb),window.addEventListener("update-sale-page-product-id",eS),window.addEventListener("limit-create-theme-section",eI),window.addEventListener("update-interaction-is-select-on-page",eT),window.addEventListener("update-interaction-item",eC),window.addEventListener("update-interaction-setting-type",eP),window.addEventListener("change-sidebar-mode",eA),window.addEventListener("update-font-type",ev),window.addEventListener("update-price-with-currency",ew),()=>{window.removeEventListener("update-shop-info",en),window.removeEventListener("revalidate-query",et),window.removeEventListener("init-builder",eo),window.removeEventListener("add-entity",ed),window.removeEventListener("remove-entity",es),window.removeEventListener("move-entity",el),window.removeEventListener("update-entity-prop",ea),window.removeEventListener("set-global-style",ei),window.removeEventListener("update-global-swatches-data",ec),window.removeEventListener("on-off-header-footer",ep),window.removeEventListener("update-create-theme-section-count",em),window.removeEventListener("update-shop-plan",eu),window.removeEventListener("update-price-with-currency",ew),window.removeEventListener("set-dynamic-product",ey),window.removeEventListener("set-dynamic-collection",eg),window.removeEventListener("update-item-name",eh),window.removeEventListener("update-item-attribute",eE),window.removeEventListener("set-product-offer",eL),window.removeEventListener("update-sale-page-product-id",eS),window.removeEventListener("limit-create-theme-section",eI),window.removeEventListener("update-interaction-is-select-on-page",eT),window.removeEventListener("update-interaction-item",eC),window.removeEventListener("update-interaction-setting-type",eP),window.removeEventListener("update-font-type",ev)}),[ed,eu,er,ea,eo,el,es,ei,ec,et,en,ep,em,ey,eg,eh,eE,eL,eS,eI,eC,eT,eP,ev,eA,eb,ew]),e("div",{className:"toolbox"})};var Toolbox$1=r(Toolbox);export{Toolbox$1 as default};
@@ -1 +1 @@
1
- import{ThemePageDocument as e,StorePropertyDocument as t,SaleFunnelDiscountsDocument as r,SaleFunnelOfferDocument as a,ThemePageMetaDocument as l,LibraryTemplateDocument as s,LibrarySaleFunnelDocument as o,ShopLibraryPageDocument as n}from"@gem-sdk/core";import{captureException as i}from"@sentry/nextjs";import{getFontStyleFromPageTemplate as f,getFontLinkFromGlobalStyle as d}from"../google-fonts.js";import{getFallbackV2 as u}from"../helpers/get-fallback.js";import{parseBuilderLibraryTemplate as c,parseShopLibraryPageTemplate as h,parseBuilderTemplateV2 as g}from"../helpers/normalize.js";import{usePagePreview as y}from"../hooks/usePagePreview.js";import{serializableJson as m}from"../helpers/parse-json.js";import{genCSS as P}from"../helpers/gen-css.js";let PAGE_SETTINGS_KEY="page_settings",SELLING_PLAN_SETTING_KEY="sellingPlanSetting",fetchSalePageDataByID=async(r,a)=>{let l={themePageId:r.themePageId,first:1,where:{default:!0}},[s,o]=await Promise.allSettled([a([e,l]),a([t])]);if("rejected"===s.status)throw Error(s.reason?.[0]);return{dataBuilder:s.value.themePage,pageStyle:s.value.themePage?.theme?.themeStyles?.edges?.[0]?.node?.data,storeProperty:o,dynamicDiscountOffer:void 0,productOffers:[],sellingPlanSetting:{}}},fetchPostPurchasePageDataByID=async(s,o)=>{let n={themePageId:s.themePageId,first:1,where:{default:!0}},i={themePageID:s.themePageId,where:{key:PAGE_SETTINGS_KEY}},[f,d,u,c,h]=await Promise.allSettled([o([e,n]),o([t]),o([r,{where:{saleFunnelOfferID:s.currentOfferID}}]),o([a,{saleFunnelOfferId:s.currentOfferID}]),o([l,i])]);if("rejected"===f.status)throw Error(f.reason?.[0]);if("rejected"===u.status)throw Error(u.reason?.[0]);if("rejected"===c.status)throw Error(c.reason?.[0]);if("rejected"===h.status)throw Error(h.reason?.[0]);let g={};if("fulfilled"===h.status){let e=h.value.themePageMeta?.edges?.find(e=>e?.node?.key===PAGE_SETTINGS_KEY)?.node?.value;if(e)try{let t=JSON.parse(e);g=t?.sellingPlanSetting}catch(e){console.error("Error parsing selling plan setting:",e)}}return{dataBuilder:f.value.themePage,pageStyle:f.value.themePage?.theme?.themeStyles?.edges?.[0]?.node?.data,storeProperty:d,dynamicDiscountOffer:c.value.saleFunnelOffer?.dynamicDiscounts?.[0],productOffers:u.value.saleFunnelDiscounts?.edges?.filter(e=>e?.node?.objectType==="PRODUCT"&&e?.node?.type==="ORDER_VALUE")||[],sellingPlanSetting:g}},fetchThemePageDataByTemplateID=async(e,r)=>{let a={libraryTemplateId:e.libraryTemplateId},l=[],[n,i]=await Promise.allSettled([r([s,a]),r([t])]);if(e.currentOfferID){let[t]=await Promise.allSettled([r([o,{librarySaleFunnelId:e.librarySaleFunnelID}])]);if("rejected"===t.status)throw Error(t.reason?.[0]);let a=t.value.librarySaleFunnel?.offers?.find(t=>t?.id===e.currentOfferID);a&&(l=a.discounts?.filter(e=>e?.objectType==="PRODUCT"&&"ORDER_VALUE"===e.type).map(e=>({node:{...e}}))||[])}if("rejected"===n.status)throw Error(n.reason?.[0]);return{dataBuilder:n.value.libraryTemplate,pageStyle:void 0,storeProperty:i,dynamicDiscountOffer:void 0,productOffers:l,sellingPlanSetting:{}}},fetchShopLibraryPageDataByID=async(e,l)=>{let s={shopLibraryPageId:e.shopLibraryPageId},[o,i,f,d]=await Promise.allSettled([l([n,s]),l([t]),l([r,{where:{saleFunnelOfferID:e.currentOfferID}}]),l([a,{saleFunnelOfferId:e.currentOfferID}])]);if("rejected"===o.status)throw Error(o.reason?.[0]);if("rejected"===f.status)throw Error(f.reason?.[0]);if("rejected"===d.status)throw Error(d.reason?.[0]);return{dataBuilder:o.value.shopLibraryPage,pageStyle:void 0,storeProperty:i,dynamicDiscountOffer:d.value.saleFunnelOffer?.dynamicDiscounts?.[0],productOffers:f.value.saleFunnelDiscounts?.edges?.filter(e=>e?.node?.objectType==="PRODUCT"&&e?.node?.type==="ORDER_VALUE")||[],sellingPlanSetting:{}}},fetchLibraryTemplateDataByID=async(e,l)=>{let o={libraryTemplateId:e.libraryTemplateId},[n,i,f,d]=await Promise.allSettled([l([s,o]),l([t]),l([r,{where:{saleFunnelOfferID:e.currentOfferID}}]),l([a,{saleFunnelOfferId:e.currentOfferID}])]);if("rejected"===n.status)throw Error(n.reason?.[0]);if("rejected"===f.status)throw Error(f.reason?.[0]);if("rejected"===d.status)throw Error(d.reason?.[0]);return{dataBuilder:n.value.libraryTemplate,pageStyle:void 0,storeProperty:i,dynamicDiscountOffer:d.value.saleFunnelOffer?.dynamicDiscounts?.[0],productOffers:f.value.saleFunnelDiscounts?.edges?.filter(e=>e?.node?.objectType==="PRODUCT"&&e?.node?.type==="ORDER_VALUE")||[],sellingPlanSetting:{}}},getRelevantPageData=async e=>{let{id:t,currentOfferID:r,fetcher:a,isLibraryTemplate:l,librarySaleFunnelID:s,isShopLibraryPage:o}=e;return s?await fetchThemePageDataByTemplateID({libraryTemplateId:t,currentOfferID:r,librarySaleFunnelID:s},a):o&&r?await fetchShopLibraryPageDataByID({shopLibraryPageId:t,currentOfferID:r},a):l&&r?await fetchLibraryTemplateDataByID({libraryTemplateId:t,currentOfferID:r},a):r?await fetchPostPurchasePageDataByID({themePageId:t,currentOfferID:r},a):await fetchSalePageDataByID({themePageId:t},a)},getPostPurchasePropsPreview=(e,t,r)=>async a=>{try{let{id:l,currentOfferID:s,isLibraryTemplate:o,isShopLibraryPage:n}=a,{dataBuilder:i,storeProperty:D,productOffers:p,pageStyle:I,dynamicDiscountOffer:w,sellingPlanSetting:S}=await getRelevantPageData({id:l,currentOfferID:s,fetcher:e,isLibraryTemplate:o,isShopLibraryPage:n,librarySaleFunnelID:t});if(!i)throw Error(`No data builder found for slug: /preview/${l}`);let O=t||o&&s?c(i):n?h(i):g(i),E=r||e,[T,v,b]=await Promise.all([f(O,void 0,I),d(I,void 0),u(E,O,!1)]),{seo:j,pageConfig:B}=y(i,D);return m({themeStyle:P(I),seo:j,...B,elementFontStyle:T,fontStyle:v,builderData:O,swr:{fallback:b},productOffers:p,dynamicDiscountOffer:w,sellingPlanSetting:S})}catch(e){throw console.log("error",e),i(e),e}};export{fetchLibraryTemplateDataByID,fetchPostPurchasePageDataByID,fetchSalePageDataByID,fetchShopLibraryPageDataByID,fetchThemePageDataByTemplateID,getPostPurchasePropsPreview,getRelevantPageData};
1
+ import{ThemePageDocument as e,StorePropertyDocument as r,SaleFunnelDiscountsDocument as a,SaleFunnelOfferDocument as t,LibraryTemplateDocument as l,LibrarySaleFunnelDocument as s,ShopLibraryPageDocument as o}from"@gem-sdk/core";import{captureException as i}from"@sentry/nextjs";import{getFontStyleFromPageTemplate as f,getFontLinkFromGlobalStyle as n}from"../google-fonts.js";import{getFallbackV2 as d}from"../helpers/get-fallback.js";import{parseBuilderLibraryTemplate as u,parseShopLibraryPageTemplate as c,parseBuilderTemplateV2 as h}from"../helpers/normalize.js";import{usePagePreview as y}from"../hooks/usePagePreview.js";import{serializableJson as m}from"../helpers/parse-json.js";import{genCSS as D}from"../helpers/gen-css.js";let fetchSalePageDataByID=async(a,t)=>{let l={themePageId:a.themePageId,first:1,where:{default:!0}},[s,o]=await Promise.allSettled([t([e,l]),t([r])]);if("rejected"===s.status)throw Error(s.reason?.[0]);return{dataBuilder:s.value.themePage,pageStyle:s.value.themePage?.theme?.themeStyles?.edges?.[0]?.node?.data,storeProperty:o,dynamicDiscountOffer:void 0,productOffers:[]}},fetchPostPurchasePageDataByID=async(l,s)=>{let o={themePageId:l.themePageId,first:1,where:{default:!0}},[i,f,n,d]=await Promise.allSettled([s([e,o]),s([r]),s([a,{where:{saleFunnelOfferID:l.currentOfferID}}]),s([t,{saleFunnelOfferId:l.currentOfferID}])]);if("rejected"===i.status)throw Error(i.reason?.[0]);if("rejected"===n.status)throw Error(n.reason?.[0]);if("rejected"===d.status)throw Error(d.reason?.[0]);return{dataBuilder:i.value.themePage,pageStyle:i.value.themePage?.theme?.themeStyles?.edges?.[0]?.node?.data,storeProperty:f,dynamicDiscountOffer:d.value.saleFunnelOffer?.dynamicDiscounts?.[0],productOffers:n.value.saleFunnelDiscounts?.edges?.filter(e=>e?.node?.objectType==="PRODUCT"&&e?.node?.type==="ORDER_VALUE")||[]}},fetchThemePageDataByTemplateID=async(e,a)=>{let t={libraryTemplateId:e.libraryTemplateId},o=[],[i,f]=await Promise.allSettled([a([l,t]),a([r])]);if(e.currentOfferID){let[r]=await Promise.allSettled([a([s,{librarySaleFunnelId:e.librarySaleFunnelID}])]);if("rejected"===r.status)throw Error(r.reason?.[0]);let t=r.value.librarySaleFunnel?.offers?.find(r=>r?.id===e.currentOfferID);t&&(o=t.discounts?.filter(e=>e?.objectType==="PRODUCT"&&"ORDER_VALUE"===e.type).map(e=>({node:{...e}}))||[])}if("rejected"===i.status)throw Error(i.reason?.[0]);return{dataBuilder:i.value.libraryTemplate,pageStyle:void 0,storeProperty:f,dynamicDiscountOffer:void 0,productOffers:o}},fetchShopLibraryPageDataByID=async(e,l)=>{let s={shopLibraryPageId:e.shopLibraryPageId},[i,f,n,d]=await Promise.allSettled([l([o,s]),l([r]),l([a,{where:{saleFunnelOfferID:e.currentOfferID}}]),l([t,{saleFunnelOfferId:e.currentOfferID}])]);if("rejected"===i.status)throw Error(i.reason?.[0]);if("rejected"===n.status)throw Error(n.reason?.[0]);if("rejected"===d.status)throw Error(d.reason?.[0]);return{dataBuilder:i.value.shopLibraryPage,pageStyle:void 0,storeProperty:f,dynamicDiscountOffer:d.value.saleFunnelOffer?.dynamicDiscounts?.[0],productOffers:n.value.saleFunnelDiscounts?.edges?.filter(e=>e?.node?.objectType==="PRODUCT"&&e?.node?.type==="ORDER_VALUE")||[]}},fetchLibraryTemplateDataByID=async(e,s)=>{let o={libraryTemplateId:e.libraryTemplateId},[i,f,n,d]=await Promise.allSettled([s([l,o]),s([r]),s([a,{where:{saleFunnelOfferID:e.currentOfferID}}]),s([t,{saleFunnelOfferId:e.currentOfferID}])]);if("rejected"===i.status)throw Error(i.reason?.[0]);if("rejected"===n.status)throw Error(n.reason?.[0]);if("rejected"===d.status)throw Error(d.reason?.[0]);return{dataBuilder:i.value.libraryTemplate,pageStyle:void 0,storeProperty:f,dynamicDiscountOffer:d.value.saleFunnelOffer?.dynamicDiscounts?.[0],productOffers:n.value.saleFunnelDiscounts?.edges?.filter(e=>e?.node?.objectType==="PRODUCT"&&e?.node?.type==="ORDER_VALUE")||[]}},getRelevantPageData=async e=>{let{id:r,currentOfferID:a,fetcher:t,isLibraryTemplate:l,librarySaleFunnelID:s,isShopLibraryPage:o}=e;return s?await fetchThemePageDataByTemplateID({libraryTemplateId:r,currentOfferID:a,librarySaleFunnelID:s},t):o&&a?await fetchShopLibraryPageDataByID({shopLibraryPageId:r,currentOfferID:a},t):l&&a?await fetchLibraryTemplateDataByID({libraryTemplateId:r,currentOfferID:a},t):a?await fetchPostPurchasePageDataByID({themePageId:r,currentOfferID:a},t):await fetchSalePageDataByID({themePageId:r},t)},getPostPurchasePropsPreview=(e,r,a)=>async t=>{try{let{id:l,currentOfferID:s,isLibraryTemplate:o,isShopLibraryPage:i}=t,{dataBuilder:p,storeProperty:P,productOffers:g,pageStyle:I,dynamicDiscountOffer:w}=await getRelevantPageData({id:l,currentOfferID:s,fetcher:e,isLibraryTemplate:o,isShopLibraryPage:i,librarySaleFunnelID:r});if(!p)throw Error(`No data builder found for slug: /preview/${l}`);let O=r||o&&s?u(p):i?c(p):h(p),b=a||e,[v,T,j]=await Promise.all([f(O,void 0,I),n(I,void 0),d(b,O,!1)]),{seo:S,pageConfig:E}=y(p,P);return m({themeStyle:D(I),seo:S,...E,elementFontStyle:v,fontStyle:T,builderData:O,swr:{fallback:j},productOffers:g,dynamicDiscountOffer:w})}catch(e){throw console.log("error",e),i(e),e}};export{fetchLibraryTemplateDataByID,fetchPostPurchasePageDataByID,fetchSalePageDataByID,fetchShopLibraryPageDataByID,fetchThemePageDataByTemplateID,getPostPurchasePropsPreview,getRelevantPageData};
@@ -1,5 +1,5 @@
1
- import{jsx as e,jsxs as t,Fragment as s}from"react/jsx-runtime";import{useI18n as a,PageProvider as r,BuilderComponentProvider as l,SectionProvider as n,I18nProvider as i,BuilderProvider as o,Render as p}from"@gem-sdk/core";import{NextSeo as c}from"next-seo";import g from"next/head";import{useRouter as m}from"next/router";import{useTrackingView as d}from"../libs/hooks/use-tracking-view.js";import{parseHtml as u}from"../libs/parse-html.js";import h from"../components/builder/Header.js";import f from"../components/FooterForPostPurchase.js";import y from"next/script";import{useEffect as _}from"react";let StaticPageV2=({components:b,builderData:v,sectionData:S,seo:x,themeStyle:P,fontStyle:k,elementFontStyle:N,customCodeHeader:T,shopToken:j,pageHandle:H,customFonts:L,isPostPurchase:M,shopName:$,productOffers:E,publicStoreFrontData:F,dynamicDiscountOffer:I,isPreview:q,interaction:w,pageBackground:A,sellingPlanSetting:O})=>{let z=m(),{t:U}=a(),B=process.env.NEXT_GP_BASE_ASSET_URL||"https://assets.gemcommerce.xyz";d(j,H,z.isFallback);let D="custom-code-header";if(_(()=>{let e=document.querySelectorAll(`[class*="${D}-"]`),t=[];e.length>1&&e.forEach(e=>{let s=e.className;if(t.includes(s)){e.remove();return}t.push(s)})},[]),z.isFallback)return e("div",{className:"gp-flex gp-h-[100vh] gp-items-center gp-justify-center",children:t("div",{className:"gp-flex gp-gap-2",children:[e("span",{className:"gp-aspect-square gp-h-2 gp-animate-[flashing_500ms_infinite_alternate] gp-rounded-full gp-bg-slate-800"}),e("span",{className:"gp-aspect-square gp-h-2 gp-animate-[flashing_500ms_infinite_200ms_linear_alternate] gp-rounded-full gp-bg-slate-800"}),e("span",{className:"gp-aspect-square gp-h-2 gp-animate-[flashing_500ms_infinite_500ms_alternate] gp-rounded-full gp-bg-slate-800"})]})});let R=(w?.value||[]).length>0;return t(s,{children:[e(c,{...x}),t(g,{children:[u(D,T,!0),P&&e("style",{"data-id":"global-style",type:"text/css",dangerouslySetInnerHTML:{__html:P}},"global-style"),k&&e("style",{"data-id":"google-fonts",type:"text/css",dangerouslySetInnerHTML:{__html:k}},"google-fonts"),N&&N.map(t=>e("style",{"data-id":"google-element-fonts",type:"text/css",dangerouslySetInnerHTML:{__html:t}},t)),L&&e("style",{"data-id":"custom-element-fonts",type:"text/css",dangerouslySetInnerHTML:{__html:L}},k),A?.isUsePageBackground&&A?.background&&e("style",{children:`
1
+ import{jsx as e,jsxs as t,Fragment as s}from"react/jsx-runtime";import{useI18n as a,PageProvider as r,BuilderComponentProvider as l,SectionProvider as n,I18nProvider as i,BuilderProvider as o,Render as p}from"@gem-sdk/core";import{NextSeo as c}from"next-seo";import g from"next/head";import{useRouter as m}from"next/router";import{useTrackingView as d}from"../libs/hooks/use-tracking-view.js";import{parseHtml as u}from"../libs/parse-html.js";import h from"../components/builder/Header.js";import f from"../components/FooterForPostPurchase.js";import y from"next/script";import{useEffect as _}from"react";let StaticPageV2=({components:b,builderData:v,sectionData:S,seo:x,themeStyle:k,fontStyle:P,elementFontStyle:N,customCodeHeader:T,shopToken:j,pageHandle:H,customFonts:L,isPostPurchase:$,shopName:E,productOffers:F,publicStoreFrontData:I,dynamicDiscountOffer:M,isPreview:q,interaction:w,pageBackground:A})=>{let O=m(),{t:z}=a(),U=process.env.NEXT_GP_BASE_ASSET_URL||"https://assets.gemcommerce.xyz";d(j,H,O.isFallback);let B="custom-code-header";if(_(()=>{let e=document.querySelectorAll(`[class*="${B}-"]`),t=[];e.length>1&&e.forEach(e=>{let s=e.className;if(t.includes(s)){e.remove();return}t.push(s)})},[]),O.isFallback)return e("div",{className:"gp-flex gp-h-[100vh] gp-items-center gp-justify-center",children:t("div",{className:"gp-flex gp-gap-2",children:[e("span",{className:"gp-aspect-square gp-h-2 gp-animate-[flashing_500ms_infinite_alternate] gp-rounded-full gp-bg-slate-800"}),e("span",{className:"gp-aspect-square gp-h-2 gp-animate-[flashing_500ms_infinite_200ms_linear_alternate] gp-rounded-full gp-bg-slate-800"}),e("span",{className:"gp-aspect-square gp-h-2 gp-animate-[flashing_500ms_infinite_500ms_alternate] gp-rounded-full gp-bg-slate-800"})]})});let D=(w?.value||[]).length>0;return t(s,{children:[e(c,{...x}),t(g,{children:[u(B,T,!0),k&&e("style",{"data-id":"global-style",type:"text/css",dangerouslySetInnerHTML:{__html:k}},"global-style"),P&&e("style",{"data-id":"google-fonts",type:"text/css",dangerouslySetInnerHTML:{__html:P}},"google-fonts"),N&&N.map(t=>e("style",{"data-id":"google-element-fonts",type:"text/css",dangerouslySetInnerHTML:{__html:t}},t)),L&&e("style",{"data-id":"custom-element-fonts",type:"text/css",dangerouslySetInnerHTML:{__html:L}},P),A?.isUsePageBackground&&A?.background&&e("style",{children:`
2
2
  body {
3
3
  background: ${A.background};
4
4
  }
5
- `},`page_background_${A?.background}`)]}),e(r,{productOffers:E,publicStoreFrontData:F,dynamicDiscountOffer:I,sellingPlanMeta:O,children:e(l,{components:b,children:t("div",{className:`${M?"gp-bg-white post-purchase-page":""} `,role:"main",children:[M&&e(h,{pageType:"POST_PURCHASE"}),R&&e("div",{dangerouslySetInnerHTML:{__html:`<div id="gp-interaction" style="display: none;">${JSON.stringify(w?.value||[])}</div>`}}),e(n,{data:S,children:e(i,{t:U,children:v?.map(s=>t(o,{state:s.data,lazy:s.lazy,priority:s.priority,isPostPurchase:M,isPreview:q,children:[e(p,{uid:s.uid}),R&&e(y,{defer:!0,src:`${B}/assets-v2/gp-flow-action-lip-v7-5.js`})]},s.uid))})}),M&&e(f,{shopName:$||""})]})})})]})};export{StaticPageV2};
5
+ `},`page_background_${A?.background}`)]}),e(r,{productOffers:F,publicStoreFrontData:I,dynamicDiscountOffer:M,children:e(l,{components:b,children:t("div",{className:`${$?"gp-bg-white post-purchase-page":""} `,role:"main",children:[$&&e(h,{pageType:"POST_PURCHASE"}),D&&e("div",{dangerouslySetInnerHTML:{__html:`<div id="gp-interaction" style="display: none;">${JSON.stringify(w?.value||[])}</div>`}}),e(n,{data:S,children:e(i,{t:z,children:v?.map(s=>t(o,{state:s.data,lazy:s.lazy,priority:s.priority,isPostPurchase:$,isPreview:q,children:[e(p,{uid:s.uid}),D&&e(y,{defer:!0,src:`${U}/assets-v2/gp-flow-action-lip-v7-5.js`})]},s.uid))})}),$&&e(f,{shopName:E||""})]})})})]})};export{StaticPageV2};
@@ -110,7 +110,6 @@ type StaticPagePropsV2 = PageBuilderPropsV2 & {
110
110
  publicStoreFrontData?: PublicStoreFrontData | null;
111
111
  isPreview?: boolean;
112
112
  domain?: string;
113
- sellingPlanSetting?: Record<string, any>;
114
113
  };
115
114
  type SharePageAPIResponse = {
116
115
  sharedPage: SharePageProps;
@@ -188,7 +187,6 @@ declare const getPostPurchasePropsPreview: (fetcher: FetchFunc, librarySaleFunne
188
187
  currentOfferID: string;
189
188
  isLibraryTemplate?: boolean;
190
189
  isShopLibraryPage?: boolean;
191
- sellingPlanSetting?: Record<string, any>;
192
190
  }) => Promise<Omit<StaticPagePropsV2, 'publicStoreFrontData'>>;
193
191
 
194
192
  declare const getStaticPagePropsPreview: (fetcher: FetchFunc, shopifyFetcher: FetchFunc) => (slug: string) => Promise<PageBuilderPropsV2>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gem-sdk/pages",
3
- "version": "12.0.0-dev.29",
3
+ "version": "12.0.0-dev.32",
4
4
  "license": "MIT",
5
5
  "sideEffects": false,
6
6
  "main": "dist/cjs/index.js",
@@ -22,18 +22,18 @@
22
22
  "dependencies": {
23
23
  "@sentry/nextjs": "7.77.0",
24
24
  "deepmerge": "4.3.1",
25
- "html-react-parser": "4.2.10",
26
- "next-seo": "6.8.0",
27
- "next": "14.2.35"
25
+ "html-react-parser": "3.0.15",
26
+ "next-seo": "^6.0.0",
27
+ "next": "14.2.20"
28
28
  },
29
29
  "devDependencies": {
30
- "@gem-sdk/core": "12.0.0-dev.29",
31
- "@gem-sdk/plugin-cookie-bar": "12.0.0-dev.29",
32
- "@gem-sdk/plugin-quick-view": "12.0.0-dev.29",
33
- "@gem-sdk/plugin-sticky-add-to-cart": "12.0.0-dev.29"
30
+ "@gem-sdk/core": "12.0.0-dev.32",
31
+ "@gem-sdk/plugin-cookie-bar": "12.0.0-dev.31",
32
+ "@gem-sdk/plugin-quick-view": "12.0.0-dev.31",
33
+ "@gem-sdk/plugin-sticky-add-to-cart": "12.0.0-dev.31"
34
34
  },
35
35
  "peerDependencies": {
36
- "next": "14.2.35"
36
+ "next": ">=14"
37
37
  },
38
38
  "module": "dist/esm/index.js",
39
39
  "types": "dist/types/index.d.ts",