@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.
Files changed (150) hide show
  1. package/dist/cjs/components/ErrorBoundary.js +2 -40
  2. package/dist/cjs/components/ErrorFallback.js +2 -26
  3. package/dist/cjs/components/FacebookPixel.js +4 -36
  4. package/dist/cjs/components/FooterForPostPurchase.js +2 -34
  5. package/dist/cjs/components/GoogleAnalytic.js +6 -67
  6. package/dist/cjs/components/TikTokPixel.js +4 -19
  7. package/dist/cjs/components/builder/Body.js +2 -36
  8. package/dist/cjs/components/builder/Footer.js +2 -154
  9. package/dist/cjs/components/builder/Header.js +2 -189
  10. package/dist/cjs/components/builder/PopupManager.js +2 -63
  11. package/dist/cjs/components/builder/SwitchView.js +2 -184
  12. package/dist/cjs/components/builder/Toolbar.js +2 -706
  13. package/dist/cjs/components/builder/Toolbox.js +2 -494
  14. package/dist/cjs/components/builder/const.js +1 -56
  15. package/dist/cjs/components/builder/toolbar/const.js +1 -7
  16. package/dist/cjs/components/builder/toolbar/utils/findDOMClosest.js +1 -41
  17. package/dist/cjs/components/builder/toolbar/utils/findOverflowParent.js +1 -20
  18. package/dist/cjs/components/builder/toolbar/utils/getChildrenByAttrSelector.js +1 -18
  19. package/dist/cjs/components/builder/toolbar/utils/getDOMElementParents.js +1 -32
  20. package/dist/cjs/components/builder/toolbar/utils/isOverParent.js +1 -16
  21. package/dist/cjs/components/builder/toolbar/utils/isOverToolbarPosition.js +1 -12
  22. package/dist/cjs/components/builder/toolbar/utils/isSection.js +1 -8
  23. package/dist/cjs/components/builder/toolbar/utils/notVisible.js +1 -8
  24. package/dist/cjs/components/builder/toolbar/utils/waitForElementToExist.js +1 -27
  25. package/dist/cjs/components/image-to-layout/AddSectionImageToLayout.js +2 -150
  26. package/dist/cjs/components/image-to-layout/DropElement.js +2 -190
  27. package/dist/cjs/components/image-to-layout/ImageToLayout.js +2 -41
  28. package/dist/cjs/constants/index.js +1 -0
  29. package/dist/cjs/index.js +1 -82
  30. package/dist/cjs/layouts/main.js +2 -30
  31. package/dist/cjs/libs/api/get-builder-props.js +1 -46
  32. package/dist/cjs/libs/api/get-collection-props.js +1 -68
  33. package/dist/cjs/libs/api/get-home-page-props-v2.js +1 -145
  34. package/dist/cjs/libs/api/get-home-page-props.js +1 -151
  35. package/dist/cjs/libs/api/get-post-purchase-props-preview.js +1 -300
  36. package/dist/cjs/libs/api/get-preview-props.js +1 -18
  37. package/dist/cjs/libs/api/get-product-props.js +1 -73
  38. package/dist/cjs/libs/api/get-static-page-props-preview.js +1 -159
  39. package/dist/cjs/libs/api/get-static-page-props-v2.js +1 -168
  40. package/dist/cjs/libs/api/get-static-page-props.js +1 -148
  41. package/dist/cjs/libs/custom-fonts.js +6 -60
  42. package/dist/cjs/libs/fetcher.js +1 -100
  43. package/dist/cjs/libs/get-layout.js +1 -13
  44. package/dist/cjs/libs/get-storefront-api.js +1 -12
  45. package/dist/cjs/libs/getStaticPaths.js +1 -10
  46. package/dist/cjs/libs/google-fonts.js +1 -118
  47. package/dist/cjs/libs/helpers/check-option-font.js +1 -65
  48. package/dist/cjs/libs/helpers/common.js +1 -27
  49. package/dist/cjs/libs/helpers/extract-operation.js +1 -0
  50. package/dist/cjs/libs/helpers/gen-css.js +1 -135
  51. package/dist/cjs/libs/helpers/gen-fonts.js +1 -90
  52. package/dist/cjs/libs/helpers/generate-manifres.js +1 -5
  53. package/dist/cjs/libs/helpers/get-fallback.js +1 -34
  54. package/dist/cjs/libs/helpers/get-metafield.js +1 -0
  55. package/dist/cjs/libs/helpers/normalize.js +1 -103
  56. package/dist/cjs/libs/helpers/parse-json.js +1 -16
  57. package/dist/cjs/libs/helpers/sentry.js +1 -17
  58. package/dist/cjs/libs/helpers/user-agent.js +1 -7
  59. package/dist/cjs/libs/hooks/use-tracking-view.js +2 -42
  60. package/dist/cjs/libs/hooks/usePagePreview.js +1 -92
  61. package/dist/cjs/libs/parse-html.js +1 -34
  62. package/dist/cjs/libs/shopify-cdn-with-google-fonts.js +1 -1845
  63. package/dist/cjs/pages/404.js +2 -43
  64. package/dist/cjs/pages/500.js +2 -74
  65. package/dist/cjs/pages/CollectionGlobalProvider.js +2 -59
  66. package/dist/cjs/pages/builder.js +2 -115
  67. package/dist/cjs/pages/collection-detail.js +2 -64
  68. package/dist/cjs/pages/preview.js +2 -26
  69. package/dist/cjs/pages/product-detail.js +2 -69
  70. package/dist/cjs/pages/static-v2.js +5 -133
  71. package/dist/cjs/pages/static.js +2 -75
  72. package/dist/cjs/store/libs-store.js +1 -14
  73. package/dist/esm/components/ErrorBoundary.js +2 -38
  74. package/dist/esm/components/ErrorFallback.js +2 -24
  75. package/dist/esm/components/FacebookPixel.js +4 -34
  76. package/dist/esm/components/FooterForPostPurchase.js +2 -30
  77. package/dist/esm/components/GoogleAnalytic.js +6 -65
  78. package/dist/esm/components/TikTokPixel.js +4 -17
  79. package/dist/esm/components/builder/Body.js +2 -32
  80. package/dist/esm/components/builder/Footer.js +2 -150
  81. package/dist/esm/components/builder/Header.js +2 -185
  82. package/dist/esm/components/builder/PopupManager.js +2 -59
  83. package/dist/esm/components/builder/SwitchView.js +2 -180
  84. package/dist/esm/components/builder/Toolbar.js +2 -702
  85. package/dist/esm/components/builder/Toolbox.js +2 -490
  86. package/dist/esm/components/builder/const.js +1 -54
  87. package/dist/esm/components/builder/toolbar/const.js +1 -4
  88. package/dist/esm/components/builder/toolbar/utils/findDOMClosest.js +1 -39
  89. package/dist/esm/components/builder/toolbar/utils/findOverflowParent.js +1 -18
  90. package/dist/esm/components/builder/toolbar/utils/getChildrenByAttrSelector.js +1 -16
  91. package/dist/esm/components/builder/toolbar/utils/getDOMElementParents.js +1 -30
  92. package/dist/esm/components/builder/toolbar/utils/isOverParent.js +1 -14
  93. package/dist/esm/components/builder/toolbar/utils/isOverToolbarPosition.js +1 -10
  94. package/dist/esm/components/builder/toolbar/utils/isSection.js +1 -6
  95. package/dist/esm/components/builder/toolbar/utils/notVisible.js +1 -6
  96. package/dist/esm/components/builder/toolbar/utils/waitForElementToExist.js +1 -25
  97. package/dist/esm/components/image-to-layout/AddSectionImageToLayout.js +2 -146
  98. package/dist/esm/components/image-to-layout/DropElement.js +2 -188
  99. package/dist/esm/components/image-to-layout/ImageToLayout.js +2 -37
  100. package/dist/esm/constants/index.js +1 -0
  101. package/dist/esm/index.js +1 -36
  102. package/dist/esm/layouts/main.js +2 -26
  103. package/dist/esm/libs/api/get-builder-props.js +1 -44
  104. package/dist/esm/libs/api/get-collection-props.js +1 -66
  105. package/dist/esm/libs/api/get-home-page-props-v2.js +1 -143
  106. package/dist/esm/libs/api/get-home-page-props.js +1 -149
  107. package/dist/esm/libs/api/get-post-purchase-props-preview.js +1 -292
  108. package/dist/esm/libs/api/get-preview-props.js +1 -16
  109. package/dist/esm/libs/api/get-product-props.js +1 -71
  110. package/dist/esm/libs/api/get-static-page-props-preview.js +1 -157
  111. package/dist/esm/libs/api/get-static-page-props-v2.js +1 -166
  112. package/dist/esm/libs/api/get-static-page-props.js +1 -146
  113. package/dist/esm/libs/custom-fonts.js +6 -55
  114. package/dist/esm/libs/fetcher.js +1 -96
  115. package/dist/esm/libs/get-layout.js +1 -11
  116. package/dist/esm/libs/get-storefront-api.js +1 -10
  117. package/dist/esm/libs/getStaticPaths.js +1 -8
  118. package/dist/esm/libs/google-fonts.js +1 -112
  119. package/dist/esm/libs/helpers/check-option-font.js +1 -63
  120. package/dist/esm/libs/helpers/common.js +1 -24
  121. package/dist/esm/libs/helpers/extract-operation.js +1 -0
  122. package/dist/esm/libs/helpers/gen-css.js +1 -133
  123. package/dist/esm/libs/helpers/gen-fonts.js +1 -87
  124. package/dist/esm/libs/helpers/generate-manifres.js +1 -3
  125. package/dist/esm/libs/helpers/get-fallback.js +1 -32
  126. package/dist/esm/libs/helpers/get-metafield.js +1 -0
  127. package/dist/esm/libs/helpers/normalize.js +1 -96
  128. package/dist/esm/libs/helpers/parse-json.js +1 -13
  129. package/dist/esm/libs/helpers/sentry.js +1 -15
  130. package/dist/esm/libs/helpers/user-agent.js +1 -5
  131. package/dist/esm/libs/hooks/use-tracking-view.js +2 -40
  132. package/dist/esm/libs/hooks/usePagePreview.js +1 -90
  133. package/dist/esm/libs/parse-html.js +1 -32
  134. package/dist/esm/libs/shopify-cdn-with-google-fonts.js +1 -1843
  135. package/dist/esm/pages/404.js +2 -41
  136. package/dist/esm/pages/500.js +2 -72
  137. package/dist/esm/pages/CollectionGlobalProvider.js +2 -55
  138. package/dist/esm/pages/builder.js +2 -113
  139. package/dist/esm/pages/collection-detail.js +2 -60
  140. package/dist/esm/pages/preview.js +2 -24
  141. package/dist/esm/pages/product-detail.js +2 -65
  142. package/dist/esm/pages/static-v2.js +5 -131
  143. package/dist/esm/pages/static.js +2 -71
  144. package/dist/esm/store/libs-store.js +1 -12
  145. package/dist/types/index.d.ts +61 -63
  146. package/package.json +7 -7
  147. package/dist/cjs/components/builder/InteractionSelectOnPageHeader.js +0 -192
  148. package/dist/cjs/libs/helpers/gen-favicon.js +0 -22
  149. package/dist/esm/components/builder/InteractionSelectOnPageHeader.js +0 -188
  150. package/dist/esm/libs/helpers/gen-favicon.js +0 -20
