@gem-sdk/pages 7.0.1-dev.6 → 7.0.1-staging.4

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),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;
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),n=core.usePageStore(e=>e.setPostPurchaseProductOffers),a=core.usePageStore(e=>e.setDynamicDiscountOffer),i=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),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),T=core.usePageStore(e=>e.setInteractionIsSelectOnPage),q=core.usePageStore(e=>e.setInteractionItem),F=core.usePageStore(e=>e.setInteractionSelectType),B=core.usePageStore(e=>e.setInteractionSettingType),j=core.usePageStore(e=>e.setSidebarMode),A=react.useMemo(()=>genFonts.getFontsFromDataBuilder(s),[s]),x=({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},O=react.useCallback((e,t)=>{if(!k)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"),n=e.getAttribute("href")||"";if(!o||!r){e.remove();return}let a=t.find(e=>{let t=e.family===o,a=e.variants.includes(r);return!!t&&!!a&&x({currentFontTypeSetting:e.type,fontType:k,fontHref:n})});a||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.toString()]},n=googleFonts.createFontUrls([o],void 0,k,!0)||[];if(n?.length)for(let o of n){let n=e=>window.CSS&&CSS.escape?CSS.escape(e):e.replace(/"/g,'\\"'),a=document.querySelector(`link.${e}[href="${n(o)}"]`);if(a)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)}}},[k]),M=react.useCallback(()=>{e(/query\//,{revalidate:!0})},[e]),N=react.useCallback(e=>{let r=e.detail;o({url:r.shopHandle?getStorefrontApi.getStorefrontApi(r.shopHandle,t):void 0,token:r.shopToken})},[o,t]),D=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]),H=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]),_=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]),K=react.useCallback(e=>{let t=e.detail;t&&S(t)},[S]),U=react.useCallback(e=>{let t=e.detail;t&&b(t)},[b]),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&&r(t)},[r]),Y=react.useCallback(e=>{let t=e.detail;t&&d(t)},[d]);react.useEffect(()=>{A&&k&&O("google-font-element",A)},[A,k,O]);let Z=react.useCallback(e=>{let t=e.detail;t.uid&&f(t.uid,t.name||"")},[f]),ee=react.useCallback(e=>{let t=e.detail;t.uid&&h(t.uid,t.value||"",t.attr||"")},[h]),et=react.useCallback(e=>{let t=e.detail;t?.length&&n(t)},[n]),eo=react.useCallback(e=>{let t=e.detail;t&&a(t)},[a]),er=react.useCallback(e=>{let t=e.detail;t&&i(t)},[i]),en=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;T(t),F(o),B(r)},[T,F,B]),ei=react.useCallback(e=>{let t=e.detail.settingType;B(t)},[B]),ed=react.useCallback(e=>{let t=e.detail.mode;console.log(t),j(t)},[j]),el=react.useCallback(e=>{let t=e.detail;q(t)},[q]);return react.useEffect(()=>(window.addEventListener("update-shop-info",N),window.addEventListener("revalidate-query",M),window.addEventListener("init-builder",$),window.addEventListener("add-entity",H),window.addEventListener("remove-entity",R),window.addEventListener("move-entity",G),window.addEventListener("force-update-entity-props",W),window.addEventListener("update-entity-prop",_),window.addEventListener("set-global-style",D),window.addEventListener("update-global-swatches-data",V),window.addEventListener("on-off-header-footer",K),window.addEventListener("update-create-theme-section-count",U),window.addEventListener("update-shop-plan",z),window.addEventListener("set-dynamic-product",X),window.addEventListener("set-dynamic-collection",Y),window.addEventListener("update-item-name",Z),window.addEventListener("update-item-attribute",ee),window.addEventListener("set-product-offer",et),window.addEventListener("set-dynamic-discount-offer",eo),window.addEventListener("update-sale-page-product-id",er),window.addEventListener("limit-create-theme-section",en),window.addEventListener("update-interaction-is-select-on-page",ea),window.addEventListener("update-interaction-item",el),window.addEventListener("update-interaction-setting-type",ei),window.addEventListener("change-sidebar-mode",ed),window.addEventListener("update-font-type",Q),window.addEventListener("update-price-with-currency",J),()=>{window.removeEventListener("update-shop-info",N),window.removeEventListener("revalidate-query",M),window.removeEventListener("init-builder",$),window.removeEventListener("add-entity",H),window.removeEventListener("remove-entity",R),window.removeEventListener("move-entity",G),window.removeEventListener("update-entity-prop",_),window.removeEventListener("set-global-style",D),window.removeEventListener("update-global-swatches-data",V),window.removeEventListener("on-off-header-footer",K),window.removeEventListener("update-create-theme-section-count",U),window.removeEventListener("update-shop-plan",z),window.removeEventListener("update-price-with-currency",J),window.removeEventListener("set-dynamic-product",X),window.removeEventListener("set-dynamic-collection",Y),window.removeEventListener("update-item-name",Z),window.removeEventListener("update-item-attribute",ee),window.removeEventListener("set-product-offer",et),window.removeEventListener("update-sale-page-product-id",er),window.removeEventListener("limit-create-theme-section",en),window.removeEventListener("update-interaction-is-select-on-page",ea),window.removeEventListener("update-interaction-item",el),window.removeEventListener("update-interaction-setting-type",ei),window.removeEventListener("update-font-type",Q)}),[H,z,W,_,$,G,R,D,V,M,N,K,U,X,Y,Z,ee,et,er,en,el,ea,ei,Q,ed,eo,J]),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"),adapterShopify=require("@gem-sdk/adapter-shopify"),googleFonts=require("../google-fonts.js"),genCss=require("../helpers/gen-css.js"),getFallback=require("../helpers/get-fallback.js"),normalize=require("../helpers/normalize.js"),parseJson=require("../helpers/parse-json.js"),nextjs=require("@sentry/nextjs"),index=require("../../constants/index.js"),getMetafield=require("../helpers/get-metafield.js"),customFonts=require("../custom-fonts.js"),generateSeoLinks=require("../helpers/generate-seo-links.js");const getHomePagePropsV2=(e,t)=>async()=>{try{let a={slugType:"STATIC"},[s,l,i,o]=await Promise.allSettled([e([core.PublishedThemePagesDocument,a]),e([core.StorePropertyDocument]),t([adapterShopify.ShopMetaDocument]),e([core.PublishedShopMetasDocument,{keys:[index.PublishedThemePageMetafields.GLOBAL_META_DESCRIPTION,index.PublishedThemePageMetafields.GLOBAL_META_THUMBNAIL]}])]);if("rejected"===s.status)throw Error(s.reason?.[0]);let d="fulfilled"===o.status?o.value:void 0,n=s.value?.publishedThemePages?.[0],r=s.value?.publishedThemePages?.[0]?.themePageCustomFonts;if(!n)throw Error("No data builder found for Home page");let u=normalize.parseBuilderTemplateV2(n),[g,h,m,P]=await Promise.all([googleFonts.getFontStyleFromPageTemplate(u,void 0,n?.pageStyle?.data),googleFonts.getFontFromGlobalStyle(n?.pageStyle?.data,void 0),getFallback.getFallbackV2(e,u),customFonts.getCustomFonts(r)]),p=n.isMobile??!1,f=getMetafield.getPublishedThemePageMetafieldByKey(index.PublishedThemePageMetafields.GLOBAL_META_DESCRIPTION,n?.metafields)||d?.publishedShopMetas?.find(e=>e?.key===index.PublishedThemePageMetafields.GLOBAL_META_DESCRIPTION)?.value,c=parseJson.parseJson(getMetafield.getPublishedThemePageMetafieldByKey(index.PublishedThemePageMetafields.GLOBAL_META_THUMBNAIL,n?.metafields)||d?.publishedShopMetas?.find(e=>e?.key===index.PublishedThemePageMetafields.GLOBAL_META_THUMBNAIL)?.value),T="fulfilled"===i.status?i.value:void 0,y="fulfilled"===l.status?l.value:void 0,M=y?.storeProperty?.favicon??"/favicon/favicon-32x32.png",b={defaultTitle:T?.shop.name,title:n?.name??"Home",description:f??T?.shop.description,openGraph:{site_name:T?.shop.name,locale:T?.localization.country.isoCode,title:n?.name??T?.shop.name,description:f??T?.shop.description,images:c?[c]:[]},additionalMetaTags:[{name:"theme-color",content:"#000000"}],canonical:`https://${y?.storeProperty?.primaryDomain}/`,additionalLinkTags:generateSeoLinks.generateSeoLinks({favicon:M,shopMeta:T})},S=T?.localization.language.isoCode??null,_=T?.localization.country.isoCode??null,A=S&&_?`${S}-${_}`:null;return parseJson.serializableJson({themeStyle:genCss.genCSS(n?.pageStyle?.data,p),fontStyle:h,elementFontStyle:g,builderData:u,swr:{fallback:m},moneyFormat:T?.shop.moneyFormat??null,currency:T?.localization.country.currency.isoCode??null,languageIsoCode:S,countryIsoCode:_,locale:A,swatches:parseJson.parseJson(y?.storeProperty?.swatchesConfig),seo:b,mobileOnly:p,gaTrackingId:getMetafield.getPublishedThemePageMetafieldByKey(index.PublishedThemePageMetafields.ANALYTICS_GA_TRACKING_ID,n?.metafields)??null,facebookPixelId:getMetafield.getPublishedThemePageMetafieldByKey(index.PublishedThemePageMetafields.ANALYTICS_FB_PIXEL_ID,n?.metafields)??null,tiktokPixelId:getMetafield.getPublishedThemePageMetafieldByKey(index.PublishedThemePageMetafields.ANALYTICS_TIKTOK_PIXEL_ID,n?.metafields)??null,customCodeHeader:getMetafield.getPublishedThemePageMetafieldByKey(index.PublishedThemePageMetafields.CUSTOM_CODE_HEADER,n?.metafields)??null,customCodeBody:getMetafield.getPublishedThemePageMetafieldByKey(index.PublishedThemePageMetafields.CUSTOM_CODE_BODY,n?.metafields)??null,pageHandle:n.handle??null,customFonts:P})}catch(e){throw nextjs.captureException(e),e}};exports.getHomePagePropsV2=getHomePagePropsV2;
1
+ "use strict";var core=require("@gem-sdk/core"),adapterShopify=require("@gem-sdk/adapter-shopify"),googleFonts=require("../google-fonts.js"),genCss=require("../helpers/gen-css.js"),getFallback=require("../helpers/get-fallback.js"),normalize=require("../helpers/normalize.js"),parseJson=require("../helpers/parse-json.js"),nextjs=require("@sentry/nextjs"),index=require("../../constants/index.js"),getMetafield=require("../helpers/get-metafield.js"),customFonts=require("../custom-fonts.js"),generateSeoLinks=require("../helpers/generate-seo-links.js");const getHomePagePropsV2=(e,t)=>async()=>{try{let a={slugType:"STATIC"},[s,l,i,o]=await Promise.allSettled([e([core.PublishedThemePagesDocument,a]),e([core.StorePropertyDocument]),t([adapterShopify.ShopMetaDocument]),e([core.PublishedShopMetasDocument,{keys:[index.PublishedThemePageMetafields.GLOBAL_META_DESCRIPTION,index.PublishedThemePageMetafields.GLOBAL_META_THUMBNAIL]}])]);if("rejected"===s.status)throw Error(s.reason?.[0]);let n="fulfilled"===o.status?o.value:void 0,r=s.value?.publishedThemePages?.[0],d=s.value?.publishedThemePages?.[0]?.themePageCustomFonts;if(!r)throw Error("No data builder found for Home page");let u=normalize.parseBuilderTemplateV2(r),[g,h,m,P]=await Promise.all([googleFonts.getFontStyleFromPageTemplate(u),googleFonts.getFontFromGlobalStyle(r?.pageStyle?.data),getFallback.getFallbackV2(e,u),customFonts.getCustomFonts(d)]),p=r.isMobile??!1,f=getMetafield.getPublishedThemePageMetafieldByKey(index.PublishedThemePageMetafields.GLOBAL_META_DESCRIPTION,r?.metafields)||n?.publishedShopMetas?.find(e=>e?.key===index.PublishedThemePageMetafields.GLOBAL_META_DESCRIPTION)?.value,c=parseJson.parseJson(getMetafield.getPublishedThemePageMetafieldByKey(index.PublishedThemePageMetafields.GLOBAL_META_THUMBNAIL,r?.metafields)||n?.publishedShopMetas?.find(e=>e?.key===index.PublishedThemePageMetafields.GLOBAL_META_THUMBNAIL)?.value),T="fulfilled"===i.status?i.value:void 0,M="fulfilled"===l.status?l.value:void 0,y=M?.storeProperty?.favicon??"/favicon/favicon-32x32.png",b={defaultTitle:T?.shop.name,title:r?.name??"Home",description:f??T?.shop.description,openGraph:{site_name:T?.shop.name,locale:T?.localization.country.isoCode,title:r?.name??T?.shop.name,description:f??T?.shop.description,images:c?[c]:[]},additionalMetaTags:[{name:"theme-color",content:"#000000"}],canonical:`https://${M?.storeProperty?.primaryDomain}/`,additionalLinkTags:generateSeoLinks.generateSeoLinks({favicon:y,shopMeta:T})},S=T?.localization.language.isoCode??null,_=T?.localization.country.isoCode??null,A=S&&_?`${S}-${_}`:null;return parseJson.serializableJson({themeStyle:genCss.genCSS(r?.pageStyle?.data,p),fontStyle:h,elementFontStyle:g,builderData:u,swr:{fallback:m},moneyFormat:T?.shop.moneyFormat??null,currency:T?.localization.country.currency.isoCode??null,languageIsoCode:S,countryIsoCode:_,locale:A,swatches:parseJson.parseJson(M?.storeProperty?.swatchesConfig),seo:b,mobileOnly:p,gaTrackingId:getMetafield.getPublishedThemePageMetafieldByKey(index.PublishedThemePageMetafields.ANALYTICS_GA_TRACKING_ID,r?.metafields)??null,facebookPixelId:getMetafield.getPublishedThemePageMetafieldByKey(index.PublishedThemePageMetafields.ANALYTICS_FB_PIXEL_ID,r?.metafields)??null,tiktokPixelId:getMetafield.getPublishedThemePageMetafieldByKey(index.PublishedThemePageMetafields.ANALYTICS_TIKTOK_PIXEL_ID,r?.metafields)??null,customCodeHeader:getMetafield.getPublishedThemePageMetafieldByKey(index.PublishedThemePageMetafields.CUSTOM_CODE_HEADER,r?.metafields)??null,customCodeBody:getMetafield.getPublishedThemePageMetafieldByKey(index.PublishedThemePageMetafields.CUSTOM_CODE_BODY,r?.metafields)??null,pageHandle:r.handle??null,customFonts:P})}catch(e){throw nextjs.captureException(e),e}};exports.getHomePagePropsV2=getHomePagePropsV2;
@@ -1 +1 @@
1
- "use strict";var core=require("@gem-sdk/core"),adapterShopify=require("@gem-sdk/adapter-shopify"),googleFonts=require("../google-fonts.js"),genCss=require("../helpers/gen-css.js"),generateManifres=require("../helpers/generate-manifres.js"),normalize=require("../helpers/normalize.js"),parseJson=require("../helpers/parse-json.js"),index=require("../../constants/index.js"),getMetafield=require("../helpers/get-metafield.js");const getHomePageProps=(e,s)=>async()=>{let a="STATIC",t={slugType:a},[r,i,o,l]=await Promise.allSettled([e([core.PublishedThemePagesDocument,t]),e([core.StorePropertyDocument]),s([adapterShopify.ShopMetaDocument]),e([core.PublishedShopMetasDocument,{keys:[index.PublishedThemePageMetafields.GLOBAL_META_DESCRIPTION,index.PublishedThemePageMetafields.GLOBAL_META_THUMBNAIL]}])]);if("rejected"===r.status)return{pageType:a};let n="fulfilled"===l.status?l.value:void 0,d=r.value.publishedThemePages?.[0],p=normalize.parseBuilderTemplate(d),u=await googleFonts.getFontFromGlobalStyle(d?.pageStyle?.data,void 0),c=core.prefetchQueries(p),m=await Promise.allSettled(c.map(({query:s,variables:a,func:t})=>t?t(e,a):s?e([s,a]):{})),h=c.reduce((e,{key:s},a)=>{let t=m[a];return t?.status==="fulfilled"?{...e,[s]:t.value}:e},{}),g=getMetafield.getPublishedThemePageMetafieldByKey(index.PublishedThemePageMetafields.GLOBAL_META_DESCRIPTION,d?.metafields)||n?.publishedShopMetas?.find(e=>e?.key===index.PublishedThemePageMetafields.GLOBAL_META_DESCRIPTION)?.value,f=parseJson.parseJson(getMetafield.getPublishedThemePageMetafieldByKey(index.PublishedThemePageMetafields.GLOBAL_META_THUMBNAIL,d?.metafields)||n?.publishedShopMetas?.find(e=>e?.key===index.PublishedThemePageMetafields.GLOBAL_META_THUMBNAIL)?.value),P="fulfilled"===o.status?o.value:void 0,y="fulfilled"===i.status?i.value:void 0,T=y?.storeProperty?.favicon??"/favicon/favicon-32x32.png",M={defaultTitle:P?.shop.name,title:d?.name??"Home",description:g??P?.shop.description,openGraph:{site_name:P?.shop.name,locale:P?.localization.country.isoCode,title:d?.name??P?.shop.name,description:g??P?.shop.description,images:f?[f]:[]},additionalMetaTags:[{name:"theme-color",content:"#000000"}],canonical:"/",additionalLinkTags:[{rel:"icon",sizes:"32x32",href:`${T}-/crop/1:1/center/-/smart_resize/32x32/`},{rel:"icon",sizes:"16x16",href:`${T}-/crop/1:1/center/-/smart_resize/16x16/`},{rel:"apple-touch-icon",sizes:"180x180",href:`${T}-/crop/1:1/center/-/smart_resize/180x180/`},{rel:"manifest",href:generateManifres.generateManifest({theme_color:"#000000",background_color:"#ffffff",display:"standalone",scope:"/",start_url:"/",name:P?.shop.name,short_name:P?.shop.name,description:P?.shop.description,icons:[{src:`${T}-/crop/1:1/center/-/smart_resize/192x192/`,sizes:"192x192",type:"image/png",purpose:"any maskable"},{src:`${T}-/crop/1:1/center/-/smart_resize/512x512/`,sizes:"512x512",type:"image/png"}]})}]},_=P?.localization.language.isoCode??null,x=P?.localization.country.isoCode??null,S=_&&x?`${_}-${x}`:null;return parseJson.serializableJson({themeStyle:genCss.genCSS(d?.pageStyle?.data),fontStyle:u,builderData:p,pageType:a,swr:{fallback:h},moneyFormat:P?.shop.moneyFormat??null,currency:P?.localization.country.currency.isoCode??null,locale:S,languageIsoCode:_,countryIsoCode:x,swatches:parseJson.parseJson(y?.storeProperty?.swatchesConfig),seo:M})};exports.getHomePageProps=getHomePageProps;
1
+ "use strict";var core=require("@gem-sdk/core"),adapterShopify=require("@gem-sdk/adapter-shopify"),googleFonts=require("../google-fonts.js"),genCss=require("../helpers/gen-css.js"),generateManifres=require("../helpers/generate-manifres.js"),normalize=require("../helpers/normalize.js"),parseJson=require("../helpers/parse-json.js"),index=require("../../constants/index.js"),getMetafield=require("../helpers/get-metafield.js");const getHomePageProps=(e,s)=>async()=>{let a="STATIC",t={slugType:a},[r,i,o,l]=await Promise.allSettled([e([core.PublishedThemePagesDocument,t]),e([core.StorePropertyDocument]),s([adapterShopify.ShopMetaDocument]),e([core.PublishedShopMetasDocument,{keys:[index.PublishedThemePageMetafields.GLOBAL_META_DESCRIPTION,index.PublishedThemePageMetafields.GLOBAL_META_THUMBNAIL]}])]);if("rejected"===r.status)return{pageType:a};let n="fulfilled"===l.status?l.value:void 0,d=r.value.publishedThemePages?.[0],p=normalize.parseBuilderTemplate(d),u=await googleFonts.getFontFromGlobalStyle(d?.pageStyle?.data),c=core.prefetchQueries(p),m=await Promise.allSettled(c.map(({query:s,variables:a,func:t})=>t?t(e,a):s?e([s,a]):{})),h=c.reduce((e,{key:s},a)=>{let t=m[a];return t?.status==="fulfilled"?{...e,[s]:t.value}:e},{}),g=getMetafield.getPublishedThemePageMetafieldByKey(index.PublishedThemePageMetafields.GLOBAL_META_DESCRIPTION,d?.metafields)||n?.publishedShopMetas?.find(e=>e?.key===index.PublishedThemePageMetafields.GLOBAL_META_DESCRIPTION)?.value,f=parseJson.parseJson(getMetafield.getPublishedThemePageMetafieldByKey(index.PublishedThemePageMetafields.GLOBAL_META_THUMBNAIL,d?.metafields)||n?.publishedShopMetas?.find(e=>e?.key===index.PublishedThemePageMetafields.GLOBAL_META_THUMBNAIL)?.value),P="fulfilled"===o.status?o.value:void 0,y="fulfilled"===i.status?i.value:void 0,T=y?.storeProperty?.favicon??"/favicon/favicon-32x32.png",M={defaultTitle:P?.shop.name,title:d?.name??"Home",description:g??P?.shop.description,openGraph:{site_name:P?.shop.name,locale:P?.localization.country.isoCode,title:d?.name??P?.shop.name,description:g??P?.shop.description,images:f?[f]:[]},additionalMetaTags:[{name:"theme-color",content:"#000000"}],canonical:"/",additionalLinkTags:[{rel:"icon",sizes:"32x32",href:`${T}-/crop/1:1/center/-/smart_resize/32x32/`},{rel:"icon",sizes:"16x16",href:`${T}-/crop/1:1/center/-/smart_resize/16x16/`},{rel:"apple-touch-icon",sizes:"180x180",href:`${T}-/crop/1:1/center/-/smart_resize/180x180/`},{rel:"manifest",href:generateManifres.generateManifest({theme_color:"#000000",background_color:"#ffffff",display:"standalone",scope:"/",start_url:"/",name:P?.shop.name,short_name:P?.shop.name,description:P?.shop.description,icons:[{src:`${T}-/crop/1:1/center/-/smart_resize/192x192/`,sizes:"192x192",type:"image/png",purpose:"any maskable"},{src:`${T}-/crop/1:1/center/-/smart_resize/512x512/`,sizes:"512x512",type:"image/png"}]})}]},_=P?.localization.language.isoCode??null,x=P?.localization.country.isoCode??null,S=_&&x?`${_}-${x}`:null;return parseJson.serializableJson({themeStyle:genCss.genCSS(d?.pageStyle?.data),fontStyle:u,builderData:p,pageType:a,swr:{fallback:h},moneyFormat:P?.shop.moneyFormat??null,currency:P?.localization.country.currency.isoCode??null,locale:S,languageIsoCode:_,countryIsoCode:x,swatches:parseJson.parseJson(y?.storeProperty?.swatchesConfig),seo:M})};exports.getHomePageProps=getHomePageProps;
@@ -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 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:c,storeProperty:i,productOffers:u,pageStyle:f,dynamicDiscountOffer:D}=await getRelevantPageData({id:o,currentOfferID:l,fetcher:e,isLibraryTemplate:s,isShopLibraryPage:n,librarySaleFunnelID:r});if(!c)throw Error(`No data builder found for slug: /preview/${o}`);let d=r||s&&l?normalize.parseBuilderLibraryTemplate(c):n?normalize.parseShopLibraryPageTemplate(c):normalize.parseBuilderTemplateV2(c),y=a||e,[m,h,P]=await Promise.all([googleFonts.getFontStyleFromPageTemplate(d),googleFonts.getFontFromGlobalStyle(f,void 0),getFallback.getFallbackV2(y,d,!1)]),{seo:g,pageConfig:p}=usePagePreview.usePagePreview(c,i);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
+ "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:c,storeProperty:u,productOffers:i,pageStyle:f,dynamicDiscountOffer:D}=await getRelevantPageData({id:o,currentOfferID:l,fetcher:e,isLibraryTemplate:s,isShopLibraryPage:n,librarySaleFunnelID:r});if(!c)throw Error(`No data builder found for slug: /preview/${o}`);let d=r||s&&l?normalize.parseBuilderLibraryTemplate(c):n?normalize.parseShopLibraryPageTemplate(c):normalize.parseBuilderTemplateV2(c),y=a||e,[m,h,P]=await Promise.all([googleFonts.getFontStyleFromPageTemplate(d),googleFonts.getFontFromGlobalStyle(f),getFallback.getFallbackV2(y,d,!1)]),{seo:g,pageConfig:p}=usePagePreview.usePagePreview(c,u);return parseJson.serializableJson({themeStyle:genCss.genCSS(f),seo:g,...p,elementFontStyle:m,fontStyle:h,builderData:d,swr:{fallback:P},productOffers:i,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 +1 @@
1
- "use strict";var core=require("@gem-sdk/core"),adapterShopify=require("@gem-sdk/adapter-shopify"),googleFonts=require("../google-fonts.js"),genCss=require("../helpers/gen-css.js"),getFallback=require("../helpers/get-fallback.js"),normalize=require("../helpers/normalize.js"),parseJson=require("../helpers/parse-json.js"),nextjs=require("@sentry/nextjs"),customFonts=require("../custom-fonts.js"),getMetafield=require("../helpers/get-metafield.js"),index=require("../../constants/index.js"),generateSeoLinks=require("../helpers/generate-seo-links.js");const getStaticPagePropsV2=(e,t)=>async a=>{try{let i="STATIC",l={slug:a,slugType:i},[s,o,d,n]=await Promise.allSettled([e([core.PublishedThemePagesDocument,l]),e([core.StorePropertyDocument]),t([adapterShopify.ShopMetaDocument]),e([core.PublishedShopMetasDocument,{keys:["source_font",index.PublishedThemePageMetafields.GLOBAL_META_DESCRIPTION,index.PublishedThemePageMetafields.GLOBAL_META_THUMBNAIL]}])]);if("rejected"===s.status)throw Error(s.reason?.[0]);let r="fulfilled"===n.status?n.value:void 0,u=r?.publishedShopMetas?.find(e=>e?.key==="source_font"),g=s.value.publishedThemePages?.[0],h=s.value?.publishedThemePages?.[0]?.themePageCustomFonts;if(!g)throw Error(`No data builder found for slug: /${a}`);let m=normalize.parseBuilderTemplateV2(g),[P,f,p,c]=await Promise.all([googleFonts.getFontStyleFromPageTemplate(m,u?.value,g?.pageStyle?.data),googleFonts.getFontFromGlobalStyle(g?.pageStyle?.data,u?.value),getFallback.getFallbackV2(e,m),customFonts.getCustomFonts(h)]),T=g.isMobile??!1,M=getMetafield.getPublishedThemePageMetafieldByKey(index.PublishedThemePageMetafields.GLOBAL_META_DESCRIPTION,g?.metafields)||r?.publishedShopMetas?.find(e=>e?.key===index.PublishedThemePageMetafields.GLOBAL_META_DESCRIPTION)?.value,y=getMetafield.getPublishedThemePageMetafieldByKey(index.PublishedThemePageMetafields.GLOBAL_META_TITLE,g?.metafields)||r?.publishedShopMetas?.find(e=>e?.key===index.PublishedThemePageMetafields.GLOBAL_META_TITLE)?.value,b=parseJson.parseJson(getMetafield.getPublishedThemePageMetafieldByKey(index.PublishedThemePageMetafields.GLOBAL_META_THUMBNAIL,g?.metafields)||r?.publishedShopMetas?.find(e=>e?.key===index.PublishedThemePageMetafields.GLOBAL_META_THUMBNAIL)?.value),_=getMetafield.getPublishedThemePageMetafieldByKey(index.PublishedThemePageMetafields.NOINDEX_KEY,g?.metafields)||r?.publishedShopMetas?.find(e=>e?.key===index.PublishedThemePageMetafields.NOINDEX_KEY)?.value,S=getMetafield.getPublishedThemePageMetafieldByKey(index.PublishedThemePageMetafields.NOFOLLOW_KEY,g?.metafields)||r?.publishedShopMetas?.find(e=>e?.key===index.PublishedThemePageMetafields.NOFOLLOW_KEY)?.value,L="fulfilled"===d.status?d.value:void 0,x="fulfilled"===o.status?o.value:void 0,A=x?.storeProperty?.favicon??"/favicon/favicon-32x32.png",E={defaultTitle:L?.shop.name,title:y||g?.name,description:M??L?.shop.description,openGraph:{site_name:L?.shop.name,locale:L?.localization.country.isoCode,title:(y||g?.name)??L?.shop.name,description:M??L?.shop.description,images:b?[b]:[]},noindex:"true"===_,nofollow:"true"===S,canonical:`https://${x?.storeProperty?.primaryDomain}/${a}`,additionalMetaTags:[{name:"theme-color",content:"#000000"}],additionalLinkTags:generateSeoLinks.generateSeoLinks({favicon:A,shopMeta:L})},B=L?.localization.language.isoCode??null,I=L?.localization.country.isoCode??null,O=B&&I?`${B}-${I}`:null;return parseJson.serializableJson({themeStyle:genCss.genCSS(g?.pageStyle?.data,T),fontStyle:f,elementFontStyle:P,builderData:m,pageType:i,moneyFormat:L?.shop.moneyFormat??null,currency:L?.localization.country.currency.isoCode??null,languageIsoCode:B,countryIsoCode:I,locale:O,swr:{fallback:p},swatches:parseJson.parseJson(x?.storeProperty?.swatchesConfig),seo:E,mobileOnly:T,gaTrackingId:getMetafield.getPublishedThemePageMetafieldByKey(index.PublishedThemePageMetafields.ANALYTICS_GA_TRACKING_ID,g?.metafields)??null,facebookPixelId:getMetafield.getPublishedThemePageMetafieldByKey(index.PublishedThemePageMetafields.ANALYTICS_FB_PIXEL_ID,g?.metafields)??null,tiktokPixelId:getMetafield.getPublishedThemePageMetafieldByKey(index.PublishedThemePageMetafields.ANALYTICS_TIKTOK_PIXEL_ID,g?.metafields)??null,customCodeHeader:getMetafield.getPublishedThemePageMetafieldByKey(index.PublishedThemePageMetafields.CUSTOM_CODE_HEADER,g?.metafields)??null,customCodeBody:getMetafield.getPublishedThemePageMetafieldByKey(index.PublishedThemePageMetafields.CUSTOM_CODE_BODY,g?.metafields)??null,pageHandle:g.handle??null,customFonts:c,interaction:g?.interaction,pageBackground:normalize.extractPageBackground(g)})}catch(e){throw nextjs.captureException(e),e}};exports.getStaticPagePropsV2=getStaticPagePropsV2;
1
+ "use strict";var core=require("@gem-sdk/core"),adapterShopify=require("@gem-sdk/adapter-shopify"),googleFonts=require("../google-fonts.js"),genCss=require("../helpers/gen-css.js"),getFallback=require("../helpers/get-fallback.js"),normalize=require("../helpers/normalize.js"),parseJson=require("../helpers/parse-json.js"),nextjs=require("@sentry/nextjs"),customFonts=require("../custom-fonts.js"),getMetafield=require("../helpers/get-metafield.js"),index=require("../../constants/index.js"),generateSeoLinks=require("../helpers/generate-seo-links.js");const getStaticPagePropsV2=(e,t)=>async a=>{try{let i="STATIC",l={slug:a,slugType:i},[s,o,d,n]=await Promise.allSettled([e([core.PublishedThemePagesDocument,l]),e([core.StorePropertyDocument]),t([adapterShopify.ShopMetaDocument]),e([core.PublishedShopMetasDocument,{keys:["source_font",index.PublishedThemePageMetafields.GLOBAL_META_DESCRIPTION,index.PublishedThemePageMetafields.GLOBAL_META_THUMBNAIL]}])]);if("rejected"===s.status)throw Error(s.reason?.[0]);let r="fulfilled"===n.status?n.value:void 0,u=r?.publishedShopMetas?.find(e=>e?.key==="source_font"),g=s.value.publishedThemePages?.[0],h=s.value?.publishedThemePages?.[0]?.themePageCustomFonts;if(!g)throw Error(`No data builder found for slug: /${a}`);let m=normalize.parseBuilderTemplateV2(g),[P,f,p,c]=await Promise.all([googleFonts.getFontStyleFromPageTemplate(m,u?.value),googleFonts.getFontFromGlobalStyle(g?.pageStyle?.data,u?.value),getFallback.getFallbackV2(e,m),customFonts.getCustomFonts(h)]),T=g.isMobile??!1,M=getMetafield.getPublishedThemePageMetafieldByKey(index.PublishedThemePageMetafields.GLOBAL_META_DESCRIPTION,g?.metafields)||r?.publishedShopMetas?.find(e=>e?.key===index.PublishedThemePageMetafields.GLOBAL_META_DESCRIPTION)?.value,y=getMetafield.getPublishedThemePageMetafieldByKey(index.PublishedThemePageMetafields.GLOBAL_META_TITLE,g?.metafields)||r?.publishedShopMetas?.find(e=>e?.key===index.PublishedThemePageMetafields.GLOBAL_META_TITLE)?.value,b=parseJson.parseJson(getMetafield.getPublishedThemePageMetafieldByKey(index.PublishedThemePageMetafields.GLOBAL_META_THUMBNAIL,g?.metafields)||r?.publishedShopMetas?.find(e=>e?.key===index.PublishedThemePageMetafields.GLOBAL_META_THUMBNAIL)?.value),_=getMetafield.getPublishedThemePageMetafieldByKey(index.PublishedThemePageMetafields.NOINDEX_KEY,g?.metafields)||r?.publishedShopMetas?.find(e=>e?.key===index.PublishedThemePageMetafields.NOINDEX_KEY)?.value,L=getMetafield.getPublishedThemePageMetafieldByKey(index.PublishedThemePageMetafields.NOFOLLOW_KEY,g?.metafields)||r?.publishedShopMetas?.find(e=>e?.key===index.PublishedThemePageMetafields.NOFOLLOW_KEY)?.value,S="fulfilled"===d.status?d.value:void 0,x="fulfilled"===o.status?o.value:void 0,A=x?.storeProperty?.favicon??"/favicon/favicon-32x32.png",E={defaultTitle:S?.shop.name,title:y||g?.name,description:M??S?.shop.description,openGraph:{site_name:S?.shop.name,locale:S?.localization.country.isoCode,title:(y||g?.name)??S?.shop.name,description:M??S?.shop.description,images:b?[b]:[]},noindex:"true"===_,nofollow:"true"===L,canonical:`https://${x?.storeProperty?.primaryDomain}/${a}`,additionalMetaTags:[{name:"theme-color",content:"#000000"}],additionalLinkTags:generateSeoLinks.generateSeoLinks({favicon:A,shopMeta:S})},B=S?.localization.language.isoCode??null,I=S?.localization.country.isoCode??null,O=B&&I?`${B}-${I}`:null;return parseJson.serializableJson({themeStyle:genCss.genCSS(g?.pageStyle?.data,T),fontStyle:f,elementFontStyle:P,builderData:m,pageType:i,moneyFormat:S?.shop.moneyFormat??null,currency:S?.localization.country.currency.isoCode??null,languageIsoCode:B,countryIsoCode:I,locale:O,swr:{fallback:p},swatches:parseJson.parseJson(x?.storeProperty?.swatchesConfig),seo:E,mobileOnly:T,gaTrackingId:getMetafield.getPublishedThemePageMetafieldByKey(index.PublishedThemePageMetafields.ANALYTICS_GA_TRACKING_ID,g?.metafields)??null,facebookPixelId:getMetafield.getPublishedThemePageMetafieldByKey(index.PublishedThemePageMetafields.ANALYTICS_FB_PIXEL_ID,g?.metafields)??null,tiktokPixelId:getMetafield.getPublishedThemePageMetafieldByKey(index.PublishedThemePageMetafields.ANALYTICS_TIKTOK_PIXEL_ID,g?.metafields)??null,customCodeHeader:getMetafield.getPublishedThemePageMetafieldByKey(index.PublishedThemePageMetafields.CUSTOM_CODE_HEADER,g?.metafields)??null,customCodeBody:getMetafield.getPublishedThemePageMetafieldByKey(index.PublishedThemePageMetafields.CUSTOM_CODE_BODY,g?.metafields)??null,pageHandle:g.handle??null,customFonts:c,interaction:g?.interaction,pageBackground:normalize.extractPageBackground(g)})}catch(e){throw nextjs.captureException(e),e}};exports.getStaticPagePropsV2=getStaticPagePropsV2;
@@ -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(t,e){try{return fetch(t,{headers:{"User-Agent":e}}).then(r=>200===r.status?r.text():(sentry.sentryCaptureException("getFontForUA",`Unexpected status ${r.status}`,{url:t,UA:e}),""))}catch(r){return sentry.sentryCaptureException("getFontForUA","Error fetching font",{url:t,UA:e,error:r}),""}}const composeFonts=t=>{let e=t.filter((t,e,r)=>e===r.findIndex(e=>e.family===t.family));return e.map(e=>{let r=t.filter(t=>t.family===e.family).reduce((t,e)=>[...t,...e.variants],[]).filter((t,e,r)=>e===r.findIndex(e=>e===t));return{...e,variants:r}})},GOOGLE_CSS2_OVERRIDES={"Roboto Flex":"https://fonts.googleapis.com/css2?family=Roboto+Flex:opsz,wght@8..144,100..1000&display=swap"},normalizeFamily=t=>t?.trim().replace(/\s+/g,"+")??"",getOverrideUrlForFamily=t=>{let e=normalizeFamily(t);return GOOGLE_CSS2_OVERRIDES[t]??GOOGLE_CSS2_OVERRIDES[e]},VARIANT_WEIGHT_MAP={regular:"400",normal:"400",bold:"700",italic:"400italic"},isValidFont=(t,e,r)=>{let n="google"===t.type||"bunny"===t.type,o="theme"===t.type&&r,a=checkOptionFont.checkNotInOptionFont(t.family,e);return!(n&&a)&&(n||!t.type||o)},normalizeVariant=t=>{let e=String(t).toLowerCase().trim();return VARIANT_WEIGHT_MAP[e]??t},sortFontVariants=t=>{let e=t=>{let e=String(t).toLowerCase().trim(),r=e.includes("italic"),n=e.replace("italic","").trim(),o=VARIANT_WEIGHT_MAP[n]??n,a=parseInt(o,10)||400;return{weight:a,isItalic:r}};return[...t].sort((t,r)=>{let n=e(t),o=e(r);return n.weight!==o.weight?n.weight-o.weight:n.isItalic!==o.isItalic?n.isItalic?1:-1:0})},makeUrlBySourceFont=(t,e,r)=>{let n=composeFonts(t).map(t=>{let e=t.variants.map(t=>normalizeVariant(t)),r=sortFontVariants(e);return`${t.family.replace(/ /g,"+")}:${r.join(",")}`}).join("|");if("sans-serif"===n)return;let o=new URLSearchParams;o.append("family",n),o.append("display",r?.display||"swap"),r?.subset&&o.append("subset",r.subset),r?.effect&&o.append("effect",r.effect);let a=`https://fonts.bunny.net/css?family=${n}`,l=`https://fonts.googleapis.com/css?${decodeURIComponent(o.toString())}`;return"bunny"===e?a:l},createFontUrls=(t,e,r,n)=>{let o=t.filter(t=>isValidFont(t,r||"google",n));if(!o.length)return;let a=o.filter((t,e,r)=>e===r.findIndex(e=>e.family===t.family)),l=[],i=[];for(let t of a){let e=getOverrideUrlForFamily(t.family);e&&"bunny"!==r?l.push(e):i.push(t)}let s=i.length?makeUrlBySourceFont(i,r||"google",e):void 0;return l.length&&s?[...l,s]:s?[s,...l]:l};async function getFonts(t,e,r=!0,n){let o=createFontUrls(t,e,n),a=Array.isArray(o)?o:o?[o]:[];if(!a.length)return"";if(r)return a.map(t=>`@import url('${t}');`).join("");let l="",i="";for(let t of a)try{let[e,r]=await Promise.all([getFontForUA(t,"Mozilla/5.0 (Windows NT 10.0; Trident/7.0; rv:11.0) like Gecko"),getFontForUA(t,"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36")]),n=`${e}${r}`;l+=n,i+=`@import url('${t}');`}catch(e){sentry.sentryCaptureException("getFonts","Error fetching font",{url:t,fontType:n,error:String(e)}),i+="",l+=""}let s=new TextEncoder().encode(l).length;return s<51200?l:i}const extractFontsFromPageTemplate=t=>{let e=[];return t.forEach(t=>{e.push(...genFonts.getFontsFromDataBuilder(t.data))}),composeFonts(e)},extractVariantFromTypography=(t,e)=>{let r="400";if(null!=t){let e=String(t).toLowerCase().trim();r=normalizeVariant(e)}let n=r,o=e&&"italic"===e.toLowerCase();return o&&!r.includes("italic")&&(n=r.includes("i")?r:`${r}italic`),n},extractTypographyVariants=t=>{let e=t?.typography??{},r=t?.font??{},n=new Map;Object.values(e).forEach(t=>{t&&"object"==typeof t&&["desktop","mobile","tablet"].forEach(e=>{let o=t[e];if(!o||"object"!=typeof o)return;let a=o.fontFamily;if(!a||"string"!=typeof a||!r[a])return;let l=extractVariantFromTypography(o.fontWeight,o.fontStyle);n.has(a)||n.set(a,new Set),n.get(a).add(l)})});let o={};return n.forEach((t,e)=>{let n=r[e];n&&(o[e]={variants:Array.from(t).sort(),family:n.family})}),o},getFontFromGlobalStyle=async(t,e)=>{if(!t)return"";try{let r=JSON.parse(t),n=r?.font??{},o=Object.values(n),a=extractTypographyVariants(r);return Object.keys(a).length>0&&(o=Object.entries(n).filter(([t])=>a[t]).map(([t,e])=>({...e,variants:a[t].variants}))),getFonts(o,void 0,void 0,e)}catch{return""}};async function getFontStyleFromPageTemplate(t,e,r){let n=JSON.parse(r),o=extractTypographyVariants(n),a=extractFontsFromPageTemplate(t),l=new Map;if(Object.values(o).forEach(t=>{l.set(t.family,new Set(t.variants))}),0===(a=a.map(t=>{let e=l.get(t.family);if(!e)return t;let r=t.variants.filter(t=>!e.has(t));return 0===r.length?null:{...t,variants:r}}).filter(t=>null!==t)).length)return[];let i=await getFonts(a,void 0,void 0,e);return i?[i]:[]}exports.composeFonts=composeFonts,exports.createFontUrls=createFontUrls,exports.extractTypographyVariants=extractTypographyVariants,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,o)=>{let r="google"===e.type||"bunny"===e.type,n="theme"===e.type&&o,l=checkOptionFont.checkNotInOptionFont(e.family,t);return!(r&&l)&&(r||!e.type||n)},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=o?.display||"swap",l=new URLSearchParams;return(l.append("family",r),l.append("display",n),"bunny"===t)?`https://fonts.bunny.net/css?${l.toString()}`:(o?.subset&&l.append("subset",o.subset),o?.effect&&l.append("effect",o.effect),`https://fonts.googleapis.com/css?${decodeURIComponent(l.toString())}`)},createFontUrls=(e,t,o,r)=>{let n=e.filter(e=>isValidFont(e,o||"google",r));if(!n.length)return;let l=n.filter((e,t,o)=>t===o.findIndex(t=>t.family===e.family)),s=[],i=[];for(let e of l){let t=getOverrideUrlForFamily(e.family);t&&"bunny"!==o?s.push(t):i.push(e)}let a=i.length?makeUrlBySourceFont(i,o||"google",t):void 0;return s.length&&a?[...s,a]:a?[a,...s]:s};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="",i="";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,i+=`@import url('${e}');`}catch(t){sentry.sentryCaptureException("getFonts","Error fetching font",{url:e,fontType:r,error:String(t)}),i+="",s+=""}let a=new TextEncoder().encode(s).length;return a<51200?s:i}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=[];if(e.forEach(e=>{let t=genFonts.getFontsFromDataBuilder(e.data);o.push(...t)}),0===o.length)return[];let r=composeFonts(o),n=await getFonts(r,void 0,void 0,t);return n?[n]:[]}exports.composeFonts=composeFonts,exports.createFontUrls=createFontUrls,exports.getFontFromGlobalStyle=getFontFromGlobalStyle,exports.getFontStyleFromPageTemplate=getFontStyleFromPageTemplate,exports.getFonts=getFonts;
@@ -1 +1 @@
1
- "use strict";const EXCLUDED_FONT_FAMILIES=["sans-serif"],getFontsFromDataBuilder=t=>{let e=[];for(let o in t)if(Object.prototype.hasOwnProperty.call(t,o)){let r=t[o],n=r.styles,i=r.settings;getFontFromGroupSetting(e,n),getFontFromGroupSetting(e,i)}return e},getFontFromGroupSetting=(t,e)=>{let o=["normal","hover","focus","active","disabled","price","compareAtPrice"];for(let r in e)if(Object.prototype.hasOwnProperty.call(e,r)){let n=e[r];if(!n)continue;for(let e of(getFontValue(t,n),o))n[e]&&getFontValue(t,n[e])}},uniqueArray=t=>Array.from(new Set(t)),getFontValue=(t,e)=>{let o=e.custom?.fontFamily;"string"==typeof o&&(o={value:e.custom?.fontFamily||"",type:"google"});let r=o?.value;if(EXCLUDED_FONT_FAMILIES.includes(r))return;let n=e.custom?.fontVariants;if(n?.length||(n=[e.custom?.fontWeight]),o&&n?.length){let i=n.map(t=>"regular"===t?"400":t),l=e.custom?.fontWeight&&i.includes(e.custom?.fontWeight)?e.custom?.fontWeight:i[0];if(l){let n=uniqueArray([l,...e?.attrs?.isAlwaysLoadBold?["700"]:[],...e?.attrs?.loadFontStyles?.includes("bold")?["700"]:[]]);if(e?.attrs?.loadFontStyles?.includes("italic")){let t=n.map(t=>"string"==typeof t&&/^\d+$/.test(t)?`${t}i`:null).filter(t=>null!==t);n.push(...t)}let s=t.find(t=>t.family==r&&n.every(e=>t.variants.includes(e)));if(!s){let e=t.find(t=>t.family==r);e?n.forEach(t=>{e.variants.includes(t)||e.variants.push(t)}):("700"!==l&&i.includes("700")&&n.push("700"),t.push({family:r||"",variants:uniqueArray(n),subsets:[],type:o.type}))}}}};exports.getFontFromGroupSetting=getFontFromGroupSetting,exports.getFontsFromDataBuilder=getFontsFromDataBuilder;
1
+ "use strict";const EXCLUDED_FONT_FAMILIES=["sans-serif"],getFontsFromDataBuilder=t=>{let e=[];for(let o in t)if(Object.prototype.hasOwnProperty.call(t,o)){let r=t[o],n=r.styles,i=r.settings;getFontFromGroupSetting(e,n),getFontFromGroupSetting(e,i)}return e},getFontFromGroupSetting=(t,e)=>{let o=["normal","hover","focus","active","disabled","price","compareAtPrice"];for(let r in e)if(Object.prototype.hasOwnProperty.call(e,r)){let n=e[r];if(!n)continue;for(let e of(getFontValue(t,n),o))n[e]&&getFontValue(t,n[e])}},uniqueArray=t=>Array.from(new Set(t)),getFontValue=(t,e)=>{let o=e.custom?.fontFamily;"string"==typeof o&&(o={value:e.custom?.fontFamily||"",type:"google"});let r=o?.value;if(EXCLUDED_FONT_FAMILIES.includes(r))return;let n=e.custom?.fontVariants;if(n?.length||(n=[e.custom?.fontWeight]),o&&n?.length){let i=n.map(t=>"regular"===t?"400":t),s=e.custom?.fontWeight&&i.includes(e.custom?.fontWeight)?e.custom?.fontWeight:i[0];if(s){let n=uniqueArray([s,...e?.attrs?.isAlwaysLoadBold?["700"]:[]]),l=t.find(t=>t.family==r&&t.variants.includes(s));if(!l){let e=t.find(t=>t.family==r);e?e.variants.push(s):("700"!==s&&i.includes("700")&&n.push("700"),t.push({family:r||"",variants:n,subsets:[],type:o.type}))}}}};exports.getFontFromGroupSetting=getFontFromGroupSetting,exports.getFontsFromDataBuilder=getFontsFromDataBuilder;
@@ -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 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};
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 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.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),A=o(e=>e.changeItemPropByKey),N=o(e=>e.addItem),k=o(e=>e.moveItem),x=o(e=>e.removeItem),O=d(e=>e.addSection),q=n(e=>e.changeSwatches),$=o(e=>e.updateItemName),D=o(e=>e.updateItemAttribute),H=n(e=>e.changeLayoutSettings),M=n(e=>e.changeCreateThemeSectionCount),B=n(e=>e.changeShopPlan),F=n(e=>e.updatePriceWithCurrency),_=y(e=>e.changeFontType),V=y(e=>e.fontType),K=a(e=>e.clearModal),R=n(e=>e.changeLimitCreateThemeSection),W=i(e=>e.setInteractionIsSelectOnPage),z=i(e=>e.setInteractionItem),G=i(e=>e.setInteractionSelectType),J=i(e=>e.setInteractionSettingType),Q=i(e=>e.setSidebarMode),U=l(()=>w(C),[C]),X=({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},Y=s((e,t)=>{if(!V)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&&X({currentFontTypeSetting:e.type,fontType:V,fontHref:o})});d||e.remove()}),t))if(!(["bunny","google"].includes(i.type)&&f(i.family,V))&&"custom"!==i.type&&i.variants?.length)for(let t of i.variants){let n={...i,variants:[t.toString()]},o=p([n],void 0,V,!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)}}},[V]),Z=s(()=>{r(/query\//,{revalidate:!0})},[r]),ee=s(e=>{let t=e.detail;h({url:t.shopHandle?m(t.shopHandle,g):void 0,token:t.shopToken})},[h,g]),et=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(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]),en=s(e=>{K();try{let t=e.detail;t.data&&("flat"===t.type?P(t.data):T(t.data))}catch{}},[P,T,K]),ei=s(e=>{try{let t=e.detail;t.entity&&(N({data:t.entity,id:t.id,position:t.position,type:t.type??"component"}),t?.type!=="section"||Array.isArray(t.entity)||O(t.entity.uid,t.entity))}catch{}},[N,O]),eo=s(e=>{try{let t=e.detail;t.uid&&t.propName&&A({id:t.uid,key:t.propName,data:t.propValue,group:t.group})}catch{}},[A]),ed=s(e=>{try{let t=e.detail;t.uid&&j(t.uid,t.data,t.group)}catch{}},[j]),ea=s(e=>{try{let t=e.detail;t.to&&t.uid&&k(t.uid,t.to,Number(t.position)??0)}catch{}},[k]),er=s(e=>{try{let t=e.detail;t.uid&&x(t.uid)}catch{}},[x]),el=s(e=>{let t=e.detail;try{t.data&&q(t.data)}catch{}},[q]),es=s(e=>{let t=e.detail;t&&H(t)},[H]),ec=s(e=>{let t=e.detail;t&&M(t)},[M]),em=s(e=>{let t=e.detail;t&&B(t)},[B]),ep=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&&E(t)},[E]),ev=s(e=>{let t=e.detail;t&&I(t)},[I]);c(()=>{U&&V&&Y("google-font-element",U)},[U,V,Y]);let ey=s(e=>{let t=e.detail;t.uid&&$(t.uid,t.name||"")},[$]),ef=s(e=>{let t=e.detail;t.uid&&D(t.uid,t.value||"",t.attr||"")},[D]),eg=s(e=>{let t=e.detail;t?.length&&L(t)},[L]),eh=s(e=>{let t=e.detail;t&&b(t)},[b]),eE=s(e=>{let t=e.detail;t&&S(t)},[S]),eL=s(e=>{let t=e.detail;t&&R(t)},[R]),eb=s(e=>{let t=e.detail.value,n=e.detail.mode,i=e.detail.settingType;W(t),G(n),J(i)},[W,G,J]),eS=s(e=>{let t=e.detail.settingType;J(t)},[J]),eI=s(e=>{let t=e.detail.mode;console.log(t),Q(t)},[Q]),eT=s(e=>{let t=e.detail;z(t)},[z]);return c(()=>(window.addEventListener("update-shop-info",ee),window.addEventListener("revalidate-query",Z),window.addEventListener("init-builder",en),window.addEventListener("add-entity",ei),window.addEventListener("remove-entity",er),window.addEventListener("move-entity",ea),window.addEventListener("force-update-entity-props",ed),window.addEventListener("update-entity-prop",eo),window.addEventListener("set-global-style",et),window.addEventListener("update-global-swatches-data",el),window.addEventListener("on-off-header-footer",es),window.addEventListener("update-create-theme-section-count",ec),window.addEventListener("update-shop-plan",em),window.addEventListener("set-dynamic-product",ew),window.addEventListener("set-dynamic-collection",ev),window.addEventListener("update-item-name",ey),window.addEventListener("update-item-attribute",ef),window.addEventListener("set-product-offer",eg),window.addEventListener("set-dynamic-discount-offer",eh),window.addEventListener("update-sale-page-product-id",eE),window.addEventListener("limit-create-theme-section",eL),window.addEventListener("update-interaction-is-select-on-page",eb),window.addEventListener("update-interaction-item",eT),window.addEventListener("update-interaction-setting-type",eS),window.addEventListener("change-sidebar-mode",eI),window.addEventListener("update-font-type",eu),window.addEventListener("update-price-with-currency",ep),()=>{window.removeEventListener("update-shop-info",ee),window.removeEventListener("revalidate-query",Z),window.removeEventListener("init-builder",en),window.removeEventListener("add-entity",ei),window.removeEventListener("remove-entity",er),window.removeEventListener("move-entity",ea),window.removeEventListener("update-entity-prop",eo),window.removeEventListener("set-global-style",et),window.removeEventListener("update-global-swatches-data",el),window.removeEventListener("on-off-header-footer",es),window.removeEventListener("update-create-theme-section-count",ec),window.removeEventListener("update-shop-plan",em),window.removeEventListener("update-price-with-currency",ep),window.removeEventListener("set-dynamic-product",ew),window.removeEventListener("set-dynamic-collection",ev),window.removeEventListener("update-item-name",ey),window.removeEventListener("update-item-attribute",ef),window.removeEventListener("set-product-offer",eg),window.removeEventListener("update-sale-page-product-id",eE),window.removeEventListener("limit-create-theme-section",eL),window.removeEventListener("update-interaction-is-select-on-page",eb),window.removeEventListener("update-interaction-item",eT),window.removeEventListener("update-interaction-setting-type",eS),window.removeEventListener("update-font-type",eu)}),[ei,em,ed,eo,en,ea,er,et,el,Z,ee,es,ec,ew,ev,ey,ef,eg,eE,eL,eT,eb,eS,eu,eI,eh,ep]),e("div",{className:"toolbox"})};var Toolbox$1=r(Toolbox);export{Toolbox$1 as default};
@@ -1 +1 @@
1
- import{PublishedThemePagesDocument as e,StorePropertyDocument as o,PublishedShopMetasDocument as t}from"@gem-sdk/core";import{ShopMetaDocument as a}from"@gem-sdk/adapter-shopify";import{getFontStyleFromPageTemplate as l,getFontFromGlobalStyle as s}from"../google-fonts.js";import{genCSS as i}from"../helpers/gen-css.js";import{getFallbackV2 as r}from"../helpers/get-fallback.js";import{parseBuilderTemplateV2 as n}from"../helpers/normalize.js";import{parseJson as m,serializableJson as d}from"../helpers/parse-json.js";import{captureException as p}from"@sentry/nextjs";import{PublishedThemePageMetafields as u}from"../../constants/index.js";import{getPublishedThemePageMetafieldByKey as f}from"../helpers/get-metafield.js";import{getCustomFonts as c}from"../custom-fonts.js";import{generateSeoLinks as h}from"../helpers/generate-seo-links.js";let getHomePagePropsV2=(g,T)=>async()=>{try{let p={slugType:"STATIC"},[_,A,y,I]=await Promise.allSettled([g([e,p]),g([o]),T([a]),g([t,{keys:[u.GLOBAL_META_DESCRIPTION,u.GLOBAL_META_THUMBNAIL]}])]);if("rejected"===_.status)throw Error(_.reason?.[0]);let L="fulfilled"===I.status?I.value:void 0,C=_.value?.publishedThemePages?.[0],P=_.value?.publishedThemePages?.[0]?.themePageCustomFonts;if(!C)throw Error("No data builder found for Home page");let E=n(C),[S,v,M,O]=await Promise.all([l(E,void 0,C?.pageStyle?.data),s(C?.pageStyle?.data,void 0),r(g,E),c(P)]),j=C.isMobile??!1,k=f(u.GLOBAL_META_DESCRIPTION,C?.metafields)||L?.publishedShopMetas?.find(e=>e?.key===u.GLOBAL_META_DESCRIPTION)?.value,B=m(f(u.GLOBAL_META_THUMBNAIL,C?.metafields)||L?.publishedShopMetas?.find(e=>e?.key===u.GLOBAL_META_THUMBNAIL)?.value),D="fulfilled"===y.status?y.value:void 0,N="fulfilled"===A.status?A.value:void 0,H=N?.storeProperty?.favicon??"/favicon/favicon-32x32.png",b={defaultTitle:D?.shop.name,title:C?.name??"Home",description:k??D?.shop.description,openGraph:{site_name:D?.shop.name,locale:D?.localization.country.isoCode,title:C?.name??D?.shop.name,description:k??D?.shop.description,images:B?[B]:[]},additionalMetaTags:[{name:"theme-color",content:"#000000"}],canonical:`https://${N?.storeProperty?.primaryDomain}/`,additionalLinkTags:h({favicon:H,shopMeta:D})},G=D?.localization.language.isoCode??null,w=D?.localization.country.isoCode??null,x=G&&w?`${G}-${w}`:null;return d({themeStyle:i(C?.pageStyle?.data,j),fontStyle:v,elementFontStyle:S,builderData:E,swr:{fallback:M},moneyFormat:D?.shop.moneyFormat??null,currency:D?.localization.country.currency.isoCode??null,languageIsoCode:G,countryIsoCode:w,locale:x,swatches:m(N?.storeProperty?.swatchesConfig),seo:b,mobileOnly:j,gaTrackingId:f(u.ANALYTICS_GA_TRACKING_ID,C?.metafields)??null,facebookPixelId:f(u.ANALYTICS_FB_PIXEL_ID,C?.metafields)??null,tiktokPixelId:f(u.ANALYTICS_TIKTOK_PIXEL_ID,C?.metafields)??null,customCodeHeader:f(u.CUSTOM_CODE_HEADER,C?.metafields)??null,customCodeBody:f(u.CUSTOM_CODE_BODY,C?.metafields)??null,pageHandle:C.handle??null,customFonts:O})}catch(e){throw p(e),e}};export{getHomePagePropsV2};
1
+ import{PublishedThemePagesDocument as e,StorePropertyDocument as o,PublishedShopMetasDocument as t}from"@gem-sdk/core";import{ShopMetaDocument as a}from"@gem-sdk/adapter-shopify";import{getFontStyleFromPageTemplate as l,getFontFromGlobalStyle as s}from"../google-fonts.js";import{genCSS as i}from"../helpers/gen-css.js";import{getFallbackV2 as r}from"../helpers/get-fallback.js";import{parseBuilderTemplateV2 as n}from"../helpers/normalize.js";import{parseJson as m,serializableJson as d}from"../helpers/parse-json.js";import{captureException as p}from"@sentry/nextjs";import{PublishedThemePageMetafields as u}from"../../constants/index.js";import{getPublishedThemePageMetafieldByKey as f}from"../helpers/get-metafield.js";import{getCustomFonts as c}from"../custom-fonts.js";import{generateSeoLinks as h}from"../helpers/generate-seo-links.js";let getHomePagePropsV2=(g,T)=>async()=>{try{let p={slugType:"STATIC"},[_,A,y,I]=await Promise.allSettled([g([e,p]),g([o]),T([a]),g([t,{keys:[u.GLOBAL_META_DESCRIPTION,u.GLOBAL_META_THUMBNAIL]}])]);if("rejected"===_.status)throw Error(_.reason?.[0]);let L="fulfilled"===I.status?I.value:void 0,C=_.value?.publishedThemePages?.[0],P=_.value?.publishedThemePages?.[0]?.themePageCustomFonts;if(!C)throw Error("No data builder found for Home page");let E=n(C),[M,O,S,v]=await Promise.all([l(E),s(C?.pageStyle?.data),r(g,E),c(P)]),j=C.isMobile??!1,k=f(u.GLOBAL_META_DESCRIPTION,C?.metafields)||L?.publishedShopMetas?.find(e=>e?.key===u.GLOBAL_META_DESCRIPTION)?.value,B=m(f(u.GLOBAL_META_THUMBNAIL,C?.metafields)||L?.publishedShopMetas?.find(e=>e?.key===u.GLOBAL_META_THUMBNAIL)?.value),D="fulfilled"===y.status?y.value:void 0,N="fulfilled"===A.status?A.value:void 0,H=N?.storeProperty?.favicon??"/favicon/favicon-32x32.png",b={defaultTitle:D?.shop.name,title:C?.name??"Home",description:k??D?.shop.description,openGraph:{site_name:D?.shop.name,locale:D?.localization.country.isoCode,title:C?.name??D?.shop.name,description:k??D?.shop.description,images:B?[B]:[]},additionalMetaTags:[{name:"theme-color",content:"#000000"}],canonical:`https://${N?.storeProperty?.primaryDomain}/`,additionalLinkTags:h({favicon:H,shopMeta:D})},G=D?.localization.language.isoCode??null,w=D?.localization.country.isoCode??null,x=G&&w?`${G}-${w}`:null;return d({themeStyle:i(C?.pageStyle?.data,j),fontStyle:O,elementFontStyle:M,builderData:E,swr:{fallback:S},moneyFormat:D?.shop.moneyFormat??null,currency:D?.localization.country.currency.isoCode??null,languageIsoCode:G,countryIsoCode:w,locale:x,swatches:m(N?.storeProperty?.swatchesConfig),seo:b,mobileOnly:j,gaTrackingId:f(u.ANALYTICS_GA_TRACKING_ID,C?.metafields)??null,facebookPixelId:f(u.ANALYTICS_FB_PIXEL_ID,C?.metafields)??null,tiktokPixelId:f(u.ANALYTICS_TIKTOK_PIXEL_ID,C?.metafields)??null,customCodeHeader:f(u.CUSTOM_CODE_HEADER,C?.metafields)??null,customCodeBody:f(u.CUSTOM_CODE_BODY,C?.metafields)??null,pageHandle:C.handle??null,customFonts:v})}catch(e){throw p(e),e}};export{getHomePagePropsV2};
@@ -1 +1 @@
1
- import{PublishedThemePagesDocument as e,StorePropertyDocument as o,PublishedShopMetasDocument as s,prefetchQueries as t}from"@gem-sdk/core";import{ShopMetaDocument as r}from"@gem-sdk/adapter-shopify";import{getFontFromGlobalStyle as a}from"../google-fonts.js";import{genCSS as i}from"../helpers/gen-css.js";import{generateManifest as l}from"../helpers/generate-manifres.js";import{parseBuilderTemplate as n}from"../helpers/normalize.js";import{parseJson as p,serializableJson as m}from"../helpers/parse-json.js";import{PublishedThemePageMetafields as c}from"../../constants/index.js";import{getPublishedThemePageMetafieldByKey as d}from"../helpers/get-metafield.js";let getHomePageProps=(f,u)=>async()=>{let h="STATIC",g={slugType:h},[y,_,T,A]=await Promise.allSettled([f([e,g]),f([o]),u([r]),f([s,{keys:[c.GLOBAL_META_DESCRIPTION,c.GLOBAL_META_THUMBNAIL]}])]);if("rejected"===y.status)return{pageType:h};let L="fulfilled"===A.status?A.value:void 0,z=y.value.publishedThemePages?.[0],v=n(z),x=await a(z?.pageStyle?.data,void 0),M=t(v),P=await Promise.allSettled(M.map(({query:e,variables:o,func:s})=>s?s(f,o):e?f([e,o]):{})),S=M.reduce((e,{key:o},s)=>{let t=P[s];return t?.status==="fulfilled"?{...e,[o]:t.value}:e},{}),I=d(c.GLOBAL_META_DESCRIPTION,z?.metafields)||L?.publishedShopMetas?.find(e=>e?.key===c.GLOBAL_META_DESCRIPTION)?.value,j=p(d(c.GLOBAL_META_THUMBNAIL,z?.metafields)||L?.publishedShopMetas?.find(e=>e?.key===c.GLOBAL_META_THUMBNAIL)?.value),B="fulfilled"===T.status?T.value:void 0,C="fulfilled"===_.status?_.value:void 0,E=C?.storeProperty?.favicon??"/favicon/favicon-32x32.png",O={defaultTitle:B?.shop.name,title:z?.name??"Home",description:I??B?.shop.description,openGraph:{site_name:B?.shop.name,locale:B?.localization.country.isoCode,title:z?.name??B?.shop.name,description:I??B?.shop.description,images:j?[j]:[]},additionalMetaTags:[{name:"theme-color",content:"#000000"}],canonical:"/",additionalLinkTags:[{rel:"icon",sizes:"32x32",href:`${E}-/crop/1:1/center/-/smart_resize/32x32/`},{rel:"icon",sizes:"16x16",href:`${E}-/crop/1:1/center/-/smart_resize/16x16/`},{rel:"apple-touch-icon",sizes:"180x180",href:`${E}-/crop/1:1/center/-/smart_resize/180x180/`},{rel:"manifest",href:l({theme_color:"#000000",background_color:"#ffffff",display:"standalone",scope:"/",start_url:"/",name:B?.shop.name,short_name:B?.shop.name,description:B?.shop.description,icons:[{src:`${E}-/crop/1:1/center/-/smart_resize/192x192/`,sizes:"192x192",type:"image/png",purpose:"any maskable"},{src:`${E}-/crop/1:1/center/-/smart_resize/512x512/`,sizes:"512x512",type:"image/png"}]})}]},k=B?.localization.language.isoCode??null,G=B?.localization.country.isoCode??null,$=k&&G?`${k}-${G}`:null;return m({themeStyle:i(z?.pageStyle?.data),fontStyle:x,builderData:v,pageType:h,swr:{fallback:S},moneyFormat:B?.shop.moneyFormat??null,currency:B?.localization.country.currency.isoCode??null,locale:$,languageIsoCode:k,countryIsoCode:G,swatches:p(C?.storeProperty?.swatchesConfig),seo:O})};export{getHomePageProps};
1
+ import{PublishedThemePagesDocument as e,StorePropertyDocument as o,PublishedShopMetasDocument as s,prefetchQueries as t}from"@gem-sdk/core";import{ShopMetaDocument as r}from"@gem-sdk/adapter-shopify";import{getFontFromGlobalStyle as a}from"../google-fonts.js";import{genCSS as i}from"../helpers/gen-css.js";import{generateManifest as l}from"../helpers/generate-manifres.js";import{parseBuilderTemplate as n}from"../helpers/normalize.js";import{parseJson as p,serializableJson as m}from"../helpers/parse-json.js";import{PublishedThemePageMetafields as c}from"../../constants/index.js";import{getPublishedThemePageMetafieldByKey as d}from"../helpers/get-metafield.js";let getHomePageProps=(f,u)=>async()=>{let h="STATIC",g={slugType:h},[y,_,T,A]=await Promise.allSettled([f([e,g]),f([o]),u([r]),f([s,{keys:[c.GLOBAL_META_DESCRIPTION,c.GLOBAL_META_THUMBNAIL]}])]);if("rejected"===y.status)return{pageType:h};let L="fulfilled"===A.status?A.value:void 0,z=y.value.publishedThemePages?.[0],v=n(z),x=await a(z?.pageStyle?.data),M=t(v),P=await Promise.allSettled(M.map(({query:e,variables:o,func:s})=>s?s(f,o):e?f([e,o]):{})),S=M.reduce((e,{key:o},s)=>{let t=P[s];return t?.status==="fulfilled"?{...e,[o]:t.value}:e},{}),I=d(c.GLOBAL_META_DESCRIPTION,z?.metafields)||L?.publishedShopMetas?.find(e=>e?.key===c.GLOBAL_META_DESCRIPTION)?.value,j=p(d(c.GLOBAL_META_THUMBNAIL,z?.metafields)||L?.publishedShopMetas?.find(e=>e?.key===c.GLOBAL_META_THUMBNAIL)?.value),B="fulfilled"===T.status?T.value:void 0,C="fulfilled"===_.status?_.value:void 0,E=C?.storeProperty?.favicon??"/favicon/favicon-32x32.png",O={defaultTitle:B?.shop.name,title:z?.name??"Home",description:I??B?.shop.description,openGraph:{site_name:B?.shop.name,locale:B?.localization.country.isoCode,title:z?.name??B?.shop.name,description:I??B?.shop.description,images:j?[j]:[]},additionalMetaTags:[{name:"theme-color",content:"#000000"}],canonical:"/",additionalLinkTags:[{rel:"icon",sizes:"32x32",href:`${E}-/crop/1:1/center/-/smart_resize/32x32/`},{rel:"icon",sizes:"16x16",href:`${E}-/crop/1:1/center/-/smart_resize/16x16/`},{rel:"apple-touch-icon",sizes:"180x180",href:`${E}-/crop/1:1/center/-/smart_resize/180x180/`},{rel:"manifest",href:l({theme_color:"#000000",background_color:"#ffffff",display:"standalone",scope:"/",start_url:"/",name:B?.shop.name,short_name:B?.shop.name,description:B?.shop.description,icons:[{src:`${E}-/crop/1:1/center/-/smart_resize/192x192/`,sizes:"192x192",type:"image/png",purpose:"any maskable"},{src:`${E}-/crop/1:1/center/-/smart_resize/512x512/`,sizes:"512x512",type:"image/png"}]})}]},k=B?.localization.language.isoCode??null,G=B?.localization.country.isoCode??null,$=k&&G?`${k}-${G}`:null;return m({themeStyle:i(z?.pageStyle?.data),fontStyle:x,builderData:v,pageType:h,swr:{fallback:S},moneyFormat:B?.shop.moneyFormat??null,currency:B?.localization.country.currency.isoCode??null,locale:$,languageIsoCode:k,countryIsoCode:G,swatches:p(C?.storeProperty?.swatchesConfig),seo:O})};export{getHomePageProps};
@@ -1 +1 @@
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,getFontFromGlobalStyle 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),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
+ 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,getFontFromGlobalStyle 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),n(I),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 +1 @@
1
- import{PublishedThemePagesDocument as e,StorePropertyDocument as o,PublishedShopMetasDocument as t}from"@gem-sdk/core";import{ShopMetaDocument as a}from"@gem-sdk/adapter-shopify";import{getFontStyleFromPageTemplate as l,getFontFromGlobalStyle as s}from"../google-fonts.js";import{genCSS as i}from"../helpers/gen-css.js";import{getFallbackV2 as r}from"../helpers/get-fallback.js";import{parseBuilderTemplateV2 as n,extractPageBackground as d}from"../helpers/normalize.js";import{parseJson as m,serializableJson as p}from"../helpers/parse-json.js";import{captureException as u}from"@sentry/nextjs";import{getCustomFonts as f}from"../custom-fonts.js";import{getPublishedThemePageMetafieldByKey as c}from"../helpers/get-metafield.js";import{PublishedThemePageMetafields as h}from"../../constants/index.js";import{generateSeoLinks as _}from"../helpers/generate-seo-links.js";let getStaticPagePropsV2=(T,g)=>async L=>{try{let u="STATIC",A={slug:L,slugType:u},[y,E,I,O]=await Promise.allSettled([T([e,A]),T([o]),g([a]),T([t,{keys:["source_font",h.GLOBAL_META_DESCRIPTION,h.GLOBAL_META_THUMBNAIL]}])]);if("rejected"===y.status)throw Error(y.reason?.[0]);let S="fulfilled"===O.status?O.value:void 0,M=S?.publishedShopMetas?.find(e=>e?.key==="source_font"),C=y.value.publishedThemePages?.[0],P=y.value?.publishedThemePages?.[0]?.themePageCustomFonts;if(!C)throw Error(`No data builder found for slug: /${L}`);let v=n(C),[k,N,B,D]=await Promise.all([l(v,M?.value,C?.pageStyle?.data),s(C?.pageStyle?.data,M?.value),r(T,v),f(P)]),b=C.isMobile??!1,j=c(h.GLOBAL_META_DESCRIPTION,C?.metafields)||S?.publishedShopMetas?.find(e=>e?.key===h.GLOBAL_META_DESCRIPTION)?.value,G=c(h.GLOBAL_META_TITLE,C?.metafields)||S?.publishedShopMetas?.find(e=>e?.key===h.GLOBAL_META_TITLE)?.value,w=m(c(h.GLOBAL_META_THUMBNAIL,C?.metafields)||S?.publishedShopMetas?.find(e=>e?.key===h.GLOBAL_META_THUMBNAIL)?.value),Y=c(h.NOINDEX_KEY,C?.metafields)||S?.publishedShopMetas?.find(e=>e?.key===h.NOINDEX_KEY)?.value,x=c(h.NOFOLLOW_KEY,C?.metafields)||S?.publishedShopMetas?.find(e=>e?.key===h.NOFOLLOW_KEY)?.value,K="fulfilled"===I.status?I.value:void 0,F="fulfilled"===E.status?E.value:void 0,H=F?.storeProperty?.favicon??"/favicon/favicon-32x32.png",z={defaultTitle:K?.shop.name,title:G||C?.name,description:j??K?.shop.description,openGraph:{site_name:K?.shop.name,locale:K?.localization.country.isoCode,title:(G||C?.name)??K?.shop.name,description:j??K?.shop.description,images:w?[w]:[]},noindex:"true"===Y,nofollow:"true"===x,canonical:`https://${F?.storeProperty?.primaryDomain}/${L}`,additionalMetaTags:[{name:"theme-color",content:"#000000"}],additionalLinkTags:_({favicon:H,shopMeta:K})},R=K?.localization.language.isoCode??null,U=K?.localization.country.isoCode??null,$=R&&U?`${R}-${U}`:null;return p({themeStyle:i(C?.pageStyle?.data,b),fontStyle:N,elementFontStyle:k,builderData:v,pageType:u,moneyFormat:K?.shop.moneyFormat??null,currency:K?.localization.country.currency.isoCode??null,languageIsoCode:R,countryIsoCode:U,locale:$,swr:{fallback:B},swatches:m(F?.storeProperty?.swatchesConfig),seo:z,mobileOnly:b,gaTrackingId:c(h.ANALYTICS_GA_TRACKING_ID,C?.metafields)??null,facebookPixelId:c(h.ANALYTICS_FB_PIXEL_ID,C?.metafields)??null,tiktokPixelId:c(h.ANALYTICS_TIKTOK_PIXEL_ID,C?.metafields)??null,customCodeHeader:c(h.CUSTOM_CODE_HEADER,C?.metafields)??null,customCodeBody:c(h.CUSTOM_CODE_BODY,C?.metafields)??null,pageHandle:C.handle??null,customFonts:D,interaction:C?.interaction,pageBackground:d(C)})}catch(e){throw u(e),e}};export{getStaticPagePropsV2};
1
+ import{PublishedThemePagesDocument as e,StorePropertyDocument as o,PublishedShopMetasDocument as t}from"@gem-sdk/core";import{ShopMetaDocument as a}from"@gem-sdk/adapter-shopify";import{getFontStyleFromPageTemplate as l,getFontFromGlobalStyle as s}from"../google-fonts.js";import{genCSS as i}from"../helpers/gen-css.js";import{getFallbackV2 as r}from"../helpers/get-fallback.js";import{parseBuilderTemplateV2 as n,extractPageBackground as d}from"../helpers/normalize.js";import{parseJson as m,serializableJson as p}from"../helpers/parse-json.js";import{captureException as u}from"@sentry/nextjs";import{getCustomFonts as f}from"../custom-fonts.js";import{getPublishedThemePageMetafieldByKey as c}from"../helpers/get-metafield.js";import{PublishedThemePageMetafields as h}from"../../constants/index.js";import{generateSeoLinks as _}from"../helpers/generate-seo-links.js";let getStaticPagePropsV2=(T,g)=>async L=>{try{let u="STATIC",A={slug:L,slugType:u},[y,E,I,O]=await Promise.allSettled([T([e,A]),T([o]),g([a]),T([t,{keys:["source_font",h.GLOBAL_META_DESCRIPTION,h.GLOBAL_META_THUMBNAIL]}])]);if("rejected"===y.status)throw Error(y.reason?.[0]);let M="fulfilled"===O.status?O.value:void 0,S=M?.publishedShopMetas?.find(e=>e?.key==="source_font"),C=y.value.publishedThemePages?.[0],P=y.value?.publishedThemePages?.[0]?.themePageCustomFonts;if(!C)throw Error(`No data builder found for slug: /${L}`);let v=n(C),[k,N,B,D]=await Promise.all([l(v,S?.value),s(C?.pageStyle?.data,S?.value),r(T,v),f(P)]),b=C.isMobile??!1,j=c(h.GLOBAL_META_DESCRIPTION,C?.metafields)||M?.publishedShopMetas?.find(e=>e?.key===h.GLOBAL_META_DESCRIPTION)?.value,G=c(h.GLOBAL_META_TITLE,C?.metafields)||M?.publishedShopMetas?.find(e=>e?.key===h.GLOBAL_META_TITLE)?.value,w=m(c(h.GLOBAL_META_THUMBNAIL,C?.metafields)||M?.publishedShopMetas?.find(e=>e?.key===h.GLOBAL_META_THUMBNAIL)?.value),Y=c(h.NOINDEX_KEY,C?.metafields)||M?.publishedShopMetas?.find(e=>e?.key===h.NOINDEX_KEY)?.value,x=c(h.NOFOLLOW_KEY,C?.metafields)||M?.publishedShopMetas?.find(e=>e?.key===h.NOFOLLOW_KEY)?.value,K="fulfilled"===I.status?I.value:void 0,F="fulfilled"===E.status?E.value:void 0,H=F?.storeProperty?.favicon??"/favicon/favicon-32x32.png",z={defaultTitle:K?.shop.name,title:G||C?.name,description:j??K?.shop.description,openGraph:{site_name:K?.shop.name,locale:K?.localization.country.isoCode,title:(G||C?.name)??K?.shop.name,description:j??K?.shop.description,images:w?[w]:[]},noindex:"true"===Y,nofollow:"true"===x,canonical:`https://${F?.storeProperty?.primaryDomain}/${L}`,additionalMetaTags:[{name:"theme-color",content:"#000000"}],additionalLinkTags:_({favicon:H,shopMeta:K})},R=K?.localization.language.isoCode??null,U=K?.localization.country.isoCode??null,$=R&&U?`${R}-${U}`:null;return p({themeStyle:i(C?.pageStyle?.data,b),fontStyle:N,elementFontStyle:k,builderData:v,pageType:u,moneyFormat:K?.shop.moneyFormat??null,currency:K?.localization.country.currency.isoCode??null,languageIsoCode:R,countryIsoCode:U,locale:$,swr:{fallback:B},swatches:m(F?.storeProperty?.swatchesConfig),seo:z,mobileOnly:b,gaTrackingId:c(h.ANALYTICS_GA_TRACKING_ID,C?.metafields)??null,facebookPixelId:c(h.ANALYTICS_FB_PIXEL_ID,C?.metafields)??null,tiktokPixelId:c(h.ANALYTICS_TIKTOK_PIXEL_ID,C?.metafields)??null,customCodeHeader:c(h.CUSTOM_CODE_HEADER,C?.metafields)??null,customCodeBody:c(h.CUSTOM_CODE_BODY,C?.metafields)??null,pageHandle:C.handle??null,customFonts:D,interaction:C?.interaction,pageBackground:d(C)})}catch(e){throw u(e),e}};export{getStaticPagePropsV2};
@@ -1 +1 @@
1
- import{checkNotInOptionFont as t}from"./helpers/check-option-font.js";import{getFontsFromDataBuilder as e}from"./helpers/gen-fonts.js";import{sentryCaptureException as r}from"./helpers/sentry.js";let CHROME_UA="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36",IE_UA="Mozilla/5.0 (Windows NT 10.0; Trident/7.0; rv:11.0) like Gecko";async function getFontForUA(t,e){try{return fetch(t,{headers:{"User-Agent":e}}).then(a=>200===a.status?a.text():(r("getFontForUA",`Unexpected status ${a.status}`,{url:t,UA:e}),""))}catch(a){return r("getFontForUA","Error fetching font",{url:t,UA:e,error:a}),""}}let composeFonts=t=>{let e=t.filter((t,e,r)=>e===r.findIndex(e=>e.family===t.family));return e.map(e=>{let r=t.filter(t=>t.family===e.family).reduce((t,e)=>[...t,...e.variants],[]).filter((t,e,r)=>e===r.findIndex(e=>e===t));return{...e,variants:r}})},GOOGLE_CSS2_OVERRIDES={"Roboto Flex":"https://fonts.googleapis.com/css2?family=Roboto+Flex:opsz,wght@8..144,100..1000&display=swap"},normalizeFamily=t=>t?.trim().replace(/\s+/g,"+")??"",getOverrideUrlForFamily=t=>{let e=normalizeFamily(t);return GOOGLE_CSS2_OVERRIDES[t]??GOOGLE_CSS2_OVERRIDES[e]},VARIANT_WEIGHT_MAP={regular:"400",normal:"400",bold:"700",italic:"400italic"},isValidFont=(e,r,a)=>{let n="google"===e.type||"bunny"===e.type,o="theme"===e.type&&a,l=t(e.family,r);return!(n&&l)&&(n||!e.type||o)},normalizeVariant=t=>{let e=String(t).toLowerCase().trim();return VARIANT_WEIGHT_MAP[e]??t},sortFontVariants=t=>{let e=t=>{let e=String(t).toLowerCase().trim(),r=e.includes("italic"),a=e.replace("italic","").trim(),n=VARIANT_WEIGHT_MAP[a]??a,o=parseInt(n,10)||400;return{weight:o,isItalic:r}};return[...t].sort((t,r)=>{let a=e(t),n=e(r);return a.weight!==n.weight?a.weight-n.weight:a.isItalic!==n.isItalic?a.isItalic?1:-1:0})},makeUrlBySourceFont=(t,e,r)=>{let a=composeFonts(t).map(t=>{let e=t.variants.map(t=>normalizeVariant(t)),r=sortFontVariants(e);return`${t.family.replace(/ /g,"+")}:${r.join(",")}`}).join("|");if("sans-serif"===a)return;let n=new URLSearchParams;n.append("family",a),n.append("display",r?.display||"swap"),r?.subset&&n.append("subset",r.subset),r?.effect&&n.append("effect",r.effect);let o=`https://fonts.bunny.net/css?family=${a}`,l=`https://fonts.googleapis.com/css?${decodeURIComponent(n.toString())}`;return"bunny"===e?o:l},createFontUrls=(t,e,r,a)=>{let n=t.filter(t=>isValidFont(t,r||"google",a));if(!n.length)return;let o=n.filter((t,e,r)=>e===r.findIndex(e=>e.family===t.family)),l=[],i=[];for(let t of o){let e=getOverrideUrlForFamily(t.family);e&&"bunny"!==r?l.push(e):i.push(t)}let s=i.length?makeUrlBySourceFont(i,r||"google",e):void 0;return l.length&&s?[...l,s]:s?[s,...l]:l};async function getFonts(t,e,a=!0,n){let o=createFontUrls(t,e,n),l=Array.isArray(o)?o:o?[o]:[];if(!l.length)return"";if(a)return l.map(t=>`@import url('${t}');`).join("");let i="",s="";for(let t of l)try{let[e,r]=await Promise.all([getFontForUA(t,"Mozilla/5.0 (Windows NT 10.0; Trident/7.0; rv:11.0) like Gecko"),getFontForUA(t,"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36")]),a=`${e}${r}`;i+=a,s+=`@import url('${t}');`}catch(e){r("getFonts","Error fetching font",{url:t,fontType:n,error:String(e)}),s+="",i+=""}let c=new TextEncoder().encode(i).length;return c<51200?i:s}let extractFontsFromPageTemplate=t=>{let r=[];return t.forEach(t=>{r.push(...e(t.data))}),composeFonts(r)},extractVariantFromTypography=(t,e)=>{let r="400";if(null!=t){let e=String(t).toLowerCase().trim();r=normalizeVariant(e)}let a=r,n=e&&"italic"===e.toLowerCase();return n&&!r.includes("italic")&&(a=r.includes("i")?r:`${r}italic`),a},extractTypographyVariants=t=>{let e=t?.typography??{},r=t?.font??{},a=new Map;Object.values(e).forEach(t=>{t&&"object"==typeof t&&["desktop","mobile","tablet"].forEach(e=>{let n=t[e];if(!n||"object"!=typeof n)return;let o=n.fontFamily;if(!o||"string"!=typeof o||!r[o])return;let l=extractVariantFromTypography(n.fontWeight,n.fontStyle);a.has(o)||a.set(o,new Set),a.get(o).add(l)})});let n={};return a.forEach((t,e)=>{let a=r[e];a&&(n[e]={variants:Array.from(t).sort(),family:a.family})}),n},getFontFromGlobalStyle=async(t,e)=>{if(!t)return"";try{let r=JSON.parse(t),a=r?.font??{},n=Object.values(a),o=extractTypographyVariants(r);return Object.keys(o).length>0&&(n=Object.entries(a).filter(([t])=>o[t]).map(([t,e])=>({...e,variants:o[t].variants}))),getFonts(n,void 0,void 0,e)}catch{return""}};async function getFontStyleFromPageTemplate(t,e,r){let a=JSON.parse(r),n=extractTypographyVariants(a),o=extractFontsFromPageTemplate(t),l=new Map;if(Object.values(n).forEach(t=>{l.set(t.family,new Set(t.variants))}),0===(o=o.map(t=>{let e=l.get(t.family);if(!e)return t;let r=t.variants.filter(t=>!e.has(t));return 0===r.length?null:{...t,variants:r}}).filter(t=>null!==t)).length)return[];let i=await getFonts(o,void 0,void 0,e);return i?[i]:[]}export{composeFonts,createFontUrls,extractTypographyVariants,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,o)=>{let n="google"===t.type||"bunny"===t.type,l="theme"===t.type&&o,i=e(t.family,r);return!(n&&i)&&(n||!t.type||l)},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=r?.display||"swap",l=new URLSearchParams;return(l.append("family",o),l.append("display",n),"bunny"===t)?`https://fonts.bunny.net/css?${l.toString()}`:(r?.subset&&l.append("subset",r.subset),r?.effect&&l.append("effect",r.effect),`https://fonts.googleapis.com/css?${decodeURIComponent(l.toString())}`)},createFontUrls=(e,t,r,o)=>{let n=e.filter(e=>isValidFont(e,r||"google",o));if(!n.length)return;let l=n.filter((e,t,r)=>t===r.findIndex(t=>t.family===e.family)),i=[],a=[];for(let e of l){let t=getOverrideUrlForFamily(e.family);t&&"bunny"!==r?i.push(t):a.push(e)}let s=a.length?makeUrlBySourceFont(a,r||"google",t):void 0;return i.length&&s?[...i,s]:s?[s,...i]:i};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=[];if(e.forEach(e=>{let r=t(e.data);o.push(...r)}),0===o.length)return[];let n=composeFonts(o),l=await getFonts(n,void 0,void 0,r);return l?[l]:[]}export{composeFonts,createFontUrls,getFontFromGlobalStyle,getFontStyleFromPageTemplate,getFonts};
@@ -1 +1 @@
1
- let EXCLUDED_FONT_FAMILIES=["sans-serif"],getFontsFromDataBuilder=t=>{let e=[];for(let o in t)if(Object.prototype.hasOwnProperty.call(t,o)){let l=t[o],n=l.styles,i=l.settings;getFontFromGroupSetting(e,n),getFontFromGroupSetting(e,i)}return e},getFontFromGroupSetting=(t,e)=>{let o=["normal","hover","focus","active","disabled","price","compareAtPrice"];for(let l in e)if(Object.prototype.hasOwnProperty.call(e,l)){let n=e[l];if(!n)continue;for(let e of(getFontValue(t,n),o))n[e]&&getFontValue(t,n[e])}},uniqueArray=t=>Array.from(new Set(t)),getFontValue=(t,e)=>{let o=e.custom?.fontFamily;"string"==typeof o&&(o={value:e.custom?.fontFamily||"",type:"google"});let l=o?.value;if(EXCLUDED_FONT_FAMILIES.includes(l))return;let n=e.custom?.fontVariants;if(n?.length||(n=[e.custom?.fontWeight]),o&&n?.length){let i=n.map(t=>"regular"===t?"400":t),r=e.custom?.fontWeight&&i.includes(e.custom?.fontWeight)?e.custom?.fontWeight:i[0];if(r){let n=uniqueArray([r,...e?.attrs?.isAlwaysLoadBold?["700"]:[],...e?.attrs?.loadFontStyles?.includes("bold")?["700"]:[]]);if(e?.attrs?.loadFontStyles?.includes("italic")){let t=n.map(t=>"string"==typeof t&&/^\d+$/.test(t)?`${t}i`:null).filter(t=>null!==t);n.push(...t)}let a=t.find(t=>t.family==l&&n.every(e=>t.variants.includes(e)));if(!a){let e=t.find(t=>t.family==l);e?n.forEach(t=>{e.variants.includes(t)||e.variants.push(t)}):("700"!==r&&i.includes("700")&&n.push("700"),t.push({family:l||"",variants:uniqueArray(n),subsets:[],type:o.type}))}}}};export{getFontFromGroupSetting,getFontsFromDataBuilder};
1
+ let EXCLUDED_FONT_FAMILIES=["sans-serif"],getFontsFromDataBuilder=t=>{let e=[];for(let o in t)if(Object.prototype.hasOwnProperty.call(t,o)){let n=t[o],r=n.styles,i=n.settings;getFontFromGroupSetting(e,r),getFontFromGroupSetting(e,i)}return e},getFontFromGroupSetting=(t,e)=>{let o=["normal","hover","focus","active","disabled","price","compareAtPrice"];for(let n in e)if(Object.prototype.hasOwnProperty.call(e,n)){let r=e[n];if(!r)continue;for(let e of(getFontValue(t,r),o))r[e]&&getFontValue(t,r[e])}},uniqueArray=t=>Array.from(new Set(t)),getFontValue=(t,e)=>{let o=e.custom?.fontFamily;"string"==typeof o&&(o={value:e.custom?.fontFamily||"",type:"google"});let n=o?.value;if(EXCLUDED_FONT_FAMILIES.includes(n))return;let r=e.custom?.fontVariants;if(r?.length||(r=[e.custom?.fontWeight]),o&&r?.length){let i=r.map(t=>"regular"===t?"400":t),l=e.custom?.fontWeight&&i.includes(e.custom?.fontWeight)?e.custom?.fontWeight:i[0];if(l){let r=uniqueArray([l,...e?.attrs?.isAlwaysLoadBold?["700"]:[]]),a=t.find(t=>t.family==n&&t.variants.includes(l));if(!a){let e=t.find(t=>t.family==n);e?e.variants.push(l):("700"!==l&&i.includes("700")&&r.push("700"),t.push({family:n||"",variants:r,subsets:[],type:o.type}))}}}};export{getFontFromGroupSetting,getFontsFromDataBuilder};
@@ -280,7 +280,7 @@ type FontOption = {
280
280
  effect?: string;
281
281
  };
