@gem-sdk/pages 2.0.0-dev.890 → 2.0.0-staging.120

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (144) hide show
  1. package/dist/cjs/components/ErrorBoundary.js +41 -1
  2. package/dist/cjs/components/ErrorFallback.js +27 -1
  3. package/dist/cjs/components/FacebookPixel.js +34 -3
  4. package/dist/cjs/components/FooterForPostPurchase.js +35 -1
  5. package/dist/cjs/components/GoogleAnalytic.js +66 -5
  6. package/dist/cjs/components/TikTokPixel.js +20 -3
  7. package/dist/cjs/components/builder/Body.js +37 -0
  8. package/dist/cjs/components/builder/Footer.js +155 -0
  9. package/dist/cjs/components/builder/Header.js +188 -0
  10. package/dist/cjs/components/builder/PopupManager.js +64 -1
  11. package/dist/cjs/components/builder/SwitchView.js +185 -0
  12. package/dist/cjs/components/builder/Toolbar.js +701 -1
  13. package/dist/cjs/components/builder/Toolbox.js +485 -1
  14. package/dist/cjs/components/builder/const.js +56 -0
  15. package/dist/cjs/components/builder/toolbar/const.js +7 -0
  16. package/dist/cjs/components/builder/toolbar/utils/findDOMClosest.js +41 -0
  17. package/dist/cjs/components/builder/toolbar/utils/findOverflowParent.js +20 -0
  18. package/dist/cjs/components/builder/toolbar/utils/getChildrenByAttrSelector.js +18 -0
  19. package/dist/cjs/components/builder/toolbar/utils/getDOMElementParents.js +32 -0
  20. package/dist/cjs/components/builder/toolbar/utils/isOverParent.js +16 -0
  21. package/dist/cjs/components/builder/toolbar/utils/isOverToolbarPosition.js +12 -0
  22. package/dist/cjs/components/builder/toolbar/utils/isSection.js +8 -0
  23. package/dist/cjs/components/builder/toolbar/utils/notVisible.js +8 -0
  24. package/dist/cjs/components/builder/toolbar/utils/waitForElementToExist.js +27 -0
  25. package/dist/cjs/components/image-to-layout/AddSectionImageToLayout.js +151 -1
  26. package/dist/cjs/components/image-to-layout/DropElement.js +167 -1
  27. package/dist/cjs/components/image-to-layout/ImageToLayout.js +42 -1
  28. package/dist/cjs/index.js +80 -1
  29. package/dist/cjs/layouts/main.js +31 -1
  30. package/dist/cjs/libs/api/get-builder-props.js +46 -1
  31. package/dist/cjs/libs/api/get-collection-props.js +68 -1
  32. package/dist/cjs/libs/api/get-home-page-props-v2.js +145 -1
  33. package/dist/cjs/libs/api/get-home-page-props.js +151 -1
  34. package/dist/cjs/libs/api/get-post-purchase-props-preview.js +268 -1
  35. package/dist/cjs/libs/api/get-preview-props.js +18 -1
  36. package/dist/cjs/libs/api/get-product-props.js +73 -1
  37. package/dist/cjs/libs/api/get-static-page-props-preview.js +155 -1
  38. package/dist/cjs/libs/api/get-static-page-props-v2.js +164 -1
  39. package/dist/cjs/libs/api/get-static-page-props.js +148 -1
  40. package/dist/cjs/libs/custom-fonts.js +60 -6
  41. package/dist/cjs/libs/fetcher.js +100 -1
  42. package/dist/cjs/libs/get-layout.js +13 -1
  43. package/dist/cjs/libs/get-storefront-api.js +12 -1
  44. package/dist/cjs/libs/getStaticPaths.js +10 -1
  45. package/dist/cjs/libs/google-fonts.js +118 -1
  46. package/dist/cjs/libs/helpers/check-option-font.js +65 -0
  47. package/dist/cjs/libs/helpers/common.js +27 -1
  48. package/dist/cjs/libs/helpers/gen-css.js +135 -1
  49. package/dist/cjs/libs/helpers/gen-fonts.js +90 -1
  50. package/dist/cjs/libs/helpers/generate-manifres.js +5 -1
  51. package/dist/cjs/libs/helpers/get-fallback.js +34 -1
  52. package/dist/cjs/libs/helpers/normalize.js +111 -1
  53. package/dist/cjs/libs/helpers/parse-json.js +16 -1
  54. package/dist/cjs/libs/helpers/user-agent.js +7 -1
  55. package/dist/cjs/libs/hooks/use-tracking-view.js +43 -1
  56. package/dist/cjs/libs/hooks/usePagePreview.js +92 -1
  57. package/dist/cjs/libs/parse-html.js +34 -1
  58. package/dist/cjs/libs/shopify-cdn-with-google-fonts.js +1845 -1
  59. package/dist/cjs/pages/404.js +43 -1
  60. package/dist/cjs/pages/500.js +74 -1
  61. package/dist/cjs/pages/CollectionGlobalProvider.js +59 -1
  62. package/dist/cjs/pages/builder.js +115 -1
  63. package/dist/cjs/pages/collection-detail.js +64 -1
  64. package/dist/cjs/pages/preview.js +26 -1
  65. package/dist/cjs/pages/product-detail.js +69 -1
  66. package/dist/cjs/pages/static-v2.js +139 -1
  67. package/dist/cjs/pages/static.js +75 -1
  68. package/dist/cjs/store/libs-store.js +14 -0
  69. package/dist/esm/components/ErrorBoundary.js +39 -1
  70. package/dist/esm/components/ErrorFallback.js +25 -1
  71. package/dist/esm/components/FacebookPixel.js +32 -3
  72. package/dist/esm/components/FooterForPostPurchase.js +31 -1
  73. package/dist/esm/components/GoogleAnalytic.js +64 -5
  74. package/dist/esm/components/TikTokPixel.js +18 -3
  75. package/dist/esm/components/builder/Body.js +33 -0
  76. package/dist/esm/components/builder/Footer.js +151 -0
  77. package/dist/esm/components/builder/Header.js +184 -0
  78. package/dist/esm/components/builder/PopupManager.js +60 -1
  79. package/dist/esm/components/builder/SwitchView.js +181 -0
  80. package/dist/esm/components/builder/Toolbar.js +697 -1
  81. package/dist/esm/components/builder/Toolbox.js +481 -1
  82. package/dist/esm/components/builder/const.js +54 -0
  83. package/dist/esm/components/builder/toolbar/const.js +4 -0
  84. package/dist/esm/components/builder/toolbar/utils/findDOMClosest.js +39 -0
  85. package/dist/esm/components/builder/toolbar/utils/findOverflowParent.js +18 -0
  86. package/dist/esm/components/builder/toolbar/utils/getChildrenByAttrSelector.js +16 -0
  87. package/dist/esm/components/builder/toolbar/utils/getDOMElementParents.js +30 -0
  88. package/dist/esm/components/builder/toolbar/utils/isOverParent.js +14 -0
  89. package/dist/esm/components/builder/toolbar/utils/isOverToolbarPosition.js +10 -0
  90. package/dist/esm/components/builder/toolbar/utils/isSection.js +6 -0
  91. package/dist/esm/components/builder/toolbar/utils/notVisible.js +6 -0
  92. package/dist/esm/components/builder/toolbar/utils/waitForElementToExist.js +25 -0
  93. package/dist/esm/components/image-to-layout/AddSectionImageToLayout.js +147 -1
  94. package/dist/esm/components/image-to-layout/DropElement.js +165 -1
  95. package/dist/esm/components/image-to-layout/ImageToLayout.js +38 -1
  96. package/dist/esm/index.js +35 -1
  97. package/dist/esm/layouts/main.js +27 -1
  98. package/dist/esm/libs/api/get-builder-props.js +44 -1
  99. package/dist/esm/libs/api/get-collection-props.js +66 -1
  100. package/dist/esm/libs/api/get-home-page-props-v2.js +143 -1
  101. package/dist/esm/libs/api/get-home-page-props.js +149 -1
  102. package/dist/esm/libs/api/get-post-purchase-props-preview.js +260 -1
  103. package/dist/esm/libs/api/get-preview-props.js +16 -1
  104. package/dist/esm/libs/api/get-product-props.js +71 -1
  105. package/dist/esm/libs/api/get-static-page-props-preview.js +153 -1
  106. package/dist/esm/libs/api/get-static-page-props-v2.js +162 -1
  107. package/dist/esm/libs/api/get-static-page-props.js +146 -1
  108. package/dist/esm/libs/custom-fonts.js +55 -6
  109. package/dist/esm/libs/fetcher.js +96 -1
  110. package/dist/esm/libs/get-layout.js +11 -1
  111. package/dist/esm/libs/get-storefront-api.js +10 -1
  112. package/dist/esm/libs/getStaticPaths.js +8 -1
  113. package/dist/esm/libs/google-fonts.js +112 -1
  114. package/dist/esm/libs/helpers/check-option-font.js +63 -0
  115. package/dist/esm/libs/helpers/common.js +24 -1
  116. package/dist/esm/libs/helpers/gen-css.js +133 -1
  117. package/dist/esm/libs/helpers/gen-fonts.js +87 -1
  118. package/dist/esm/libs/helpers/generate-manifres.js +3 -1
  119. package/dist/esm/libs/helpers/get-fallback.js +32 -1
  120. package/dist/esm/libs/helpers/normalize.js +103 -1
  121. package/dist/esm/libs/helpers/parse-json.js +13 -1
  122. package/dist/esm/libs/helpers/user-agent.js +5 -1
  123. package/dist/esm/libs/hooks/use-tracking-view.js +41 -1
  124. package/dist/esm/libs/hooks/usePagePreview.js +90 -1
  125. package/dist/esm/libs/parse-html.js +32 -1
  126. package/dist/esm/libs/shopify-cdn-with-google-fonts.js +1843 -1
  127. package/dist/esm/pages/404.js +41 -1
  128. package/dist/esm/pages/500.js +72 -1
  129. package/dist/esm/pages/CollectionGlobalProvider.js +55 -1
  130. package/dist/esm/pages/builder.js +113 -1
  131. package/dist/esm/pages/collection-detail.js +60 -1
  132. package/dist/esm/pages/preview.js +24 -1
  133. package/dist/esm/pages/product-detail.js +65 -1
  134. package/dist/esm/pages/static-v2.js +137 -1
  135. package/dist/esm/pages/static.js +71 -1
  136. package/dist/esm/store/libs-store.js +12 -0
  137. package/dist/types/index.d.ts +50 -34
  138. package/package.json +8 -5
  139. package/dist/cjs/components/Footer.js +0 -1
  140. package/dist/cjs/components/Header.js +0 -1
  141. package/dist/cjs/components/builder/toolbar/Onboarding.js +0 -1
  142. package/dist/esm/components/Footer.js +0 -1
  143. package/dist/esm/components/Header.js +0 -1
  144. package/dist/esm/components/builder/toolbar/Onboarding.js +0 -1
