@gem-sdk/pages 1.13.38 → 1.14.0-dev.284

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 (102) hide show
  1. package/dist/cjs/components/ErrorBoundary.js +1 -40
  2. package/dist/cjs/components/ErrorFallback.js +1 -26
  3. package/dist/cjs/components/FacebookPixel.js +3 -36
  4. package/dist/cjs/components/Footer.js +1 -141
  5. package/dist/cjs/components/GoogleAnalytic.js +5 -67
  6. package/dist/cjs/components/Header.js +1 -110
  7. package/dist/cjs/components/TikTokPixel.js +3 -19
  8. package/dist/cjs/components/builder/PopupManager.js +1 -66
  9. package/dist/cjs/components/builder/Toolbox.js +1 -271
  10. package/dist/cjs/components/image-to-layout/AddSectionImageToLayout.js +1 -279
  11. package/dist/cjs/components/image-to-layout/DropElement.js +1 -123
  12. package/dist/cjs/components/image-to-layout/ImageToLayout.js +1 -62
  13. package/dist/cjs/components/image-to-layout/ImageToLayoutInput.js +1 -201
  14. package/dist/cjs/components/image-to-layout/PagesSuggestion.js +1 -80
  15. package/dist/cjs/index.js +1 -75
  16. package/dist/cjs/layouts/main.js +1 -30
  17. package/dist/cjs/libs/api/get-builder-props.js +1 -41
  18. package/dist/cjs/libs/api/get-collection-props.js +1 -68
  19. package/dist/cjs/libs/api/get-home-page-props-v2.js +1 -141
  20. package/dist/cjs/libs/api/get-home-page-props.js +1 -151
  21. package/dist/cjs/libs/api/get-preview-props.js +1 -18
  22. package/dist/cjs/libs/api/get-product-props.js +1 -73
  23. package/dist/cjs/libs/api/get-static-page-props-preview.js +1 -148
  24. package/dist/cjs/libs/api/get-static-page-props-v2.js +1 -148
  25. package/dist/cjs/libs/api/get-static-page-props.js +1 -148
  26. package/dist/cjs/libs/fetcher.js +1 -67
  27. package/dist/cjs/libs/get-layout.js +1 -13
  28. package/dist/cjs/libs/get-storefront-api.js +1 -12
  29. package/dist/cjs/libs/getStaticPaths.js +1 -10
  30. package/dist/cjs/libs/google-fonts.js +1 -102
  31. package/dist/cjs/libs/helpers/common.js +1 -27
  32. package/dist/cjs/libs/helpers/gen-css.js +1 -111
  33. package/dist/cjs/libs/helpers/gen-fonts.js +1 -57
  34. package/dist/cjs/libs/helpers/generate-manifres.js +1 -5
  35. package/dist/cjs/libs/helpers/get-fallback.js +1 -35
  36. package/dist/cjs/libs/helpers/normalize.js +1 -90
  37. package/dist/cjs/libs/helpers/parse-json.js +1 -16
  38. package/dist/cjs/libs/helpers/user-agent.js +1 -7
  39. package/dist/cjs/libs/hooks/use-tracking-view.js +1 -45
  40. package/dist/cjs/libs/parse-html.js +1 -42
  41. package/dist/cjs/libs/shopify-cdn-with-google-fonts.js +1 -1845
  42. package/dist/cjs/pages/404.js +1 -43
  43. package/dist/cjs/pages/500.js +1 -74
  44. package/dist/cjs/pages/CollectionGlobalProvider.js +1 -59
  45. package/dist/cjs/pages/builder.js +1 -95
  46. package/dist/cjs/pages/collection-detail.js +1 -62
  47. package/dist/cjs/pages/preview.js +1 -26
  48. package/dist/cjs/pages/product-detail.js +1 -67
  49. package/dist/cjs/pages/static-v2.js +1 -82
  50. package/dist/cjs/pages/static.js +1 -73
  51. package/dist/esm/components/ErrorBoundary.js +1 -38
  52. package/dist/esm/components/ErrorFallback.js +1 -24
  53. package/dist/esm/components/FacebookPixel.js +3 -34
  54. package/dist/esm/components/Footer.js +1 -137
  55. package/dist/esm/components/GoogleAnalytic.js +5 -65
  56. package/dist/esm/components/Header.js +1 -106
  57. package/dist/esm/components/TikTokPixel.js +3 -17
  58. package/dist/esm/components/builder/PopupManager.js +1 -62
  59. package/dist/esm/components/builder/Toolbox.js +1 -267
  60. package/dist/esm/components/image-to-layout/AddSectionImageToLayout.js +1 -275
  61. package/dist/esm/components/image-to-layout/DropElement.js +1 -121
  62. package/dist/esm/components/image-to-layout/ImageToLayout.js +1 -58
  63. package/dist/esm/components/image-to-layout/ImageToLayoutInput.js +1 -199
  64. package/dist/esm/components/image-to-layout/PagesSuggestion.js +1 -78
  65. package/dist/esm/index.js +1 -33
  66. package/dist/esm/layouts/main.js +1 -26
  67. package/dist/esm/libs/api/get-builder-props.js +1 -39
  68. package/dist/esm/libs/api/get-collection-props.js +1 -66
  69. package/dist/esm/libs/api/get-home-page-props-v2.js +1 -139
  70. package/dist/esm/libs/api/get-home-page-props.js +1 -149
  71. package/dist/esm/libs/api/get-preview-props.js +1 -16
  72. package/dist/esm/libs/api/get-product-props.js +1 -71
  73. package/dist/esm/libs/api/get-static-page-props-preview.js +1 -146
  74. package/dist/esm/libs/api/get-static-page-props-v2.js +1 -146
  75. package/dist/esm/libs/api/get-static-page-props.js +1 -146
  76. package/dist/esm/libs/fetcher.js +1 -64
  77. package/dist/esm/libs/get-layout.js +1 -11
  78. package/dist/esm/libs/get-storefront-api.js +1 -10
  79. package/dist/esm/libs/getStaticPaths.js +1 -8
  80. package/dist/esm/libs/google-fonts.js +1 -96
  81. package/dist/esm/libs/helpers/common.js +1 -24
  82. package/dist/esm/libs/helpers/gen-css.js +1 -109
  83. package/dist/esm/libs/helpers/gen-fonts.js +1 -54
  84. package/dist/esm/libs/helpers/generate-manifres.js +1 -3
  85. package/dist/esm/libs/helpers/get-fallback.js +1 -33
  86. package/dist/esm/libs/helpers/normalize.js +1 -85
  87. package/dist/esm/libs/helpers/parse-json.js +1 -13
  88. package/dist/esm/libs/helpers/user-agent.js +1 -5
  89. package/dist/esm/libs/hooks/use-tracking-view.js +1 -43
  90. package/dist/esm/libs/parse-html.js +1 -40
  91. package/dist/esm/libs/shopify-cdn-with-google-fonts.js +1 -1843
  92. package/dist/esm/pages/404.js +1 -41
  93. package/dist/esm/pages/500.js +1 -72
  94. package/dist/esm/pages/CollectionGlobalProvider.js +1 -55
  95. package/dist/esm/pages/builder.js +1 -93
  96. package/dist/esm/pages/collection-detail.js +1 -58
  97. package/dist/esm/pages/preview.js +1 -24
  98. package/dist/esm/pages/product-detail.js +1 -63
  99. package/dist/esm/pages/static-v2.js +1 -80
  100. package/dist/esm/pages/static.js +1 -69
  101. package/dist/types/index.d.ts +9 -8
  102. package/package.json +6 -6