282
282
  declare function getFonts(fonts: FontItem[], option?: FontOption, isImportFontByUrl?: boolean, fontType?: FontType): Promise<string>;
283
- declare const getFontFromGlobalStyle: (data?: string, sourceFont?: FontType) => Promise<string>;
283
+ declare const getFontFromGlobalStyle: (data?: string, sourceFont?: FontType) => "" | Promise<string>;
284
284
 
285
285
  declare const getFontsFromDataBuilder: (dataBuilder: Record<string, any>) => FontItem[];
286
286
  declare const getFontFromGroupSetting: (fonts: FontItem[], groupSetting: Record<string, any>) => void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gem-sdk/pages",
3
- "version": "7.0.1-dev.6",
3
+ "version": "7.0.1-staging.4",
4
4
  "license": "MIT",
5
5
  "sideEffects": false,
6
6
  "main": "dist/cjs/index.js",
@@ -26,10 +26,10 @@
26
26
  "next": "14.2.20"
27
27
  },
28
28
  "devDependencies": {
29
- "@gem-sdk/core": "7.0.1-dev.9",
30
- "@gem-sdk/plugin-cookie-bar": "7.0.1-dev.6",
31
- "@gem-sdk/plugin-quick-view": "7.0.1-dev.6",
32
- "@gem-sdk/plugin-sticky-add-to-cart": "7.0.1-dev.6"
29
+ "@gem-sdk/core": "7.0.1-staging.0",
30
+ "@gem-sdk/plugin-cookie-bar": "7.0.1-staging.0",
31
+ "@gem-sdk/plugin-quick-view": "7.0.1-staging.0",
32
+ "@gem-sdk/plugin-sticky-add-to-cart": "7.0.1-staging.0"
33
33
  },
34
34
  "peerDependencies": {
35
35
  "next": ">=14"