@@ -1 +1,46 @@
1
- "use strict";var core=require("@gem-sdk/core"),adapterShopify=require("@gem-sdk/adapter-shopify"),parseJson=require("../helpers/parse-json.js");const getBuilderProps=async(e,o)=>{let[r,s]=await Promise.allSettled([e([core.StorePropertyDocument]),o([adapterShopify.ShopMetaDocument])]),t="fulfilled"===s.status?s.value:void 0,a="fulfilled"===r.status?r.value:void 0,l=t?{titleTemplate:`%s | ${t.shop.name}`,defaultTitle:t?.shop.name,title:"Preview",description:t?.shop.description}:{},i=t?.localization.language.isoCode??null,n=t?.localization.country.isoCode??null,u=i&&n?`${i}-${n}`:null;return parseJson.serializableJson({moneyFormat:t?.shop.moneyFormat??null,currency:t?.localization.country.currency.isoCode??null,languageIsoCode:i,countryIsoCode:n,locale:u,swatches:parseJson.parseJson(a?.storeProperty?.swatchesConfig),swr:{revalidateOnMount:!0},seo:l})};exports.getBuilderProps=getBuilderProps;
1
+ 'use strict';
2
+
3
+ var core = require('@gem-sdk/core');
4
+ var adapterShopify = require('@gem-sdk/adapter-shopify');
5
+ var parseJson = require('../helpers/parse-json.js');
6
+
7
+ const getBuilderProps = async (fetcher, shopifyFetcher)=>{
8
+ const [storeProperty, shopifyMeta, shopifyInfo] = await Promise.allSettled([
9
+ fetcher([
10
+ core.StorePropertyDocument
11
+ ]),
12
+ shopifyFetcher([
13
+ adapterShopify.ShopMetaDocument
14
+ ]),
15
+ fetcher([
16
+ core.ShopShopifyDocument
17
+ ])
18
+ ]);
19
+ const shopMeta = shopifyMeta.status === 'fulfilled' ? shopifyMeta.value : undefined;
20
+ const shopData = storeProperty.status === 'fulfilled' ? storeProperty.value : undefined;
21
+ const shopInfo = shopifyInfo.status === 'fulfilled' ? shopifyInfo.value : undefined;
22
+ const seo = shopMeta ? {
23
+ titleTemplate: `%s | ${shopMeta.shop.name}`,
24
+ defaultTitle: shopMeta?.shop.name,
25
+ title: 'Preview',
26
+ description: shopMeta?.shop.description
27
+ } : {};
28
+ const languageIsoCode = shopMeta?.localization.language.isoCode ?? null;
29
+ const countryIsoCode = shopMeta?.localization.country.isoCode ?? null;
30
+ const locale = !languageIsoCode || !countryIsoCode ? null : `${languageIsoCode}-${countryIsoCode}`;
31
+ return parseJson.serializableJson({
32
+ moneyFormat: shopMeta?.shop.moneyFormat ?? null,
33
+ currency: shopMeta?.localization.country.currency.isoCode ?? null,
34
+ languageIsoCode,
35
+ countryIsoCode,
36
+ locale,
37
+ swatches: parseJson.parseJson(shopData?.storeProperty?.swatchesConfig),
38
+ swr: {
39
+ revalidateOnMount: true
40
+ },
41
+ seo,
42
+ timezone: shopInfo?.shopShopify?.timezone
43
+ });
44
+ };
45
+
46
+ exports.getBuilderProps = getBuilderProps;
@@ -1 +1,68 @@
1
- "use strict";var core=require("@gem-sdk/core"),genCss=require("../helpers/gen-css.js"),normalize=require("../helpers/normalize.js"),parseJson=require("../helpers/parse-json.js");const getCollectionProps=e=>async r=>{let s="COLLECTION",l={slug:r,slugType:s},[t,o]=await Promise.all([e([core.CollectionDocument,{handle:r}]),e([core.PublishedThemePagesDocument,l])]),i=o.publishedThemePages?.[0],a=normalize.parseBuilderTemplate(i);if(!t||!t?.collection||!i)throw Error("Collection not found");let{collection:n}=t,c=core.prefetchQueries(a),u=await Promise.allSettled(c.map(({query:r,variables:s,func:l})=>l?l(e,s):r?e([r,s]):{})),p=c.reduce((e,{key:r},s)=>{let l=u[s];return l?.status==="fulfilled"?{...e,[r]:l.value}:e},{});return parseJson.serializableJson({builderData:a,collection:n,pageType:s,themeStyle:genCss.genCSS(i.pageStyle?.data),swr:{fallback:p},seo:{title:n.title,description:n.description}})};exports.getCollectionProps=getCollectionProps;
1
+ 'use strict';
2
+
3
+ var core = require('@gem-sdk/core');
4
+ var genCss = require('../helpers/gen-css.js');
5
+ var normalize = require('../helpers/normalize.js');
6
+ var parseJson = require('../helpers/parse-json.js');
7
+
8
+ const getCollectionProps = (fetcher)=>async (handle)=>{
9
+ const pageType = 'COLLECTION';
10
+ const variables = {
11
+ slug: handle,
12
+ slugType: pageType
13
+ };
14
+ const [collectionData, theme] = await Promise.all([
15
+ fetcher([
16
+ core.CollectionDocument,
17
+ {
18
+ handle
19
+ }
20
+ ]),
21
+ fetcher([
22
+ core.PublishedThemePagesDocument,
23
+ variables
24
+ ])
25
+ ]);
26
+ const dataBuilder = theme.publishedThemePages?.[0];
27
+ const collectionTemplate = normalize.parseBuilderTemplate(dataBuilder);
28
+ if (!collectionData || !collectionData?.collection || !dataBuilder) {
29
+ throw new Error('Collection not found');
30
+ }
31
+ const { collection } = collectionData;
32
+ const queries = core.prefetchQueries(collectionTemplate);
33
+ const datas = await Promise.allSettled(queries.map(({ query, variables, func })=>{
34
+ if (func) {
35
+ return func(fetcher, variables);
36
+ }
37
+ if (query) return fetcher([
38
+ query,
39
+ variables
40
+ ]);
41
+ return {};
42
+ }));
43
+ const fallback = queries.reduce((acc, { key }, index)=>{
44
+ const res = datas[index];
45
+ if (res?.status === 'fulfilled') {
46
+ return {
47
+ ...acc,
48
+ [key]: res.value
49
+ };
50
+ }
51
+ return acc;
52
+ }, {});
53
+ return parseJson.serializableJson({
54
+ builderData: collectionTemplate,
55
+ collection,
56
+ pageType,
57
+ themeStyle: genCss.genCSS(dataBuilder.pageStyle?.data),
58
+ swr: {
59
+ fallback
60
+ },
61
+ seo: {
62
+ title: collection.title,
63
+ description: collection.description
64
+ }
65
+ });
66
+ };
67
+
68
+ exports.getCollectionProps = getCollectionProps;
@@ -1 +1,145 @@
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"),getFallback=require("../helpers/get-fallback.js"),normalize=require("../helpers/normalize.js"),parseJson=require("../helpers/parse-json.js"),nextjs=require("@sentry/nextjs");const getHomePagePropsV2=(e,a)=>async()=>{try{let o={slugType:"STATIC"},[r,t,s]=await Promise.allSettled([e([core.PublishedThemePagesDocument,o]),e([core.StorePropertyDocument]),a([adapterShopify.ShopMetaDocument])]);if("rejected"===r.status)throw Error(r.reason?.[0]);let l=r.value?.publishedThemePages?.[0];if(!l)throw Error("No data builder found for Home page");let n=normalize.parseBuilderTemplateV2(l),[i,c,p]=await Promise.all([googleFonts.getFontStyleFromPageTemplate(n),googleFonts.getFontFromGlobalStyle(l?.pageStyle?.data),getFallback.getFallbackV2(e,n)]),m=l.isMobile??!1,g=l?.themePageDataSEO?.find(e=>e?.key==="global-meta-description")?.value,u=parseJson.parseJson(l?.themePageDataSEO?.find(e=>e?.key==="global-meta-thumbnail")?.value),d="fulfilled"===s.status?s.value:void 0,h="fulfilled"===t.status?t.value:void 0,f=h?.storeProperty?.favicon??"/favicon/favicon-32x32.png",y={defaultTitle:d?.shop.name,title:l?.name??"Home",description:g??d?.shop.description,openGraph:{site_name:d?.shop.name,locale:d?.localization.country.isoCode,title:l?.name??d?.shop.name,description:g??d?.shop.description,images:u?[u]:[]},additionalMetaTags:[{name:"theme-color",content:"#000000"}],canonical:`https://${h?.storeProperty?.primaryDomain}/`,additionalLinkTags:[{rel:"icon",sizes:"32x32",href:`${f}-/crop/1:1/center/-/smart_resize/32x32/`},{rel:"icon",sizes:"16x16",href:`${f}-/crop/1:1/center/-/smart_resize/16x16/`},{rel:"apple-touch-icon",sizes:"180x180",href:`${f}-/crop/1:1/center/-/smart_resize/180x180/`},{rel:"manifest",href:generateManifres.generateManifest({theme_color:"#000000",background_color:"#ffffff",display:"standalone",scope:"/",start_url:"/",name:d?.shop.name,short_name:d?.shop.name,description:d?.shop.description,icons:[{src:`${f}-/crop/1:1/center/-/smart_resize/192x192/`,sizes:"192x192",type:"image/png",purpose:"any maskable"},{src:`${f}-/crop/1:1/center/-/smart_resize/512x512/`,sizes:"512x512",type:"image/png"}]})}]},P=d?.localization.language.isoCode??null,x=d?.localization.country.isoCode??null,b=P&&x?`${P}-${x}`:null;return parseJson.serializableJson({themeStyle:genCss.genCSS(l?.pageStyle?.data,m),fontStyle:c,elementFontStyle:i,builderData:n,swr:{fallback:p},moneyFormat:d?.shop.moneyFormat??null,currency:d?.localization.country.currency.isoCode??null,languageIsoCode:P,countryIsoCode:x,locale:b,swatches:parseJson.parseJson(h?.storeProperty?.swatchesConfig),seo:y,mobileOnly:m,gaTrackingId:l.themePageAnalytic?.gaTrackingID??null,facebookPixelId:l.themePageAnalytic?.fbPixelID??null,tiktokPixelId:l.themePageAnalytic?.tiktokPixelID??null,customCodeHeader:l.themePageCustomCode?.header??null,customCodeBody:l.themePageCustomCode?.body??null,pageHandle:l.handle??null})}catch(e){throw nextjs.captureException(e),e}};exports.getHomePagePropsV2=getHomePagePropsV2;
1
+ 'use strict';
2
+
3
+ var core = require('@gem-sdk/core');
4
+ var adapterShopify = require('@gem-sdk/adapter-shopify');
5
+ var googleFonts = require('../google-fonts.js');
6
+ var genCss = require('../helpers/gen-css.js');
7
+ var generateManifres = require('../helpers/generate-manifres.js');
8
+ var getFallback = require('../helpers/get-fallback.js');
9
+ var normalize = require('../helpers/normalize.js');
10
+ var parseJson = require('../helpers/parse-json.js');
11
+ var nextjs = require('@sentry/nextjs');
12
+
13
+ const getHomePagePropsV2 = (fetcher, shopifyFetcher)=>async ()=>{
14
+ try {
15
+ const variables = {
16
+ slugType: 'STATIC'
17
+ };
18
+ const [theme, storeProperty, shopifyMeta] = await Promise.allSettled([
19
+ fetcher([
20
+ core.PublishedThemePagesDocument,
21
+ variables
22
+ ]),
23
+ fetcher([
24
+ core.StorePropertyDocument
25
+ ]),
26
+ shopifyFetcher([
27
+ adapterShopify.ShopMetaDocument
28
+ ])
29
+ ]);
30
+ if (theme.status === 'rejected') {
31
+ throw new Error(theme.reason?.[0]);
32
+ }
33
+ const dataBuilder = theme.value?.publishedThemePages?.[0];
34
+ if (!dataBuilder) {
35
+ throw new Error(`No data builder found for Home page`);
36
+ }
37
+ const homeTemplate = normalize.parseBuilderTemplateV2(dataBuilder);
38
+ const [elementFontStyle, fontStyle, fallback] = await Promise.all([
39
+ googleFonts.getFontStyleFromPageTemplate(homeTemplate),
40
+ googleFonts.getFontFromGlobalStyle(dataBuilder?.pageStyle?.data),
41
+ getFallback.getFallbackV2(fetcher, homeTemplate)
42
+ ]);
43
+ const mobileOnly = dataBuilder.isMobile ?? false;
44
+ const description = dataBuilder?.themePageDataSEO?.find((item)=>item?.key === 'global-meta-description')?.value;
45
+ const thumbnail = parseJson.parseJson(dataBuilder?.themePageDataSEO?.find((item)=>item?.key === 'global-meta-thumbnail')?.value);
46
+ const shopMeta = shopifyMeta.status === 'fulfilled' ? shopifyMeta.value : undefined;
47
+ const shopData = storeProperty.status === 'fulfilled' ? storeProperty.value : undefined;
48
+ const favicon = shopData?.storeProperty?.favicon ?? '/favicon/favicon-32x32.png';
49
+ const seo = {
50
+ defaultTitle: shopMeta?.shop.name,
51
+ title: dataBuilder?.name ?? 'Home',
52
+ description: description ?? shopMeta?.shop.description,
53
+ openGraph: {
54
+ site_name: shopMeta?.shop.name,
55
+ locale: shopMeta?.localization.country.isoCode,
56
+ title: dataBuilder?.name ?? shopMeta?.shop.name,
57
+ description: description ?? shopMeta?.shop.description,
58
+ images: thumbnail ? [
59
+ thumbnail
60
+ ] : []
61
+ },
62
+ additionalMetaTags: [
63
+ {
64
+ name: 'theme-color',
65
+ content: '#000000'
66
+ }
67
+ ],
68
+ canonical: `https://${shopData?.storeProperty?.primaryDomain}/`,
69
+ additionalLinkTags: [
70
+ {
71
+ rel: 'icon',
72
+ sizes: '32x32',
73
+ href: `${favicon}-/crop/1:1/center/-/smart_resize/32x32/`
74
+ },
75
+ {
76
+ rel: 'icon',
77
+ sizes: '16x16',
78
+ href: `${favicon}-/crop/1:1/center/-/smart_resize/16x16/`
79
+ },
80
+ {
81
+ rel: 'apple-touch-icon',
82
+ sizes: '180x180',
83
+ href: `${favicon}-/crop/1:1/center/-/smart_resize/180x180/`
84
+ },
85
+ {
86
+ rel: 'manifest',
87
+ href: generateManifres.generateManifest({
88
+ theme_color: '#000000',
89
+ background_color: '#ffffff',
90
+ display: 'standalone',
91
+ scope: '/',
92
+ start_url: '/',
93
+ name: shopMeta?.shop.name,
94
+ short_name: shopMeta?.shop.name,
95
+ description: shopMeta?.shop.description,
96
+ icons: [
97
+ {
98
+ src: `${favicon}-/crop/1:1/center/-/smart_resize/192x192/`,
99
+ sizes: '192x192',
100
+ type: 'image/png',
101
+ purpose: 'any maskable'
102
+ },
103
+ {
104
+ src: `${favicon}-/crop/1:1/center/-/smart_resize/512x512/`,
105
+ sizes: '512x512',
106
+ type: 'image/png'
107
+ }
108
+ ]
109
+ })
110
+ }
111
+ ]
112
+ };
113
+ const languageIsoCode = shopMeta?.localization.language.isoCode ?? null;
114
+ const countryIsoCode = shopMeta?.localization.country.isoCode ?? null;
115
+ const locale = !languageIsoCode || !countryIsoCode ? null : `${languageIsoCode}-${countryIsoCode}`;
116
+ return parseJson.serializableJson({
117
+ themeStyle: genCss.genCSS(dataBuilder?.pageStyle?.data, mobileOnly),
118
+ fontStyle,
119
+ elementFontStyle,
120
+ builderData: homeTemplate,
121
+ swr: {
122
+ fallback
123
+ },
124
+ moneyFormat: shopMeta?.shop.moneyFormat ?? null,
125
+ currency: shopMeta?.localization.country.currency.isoCode ?? null,
126
+ languageIsoCode,
127
+ countryIsoCode,
128
+ locale,
129
+ swatches: parseJson.parseJson(shopData?.storeProperty?.swatchesConfig),
130
+ seo,
131
+ mobileOnly,
132
+ gaTrackingId: dataBuilder.themePageAnalytic?.gaTrackingID ?? null,
133
+ facebookPixelId: dataBuilder.themePageAnalytic?.fbPixelID ?? null,
134
+ tiktokPixelId: dataBuilder.themePageAnalytic?.tiktokPixelID ?? null,
135
+ customCodeHeader: dataBuilder.themePageCustomCode?.header ?? null,
136
+ customCodeBody: dataBuilder.themePageCustomCode?.body ?? null,
137
+ pageHandle: dataBuilder.handle ?? null
138
+ });
139
+ } catch (err) {
140
+ nextjs.captureException(err);
141
+ throw err;
142
+ }
143
+ };
144
+
145
+ exports.getHomePagePropsV2 = getHomePagePropsV2;
@@ -1 +1,151 @@
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");const getHomePageProps=(e,a)=>async()=>{let r="STATIC",s={slugType:r},[o,t,n]=await Promise.allSettled([e([core.PublishedThemePagesDocument,s]),e([core.StorePropertyDocument]),a([adapterShopify.ShopMetaDocument])]);if("rejected"===o.status)return{pageType:r};let i=o.value.publishedThemePages?.[0],l=normalize.parseBuilderTemplate(i),p=await googleFonts.getFontFromGlobalStyle(i?.pageStyle?.data),c=core.prefetchQueries(l),m=await Promise.allSettled(c.map(({query:a,variables:r,func:s})=>s?s(e,r):a?e([a,r]):{})),u=c.reduce((e,{key:a},r)=>{let s=m[r];return s?.status==="fulfilled"?{...e,[a]:s.value}:e},{}),g=i?.themePageDataSEO?.find(e=>e?.key==="global-meta-description")?.value,d=parseJson.parseJson(i?.themePageDataSEO?.find(e=>e?.key==="global-meta-thumbnail")?.value),h="fulfilled"===n.status?n.value:void 0,f="fulfilled"===t.status?t.value:void 0,y=f?.storeProperty?.favicon??"/favicon/favicon-32x32.png",z={defaultTitle:h?.shop.name,title:i?.name??"Home",description:g??h?.shop.description,openGraph:{site_name:h?.shop.name,locale:h?.localization.country.isoCode,title:i?.name??h?.shop.name,description:g??h?.shop.description,images:d?[d]:[]},additionalMetaTags:[{name:"theme-color",content:"#000000"}],canonical:"/",additionalLinkTags:[{rel:"icon",sizes:"32x32",href:`${y}-/crop/1:1/center/-/smart_resize/32x32/`},{rel:"icon",sizes:"16x16",href:`${y}-/crop/1:1/center/-/smart_resize/16x16/`},{rel:"apple-touch-icon",sizes:"180x180",href:`${y}-/crop/1:1/center/-/smart_resize/180x180/`},{rel:"manifest",href:generateManifres.generateManifest({theme_color:"#000000",background_color:"#ffffff",display:"standalone",scope:"/",start_url:"/",name:h?.shop.name,short_name:h?.shop.name,description:h?.shop.description,icons:[{src:`${y}-/crop/1:1/center/-/smart_resize/192x192/`,sizes:"192x192",type:"image/png",purpose:"any maskable"},{src:`${y}-/crop/1:1/center/-/smart_resize/512x512/`,sizes:"512x512",type:"image/png"}]})}]},P=h?.localization.language.isoCode??null,S=h?.localization.country.isoCode??null,v=P&&S?`${P}-${S}`:null;return parseJson.serializableJson({themeStyle:genCss.genCSS(i?.pageStyle?.data),fontStyle:p,builderData:l,pageType:r,swr:{fallback:u},moneyFormat:h?.shop.moneyFormat??null,currency:h?.localization.country.currency.isoCode??null,locale:v,languageIsoCode:P,countryIsoCode:S,swatches:parseJson.parseJson(f?.storeProperty?.swatchesConfig),seo:z})};exports.getHomePageProps=getHomePageProps;
1
+ 'use strict';
2
+
3
+ var core = require('@gem-sdk/core');
4
+ var adapterShopify = require('@gem-sdk/adapter-shopify');
5
+ var googleFonts = require('../google-fonts.js');
6
+ var genCss = require('../helpers/gen-css.js');
7
+ var generateManifres = require('../helpers/generate-manifres.js');
8
+ var normalize = require('../helpers/normalize.js');
9
+ var parseJson = require('../helpers/parse-json.js');
10
+
11
+ const getHomePageProps = (fetcher, shopifyFetcher)=>async ()=>{
12
+ const pageType = 'STATIC';
13
+ const variables = {
14
+ slugType: pageType
15
+ };
16
+ // const theme = await fetcher<PublishedThemePagesQueryResponse, PublishedThemePagesQueryVariables>([
17
+ // PublishedThemePagesDocument,
18
+ // variables,
19
+ // ]);
20
+ const [theme, storeProperty, shopifyMeta] = await Promise.allSettled([
21
+ fetcher([
22
+ core.PublishedThemePagesDocument,
23
+ variables
24
+ ]),
25
+ fetcher([
26
+ core.StorePropertyDocument
27
+ ]),
28
+ shopifyFetcher([
29
+ adapterShopify.ShopMetaDocument
30
+ ])
31
+ ]);
32
+ if (theme.status === 'rejected') {
33
+ return {
34
+ pageType
35
+ };
36
+ }
37
+ const dataBuilder = theme.value.publishedThemePages?.[0];
38
+ const homeTemplate = normalize.parseBuilderTemplate(dataBuilder);
39
+ const fontStyle = await googleFonts.getFontFromGlobalStyle(dataBuilder?.pageStyle?.data);
40
+ const queries = core.prefetchQueries(homeTemplate);
41
+ const datas = await Promise.allSettled(queries.map(({ query, variables, func })=>{
42
+ if (func) {
43
+ return func(fetcher, variables);
44
+ }
45
+ if (query) return fetcher([
46
+ query,
47
+ variables
48
+ ]);
49
+ return {};
50
+ }));
51
+ const fallback = queries.reduce((acc, { key }, index)=>{
52
+ const res = datas[index];
53
+ if (res?.status === 'fulfilled') {
54
+ return {
55
+ ...acc,
56
+ [key]: res.value
57
+ };
58
+ }
59
+ return acc;
60
+ }, {});
61
+ const description = dataBuilder?.themePageDataSEO?.find((item)=>item?.key === 'global-meta-description')?.value;
62
+ const thumbnail = parseJson.parseJson(dataBuilder?.themePageDataSEO?.find((item)=>item?.key === 'global-meta-thumbnail')?.value);
63
+ const shopMeta = shopifyMeta.status === 'fulfilled' ? shopifyMeta.value : undefined;
64
+ const shopData = storeProperty.status === 'fulfilled' ? storeProperty.value : undefined;
65
+ const favicon = shopData?.storeProperty?.favicon ?? '/favicon/favicon-32x32.png';
66
+ const seo = {
67
+ defaultTitle: shopMeta?.shop.name,
68
+ title: dataBuilder?.name ?? 'Home',
69
+ description: description ?? shopMeta?.shop.description,
70
+ openGraph: {
71
+ site_name: shopMeta?.shop.name,
72
+ locale: shopMeta?.localization.country.isoCode,
73
+ title: dataBuilder?.name ?? shopMeta?.shop.name,
74
+ description: description ?? shopMeta?.shop.description,
75
+ images: thumbnail ? [
76
+ thumbnail
77
+ ] : []
78
+ },
79
+ additionalMetaTags: [
80
+ {
81
+ name: 'theme-color',
82
+ content: '#000000'
83
+ }
84
+ ],
85
+ canonical: '/',
86
+ additionalLinkTags: [
87
+ {
88
+ rel: 'icon',
89
+ sizes: '32x32',
90
+ href: `${favicon}-/crop/1:1/center/-/smart_resize/32x32/`
91
+ },
92
+ {
93
+ rel: 'icon',
94
+ sizes: '16x16',
95
+ href: `${favicon}-/crop/1:1/center/-/smart_resize/16x16/`
96
+ },
97
+ {
98
+ rel: 'apple-touch-icon',
99
+ sizes: '180x180',
100
+ href: `${favicon}-/crop/1:1/center/-/smart_resize/180x180/`
101
+ },
102
+ {
103
+ rel: 'manifest',
104
+ href: generateManifres.generateManifest({
105
+ theme_color: '#000000',
106
+ background_color: '#ffffff',
107
+ display: 'standalone',
108
+ scope: '/',
109
+ start_url: '/',
110
+ name: shopMeta?.shop.name,
111
+ short_name: shopMeta?.shop.name,
112
+ description: shopMeta?.shop.description,
113
+ icons: [
114
+ {
115
+ src: `${favicon}-/crop/1:1/center/-/smart_resize/192x192/`,
116
+ sizes: '192x192',
117
+ type: 'image/png',
118
+ purpose: 'any maskable'
119
+ },
120
+ {
121
+ src: `${favicon}-/crop/1:1/center/-/smart_resize/512x512/`,
122
+ sizes: '512x512',
123
+ type: 'image/png'
124
+ }
125
+ ]
126
+ })
127
+ }
128
+ ]
129
+ };
130
+ const languageIsoCode = shopMeta?.localization.language.isoCode ?? null;
131
+ const countryIsoCode = shopMeta?.localization.country.isoCode ?? null;
132
+ const locale = !languageIsoCode || !countryIsoCode ? null : `${languageIsoCode}-${countryIsoCode}`;
133
+ return parseJson.serializableJson({
134
+ themeStyle: genCss.genCSS(dataBuilder?.pageStyle?.data),
135
+ fontStyle,
136
+ builderData: homeTemplate,
137
+ pageType,
138
+ swr: {
139
+ fallback
140
+ },
141
+ moneyFormat: shopMeta?.shop.moneyFormat ?? null,
142
+ currency: shopMeta?.localization.country.currency.isoCode ?? null,
143
+ locale,
144
+ languageIsoCode,
145
+ countryIsoCode,
146
+ swatches: parseJson.parseJson(shopData?.storeProperty?.swatchesConfig),
147
+ seo
148
+ });
149
+ };
150
+
151
+ exports.getHomePageProps = getHomePageProps;