@@ -1,30 +1 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var jsxRuntime = require('react/jsx-runtime');
6
- var core = require('@gem-sdk/core');
7
- var parseHtml = require('../libs/parse-html.js');
8
-
9
- const MainLayout = ({ children , ...props })=>{
10
- const mobileOnly = core.useShopStore((s)=>s.mobileOnly);
11
- return /*#__PURE__*/ jsxRuntime.jsxs(jsxRuntime.Fragment, {
12
- children: [
13
- parseHtml.parseHtml(props?.customCodeBody),
14
- /*#__PURE__*/ jsxRuntime.jsx("div", {
15
- className: core.cls({
16
- 'max-w-mobile mx-auto w-full': mobileOnly
17
- }),
18
- children: children
19
- }),
20
- /*#__PURE__*/ jsxRuntime.jsx(core.AddOn, {
21
- name: "cookie-bar"
22
- }),
23
- /*#__PURE__*/ jsxRuntime.jsx(core.AddOn, {
24
- name: "cart-drawer"
25
- })
26
- ]
27
- });
28
- };
29
-
30
- exports.default = MainLayout;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var jsxRuntime=require("react/jsx-runtime"),core=require("@gem-sdk/core"),parseHtml=require("../libs/parse-html.js");const MainLayout=({children:e,...r})=>{let s=core.useShopStore(e=>e.mobileOnly);return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[parseHtml.parseHtml(r?.customCodeBody),jsxRuntime.jsx("div",{className:core.cls({"max-w-mobile mx-auto w-full":s}),children:e}),jsxRuntime.jsx(core.AddOn,{name:"cookie-bar"}),jsxRuntime.jsx(core.AddOn,{name:"cart-drawer"})]})};exports.default=MainLayout;
@@ -1,41 +1 @@
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] = await Promise.allSettled([
9
- fetcher([
10
- core.StorePropertyDocument
11
- ]),
12
- shopifyFetcher([
13
- adapterShopify.ShopMetaDocument
14
- ])
15
- ]);
16
- const shopMeta = shopifyMeta.status === 'fulfilled' ? shopifyMeta.value : undefined;
17
- const shopData = storeProperty.status === 'fulfilled' ? storeProperty.value : undefined;
18
- const seo = shopMeta ? {
19
- titleTemplate: `%s | ${shopMeta.shop.name}`,
20
- defaultTitle: shopMeta?.shop.name,
21
- title: 'Preview',
22
- description: shopMeta?.shop.description
23
- } : {};
24
- const languageIsoCode = shopMeta?.localization.language.isoCode ?? null;
25
- const countryIsoCode = shopMeta?.localization.country.isoCode ?? null;
26
- const locale = !languageIsoCode || !countryIsoCode ? null : `${languageIsoCode}-${countryIsoCode}`;
27
- return parseJson.serializableJson({
28
- moneyFormat: shopMeta?.shop.moneyFormat ?? null,
29
- currency: shopMeta?.localization.country.currency.isoCode ?? null,
30
- languageIsoCode,
31
- countryIsoCode,
32
- locale,
33
- swatches: parseJson.parseJson(shopData?.storeProperty?.swatchesConfig),
34
- swr: {
35
- revalidateOnMount: true
36
- },
37
- seo
38
- });
39
- };
40
-
41
- exports.getBuilderProps = getBuilderProps;
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,68 +1 @@
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
+ "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,141 +1 @@
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 [fontStyle, fallback] = await Promise.all([
39
- googleFonts.getFontFromGlobalStyle(dataBuilder?.pageStyle?.data),
40
- getFallback.getFallbackV2(fetcher, homeTemplate)
41
- ]);
42
- const mobileOnly = dataBuilder.isMobile ?? false;
43
- const description = dataBuilder?.themePageDataSEO?.find((item)=>item?.key === 'global-meta-description')?.value;
44
- const thumbnail = parseJson.parseJson(dataBuilder?.themePageDataSEO?.find((item)=>item?.key === 'global-meta-thumbnail')?.value);
45
- const shopMeta = shopifyMeta.status === 'fulfilled' ? shopifyMeta.value : undefined;
46
- const shopData = storeProperty.status === 'fulfilled' ? storeProperty.value : undefined;
47
- const favicon = shopData?.storeProperty?.favicon ?? '/favicon/favicon-32x32.png';
48
- const seo = {
49
- defaultTitle: shopMeta?.shop.name,
50
- title: dataBuilder?.name ?? 'Home',
51
- description: description ?? shopMeta?.shop.description,
52
- openGraph: {
53
- site_name: shopMeta?.shop.name,
54
- locale: shopMeta?.localization.country.isoCode,
55
- title: dataBuilder?.name ?? shopMeta?.shop.name,
56
- description: description ?? shopMeta?.shop.description,
57
- images: thumbnail ? [
58
- thumbnail
59
- ] : []
60
- },
61
- additionalMetaTags: [
62
- {
63
- name: 'theme-color',
64
- content: '#000000'
65
- }
66
- ],
67
- canonical: `https://${shopData?.storeProperty?.primaryDomain}/`,
68
- additionalLinkTags: [
69
- {
70
- rel: 'icon',
71
- sizes: '32x32',
72
- href: `${favicon}-/crop/1:1/center/-/smart_resize/32x32/`
73
- },
74
- {
75
- rel: 'icon',
76
- sizes: '16x16',
77
- href: `${favicon}-/crop/1:1/center/-/smart_resize/16x16/`
78
- },
79
- {
80
- rel: 'apple-touch-icon',
81
- sizes: '180x180',
82
- href: `${favicon}-/crop/1:1/center/-/smart_resize/180x180/`
83
- },
84
- {
85
- rel: 'manifest',
86
- href: generateManifres.generateManifest({
87
- theme_color: '#000000',
88
- background_color: '#ffffff',
89
- display: 'standalone',
90
- scope: '/',
91
- start_url: '/',
92
- name: shopMeta?.shop.name,
93
- short_name: shopMeta?.shop.name,
94
- description: shopMeta?.shop.description,
95
- icons: [
96
- {
97
- src: `${favicon}-/crop/1:1/center/-/smart_resize/192x192/`,
98
- sizes: '192x192',
99
- type: 'image/png',
100
- purpose: 'any maskable'
101
- },
102
- {
103
- src: `${favicon}-/crop/1:1/center/-/smart_resize/512x512/`,
104
- sizes: '512x512',
105
- type: 'image/png'
106
- }
107
- ]
108
- })
109
- }
110
- ]
111
- };
112
- const languageIsoCode = shopMeta?.localization.language.isoCode ?? null;
113
- const countryIsoCode = shopMeta?.localization.country.isoCode ?? null;
114
- const locale = !languageIsoCode || !countryIsoCode ? null : `${languageIsoCode}-${countryIsoCode}`;
115
- return parseJson.serializableJson({
116
- themeStyle: genCss.genCSS(dataBuilder?.pageStyle?.data, mobileOnly),
117
- fontStyle,
118
- builderData: homeTemplate,
119
- swr: {
120
- fallback
121
- },
122
- moneyFormat: shopMeta?.shop.moneyFormat ?? null,
123
- currency: shopMeta?.localization.country.currency.isoCode ?? null,
124
- languageIsoCode,
125
- countryIsoCode,
126
- locale,
127
- swatches: parseJson.parseJson(shopData?.storeProperty?.swatchesConfig),
128
- seo,
129
- mobileOnly,
130
- gaTrackingId: dataBuilder.themePageAnalytic?.gaTrackingID ?? null,
131
- facebookPixelId: dataBuilder.themePageAnalytic?.fbPixelID ?? null,
132
- tiktokPixelId: dataBuilder.themePageAnalytic?.tiktokPixelID ?? null,
133
- pageHandle: dataBuilder.handle ?? null
134
- });
135
- } catch (err) {
136
- nextjs.captureException(err);
137
- throw err;
138
- }
139
- };
140
-
141
- 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"),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 n=r.value?.publishedThemePages?.[0];if(!n)throw Error("No data builder found for Home page");let l=normalize.parseBuilderTemplateV2(n),[i,c]=await Promise.all([googleFonts.getFontFromGlobalStyle(n?.pageStyle?.data),getFallback.getFallbackV2(e,l)]),p=n.isMobile??!1,m=n?.themePageDataSEO?.find(e=>e?.key==="global-meta-description")?.value,g=parseJson.parseJson(n?.themePageDataSEO?.find(e=>e?.key==="global-meta-thumbnail")?.value),u="fulfilled"===s.status?s.value:void 0,d="fulfilled"===t.status?t.value:void 0,h=d?.storeProperty?.favicon??"/favicon/favicon-32x32.png",f={defaultTitle:u?.shop.name,title:n?.name??"Home",description:m??u?.shop.description,openGraph:{site_name:u?.shop.name,locale:u?.localization.country.isoCode,title:n?.name??u?.shop.name,description:m??u?.shop.description,images:g?[g]:[]},additionalMetaTags:[{name:"theme-color",content:"#000000"}],canonical:`https://${d?.storeProperty?.primaryDomain}/`,additionalLinkTags:[{rel:"icon",sizes:"32x32",href:`${h}-/crop/1:1/center/-/smart_resize/32x32/`},{rel:"icon",sizes:"16x16",href:`${h}-/crop/1:1/center/-/smart_resize/16x16/`},{rel:"apple-touch-icon",sizes:"180x180",href:`${h}-/crop/1:1/center/-/smart_resize/180x180/`},{rel:"manifest",href:generateManifres.generateManifest({theme_color:"#000000",background_color:"#ffffff",display:"standalone",scope:"/",start_url:"/",name:u?.shop.name,short_name:u?.shop.name,description:u?.shop.description,icons:[{src:`${h}-/crop/1:1/center/-/smart_resize/192x192/`,sizes:"192x192",type:"image/png",purpose:"any maskable"},{src:`${h}-/crop/1:1/center/-/smart_resize/512x512/`,sizes:"512x512",type:"image/png"}]})}]},y=u?.localization.language.isoCode??null,P=u?.localization.country.isoCode??null,x=y&&P?`${y}-${P}`:null;return parseJson.serializableJson({themeStyle:genCss.genCSS(n?.pageStyle?.data,p),fontStyle:i,builderData:l,swr:{fallback:c},moneyFormat:u?.shop.moneyFormat??null,currency:u?.localization.country.currency.isoCode??null,languageIsoCode:y,countryIsoCode:P,locale:x,swatches:parseJson.parseJson(d?.storeProperty?.swatchesConfig),seo:f,mobileOnly:p,gaTrackingId:n.themePageAnalytic?.gaTrackingID??null,facebookPixelId:n.themePageAnalytic?.fbPixelID??null,tiktokPixelId:n.themePageAnalytic?.tiktokPixelID??null,customCodeHeader:n.themePageCustomCode?.header??null,customCodeBody:n.themePageCustomCode?.body??null,pageHandle:n.handle??null})}catch(e){throw nextjs.captureException(e),e}};exports.getHomePagePropsV2=getHomePagePropsV2;
@@ -1,151 +1 @@
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;
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,18 +1 @@
1
- 'use strict';
2
-
3
- var getCollectionProps = require('./get-collection-props.js');
4
- var getProductProps = require('./get-product-props.js');
5
- var getStaticPageProps = require('./get-static-page-props.js');
6
-
7
- const getPreviewProps = (fetcher, shopifyFetcher)=>async (pageType, slug)=>{
8
- switch(pageType){
9
- case 'COLLECTION':
10
- return getCollectionProps.getCollectionProps(fetcher)(slug);
11
- case 'PRODUCT':
12
- return getProductProps.getProductProps(fetcher)(slug);
13
- default:
14
- return getStaticPageProps.getStaticPageProps(fetcher, shopifyFetcher)(slug);
15
- }
16
- };
17
-
18
- exports.getPreviewProps = getPreviewProps;
1
+ "use strict";var getCollectionProps=require("./get-collection-props.js"),getProductProps=require("./get-product-props.js"),getStaticPageProps=require("./get-static-page-props.js");const getPreviewProps=(e,t)=>async(r,o)=>{switch(r){case"COLLECTION":return getCollectionProps.getCollectionProps(e)(o);case"PRODUCT":return getProductProps.getProductProps(e)(o);default:return getStaticPageProps.getStaticPageProps(e,t)(o)}};exports.getPreviewProps=getPreviewProps;
@@ -1,73 +1 @@
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 getProductProps = (fetcher)=>async (handle)=>{
9
- const pageType = 'PRODUCT';
10
- const variables = {
11
- slug: handle,
12
- slugType: pageType
13
- };
14
- const [product, theme] = await Promise.all([
15
- core.getProductBySlug(fetcher, handle),
16
- fetcher([
17
- core.PublishedThemePagesDocument,
18
- variables
19
- ])
20
- ]);
21
- const dataBuilder = theme.publishedThemePages?.[0];
22
- if (!product || !dataBuilder) {
23
- throw new Error('Product not found');
24
- }
25
- const productTemplate = normalize.parseBuilderTemplate(dataBuilder);
26
- const queries = core.prefetchQueries(productTemplate);
27
- const datas = await Promise.allSettled(queries.map(({ query , variables , func })=>{
28
- if (func) {
29
- return func(fetcher, variables);
30
- }
31
- if (query) return fetcher([
32
- query,
33
- variables
34
- ]);
35
- return {};
36
- }));
37
- const fallback = queries.reduce((acc, { key }, index)=>{
38
- const res = datas[index];
39
- if (res?.status === 'fulfilled') {
40
- return {
41
- ...acc,
42
- [key]: res.value
43
- };
44
- }
45
- return acc;
46
- }, {});
47
- return parseJson.serializableJson({
48
- builderData: productTemplate,
49
- themeStyle: genCss.genCSS(dataBuilder.pageStyle?.data),
50
- pageType,
51
- swr: {
52
- fallback
53
- },
54
- seo: {
55
- title: product.title,
56
- description: product.description,
57
- openGraph: {
58
- images: product.featuredImage?.src ? [
59
- {
60
- url: product.featuredImage.src,
61
- alt: product.featuredImage?.alt,
62
- height: product.featuredImage?.height,
63
- width: product.featuredImage?.width,
64
- type: product.featuredImage?.contentType
65
- }
66
- ] : []
67
- }
68
- },
69
- product
70
- });
71
- };
72
-
73
- exports.getProductProps = getProductProps;
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 getProductProps=e=>async r=>{let t="PRODUCT",s={slug:r,slugType:t},[a,l]=await Promise.all([core.getProductBySlug(e,r),e([core.PublishedThemePagesDocument,s])]),o=l.publishedThemePages?.[0];if(!a||!o)throw Error("Product not found");let u=normalize.parseBuilderTemplate(o),i=core.prefetchQueries(u),d=await Promise.allSettled(i.map(({query:r,variables:t,func:s})=>s?s(e,t):r?e([r,t]):{})),g=i.reduce((e,{key:r},t)=>{let s=d[t];return s?.status==="fulfilled"?{...e,[r]:s.value}:e},{});return parseJson.serializableJson({builderData:u,themeStyle:genCss.genCSS(o.pageStyle?.data),pageType:t,swr:{fallback:g},seo:{title:a.title,description:a.description,openGraph:{images:a.featuredImage?.src?[{url:a.featuredImage.src,alt:a.featuredImage?.alt,height:a.featuredImage?.height,width:a.featuredImage?.width,type:a.featuredImage?.contentType}]:[]}},product:a})};exports.getProductProps=getProductProps;