@@ -1,118 +1 @@
1
- 'use strict';
2
-
3
- var checkOptionFont = require('./helpers/check-option-font.js');
4
- var genFonts = require('./helpers/gen-fonts.js');
5
-
6
- 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';
7
- const IE_UA = 'Mozilla/5.0 (Windows NT 10.0; Trident/7.0; rv:11.0) like Gecko';
8
- async function getFontForUA(url, UA) {
9
- return fetch(url, {
10
- headers: {
11
- 'User-Agent': UA
12
- }
13
- }).then((res)=>{
14
- if (res.status === 200) {
15
- return res.text();
16
- }
17
- return '';
18
- });
19
- }
20
- const composeFonts = (fonts)=>{
21
- const uniqFonts = fonts.filter((font, index, arr)=>{
22
- return index === arr.findIndex((t)=>t.family === font.family);
23
- });
24
- return uniqFonts.map((font)=>{
25
- const variants = fonts.filter((t)=>t.family === font.family).reduce((acc, t)=>{
26
- return [
27
- ...acc,
28
- ...t.variants
29
- ];
30
- }, []).filter((t, index, arr)=>{
31
- return index === arr.findIndex((v)=>v === t);
32
- });
33
- return {
34
- ...font,
35
- variants
36
- };
37
- });
38
- };
39
- const createFontUrl = (fonts, option, fontType)=>{
40
- const mainFonts = fonts.filter((font)=>{
41
- return !([
42
- 'bunny',
43
- 'google'
44
- ].includes(font.type) && checkOptionFont.checkNotInOptionFont(font.family, fontType || 'google')) && (font.type === 'google' || font.type === 'bunny' || !font.type);
45
- });
46
- if (!mainFonts.length) return;
47
- const params = new URLSearchParams();
48
- const display = option?.display || 'swap';
49
- const uniqFonts = mainFonts.filter((font, index, arr)=>{
50
- return index === arr.findIndex((t)=>t.family === font.family);
51
- });
52
- const family = composeFonts(uniqFonts).map((font)=>{
53
- return `${font.family.replace(/ /g, '+')}:${font.variants.join(',')}`;
54
- }).join('|');
55
- params.append('family', family);
56
- params.append('display', display);
57
- if (option?.subset) {
58
- params.append('subset', option.subset);
59
- }
60
- if (option?.effect) {
61
- params.append('effect', option.effect);
62
- }
63
- const bunnyFontUrl = `https://fonts.bunny.net/css?family=${family}`;
64
- const googleFontUrl = `https://fonts.googleapis.com/css?${decodeURIComponent(params.toString())}`;
65
- return fontType === 'bunny' ? bunnyFontUrl : googleFontUrl;
66
- };
67
- // eslint-disable-next-line max-params
68
- async function getFonts(fonts, option, isImportFontByUrl = true, fontType) {
69
- /**
70
- * The order of IE -> Chrome is important, other wise chrome starts loading woff1.
71
- * CSS cascading 🤷‍♂️.
72
- */ const url = createFontUrl(fonts, option, fontType);
73
- if (!url) return '';
74
- try {
75
- if (isImportFontByUrl) return `@import url('${url}');`;
76
- const [ie, chrome] = await Promise.all([
77
- getFontForUA(url, IE_UA),
78
- getFontForUA(url, CHROME_UA)
79
- ]);
80
- const maxSize = 50; // 50KB
81
- const value = ie + chrome;
82
- if (maxSize) {
83
- const textEncoder = new TextEncoder();
84
- const size = value ? textEncoder.encode(value).length : 0;
85
- if (Math.ceil(size / 1024) >= maxSize) {
86
- return `@import url('${url}');`;
87
- }
88
- }
89
- return value;
90
- } catch (e) {
91
- return '';
92
- }
93
- }
94
- const getFontFromGlobalStyle = (data, sourceFont)=>{
95
- if (!data) return '';
96
- try {
97
- const globalStyle = JSON.parse(data);
98
- const fontData = globalStyle?.font ?? {};
99
- const fonts = Object.entries(fontData).map(([, value])=>{
100
- return value;
101
- });
102
- return getFonts(fonts, undefined, undefined, sourceFont);
103
- } catch {
104
- return '';
105
- }
106
- };
107
- async function getFontStyleFromPageTemplate(pageTemplate, sourceFont) {
108
- const fontStyle = pageTemplate.map((sectionData)=>{
109
- return getFonts(genFonts.getFontsFromDataBuilder(sectionData.data), undefined, undefined, sourceFont);
110
- });
111
- return await Promise.all(fontStyle);
112
- }
113
-
114
- exports.composeFonts = composeFonts;
115
- exports.createFontUrl = createFontUrl;
116
- exports.getFontFromGlobalStyle = getFontFromGlobalStyle;
117
- exports.getFontStyleFromPageTemplate = getFontStyleFromPageTemplate;
118
- exports.getFonts = getFonts;
1
+ "use strict";var checkOptionFont=require("./helpers/check-option-font.js"),genFonts=require("./helpers/gen-fonts.js"),sentry=require("./helpers/sentry.js");const CHROME_UA="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36",IE_UA="Mozilla/5.0 (Windows NT 10.0; Trident/7.0; rv:11.0) like Gecko";async function getFontForUA(e,t){try{return fetch(e,{headers:{"User-Agent":t}}).then(n=>200===n.status?n.text():(sentry.sentryCaptureException("getFontForUA",`Unexpected status ${n.status}`,{url:e,UA:t}),""))}catch(n){return sentry.sentryCaptureException("getFontForUA","Error fetching font",{url:e,UA:t,error:n}),""}}const 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=(e,t,n)=>{let o=e.filter(e=>!(["bunny","google"].includes(e.type)&&checkOptionFont.checkNotInOptionFont(e.family,n||"google"))&&("google"===e.type||"bunny"===e.type||!e.type));if(!o.length)return;let r=new URLSearchParams,s=t?.display||"swap",a=o.filter((e,t,n)=>t===n.findIndex(t=>t.family===e.family)),l=composeFonts(a).map(e=>`${e.family.replace(/ /g,"+")}:${e.variants.join(",")}`).join("|");r.append("family",l),r.append("display",s),t?.subset&&r.append("subset",t.subset),t?.effect&&r.append("effect",t.effect);let i=`https://fonts.bunny.net/css?family=${l}`,c=`https://fonts.googleapis.com/css?${decodeURIComponent(r.toString())}`;return"bunny"===n?i:c};async function getFonts(e,t,n=!0,o){let r=createFontUrl(e,t,o);if(!r)return"";try{if(n)return`@import url('${r}');`;let[e,t]=await Promise.all([getFontForUA(r,"Mozilla/5.0 (Windows NT 10.0; Trident/7.0; rv:11.0) like Gecko"),getFontForUA(r,"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36")]),o=e+t;{let e=new TextEncoder,t=o?e.encode(o).length:0;if(Math.ceil(t/1024)>=50)return`@import url('${r}');`}return o}catch(e){return sentry.sentryCaptureException("getFonts","Error fetching font",{url:r,fontType:o}),""}}const 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,t){let n=e.map(e=>getFonts(genFonts.getFontsFromDataBuilder(e.data),void 0,void 0,t));return await Promise.all(n)}exports.composeFonts=composeFonts,exports.createFontUrl=createFontUrl,exports.getFontFromGlobalStyle=getFontFromGlobalStyle,exports.getFontStyleFromPageTemplate=getFontStyleFromPageTemplate,exports.getFonts=getFonts;
@@ -1,65 +1 @@
1
- 'use strict';
2
-
3
- const listFontsNotInBunny = [
4
- 'Anton SC',
5
- 'Arsenal SC',
6
- 'Baskervville SC',
7
- 'Beiruti',
8
- 'Bodoni Moda SC',
9
- 'Bona Nova SC',
10
- 'Bungee Tint',
11
- 'Edu AU VIC WA NT Hand',
12
- 'Fustat',
13
- 'Ga Maamli',
14
- 'Kalnia Glaze',
15
- 'Maname',
16
- 'Matemasie',
17
- 'Material Icons',
18
- 'Material Icons Outlined',
19
- 'Material Icons Round',
20
- 'Material Icons Sharp',
21
- 'Material Icons Two Tone',
22
- 'Material Symbols Outlined',
23
- 'Material Symbols Rounded',
24
- 'Material Symbols Sharp',
25
- 'Moderustic',
26
- 'New Amsterdam',
27
- 'Playwrite AR',
28
- 'Playwrite AT',
29
- 'Playwrite BE VLG',
30
- 'Playwrite BE WAL',
31
- 'Playwrite CL',
32
- 'Playwrite CU',
33
- 'Playwrite CZ',
34
- 'Playwrite DK Loopet',
35
- 'Playwrite DK Uloopet',
36
- 'Playwrite HR',
37
- 'Playwrite HR Lijeva',
38
- 'Playwrite HU',
39
- 'Playwrite PE',
40
- 'SUSE',
41
- 'Sankofa Display',
42
- 'Wittgenstein',
43
- 'Zain'
44
- ];
45
- const listFontsNotInGoogle = [
46
- 'Arima Madurai',
47
- 'Coda Caption',
48
- 'Fredoka One',
49
- 'Gentium Book Basic',
50
- 'Kantumruy',
51
- 'Merienda One',
52
- 'Source Sans Pro',
53
- 'Source Serif Pro',
54
- 'Briem Hand',
55
- 'Pushster'
56
- ];
57
- const objectFont = {
58
- bunny: listFontsNotInBunny,
59
- google: listFontsNotInGoogle
60
- };
61
- const checkNotInOptionFont = (currentfont, type)=>{
62
- return objectFont?.[type]?.includes(currentfont);
63
- };
64
-
65
- exports.checkNotInOptionFont = checkNotInOptionFont;
1
+ "use strict";const 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=(t,a)=>objectFont?.[a]?.includes(t);exports.checkNotInOptionFont=checkNotInOptionFont;
@@ -1,27 +1 @@
1
- 'use strict';
2
-
3
- async function wait(ms) {
4
- return new Promise((resolve)=>setTimeout(resolve, ms));
5
- }
6
- const retryWithDelay = async (fn, config)=>{
7
- const retries = config?.retries ?? 3;
8
- const delay = config?.delay ?? 1000;
9
- try {
10
- return await fn();
11
- } catch (err) {
12
- if (retries <= 0 || config?.retryIf && !config.retryIf(err)) {
13
- return Promise.reject(err);
14
- }
15
- //delay the next call
16
- await wait(delay);
17
- //recursively call the same func
18
- return retryWithDelay(fn, {
19
- ...config,
20
- retries: retries - 1,
21
- delay
22
- });
23
- }
24
- };
25
-
26
- exports.retryWithDelay = retryWithDelay;
27
- exports.wait = wait;
1
+ "use strict";async function wait(t){return new Promise(e=>setTimeout(e,t))}const retryWithDelay=async(t,e)=>{let r=e?.retries??3,i=e?.delay??1e3;try{return await t()}catch(a){if(r<=0||e?.retryIf&&!e.retryIf(a))return Promise.reject(a);return await wait(i),retryWithDelay(t,{...e,retries:r-1,delay:i})}};exports.retryWithDelay=retryWithDelay,exports.wait=wait;
@@ -0,0 +1 @@
1
+ "use strict";const 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};exports.extractOperation=extractOperation;
@@ -1,135 +1 @@
1
- 'use strict';
2
-
3
- var core = require('@gem-sdk/core');
4
- var merge = require('deepmerge');
5
-
6
- const baseDevices = {
7
- tablet: '1024px',
8
- mobile: '767px'
9
- };
10
- const devicesOrder = [
11
- 'desktop',
12
- 'tablet',
13
- 'mobile'
14
- ];
15
- const flattenObject = (obj, prefix)=>{
16
- return Object.keys(obj).reduce((acc, k)=>{
17
- const pre = prefix ? `${prefix}-` : '';
18
- if (typeof obj[k] === 'object' && obj[k] !== null && Object.keys(obj[k]).length > 0) Object.assign(acc, flattenObject(obj[k], pre + k));
19
- else acc[pre + k] = obj[k];
20
- return acc;
21
- }, {});
22
- };
23
- const mapObject = (obj)=>{
24
- return Object.entries(obj ?? {}).reduce((acc, [k, v])=>{
25
- return {
26
- ...acc,
27
- [core.getShortName(k)]: typeof v === 'object' ? mapObject(v) : v
28
- };
29
- }, {});
30
- };
31
- const getValueByDevice = (data, device)=>{
32
- const deviceData = {
33
- typography: Object.fromEntries(Object.entries(data?.typography ?? {}).map(([key, value])=>{
34
- const typo = {
35
- ...value?.[device]
36
- };
37
- if (!typo) return [
38
- key,
39
- undefined
40
- ];
41
- if (typo.fontFamily) {
42
- typo.fontFamily = `var(--g-font-${typo.fontFamily}, ${typo.fontFamily})`;
43
- }
44
- return [
45
- key,
46
- typo
47
- ];
48
- })),
49
- spacing: Object.fromEntries(Object.entries(data?.spacing ?? {}).map(([key, value])=>{
50
- return [
51
- key,
52
- value?.[device]
53
- ];
54
- })),
55
- container: Object.fromEntries(Object.entries(data?.container ?? {}).map(([key, value])=>{
56
- return [
57
- key,
58
- value?.[device]
59
- ];
60
- })),
61
- font: Object.fromEntries(Object.entries(data?.font ?? {}).map(([key, value])=>{
62
- return [
63
- key,
64
- value?.family
65
- ];
66
- })),
67
- theme: {
68
- font: Object.fromEntries(Object.entries(data?.theme?.font ?? {}).map(([key, value])=>{
69
- return [
70
- key,
71
- value?.family
72
- ];
73
- }))
74
- }
75
- };
76
- return deviceData;
77
- };
78
- const quoteFontName = (font)=>{
79
- if ([
80
- 'sans-serif'
81
- ].includes(font)) {
82
- return font;
83
- }
84
- return `'${font}'`;
85
- };
86
- const genCSSVariable = (deviceData)=>{
87
- return Object.entries(mapObject(flattenObject(deviceData))).map(([key, value])=>{
88
- if (value === undefined) return undefined;
89
- if ([
90
- 'font-heading',
91
- 'font-body',
92
- 'theme-font-heading',
93
- 'theme-font-body'
94
- ].includes(key)) {
95
- return `--g-${key}: ${quoteFontName(value)}`;
96
- }
97
- return `--g-${key}:${value}`;
98
- }).filter((v)=>v !== undefined).join(';');
99
- };
100
- const genCSS = (input, mobileOnly)=>{
101
- if (!input) return '';
102
- let data = {};
103
- try {
104
- if (typeof input === 'string') {
105
- data = JSON.parse(input);
106
- } else {
107
- data = input;
108
- }
109
- if (mobileOnly) {
110
- const desktop = getValueByDevice(data, 'desktop');
111
- const mobile = getValueByDevice(data, 'mobile');
112
- const deviceData = merge(desktop, mobile);
113
- deviceData.color = data.color;
114
- deviceData.radius = data.radius;
115
- const cssData = genCSSVariable(deviceData);
116
- return `:root{${cssData}}`;
117
- }
118
- return devicesOrder.map((device)=>{
119
- const deviceData = getValueByDevice(data, device);
120
- if (device === 'desktop') {
121
- deviceData.color = data.color;
122
- deviceData.radius = data.radius;
123
- }
124
- const cssData = genCSSVariable(deviceData);
125
- if (device === 'desktop') {
126
- return `:root{${cssData}}`;
127
- }
128
- return `@media (max-width: ${baseDevices[device]}) {:root{${cssData}}}`;
129
- }).join('\n');
130
- } catch {
131
- return '';
132
- }
133
- };
134
-
135
- exports.genCSS = genCSS;
1
+ "use strict";var core=require("@gem-sdk/core"),merge=require("deepmerge");const baseDevices={tablet:"1024px",mobile:"767px"},flattenObject=(e,t)=>Object.keys(e).reduce((r,n)=>{let o=t?`${t}-`:"";return"object"==typeof e[n]&&null!==e[n]&&Object.keys(e[n]).length>0?Object.assign(r,flattenObject(e[n],o+n)):r[o+n]=e[n],r},{}),mapObject=e=>Object.entries(e??{}).reduce((e,[t,r])=>({...e,[core.getShortName(t)]:"object"==typeof r?mapObject(r):r}),{}),getValueByDevice=(e,t)=>{let r={typography:Object.fromEntries(Object.entries(e?.typography??{}).map(([e,r])=>{let n={...r?.[t]};return n?(n.fontFamily&&(n.fontFamily=`var(--g-font-${n.fontFamily}, ${n.fontFamily})`),[e,n]):[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=(e,t)=>{if(!e)return"";let r={};try{if(r="string"==typeof e?JSON.parse(e):e,t){let e=getValueByDevice(r,"desktop"),t=getValueByDevice(r,"mobile"),n=merge(e,t);n.color=r.color,n.radius=r.radius;let o=genCSSVariable(n);return`:root{${o}}`}return core.DEVICES.map(e=>{let t=getValueByDevice(r,e);"desktop"===e&&(t.color=r.color,t.radius=r.radius);let n=genCSSVariable(t);return"desktop"===e?`:root{${n}}`:`@media (max-width: ${baseDevices[e]}) {:root{${n}}}`}).join("\n")}catch{return""}};exports.genCSS=genCSS;
@@ -1,90 +1 @@
1
- 'use strict';
2
-
3
- const getFontsFromDataBuilder = (dataBuilder)=>{
4
- const fonts = [];
5
- for(const uid in dataBuilder){
6
- if (Object.prototype.hasOwnProperty.call(dataBuilder, uid)) {
7
- const data = dataBuilder[uid];
8
- const styles = data.styles;
9
- const settings = data.settings;
10
- getFontFromGroupSetting(fonts, styles);
11
- getFontFromGroupSetting(fonts, settings);
12
- }
13
- }
14
- return fonts;
15
- };
16
- const getFontFromGroupSetting = (fonts, groupSetting)=>{
17
- const states = [
18
- 'normal',
19
- 'hover',
20
- 'focus',
21
- 'active',
22
- 'disabled',
23
- 'price',
24
- 'compareAtPrice'
25
- ];
26
- for(const attr in groupSetting){
27
- if (Object.prototype.hasOwnProperty.call(groupSetting, attr)) {
28
- const value = groupSetting[attr];
29
- if (!value) continue;
30
- getFontValue(fonts, value);
31
- for (const state of states){
32
- if (!value[state]) continue;
33
- getFontValue(fonts, value[state]);
34
- }
35
- }
36
- }
37
- };
38
- const getFontValue = (fonts, value)=>{
39
- let customFontFamily = value.custom?.fontFamily;
40
- if (typeof customFontFamily === 'string') {
41
- customFontFamily = {
42
- value: value.custom?.fontFamily || '',
43
- type: 'google'
44
- };
45
- }
46
- const fontFamily = customFontFamily?.value;
47
- let customFontVariants = value.custom?.fontVariants;
48
- if (!customFontVariants?.length) {
49
- customFontVariants = [
50
- value.custom?.fontWeight
51
- ];
52
- }
53
- if (customFontFamily && customFontVariants?.length) {
54
- const variants = customFontVariants.map((item)=>{
55
- switch(item){
56
- case 'regular':
57
- return '400';
58
- }
59
- return item;
60
- });
61
- const customFontWeight = value.custom?.fontWeight && variants.includes(value.custom?.fontWeight) ? value.custom?.fontWeight : variants[0];
62
- if (customFontWeight) {
63
- const isExist = fonts.find((item)=>item.family == fontFamily && item.variants.includes(customFontWeight));
64
- if (!isExist) {
65
- const isFontFamily = fonts.find((item)=>item.family == fontFamily);
66
- if (isFontFamily) {
67
- isFontFamily.variants.push(customFontWeight);
68
- } else {
69
- const fontVariants = [
70
- customFontWeight
71
- ];
72
- if (customFontWeight !== '700') {
73
- if (variants.includes('700')) {
74
- fontVariants.push('700'); // Auto add 700 for bold in editor inline
75
- }
76
- }
77
- fonts.push({
78
- family: fontFamily || '',
79
- variants: fontVariants,
80
- subsets: [],
81
- type: customFontFamily.type
82
- });
83
- }
84
- }
85
- }
86
- }
87
- };
88
-
89
- exports.getFontFromGroupSetting = getFontFromGroupSetting;
90
- exports.getFontsFromDataBuilder = getFontsFromDataBuilder;
1
+ "use strict";const getFontsFromDataBuilder=t=>{let e=[];for(let o in t)if(Object.prototype.hasOwnProperty.call(t,o)){let r=t[o],n=r.styles,i=r.settings;getFontFromGroupSetting(e,n),getFontFromGroupSetting(e,i)}return e},getFontFromGroupSetting=(t,e)=>{let o=["normal","hover","focus","active","disabled","price","compareAtPrice"];for(let r in e)if(Object.prototype.hasOwnProperty.call(e,r)){let n=e[r];if(!n)continue;for(let e of(getFontValue(t,n),o))n[e]&&getFontValue(t,n[e])}},uniqueArray=t=>Array.from(new Set(t)),getFontValue=(t,e)=>{let o=e.custom?.fontFamily;"string"==typeof o&&(o={value:e.custom?.fontFamily||"",type:"google"});let r=o?.value,n=e.custom?.fontVariants;if(n?.length||(n=[e.custom?.fontWeight]),o&&n?.length){let i=n.map(t=>"regular"===t?"400":t),l=e.custom?.fontWeight&&i.includes(e.custom?.fontWeight)?e.custom?.fontWeight:i[0];if(l){let n=uniqueArray([l,...e?.attrs?.isAlwaysLoadBold?["700"]:[]]),a=t.find(t=>t.family==r&&t.variants.includes(l));if(!a){let e=t.find(t=>t.family==r);e?e.variants.push(l):("700"!==l&&i.includes("700")&&n.push("700"),t.push({family:r||"",variants:n,subsets:[],type:o.type}))}}}};exports.getFontFromGroupSetting=getFontFromGroupSetting,exports.getFontsFromDataBuilder=getFontsFromDataBuilder;
@@ -1,5 +1 @@
1
- 'use strict';
2
-
3
- const generateManifest = (data)=>`data:application/manifest+json,${encodeURIComponent(JSON.stringify(data))}`;
4
-
5
- exports.generateManifest = generateManifest;
1
+ "use strict";const generateManifest=e=>`data:application/manifest+json,${encodeURIComponent(JSON.stringify(e))}`;exports.generateManifest=generateManifest;
@@ -1,34 +1 @@
1
- 'use strict';
2
-
3
- var core = require('@gem-sdk/core');
4
-
5
- const getFallbackV2 = async (fetcher, data, isStorefront = true)=>{
6
- const isSample = isStorefront ? !process.env.NEXT_PUBLIC_STOREFRONT_TOKEN : false;
7
- const queries = data.map((v)=>core.prefetchQueries(v.data, {
8
- isSample,
9
- isStorefront
10
- })).flat();
11
- const datas = await Promise.allSettled(queries.map(({ query, variables, func })=>{
12
- if (func) {
13
- return func(fetcher, variables);
14
- }
15
- if (query) return fetcher([
16
- query,
17
- variables
18
- ]);
19
- return {};
20
- }));
21
- const fallback = queries.reduce((acc, { key }, index)=>{
22
- const res = datas[index];
23
- if (res?.status === 'fulfilled') {
24
- return {
25
- ...acc,
26
- [key]: res.value
27
- };
28
- }
29
- return acc;
30
- }, {});
31
- return fallback;
32
- };
33
-
34
- exports.getFallbackV2 = getFallbackV2;
1
+ "use strict";var core=require("@gem-sdk/core");const getFallbackV2=async(e,t,a=!0)=>{let r=!!a&&!process.env.NEXT_PUBLIC_STOREFRONT_TOKEN,l=t.map(e=>core.prefetchQueries(e.data,{isSample:r,isStorefront:a})).flat(),c=await Promise.allSettled(l.map(({query:t,variables:a,func:r})=>r?r(e,a):t?e([t,a]):{})),s=l.reduce((e,{key:t},a)=>{let r=c[a];return r?.status==="fulfilled"?{...e,[t]:r.value}:e},{});return s};exports.getFallbackV2=getFallbackV2;
@@ -0,0 +1 @@
1
+ "use strict";const getPublishedThemePageMetafieldByKey=(e,t)=>t?.find(t=>t?.key===e)?.value;exports.getPublishedThemePageMetafieldByKey=getPublishedThemePageMetafieldByKey;
@@ -1,103 +1 @@
1
- 'use strict';
2
-
3
- const normalizeBuilderData = (data)=>{
4
- const result = {};
5
- function compose(cData, currData = {}) {
6
- if (cData) {
7
- const { childrens, dateModified, editorConfigs, ...rest } = cData;
8
- if (rest.type === 'section') {
9
- currData[rest.uid] = rest;
10
- } else {
11
- const items = childrens?.map((child)=>child?.uid) ?? [];
12
- currData[rest.uid] = {
13
- ...rest,
14
- childrens: items
15
- };
16
- if (childrens) {
17
- childrens.map((child)=>compose(child, currData));
18
- }
19
- }
20
- }
21
- }
22
- compose(data, result);
23
- return {
24
- ...result
25
- };
26
- };
27
- const orderSection = (sections, orders)=>{
28
- // Filter out sections that are not in the order list
29
- const ids = orders?.filter((id)=>sections?.some((v)=>v?.id === id));
30
- // Return the ordered sections
31
- const orderedSections = ids?.map((id)=>sections?.find((v)=>v?.id === id)) ?? [];
32
- // Return the sections that are not in the order list
33
- const sectionsNotInOrder = sections?.filter((v)=>(!v?.id || !ids?.includes(v.id)) && !v?.deletedAt) ?? [];
34
- // Return the ordered sections + the sections that are not in the order list
35
- return orderedSections.concat(sectionsNotInOrder);
36
- };
37
- function normalizePageSectionResponse(sections, orders) {
38
- const sortedSections = orderSection(sections, orders);
39
- const childrens = sortedSections.map((item)=>{
40
- if (!item?.component) return false;
41
- try {
42
- const data = JSON.parse(item.component);
43
- return data;
44
- } catch {
45
- return false;
46
- }
47
- }).filter(Boolean);
48
- return normalizeBuilderData({
49
- uid: 'ROOT',
50
- tag: 'Root',
51
- childrens
52
- });
53
- }
54
- function normalizePageSectionResponseV2(sections, orders) {
55
- const sortedSections = orderSection(sections, orders);
56
- const childrens = sortedSections.map((item)=>{
57
- if (!item?.component) return false;
58
- try {
59
- const data = JSON.parse(item.component);
60
- return data;
61
- } catch {
62
- return false;
63
- }
64
- }).filter(Boolean);
65
- return childrens.map((v)=>{
66
- return {
67
- uid: v.uid,
68
- lazy: Boolean(v.settings?.lazy),
69
- priority: Boolean(v.settings?.priority),
70
- data: normalizeBuilderData(v)
71
- };
72
- });
73
- }
74
- const parseBuilderTemplateV2 = (data)=>{
75
- return normalizePageSectionResponseV2([
76
- ...data?.pageSections ?? [],
77
- ...data?.themePageCustomSections ?? [],
78
- ...data?.themeSections ?? []
79
- ], data?.sectionPosition);
80
- };
81
- const parseBuilderTemplate = (data)=>{
82
- return normalizePageSectionResponse([
83
- ...data?.pageSections ?? [],
84
- ...data?.themePageCustomSections ?? []
85
- ], data?.sectionPosition);
86
- };
87
- const parseBuilderLibraryTemplate = (data)=>{
88
- return normalizePageSectionResponseV2([
89
- ...data?.sections ?? []
90
- ], data?.sectionPosition);
91
- };
92
- const parseShopLibraryPageTemplate = (data)=>{
93
- return normalizePageSectionResponseV2([
94
- ...data?.shopLibrarySections ?? []
95
- ], data?.sectionPosition);
96
- };
97
-
98
- exports.normalizeBuilderData = normalizeBuilderData;
99
- exports.normalizePageSectionResponseV2 = normalizePageSectionResponseV2;
100
- exports.parseBuilderLibraryTemplate = parseBuilderLibraryTemplate;
101
- exports.parseBuilderTemplate = parseBuilderTemplate;
102
- exports.parseBuilderTemplateV2 = parseBuilderTemplateV2;
103
- exports.parseShopLibraryPageTemplate = parseShopLibraryPageTemplate;
1
+ "use strict";const normalizeBuilderData=e=>{let t={};function r(e,t={}){if(e){let{childrens:a,dateModified:i,editorConfigs:o,...n}=e;if("section"===n.type)t[n.uid]=n;else{let e=a?.map(e=>e?.uid)??[];t[n.uid]={...n,childrens:e},a&&a.map(e=>r(e,t))}}}return r(e,t),{...t}},orderSection=(e,t)=>{let r=t?.filter(t=>e?.some(e=>e?.id===t)),a=r?.map(t=>e?.find(e=>e?.id===t))??[],i=e?.filter(e=>(!e?.id||!r?.includes(e.id))&&!e?.deletedAt)??[];return a.concat(i)};function normalizePageSectionResponse(e,t){let r=orderSection(e,t),a=r.map(e=>{if(!e?.component)return!1;try{let t=JSON.parse(e.component);return t}catch{return!1}}).filter(Boolean);return normalizeBuilderData({uid:"ROOT",tag:"Root",childrens:a})}function normalizePageSectionResponseV2(e,t){let r=orderSection(e,t),a=r.map(e=>{if(!e?.component)return!1;try{let t=JSON.parse(e.component);return t}catch{return!1}}).filter(Boolean);return a.map(e=>({uid:e.uid,lazy:!!e.settings?.lazy,priority:!!e.settings?.priority,data:normalizeBuilderData(e)}))}const parseBuilderTemplateV2=e=>normalizePageSectionResponseV2([...e?.pageSections??[],...e?.themePageCustomSections??[],...e?.themeSections??[]],e?.sectionPosition),parseBuilderTemplate=e=>normalizePageSectionResponse([...e?.pageSections??[],...e?.themePageCustomSections??[]],e?.sectionPosition),extractPageBackground=e=>{try{let t=e?.metafields?.find(e=>e?.key==="page_background")?.value;return JSON.parse(t??"{}")}catch{return{}}},parseBuilderLibraryTemplate=e=>normalizePageSectionResponseV2([...e?.sections??[]],e?.sectionPosition),parseShopLibraryPageTemplate=e=>normalizePageSectionResponseV2([...e?.shopLibrarySections??[]],e?.sectionPosition);exports.extractPageBackground=extractPageBackground,exports.normalizeBuilderData=normalizeBuilderData,exports.normalizePageSectionResponseV2=normalizePageSectionResponseV2,exports.parseBuilderLibraryTemplate=parseBuilderLibraryTemplate,exports.parseBuilderTemplate=parseBuilderTemplate,exports.parseBuilderTemplateV2=parseBuilderTemplateV2,exports.parseShopLibraryPageTemplate=parseShopLibraryPageTemplate;
@@ -1,16 +1 @@
1
- 'use strict';
2
-
3
- const parseJson = (json)=>{
4
- if (!json) return null;
5
- try {
6
- return JSON.parse(json);
7
- } catch (e) {
8
- return null;
9
- }
10
- };
11
- const serializableJson = (props)=>{
12
- return JSON.parse(JSON.stringify(props));
13
- };
14
-
15
- exports.parseJson = parseJson;
16
- exports.serializableJson = serializableJson;
1
+ "use strict";const parseJson=s=>{if(!s)return null;try{return JSON.parse(s)}catch(s){return null}},serializableJson=s=>JSON.parse(JSON.stringify(s));exports.parseJson=parseJson,exports.serializableJson=serializableJson;
@@ -1,17 +1 @@
1
- 'use strict';
2
-
3
- var nextjs = require('@sentry/nextjs');
4
-
5
- const sentryCaptureException = (funcName, message, data, options)=>{
6
- nextjs.withScope((scope)=>{
7
- scope.setLevel(options?.level ?? 'log');
8
- if (options?.tag) {
9
- scope.setTag(options?.tag.key, options?.tag.value);
10
- }
11
- scope.setExtra('function', funcName);
12
- scope.setExtra('data', JSON.stringify(data));
13
- nextjs.captureMessage(`${funcName}: ${message}`);
14
- });
15
- };
16
-
17
- exports.sentryCaptureException = sentryCaptureException;
1
+ "use strict";var nextjs=require("@sentry/nextjs");const sentryCaptureException=(e,t,s,r)=>{nextjs.withScope(a=>{a.setLevel(r?.level??"log"),r?.tag&&a.setTag(r?.tag.key,r?.tag.value),a.setExtra("function",e),a.setExtra("data",JSON.stringify(s)),nextjs.captureMessage(`${e}: ${t}`)})};exports.sentryCaptureException=sentryCaptureException;
@@ -1,7 +1 @@
1
- 'use strict';
2
-
3
- function isBot(input) {
4
- return /Googlebot|Mediapartners-Google|AdsBot-Google|googleweblight|Storebot-Google|Google-PageRenderer|Chrome-Lighthouse|Bingbot|BingPreview|Slurp|DuckDuckBot|baiduspider|yandex|sogou|LinkedInBot|bitlybot|tumblr|vkShare|quora link preview|facebookexternalhit|facebookcatalog|Twitterbot|applebot|redditbot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|ia_archiver/i.test(input);
5
- }
6
-
7
- exports.isBot = isBot;
1
+ "use strict";function isBot(o){return/Googlebot|Mediapartners-Google|AdsBot-Google|googleweblight|Storebot-Google|Google-PageRenderer|Chrome-Lighthouse|Bingbot|BingPreview|Slurp|DuckDuckBot|baiduspider|yandex|sogou|LinkedInBot|bitlybot|tumblr|vkShare|quora link preview|facebookexternalhit|facebookcatalog|Twitterbot|applebot|redditbot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|ia_archiver/i.test(o)}exports.isBot=isBot;