@gem-sdk/pages 3.0.0-pre-production.0 → 3.0.0
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.
- package/dist/cjs/components/ErrorBoundary.js +2 -40
- package/dist/cjs/components/ErrorFallback.js +2 -26
- package/dist/cjs/components/FacebookPixel.js +4 -36
- package/dist/cjs/components/FooterForPostPurchase.js +2 -34
- package/dist/cjs/components/GoogleAnalytic.js +6 -67
- package/dist/cjs/components/TikTokPixel.js +4 -19
- package/dist/cjs/components/builder/Body.js +2 -36
- package/dist/cjs/components/builder/Footer.js +2 -154
- package/dist/cjs/components/builder/Header.js +2 -189
- package/dist/cjs/components/builder/PopupManager.js +2 -63
- package/dist/cjs/components/builder/SwitchView.js +2 -184
- package/dist/cjs/components/builder/Toolbar.js +2 -706
- package/dist/cjs/components/builder/Toolbox.js +2 -494
- package/dist/cjs/components/builder/const.js +1 -56
- package/dist/cjs/components/builder/toolbar/const.js +1 -7
- package/dist/cjs/components/builder/toolbar/utils/findDOMClosest.js +1 -41
- package/dist/cjs/components/builder/toolbar/utils/findOverflowParent.js +1 -20
- package/dist/cjs/components/builder/toolbar/utils/getChildrenByAttrSelector.js +1 -18
- package/dist/cjs/components/builder/toolbar/utils/getDOMElementParents.js +1 -32
- package/dist/cjs/components/builder/toolbar/utils/isOverParent.js +1 -16
- package/dist/cjs/components/builder/toolbar/utils/isOverToolbarPosition.js +1 -12
- package/dist/cjs/components/builder/toolbar/utils/isSection.js +1 -8
- package/dist/cjs/components/builder/toolbar/utils/notVisible.js +1 -8
- package/dist/cjs/components/builder/toolbar/utils/waitForElementToExist.js +1 -27
- package/dist/cjs/components/image-to-layout/AddSectionImageToLayout.js +2 -150
- package/dist/cjs/components/image-to-layout/DropElement.js +2 -190
- package/dist/cjs/components/image-to-layout/ImageToLayout.js +2 -41
- package/dist/cjs/constants/index.js +1 -0
- package/dist/cjs/index.js +1 -82
- package/dist/cjs/layouts/main.js +2 -30
- package/dist/cjs/libs/api/get-builder-props.js +1 -46
- package/dist/cjs/libs/api/get-collection-props.js +1 -68
- package/dist/cjs/libs/api/get-home-page-props-v2.js +1 -145
- package/dist/cjs/libs/api/get-home-page-props.js +1 -151
- package/dist/cjs/libs/api/get-post-purchase-props-preview.js +1 -300
- package/dist/cjs/libs/api/get-preview-props.js +1 -18
- package/dist/cjs/libs/api/get-product-props.js +1 -73
- package/dist/cjs/libs/api/get-static-page-props-preview.js +1 -159
- package/dist/cjs/libs/api/get-static-page-props-v2.js +1 -168
- package/dist/cjs/libs/api/get-static-page-props.js +1 -148
- package/dist/cjs/libs/custom-fonts.js +6 -60
- package/dist/cjs/libs/fetcher.js +1 -100
- package/dist/cjs/libs/get-layout.js +1 -13
- package/dist/cjs/libs/get-storefront-api.js +1 -12
- package/dist/cjs/libs/getStaticPaths.js +1 -10
- package/dist/cjs/libs/google-fonts.js +1 -118
- package/dist/cjs/libs/helpers/check-option-font.js +1 -65
- package/dist/cjs/libs/helpers/common.js +1 -27
- package/dist/cjs/libs/helpers/extract-operation.js +1 -0
- package/dist/cjs/libs/helpers/gen-css.js +1 -135
- package/dist/cjs/libs/helpers/gen-fonts.js +1 -90
- package/dist/cjs/libs/helpers/generate-manifres.js +1 -5
- package/dist/cjs/libs/helpers/get-fallback.js +1 -34
- package/dist/cjs/libs/helpers/get-metafield.js +1 -0
- package/dist/cjs/libs/helpers/normalize.js +1 -103
- package/dist/cjs/libs/helpers/parse-json.js +1 -16
- package/dist/cjs/libs/helpers/sentry.js +1 -17
- package/dist/cjs/libs/helpers/user-agent.js +1 -7
- package/dist/cjs/libs/hooks/use-tracking-view.js +2 -42
- package/dist/cjs/libs/hooks/usePagePreview.js +1 -92
- package/dist/cjs/libs/parse-html.js +1 -34
- package/dist/cjs/libs/shopify-cdn-with-google-fonts.js +1 -1845
- package/dist/cjs/pages/404.js +2 -43
- package/dist/cjs/pages/500.js +2 -74
- package/dist/cjs/pages/CollectionGlobalProvider.js +2 -59
- package/dist/cjs/pages/builder.js +2 -115
- package/dist/cjs/pages/collection-detail.js +2 -64
- package/dist/cjs/pages/preview.js +2 -26
- package/dist/cjs/pages/product-detail.js +2 -69
- package/dist/cjs/pages/static-v2.js +5 -133
- package/dist/cjs/pages/static.js +2 -75
- package/dist/cjs/store/libs-store.js +1 -14
- package/dist/esm/components/ErrorBoundary.js +2 -38
- package/dist/esm/components/ErrorFallback.js +2 -24
- package/dist/esm/components/FacebookPixel.js +4 -34
- package/dist/esm/components/FooterForPostPurchase.js +2 -30
- package/dist/esm/components/GoogleAnalytic.js +6 -65
- package/dist/esm/components/TikTokPixel.js +4 -17
- package/dist/esm/components/builder/Body.js +2 -32
- package/dist/esm/components/builder/Footer.js +2 -150
- package/dist/esm/components/builder/Header.js +2 -185
- package/dist/esm/components/builder/PopupManager.js +2 -59
- package/dist/esm/components/builder/SwitchView.js +2 -180
- package/dist/esm/components/builder/Toolbar.js +2 -702
- package/dist/esm/components/builder/Toolbox.js +2 -490
- package/dist/esm/components/builder/const.js +1 -54
- package/dist/esm/components/builder/toolbar/const.js +1 -4
- package/dist/esm/components/builder/toolbar/utils/findDOMClosest.js +1 -39
- package/dist/esm/components/builder/toolbar/utils/findOverflowParent.js +1 -18
- package/dist/esm/components/builder/toolbar/utils/getChildrenByAttrSelector.js +1 -16
- package/dist/esm/components/builder/toolbar/utils/getDOMElementParents.js +1 -30
- package/dist/esm/components/builder/toolbar/utils/isOverParent.js +1 -14
- package/dist/esm/components/builder/toolbar/utils/isOverToolbarPosition.js +1 -10
- package/dist/esm/components/builder/toolbar/utils/isSection.js +1 -6
- package/dist/esm/components/builder/toolbar/utils/notVisible.js +1 -6
- package/dist/esm/components/builder/toolbar/utils/waitForElementToExist.js +1 -25
- package/dist/esm/components/image-to-layout/AddSectionImageToLayout.js +2 -146
- package/dist/esm/components/image-to-layout/DropElement.js +2 -188
- package/dist/esm/components/image-to-layout/ImageToLayout.js +2 -37
- package/dist/esm/constants/index.js +1 -0
- package/dist/esm/index.js +1 -36
- package/dist/esm/layouts/main.js +2 -26
- package/dist/esm/libs/api/get-builder-props.js +1 -44
- package/dist/esm/libs/api/get-collection-props.js +1 -66
- package/dist/esm/libs/api/get-home-page-props-v2.js +1 -143
- package/dist/esm/libs/api/get-home-page-props.js +1 -149
- package/dist/esm/libs/api/get-post-purchase-props-preview.js +1 -292
- package/dist/esm/libs/api/get-preview-props.js +1 -16
- package/dist/esm/libs/api/get-product-props.js +1 -71
- package/dist/esm/libs/api/get-static-page-props-preview.js +1 -157
- package/dist/esm/libs/api/get-static-page-props-v2.js +1 -166
- package/dist/esm/libs/api/get-static-page-props.js +1 -146
- package/dist/esm/libs/custom-fonts.js +6 -55
- package/dist/esm/libs/fetcher.js +1 -96
- package/dist/esm/libs/get-layout.js +1 -11
- package/dist/esm/libs/get-storefront-api.js +1 -10
- package/dist/esm/libs/getStaticPaths.js +1 -8
- package/dist/esm/libs/google-fonts.js +1 -112
- package/dist/esm/libs/helpers/check-option-font.js +1 -63
- package/dist/esm/libs/helpers/common.js +1 -24
- package/dist/esm/libs/helpers/extract-operation.js +1 -0
- package/dist/esm/libs/helpers/gen-css.js +1 -133
- package/dist/esm/libs/helpers/gen-fonts.js +1 -87
- package/dist/esm/libs/helpers/generate-manifres.js +1 -3
- package/dist/esm/libs/helpers/get-fallback.js +1 -32
- package/dist/esm/libs/helpers/get-metafield.js +1 -0
- package/dist/esm/libs/helpers/normalize.js +1 -96
- package/dist/esm/libs/helpers/parse-json.js +1 -13
- package/dist/esm/libs/helpers/sentry.js +1 -15
- package/dist/esm/libs/helpers/user-agent.js +1 -5
- package/dist/esm/libs/hooks/use-tracking-view.js +2 -40
- package/dist/esm/libs/hooks/usePagePreview.js +1 -90
- package/dist/esm/libs/parse-html.js +1 -32
- package/dist/esm/libs/shopify-cdn-with-google-fonts.js +1 -1843
- package/dist/esm/pages/404.js +2 -41
- package/dist/esm/pages/500.js +2 -72
- package/dist/esm/pages/CollectionGlobalProvider.js +2 -55
- package/dist/esm/pages/builder.js +2 -113
- package/dist/esm/pages/collection-detail.js +2 -60
- package/dist/esm/pages/preview.js +2 -24
- package/dist/esm/pages/product-detail.js +2 -65
- package/dist/esm/pages/static-v2.js +5 -131
- package/dist/esm/pages/static.js +2 -71
- package/dist/esm/store/libs-store.js +1 -12
- package/dist/types/index.d.ts +61 -63
- package/package.json +7 -7
- package/dist/cjs/components/builder/InteractionSelectOnPageHeader.js +0 -192
- package/dist/cjs/libs/helpers/gen-favicon.js +0 -22
- package/dist/esm/components/builder/InteractionSelectOnPageHeader.js +0 -188
- package/dist/esm/libs/helpers/gen-favicon.js +0 -20
package/dist/esm/libs/fetcher.js
CHANGED
|
@@ -1,96 +1 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
const createFetcher = (token)=>{
|
|
4
|
-
const shopToken = token || process.env.NEXT_PUBLIC_SHOP_TOKEN;
|
|
5
|
-
return async (args)=>{
|
|
6
|
-
const [query, variables, operationName] = args;
|
|
7
|
-
if (!shopToken) {
|
|
8
|
-
throw new Error('shopToken is not defined');
|
|
9
|
-
}
|
|
10
|
-
if (!process.env.NEXT_PUBLIC_API_URL) {
|
|
11
|
-
throw new Error('NEXT_PUBLIC_API_URL is not defined');
|
|
12
|
-
}
|
|
13
|
-
const headers = {
|
|
14
|
-
'Content-Type': 'application/json',
|
|
15
|
-
'X-GemX-Shop-Token': shopToken
|
|
16
|
-
};
|
|
17
|
-
return fetch(process.env.NEXT_PUBLIC_API_URL, {
|
|
18
|
-
method: 'POST',
|
|
19
|
-
headers,
|
|
20
|
-
body: JSON.stringify({
|
|
21
|
-
query,
|
|
22
|
-
variables,
|
|
23
|
-
operationName
|
|
24
|
-
})
|
|
25
|
-
}).then((res)=>res.json()).then((res)=>{
|
|
26
|
-
if (res.errors) {
|
|
27
|
-
return Promise.reject(res.errors);
|
|
28
|
-
}
|
|
29
|
-
return res.data;
|
|
30
|
-
});
|
|
31
|
-
};
|
|
32
|
-
};
|
|
33
|
-
const createAppAPIFetcher = (token, shopID)=>{
|
|
34
|
-
const shopToken = token;
|
|
35
|
-
const endPoint = process.env.NEXT_APP_API_URL;
|
|
36
|
-
return async (args)=>{
|
|
37
|
-
const [query, variables, operationName] = args;
|
|
38
|
-
if (!shopToken) {
|
|
39
|
-
throw new Error('shopToken is not defined');
|
|
40
|
-
}
|
|
41
|
-
if (!endPoint) {
|
|
42
|
-
throw new Error('NEXT_APP_API_URL is not defined');
|
|
43
|
-
}
|
|
44
|
-
const headers = {
|
|
45
|
-
'Content-Type': 'application/json',
|
|
46
|
-
Authorization: `Token ${shopToken}`,
|
|
47
|
-
'X-GemX-Shop-ID': shopID || ''
|
|
48
|
-
};
|
|
49
|
-
return fetch(endPoint, {
|
|
50
|
-
method: 'POST',
|
|
51
|
-
headers,
|
|
52
|
-
body: JSON.stringify({
|
|
53
|
-
query,
|
|
54
|
-
variables,
|
|
55
|
-
operationName
|
|
56
|
-
})
|
|
57
|
-
}).then((res)=>res.json()).then((res)=>{
|
|
58
|
-
if (res.errors) {
|
|
59
|
-
return Promise.reject(res.errors);
|
|
60
|
-
}
|
|
61
|
-
return res.data;
|
|
62
|
-
});
|
|
63
|
-
};
|
|
64
|
-
};
|
|
65
|
-
const createShopifyFetcher = (storefrontToken, handle)=>{
|
|
66
|
-
const token = storefrontToken ?? process.env.NEXT_PUBLIC_STOREFRONT_TOKEN;
|
|
67
|
-
const storefrontHandle = handle ?? process.env.NEXT_PUBLIC_STOREFRONT_HANDLE;
|
|
68
|
-
return async (args)=>{
|
|
69
|
-
if (!token) {
|
|
70
|
-
throw new Error('NEXT_PUBLIC_STOREFRONT_TOKEN is not defined');
|
|
71
|
-
}
|
|
72
|
-
if (!storefrontHandle) {
|
|
73
|
-
throw new Error('NEXT_PUBLIC_STOREFRONT_HANDLE is not defined');
|
|
74
|
-
}
|
|
75
|
-
const headers = {
|
|
76
|
-
'Content-Type': 'application/json',
|
|
77
|
-
'X-Shopify-Storefront-Access-Token': token
|
|
78
|
-
};
|
|
79
|
-
const [query, variables] = args;
|
|
80
|
-
return fetch(getStorefrontApi(storefrontHandle), {
|
|
81
|
-
method: 'POST',
|
|
82
|
-
headers,
|
|
83
|
-
body: JSON.stringify({
|
|
84
|
-
query,
|
|
85
|
-
variables
|
|
86
|
-
})
|
|
87
|
-
}).then((res)=>res.json()).then((res)=>{
|
|
88
|
-
if (res.errors) {
|
|
89
|
-
return Promise.reject(res.errors);
|
|
90
|
-
}
|
|
91
|
-
return res.data;
|
|
92
|
-
});
|
|
93
|
-
};
|
|
94
|
-
};
|
|
95
|
-
|
|
96
|
-
export { createAppAPIFetcher, createFetcher, createShopifyFetcher };
|
|
1
|
+
import{getStorefrontApi as e}from"./get-storefront-api.js";import{extractOperation as r}from"./helpers/extract-operation.js";let createFetcher=e=>{let t=e||process.env.NEXT_PUBLIC_SHOP_TOKEN;return async e=>{let[o,n,i]=e;if(!t)throw Error("shopToken is not defined");let s=process.env.NEXT_PUBLIC_API_URL;if(!s)throw Error("NEXT_PUBLIC_API_URL is not defined");let p=r(o);p&&(s=`${s}?gp-online-store-operation=${p}`);let h={"Content-Type":"application/json","X-GemX-Shop-Token":t};return fetch(s,{method:"POST",headers:h,body:JSON.stringify({query:o,variables:n,operationName:i})}).then(e=>e.json()).then(e=>e.errors?Promise.reject(e.errors):e.data)}},createAppAPIFetcher=(e,t)=>{let o=process.env.NEXT_APP_API_URL;return async n=>{let[i,s,p]=n;if(!e)throw Error("shopToken is not defined");if(!o)throw Error("NEXT_APP_API_URL is not defined");let h=r(i);h&&(o=`${o}?gp-online-store-operation=${h}`);let c={"Content-Type":"application/json",Authorization:`Token ${e}`,"X-GemX-Shop-ID":t||""};return fetch(`${o}?gp-online-store-operation=${p}`,{method:"POST",headers:c,body:JSON.stringify({query:i,variables:s,operationName:p})}).then(e=>e.json()).then(e=>e.errors?Promise.reject(e.errors):e.data)}},createShopifyFetcher=(r,t)=>{let o=r??process.env.NEXT_PUBLIC_STOREFRONT_TOKEN,n=t??process.env.NEXT_PUBLIC_STOREFRONT_HANDLE;return async r=>{if(!o)throw Error("NEXT_PUBLIC_STOREFRONT_TOKEN is not defined");if(!n)throw Error("NEXT_PUBLIC_STOREFRONT_HANDLE is not defined");let t={"Content-Type":"application/json","X-Shopify-Storefront-Access-Token":o},[i,s]=r;return fetch(e(n),{method:"POST",headers:t,body:JSON.stringify({query:i,variables:s})}).then(e=>e.json()).then(e=>e.errors?Promise.reject(e.errors):e.data)}};export{createAppAPIFetcher,createFetcher,createShopifyFetcher};
|
|
@@ -1,11 +1 @@
|
|
|
1
|
-
import
|
|
2
|
-
import MainLayout from '../layouts/main.js';
|
|
3
|
-
|
|
4
|
-
const getLayout = (page, pageProps)=>{
|
|
5
|
-
return /*#__PURE__*/ jsx(MainLayout, {
|
|
6
|
-
...pageProps,
|
|
7
|
-
children: page
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
|
-
|
|
11
|
-
export { getLayout };
|
|
1
|
+
import{jsx as t}from"react/jsx-runtime";import o from"../layouts/main.js";let getLayout=(r,e)=>t(o,{...e,children:r});export{getLayout};
|
|
@@ -1,10 +1 @@
|
|
|
1
|
-
|
|
2
|
-
switch(provider){
|
|
3
|
-
case 'BIGCOMMERCE':
|
|
4
|
-
return `https://${handle}.bigcommerce.com`;
|
|
5
|
-
default:
|
|
6
|
-
return `https://${handle}.myshopify.com/api/2022-07/graphql.json`;
|
|
7
|
-
}
|
|
8
|
-
};
|
|
9
|
-
|
|
10
|
-
export { getStorefrontApi };
|
|
1
|
+
let getStorefrontApi=(t,o)=>"BIGCOMMERCE"===o?`https://${t}.bigcommerce.com`:`https://${t}.myshopify.com/api/2022-07/graphql.json`;export{getStorefrontApi};
|
|
@@ -1,112 +1 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { getFontsFromDataBuilder } from './helpers/gen-fonts.js';
|
|
3
|
-
|
|
4
|
-
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';
|
|
5
|
-
const IE_UA = 'Mozilla/5.0 (Windows NT 10.0; Trident/7.0; rv:11.0) like Gecko';
|
|
6
|
-
async function getFontForUA(url, UA) {
|
|
7
|
-
return fetch(url, {
|
|
8
|
-
headers: {
|
|
9
|
-
'User-Agent': UA
|
|
10
|
-
}
|
|
11
|
-
}).then((res)=>{
|
|
12
|
-
if (res.status === 200) {
|
|
13
|
-
return res.text();
|
|
14
|
-
}
|
|
15
|
-
return '';
|
|
16
|
-
});
|
|
17
|
-
}
|
|
18
|
-
const composeFonts = (fonts)=>{
|
|
19
|
-
const uniqFonts = fonts.filter((font, index, arr)=>{
|
|
20
|
-
return index === arr.findIndex((t)=>t.family === font.family);
|
|
21
|
-
});
|
|
22
|
-
return uniqFonts.map((font)=>{
|
|
23
|
-
const variants = fonts.filter((t)=>t.family === font.family).reduce((acc, t)=>{
|
|
24
|
-
return [
|
|
25
|
-
...acc,
|
|
26
|
-
...t.variants
|
|
27
|
-
];
|
|
28
|
-
}, []).filter((t, index, arr)=>{
|
|
29
|
-
return index === arr.findIndex((v)=>v === t);
|
|
30
|
-
});
|
|
31
|
-
return {
|
|
32
|
-
...font,
|
|
33
|
-
variants
|
|
34
|
-
};
|
|
35
|
-
});
|
|
36
|
-
};
|
|
37
|
-
const createFontUrl = (fonts, option, fontType)=>{
|
|
38
|
-
const mainFonts = fonts.filter((font)=>{
|
|
39
|
-
return !([
|
|
40
|
-
'bunny',
|
|
41
|
-
'google'
|
|
42
|
-
].includes(font.type) && checkNotInOptionFont(font.family, fontType || 'google')) && (font.type === 'google' || font.type === 'bunny' || !font.type);
|
|
43
|
-
});
|
|
44
|
-
if (!mainFonts.length) return;
|
|
45
|
-
const params = new URLSearchParams();
|
|
46
|
-
const display = option?.display || 'swap';
|
|
47
|
-
const uniqFonts = mainFonts.filter((font, index, arr)=>{
|
|
48
|
-
return index === arr.findIndex((t)=>t.family === font.family);
|
|
49
|
-
});
|
|
50
|
-
const family = composeFonts(uniqFonts).map((font)=>{
|
|
51
|
-
return `${font.family.replace(/ /g, '+')}:${font.variants.join(',')}`;
|
|
52
|
-
}).join('|');
|
|
53
|
-
params.append('family', family);
|
|
54
|
-
params.append('display', display);
|
|
55
|
-
if (option?.subset) {
|
|
56
|
-
params.append('subset', option.subset);
|
|
57
|
-
}
|
|
58
|
-
if (option?.effect) {
|
|
59
|
-
params.append('effect', option.effect);
|
|
60
|
-
}
|
|
61
|
-
const bunnyFontUrl = `https://fonts.bunny.net/css?family=${family}`;
|
|
62
|
-
const googleFontUrl = `https://fonts.googleapis.com/css?${decodeURIComponent(params.toString())}`;
|
|
63
|
-
return fontType === 'bunny' ? bunnyFontUrl : googleFontUrl;
|
|
64
|
-
};
|
|
65
|
-
// eslint-disable-next-line max-params
|
|
66
|
-
async function getFonts(fonts, option, isImportFontByUrl = true, fontType) {
|
|
67
|
-
/**
|
|
68
|
-
* The order of IE -> Chrome is important, other wise chrome starts loading woff1.
|
|
69
|
-
* CSS cascading 🤷♂️.
|
|
70
|
-
*/ const url = createFontUrl(fonts, option, fontType);
|
|
71
|
-
if (!url) return '';
|
|
72
|
-
try {
|
|
73
|
-
if (isImportFontByUrl) return `@import url('${url}');`;
|
|
74
|
-
const [ie, chrome] = await Promise.all([
|
|
75
|
-
getFontForUA(url, IE_UA),
|
|
76
|
-
getFontForUA(url, CHROME_UA)
|
|
77
|
-
]);
|
|
78
|
-
const maxSize = 50; // 50KB
|
|
79
|
-
const value = ie + chrome;
|
|
80
|
-
if (maxSize) {
|
|
81
|
-
const textEncoder = new TextEncoder();
|
|
82
|
-
const size = value ? textEncoder.encode(value).length : 0;
|
|
83
|
-
if (Math.ceil(size / 1024) >= maxSize) {
|
|
84
|
-
return `@import url('${url}');`;
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
return value;
|
|
88
|
-
} catch (e) {
|
|
89
|
-
return '';
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
const getFontFromGlobalStyle = (data, sourceFont)=>{
|
|
93
|
-
if (!data) return '';
|
|
94
|
-
try {
|
|
95
|
-
const globalStyle = JSON.parse(data);
|
|
96
|
-
const fontData = globalStyle?.font ?? {};
|
|
97
|
-
const fonts = Object.entries(fontData).map(([, value])=>{
|
|
98
|
-
return value;
|
|
99
|
-
});
|
|
100
|
-
return getFonts(fonts, undefined, undefined, sourceFont);
|
|
101
|
-
} catch {
|
|
102
|
-
return '';
|
|
103
|
-
}
|
|
104
|
-
};
|
|
105
|
-
async function getFontStyleFromPageTemplate(pageTemplate, sourceFont) {
|
|
106
|
-
const fontStyle = pageTemplate.map((sectionData)=>{
|
|
107
|
-
return getFonts(getFontsFromDataBuilder(sectionData.data), undefined, undefined, sourceFont);
|
|
108
|
-
});
|
|
109
|
-
return await Promise.all(fontStyle);
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
export { composeFonts, createFontUrl, getFontFromGlobalStyle, getFontStyleFromPageTemplate, getFonts };
|
|
1
|
+
import{checkNotInOptionFont as e}from"./helpers/check-option-font.js";import{getFontsFromDataBuilder as t}from"./helpers/gen-fonts.js";import{sentryCaptureException as n}from"./helpers/sentry.js";let CHROME_UA="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36",IE_UA="Mozilla/5.0 (Windows NT 10.0; Trident/7.0; rv:11.0) like Gecko";async function getFontForUA(e,t){try{return fetch(e,{headers:{"User-Agent":t}}).then(o=>200===o.status?o.text():(n("getFontForUA",`Unexpected status ${o.status}`,{url:e,UA:t}),""))}catch(o){return n("getFontForUA","Error fetching font",{url:e,UA:t,error:o}),""}}let composeFonts=e=>{let t=e.filter((e,t,n)=>t===n.findIndex(t=>t.family===e.family));return t.map(t=>{let n=e.filter(e=>e.family===t.family).reduce((e,t)=>[...e,...t.variants],[]).filter((e,t,n)=>t===n.findIndex(t=>t===e));return{...t,variants:n}})},createFontUrl=(t,n,o)=>{let r=t.filter(t=>!(["bunny","google"].includes(t.type)&&e(t.family,o||"google"))&&("google"===t.type||"bunny"===t.type||!t.type));if(!r.length)return;let l=new URLSearchParams,a=n?.display||"swap",i=r.filter((e,t,n)=>t===n.findIndex(t=>t.family===e.family)),s=composeFonts(i).map(e=>`${e.family.replace(/ /g,"+")}:${e.variants.join(",")}`).join("|");l.append("family",s),l.append("display",a),n?.subset&&l.append("subset",n.subset),n?.effect&&l.append("effect",n.effect);let c=`https://fonts.bunny.net/css?family=${s}`,f=`https://fonts.googleapis.com/css?${decodeURIComponent(l.toString())}`;return"bunny"===o?c:f};async function getFonts(e,t,o=!0,r){let l=createFontUrl(e,t,r);if(!l)return"";try{if(o)return`@import url('${l}');`;let[e,t]=await Promise.all([getFontForUA(l,"Mozilla/5.0 (Windows NT 10.0; Trident/7.0; rv:11.0) like Gecko"),getFontForUA(l,"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36")]),n=e+t;{let e=new TextEncoder,t=n?e.encode(n).length:0;if(Math.ceil(t/1024)>=50)return`@import url('${l}');`}return n}catch(e){return n("getFonts","Error fetching font",{url:l,fontType:r}),""}}let getFontFromGlobalStyle=(e,t)=>{if(!e)return"";try{let n=JSON.parse(e),o=n?.font??{},r=Object.entries(o).map(([,e])=>e);return getFonts(r,void 0,void 0,t)}catch{return""}};async function getFontStyleFromPageTemplate(e,n){let o=e.map(e=>getFonts(t(e.data),void 0,void 0,n));return await Promise.all(o)}export{composeFonts,createFontUrl,getFontFromGlobalStyle,getFontStyleFromPageTemplate,getFonts};
|
|
@@ -1,63 +1 @@
|
|
|
1
|
-
|
|
2
|
-
'Anton SC',
|
|
3
|
-
'Arsenal SC',
|
|
4
|
-
'Baskervville SC',
|
|
5
|
-
'Beiruti',
|
|
6
|
-
'Bodoni Moda SC',
|
|
7
|
-
'Bona Nova SC',
|
|
8
|
-
'Bungee Tint',
|
|
9
|
-
'Edu AU VIC WA NT Hand',
|
|
10
|
-
'Fustat',
|
|
11
|
-
'Ga Maamli',
|
|
12
|
-
'Kalnia Glaze',
|
|
13
|
-
'Maname',
|
|
14
|
-
'Matemasie',
|
|
15
|
-
'Material Icons',
|
|
16
|
-
'Material Icons Outlined',
|
|
17
|
-
'Material Icons Round',
|
|
18
|
-
'Material Icons Sharp',
|
|
19
|
-
'Material Icons Two Tone',
|
|
20
|
-
'Material Symbols Outlined',
|
|
21
|
-
'Material Symbols Rounded',
|
|
22
|
-
'Material Symbols Sharp',
|
|
23
|
-
'Moderustic',
|
|
24
|
-
'New Amsterdam',
|
|
25
|
-
'Playwrite AR',
|
|
26
|
-
'Playwrite AT',
|
|
27
|
-
'Playwrite BE VLG',
|
|
28
|
-
'Playwrite BE WAL',
|
|
29
|
-
'Playwrite CL',
|
|
30
|
-
'Playwrite CU',
|
|
31
|
-
'Playwrite CZ',
|
|
32
|
-
'Playwrite DK Loopet',
|
|
33
|
-
'Playwrite DK Uloopet',
|
|
34
|
-
'Playwrite HR',
|
|
35
|
-
'Playwrite HR Lijeva',
|
|
36
|
-
'Playwrite HU',
|
|
37
|
-
'Playwrite PE',
|
|
38
|
-
'SUSE',
|
|
39
|
-
'Sankofa Display',
|
|
40
|
-
'Wittgenstein',
|
|
41
|
-
'Zain'
|
|
42
|
-
];
|
|
43
|
-
const listFontsNotInGoogle = [
|
|
44
|
-
'Arima Madurai',
|
|
45
|
-
'Coda Caption',
|
|
46
|
-
'Fredoka One',
|
|
47
|
-
'Gentium Book Basic',
|
|
48
|
-
'Kantumruy',
|
|
49
|
-
'Merienda One',
|
|
50
|
-
'Source Sans Pro',
|
|
51
|
-
'Source Serif Pro',
|
|
52
|
-
'Briem Hand',
|
|
53
|
-
'Pushster'
|
|
54
|
-
];
|
|
55
|
-
const objectFont = {
|
|
56
|
-
bunny: listFontsNotInBunny,
|
|
57
|
-
google: listFontsNotInGoogle
|
|
58
|
-
};
|
|
59
|
-
const checkNotInOptionFont = (currentfont, type)=>{
|
|
60
|
-
return objectFont?.[type]?.includes(currentfont);
|
|
61
|
-
};
|
|
62
|
-
|
|
63
|
-
export { checkNotInOptionFont };
|
|
1
|
+
let listFontsNotInBunny=["Anton SC","Arsenal SC","Baskervville SC","Beiruti","Bodoni Moda SC","Bona Nova SC","Bungee Tint","Edu AU VIC WA NT Hand","Fustat","Ga Maamli","Kalnia Glaze","Maname","Matemasie","Material Icons","Material Icons Outlined","Material Icons Round","Material Icons Sharp","Material Icons Two Tone","Material Symbols Outlined","Material Symbols Rounded","Material Symbols Sharp","Moderustic","New Amsterdam","Playwrite AR","Playwrite AT","Playwrite BE VLG","Playwrite BE WAL","Playwrite CL","Playwrite CU","Playwrite CZ","Playwrite DK Loopet","Playwrite DK Uloopet","Playwrite HR","Playwrite HR Lijeva","Playwrite HU","Playwrite PE","SUSE","Sankofa Display","Wittgenstein","Zain"],listFontsNotInGoogle=["Arima Madurai","Coda Caption","Fredoka One","Gentium Book Basic","Kantumruy","Merienda One","Source Sans Pro","Source Serif Pro","Briem Hand","Pushster"],objectFont={bunny:listFontsNotInBunny,google:listFontsNotInGoogle},checkNotInOptionFont=(a,e)=>objectFont?.[e]?.includes(a);export{checkNotInOptionFont};
|
|
@@ -1,24 +1 @@
|
|
|
1
|
-
async function wait(
|
|
2
|
-
return new Promise((resolve)=>setTimeout(resolve, ms));
|
|
3
|
-
}
|
|
4
|
-
const retryWithDelay = async (fn, config)=>{
|
|
5
|
-
const retries = config?.retries ?? 3;
|
|
6
|
-
const delay = config?.delay ?? 1000;
|
|
7
|
-
try {
|
|
8
|
-
return await fn();
|
|
9
|
-
} catch (err) {
|
|
10
|
-
if (retries <= 0 || config?.retryIf && !config.retryIf(err)) {
|
|
11
|
-
return Promise.reject(err);
|
|
12
|
-
}
|
|
13
|
-
//delay the next call
|
|
14
|
-
await wait(delay);
|
|
15
|
-
//recursively call the same func
|
|
16
|
-
return retryWithDelay(fn, {
|
|
17
|
-
...config,
|
|
18
|
-
retries: retries - 1,
|
|
19
|
-
delay
|
|
20
|
-
});
|
|
21
|
-
}
|
|
22
|
-
};
|
|
23
|
-
|
|
24
|
-
export { retryWithDelay, wait };
|
|
1
|
+
async function wait(e){return new Promise(t=>setTimeout(t,e))}let retryWithDelay=async(e,t)=>{let r=t?.retries??3,i=t?.delay??1e3;try{return await e()}catch(a){if(r<=0||t?.retryIf&&!t.retryIf(a))return Promise.reject(a);return await wait(i),retryWithDelay(e,{...t,retries:r-1,delay:i})}};export{retryWithDelay,wait};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
let extractOperation=t=>{if(!t)return"";let r=t.trim().replace(/\s+/g," "),e=/^(query|mutation|subscription)\s+(\w+)/,a=r.match(e);return a?a[2]:null};export{extractOperation};
|
|
@@ -1,133 +1 @@
|
|
|
1
|
-
import
|
|
2
|
-
import merge from 'deepmerge';
|
|
3
|
-
|
|
4
|
-
const baseDevices = {
|
|
5
|
-
tablet: '1024px',
|
|
6
|
-
mobile: '767px'
|
|
7
|
-
};
|
|
8
|
-
const devicesOrder = [
|
|
9
|
-
'desktop',
|
|
10
|
-
'tablet',
|
|
11
|
-
'mobile'
|
|
12
|
-
];
|
|
13
|
-
const flattenObject = (obj, prefix)=>{
|
|
14
|
-
return Object.keys(obj).reduce((acc, k)=>{
|
|
15
|
-
const pre = prefix ? `${prefix}-` : '';
|
|
16
|
-
if (typeof obj[k] === 'object' && obj[k] !== null && Object.keys(obj[k]).length > 0) Object.assign(acc, flattenObject(obj[k], pre + k));
|
|
17
|
-
else acc[pre + k] = obj[k];
|
|
18
|
-
return acc;
|
|
19
|
-
}, {});
|
|
20
|
-
};
|
|
21
|
-
const mapObject = (obj)=>{
|
|
22
|
-
return Object.entries(obj ?? {}).reduce((acc, [k, v])=>{
|
|
23
|
-
return {
|
|
24
|
-
...acc,
|
|
25
|
-
[getShortName(k)]: typeof v === 'object' ? mapObject(v) : v
|
|
26
|
-
};
|
|
27
|
-
}, {});
|
|
28
|
-
};
|
|
29
|
-
const getValueByDevice = (data, device)=>{
|
|
30
|
-
const deviceData = {
|
|
31
|
-
typography: Object.fromEntries(Object.entries(data?.typography ?? {}).map(([key, value])=>{
|
|
32
|
-
const typo = {
|
|
33
|
-
...value?.[device]
|
|
34
|
-
};
|
|
35
|
-
if (!typo) return [
|
|
36
|
-
key,
|
|
37
|
-
undefined
|
|
38
|
-
];
|
|
39
|
-
if (typo.fontFamily) {
|
|
40
|
-
typo.fontFamily = `var(--g-font-${typo.fontFamily}, ${typo.fontFamily})`;
|
|
41
|
-
}
|
|
42
|
-
return [
|
|
43
|
-
key,
|
|
44
|
-
typo
|
|
45
|
-
];
|
|
46
|
-
})),
|
|
47
|
-
spacing: Object.fromEntries(Object.entries(data?.spacing ?? {}).map(([key, value])=>{
|
|
48
|
-
return [
|
|
49
|
-
key,
|
|
50
|
-
value?.[device]
|
|
51
|
-
];
|
|
52
|
-
})),
|
|
53
|
-
container: Object.fromEntries(Object.entries(data?.container ?? {}).map(([key, value])=>{
|
|
54
|
-
return [
|
|
55
|
-
key,
|
|
56
|
-
value?.[device]
|
|
57
|
-
];
|
|
58
|
-
})),
|
|
59
|
-
font: Object.fromEntries(Object.entries(data?.font ?? {}).map(([key, value])=>{
|
|
60
|
-
return [
|
|
61
|
-
key,
|
|
62
|
-
value?.family
|
|
63
|
-
];
|
|
64
|
-
})),
|
|
65
|
-
theme: {
|
|
66
|
-
font: Object.fromEntries(Object.entries(data?.theme?.font ?? {}).map(([key, value])=>{
|
|
67
|
-
return [
|
|
68
|
-
key,
|
|
69
|
-
value?.family
|
|
70
|
-
];
|
|
71
|
-
}))
|
|
72
|
-
}
|
|
73
|
-
};
|
|
74
|
-
return deviceData;
|
|
75
|
-
};
|
|
76
|
-
const quoteFontName = (font)=>{
|
|
77
|
-
if ([
|
|
78
|
-
'sans-serif'
|
|
79
|
-
].includes(font)) {
|
|
80
|
-
return font;
|
|
81
|
-
}
|
|
82
|
-
return `'${font}'`;
|
|
83
|
-
};
|
|
84
|
-
const genCSSVariable = (deviceData)=>{
|
|
85
|
-
return Object.entries(mapObject(flattenObject(deviceData))).map(([key, value])=>{
|
|
86
|
-
if (value === undefined) return undefined;
|
|
87
|
-
if ([
|
|
88
|
-
'font-heading',
|
|
89
|
-
'font-body',
|
|
90
|
-
'theme-font-heading',
|
|
91
|
-
'theme-font-body'
|
|
92
|
-
].includes(key)) {
|
|
93
|
-
return `--g-${key}: ${quoteFontName(value)}`;
|
|
94
|
-
}
|
|
95
|
-
return `--g-${key}:${value}`;
|
|
96
|
-
}).filter((v)=>v !== undefined).join(';');
|
|
97
|
-
};
|
|
98
|
-
const genCSS = (input, mobileOnly)=>{
|
|
99
|
-
if (!input) return '';
|
|
100
|
-
let data = {};
|
|
101
|
-
try {
|
|
102
|
-
if (typeof input === 'string') {
|
|
103
|
-
data = JSON.parse(input);
|
|
104
|
-
} else {
|
|
105
|
-
data = input;
|
|
106
|
-
}
|
|
107
|
-
if (mobileOnly) {
|
|
108
|
-
const desktop = getValueByDevice(data, 'desktop');
|
|
109
|
-
const mobile = getValueByDevice(data, 'mobile');
|
|
110
|
-
const deviceData = merge(desktop, mobile);
|
|
111
|
-
deviceData.color = data.color;
|
|
112
|
-
deviceData.radius = data.radius;
|
|
113
|
-
const cssData = genCSSVariable(deviceData);
|
|
114
|
-
return `:root{${cssData}}`;
|
|
115
|
-
}
|
|
116
|
-
return devicesOrder.map((device)=>{
|
|
117
|
-
const deviceData = getValueByDevice(data, device);
|
|
118
|
-
if (device === 'desktop') {
|
|
119
|
-
deviceData.color = data.color;
|
|
120
|
-
deviceData.radius = data.radius;
|
|
121
|
-
}
|
|
122
|
-
const cssData = genCSSVariable(deviceData);
|
|
123
|
-
if (device === 'desktop') {
|
|
124
|
-
return `:root{${cssData}}`;
|
|
125
|
-
}
|
|
126
|
-
return `@media (max-width: ${baseDevices[device]}) {:root{${cssData}}}`;
|
|
127
|
-
}).join('\n');
|
|
128
|
-
} catch {
|
|
129
|
-
return '';
|
|
130
|
-
}
|
|
131
|
-
};
|
|
132
|
-
|
|
133
|
-
export { genCSS };
|
|
1
|
+
import{DEVICES as e,getShortName as t}from"@gem-sdk/core";import r from"deepmerge";let baseDevices={tablet:"1024px",mobile:"767px"},flattenObject=(e,t)=>Object.keys(e).reduce((r,o)=>{let n=t?`${t}-`:"";return"object"==typeof e[o]&&null!==e[o]&&Object.keys(e[o]).length>0?Object.assign(r,flattenObject(e[o],n+o)):r[n+o]=e[o],r},{}),mapObject=e=>Object.entries(e??{}).reduce((e,[r,o])=>({...e,[t(r)]:"object"==typeof o?mapObject(o):o}),{}),getValueByDevice=(e,t)=>{let r={typography:Object.fromEntries(Object.entries(e?.typography??{}).map(([e,r])=>{let o={...r?.[t]};return o?(o.fontFamily&&(o.fontFamily=`var(--g-font-${o.fontFamily}, ${o.fontFamily})`),[e,o]):[e,void 0]})),spacing:Object.fromEntries(Object.entries(e?.spacing??{}).map(([e,r])=>[e,r?.[t]])),container:Object.fromEntries(Object.entries(e?.container??{}).map(([e,r])=>[e,r?.[t]])),font:Object.fromEntries(Object.entries(e?.font??{}).map(([e,t])=>[e,t?.family])),theme:{font:Object.fromEntries(Object.entries(e?.theme?.font??{}).map(([e,t])=>[e,t?.family]))}};return r},quoteFontName=e=>["sans-serif"].includes(e)?e:`'${e}'`,genCSSVariable=e=>Object.entries(mapObject(flattenObject(e))).map(([e,t])=>{if(void 0!==t)return["font-heading","font-body","theme-font-heading","theme-font-body"].includes(e)?`--g-${e}: ${quoteFontName(t)}`:`--g-${e}:${t}`}).filter(e=>void 0!==e).join(";"),genCSS=(t,o)=>{if(!t)return"";let n={};try{if(n="string"==typeof t?JSON.parse(t):t,o){let e=getValueByDevice(n,"desktop"),t=getValueByDevice(n,"mobile"),o=r(e,t);o.color=n.color,o.radius=n.radius;let i=genCSSVariable(o);return`:root{${i}}`}return e.map(e=>{let t=getValueByDevice(n,e);"desktop"===e&&(t.color=n.color,t.radius=n.radius);let r=genCSSVariable(t);return"desktop"===e?`:root{${r}}`:`@media (max-width: ${baseDevices[e]}) {:root{${r}}}`}).join("\n")}catch{return""}};export{genCSS};
|
|
@@ -1,87 +1 @@
|
|
|
1
|
-
|
|
2
|
-
const fonts = [];
|
|
3
|
-
for(const uid in dataBuilder){
|
|
4
|
-
if (Object.prototype.hasOwnProperty.call(dataBuilder, uid)) {
|
|
5
|
-
const data = dataBuilder[uid];
|
|
6
|
-
const styles = data.styles;
|
|
7
|
-
const settings = data.settings;
|
|
8
|
-
getFontFromGroupSetting(fonts, styles);
|
|
9
|
-
getFontFromGroupSetting(fonts, settings);
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
return fonts;
|
|
13
|
-
};
|
|
14
|
-
const getFontFromGroupSetting = (fonts, groupSetting)=>{
|
|
15
|
-
const states = [
|
|
16
|
-
'normal',
|
|
17
|
-
'hover',
|
|
18
|
-
'focus',
|
|
19
|
-
'active',
|
|
20
|
-
'disabled',
|
|
21
|
-
'price',
|
|
22
|
-
'compareAtPrice'
|
|
23
|
-
];
|
|
24
|
-
for(const attr in groupSetting){
|
|
25
|
-
if (Object.prototype.hasOwnProperty.call(groupSetting, attr)) {
|
|
26
|
-
const value = groupSetting[attr];
|
|
27
|
-
if (!value) continue;
|
|
28
|
-
getFontValue(fonts, value);
|
|
29
|
-
for (const state of states){
|
|
30
|
-
if (!value[state]) continue;
|
|
31
|
-
getFontValue(fonts, value[state]);
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
};
|
|
36
|
-
const getFontValue = (fonts, value)=>{
|
|
37
|
-
let customFontFamily = value.custom?.fontFamily;
|
|
38
|
-
if (typeof customFontFamily === 'string') {
|
|
39
|
-
customFontFamily = {
|
|
40
|
-
value: value.custom?.fontFamily || '',
|
|
41
|
-
type: 'google'
|
|
42
|
-
};
|
|
43
|
-
}
|
|
44
|
-
const fontFamily = customFontFamily?.value;
|
|
45
|
-
let customFontVariants = value.custom?.fontVariants;
|
|
46
|
-
if (!customFontVariants?.length) {
|
|
47
|
-
customFontVariants = [
|
|
48
|
-
value.custom?.fontWeight
|
|
49
|
-
];
|
|
50
|
-
}
|
|
51
|
-
if (customFontFamily && customFontVariants?.length) {
|
|
52
|
-
const variants = customFontVariants.map((item)=>{
|
|
53
|
-
switch(item){
|
|
54
|
-
case 'regular':
|
|
55
|
-
return '400';
|
|
56
|
-
}
|
|
57
|
-
return item;
|
|
58
|
-
});
|
|
59
|
-
const customFontWeight = value.custom?.fontWeight && variants.includes(value.custom?.fontWeight) ? value.custom?.fontWeight : variants[0];
|
|
60
|
-
if (customFontWeight) {
|
|
61
|
-
const isExist = fonts.find((item)=>item.family == fontFamily && item.variants.includes(customFontWeight));
|
|
62
|
-
if (!isExist) {
|
|
63
|
-
const isFontFamily = fonts.find((item)=>item.family == fontFamily);
|
|
64
|
-
if (isFontFamily) {
|
|
65
|
-
isFontFamily.variants.push(customFontWeight);
|
|
66
|
-
} else {
|
|
67
|
-
const fontVariants = [
|
|
68
|
-
customFontWeight
|
|
69
|
-
];
|
|
70
|
-
if (customFontWeight !== '700') {
|
|
71
|
-
if (variants.includes('700')) {
|
|
72
|
-
fontVariants.push('700'); // Auto add 700 for bold in editor inline
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
fonts.push({
|
|
76
|
-
family: fontFamily || '',
|
|
77
|
-
variants: fontVariants,
|
|
78
|
-
subsets: [],
|
|
79
|
-
type: customFontFamily.type
|
|
80
|
-
});
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
};
|
|
86
|
-
|
|
87
|
-
export { getFontFromGroupSetting, getFontsFromDataBuilder };
|
|
1
|
+
let 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,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};
|
|
@@ -1,32 +1 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
const getFallbackV2 = async (fetcher, data, isStorefront = true)=>{
|
|
4
|
-
const isSample = isStorefront ? !process.env.NEXT_PUBLIC_STOREFRONT_TOKEN : false;
|
|
5
|
-
const queries = data.map((v)=>prefetchQueries(v.data, {
|
|
6
|
-
isSample,
|
|
7
|
-
isStorefront
|
|
8
|
-
})).flat();
|
|
9
|
-
const datas = await Promise.allSettled(queries.map(({ query, variables, func })=>{
|
|
10
|
-
if (func) {
|
|
11
|
-
return func(fetcher, variables);
|
|
12
|
-
}
|
|
13
|
-
if (query) return fetcher([
|
|
14
|
-
query,
|
|
15
|
-
variables
|
|
16
|
-
]);
|
|
17
|
-
return {};
|
|
18
|
-
}));
|
|
19
|
-
const fallback = queries.reduce((acc, { key }, index)=>{
|
|
20
|
-
const res = datas[index];
|
|
21
|
-
if (res?.status === 'fulfilled') {
|
|
22
|
-
return {
|
|
23
|
-
...acc,
|
|
24
|
-
[key]: res.value
|
|
25
|
-
};
|
|
26
|
-
}
|
|
27
|
-
return acc;
|
|
28
|
-
}, {});
|
|
29
|
-
return fallback;
|
|
30
|
-
};
|
|
31
|
-
|
|
32
|
-
export { getFallbackV2 };
|
|
1
|
+
import{prefetchQueries as e}from"@gem-sdk/core";let getFallbackV2=async(t,a,l=!0)=>{let r=!!l&&!process.env.NEXT_PUBLIC_STOREFRONT_TOKEN,s=a.map(t=>e(t.data,{isSample:r,isStorefront:l})).flat(),c=await Promise.allSettled(s.map(({query:e,variables:a,func:l})=>l?l(t,a):e?t([e,a]):{})),m=s.reduce((e,{key:t},a)=>{let l=c[a];return l?.status==="fulfilled"?{...e,[t]:l.value}:e},{});return m};export{getFallbackV2};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
let getPublishedThemePageMetafieldByKey=(e,l)=>l?.find(l=>l?.key===e)?.value;export{getPublishedThemePageMetafieldByKey};
|