@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,54 +1 @@
1
- const getFontsFromDataBuilder = (dataBuilder)=>{
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
- for(const attr in groupSetting){
16
- if (Object.prototype.hasOwnProperty.call(groupSetting, attr)) {
17
- const value = groupSetting[attr];
18
- if (value) {
19
- const customFontFamily = value.custom?.fontFamily;
20
- const customFontVariants = value.custom?.fontVariants;
21
- if (customFontFamily && customFontVariants?.length) {
22
- const variants = customFontVariants.map((item)=>{
23
- switch(item){
24
- case 'regular':
25
- return '400';
26
- }
27
- return item;
28
- });
29
- const customFontWeight = value.custom?.fontWeight && variants.includes(value.custom?.fontWeight) ? value.custom?.fontWeight : variants[0];
30
- if (customFontWeight) {
31
- const isExist = fonts.find((item)=>item.family == customFontFamily && item.variants.includes(customFontWeight));
32
- if (!isExist) {
33
- const isFontFamily = fonts.find((item)=>item.family == customFontFamily);
34
- if (isFontFamily) {
35
- isFontFamily.variants.push(customFontWeight);
36
- } else {
37
- fonts.push({
38
- family: customFontFamily,
39
- variants: [
40
- customFontWeight
41
- ],
42
- subsets: [],
43
- type: 'google'
44
- });
45
- }
46
- }
47
- }
48
- }
49
- }
50
- }
51
- }
52
- };
53
-
54
- export { getFontFromGroupSetting, getFontsFromDataBuilder };
1
+ let getFontsFromDataBuilder=t=>{let e=[];for(let o in t)if(Object.prototype.hasOwnProperty.call(t,o)){let i=t[o],n=i.styles,r=i.settings;getFontFromGroupSetting(e,n),getFontFromGroupSetting(e,r)}return e},getFontFromGroupSetting=(t,e)=>{for(let o in e)if(Object.prototype.hasOwnProperty.call(e,o)){let i=e[o];if(i){let e=i.custom?.fontFamily,o=i.custom?.fontVariants;if(e&&o?.length){let n=o.map(t=>"regular"===t?"400":t),r=i.custom?.fontWeight&&n.includes(i.custom?.fontWeight)?i.custom?.fontWeight:n[0];if(r){let o=t.find(t=>t.family==e&&t.variants.includes(r));if(!o){let o=t.find(t=>t.family==e);o?o.variants.push(r):t.push({family:e,variants:[r],subsets:[],type:"google"})}}}}}};export{getFontFromGroupSetting,getFontsFromDataBuilder};
@@ -1,3 +1 @@
1
- const generateManifest = (data)=>`data:application/manifest+json,${encodeURIComponent(JSON.stringify(data))}`;
2
-
3
- export { generateManifest };
1
+ let generateManifest=e=>`data:application/manifest+json,${encodeURIComponent(JSON.stringify(e))}`;export{generateManifest};
@@ -1,33 +1 @@
1
- import { prefetchQueries } from '@gem-sdk/core';
2
-
3
- const isStorefront = true;
4
- const getFallbackV2 = async (fetcher, data)=>{
5
- const isSample = !process.env.NEXT_PUBLIC_STOREFRONT_TOKEN;
6
- const queries = data.map((v)=>prefetchQueries(v.data, {
7
- isSample,
8
- isStorefront
9
- })).flat();
10
- const datas = await Promise.allSettled(queries.map(({ query , variables , func })=>{
11
- if (func) {
12
- return func(fetcher, variables);
13
- }
14
- if (query) return fetcher([
15
- query,
16
- variables
17
- ]);
18
- return {};
19
- }));
20
- const fallback = queries.reduce((acc, { key }, index)=>{
21
- const res = datas[index];
22
- if (res?.status === 'fulfilled') {
23
- return {
24
- ...acc,
25
- [key]: res.value
26
- };
27
- }
28
- return acc;
29
- }, {});
30
- return fallback;
31
- };
32
-
33
- export { getFallbackV2 };
1
+ import{prefetchQueries as e}from"@gem-sdk/core";let isStorefront=!0,getFallbackV2=async(t,a)=>{let l=!process.env.NEXT_PUBLIC_STOREFRONT_TOKEN,r=a.map(t=>e(t.data,{isSample:l,isStorefront:!0})).flat(),o=await Promise.allSettled(r.map(({query:e,variables:a,func:l})=>l?l(t,a):e?t([e,a]):{})),s=r.reduce((e,{key:t},a)=>{let l=o[a];return l?.status==="fulfilled"?{...e,[t]:l.value}:e},{});return s};export{getFallbackV2};
@@ -1,85 +1 @@
1
- const normalizeBuilderData = (data)=>{
2
- const result = {};
3
- function compose(cData, currData = {}) {
4
- if (cData) {
5
- const { childrens , dateModified , editorConfigs , ...rest } = cData;
6
- if (rest.type === 'section') {
7
- currData[rest.uid] = rest;
8
- } else {
9
- const items = childrens?.map((child)=>child?.uid) ?? [];
10
- currData[rest.uid] = {
11
- ...rest,
12
- childrens: items
13
- };
14
- if (childrens) {
15
- childrens.map((child)=>compose(child, currData));
16
- }
17
- }
18
- }
19
- }
20
- compose(data, result);
21
- return {
22
- ...result
23
- };
24
- };
25
- const orderSection = (sections, orders)=>{
26
- // Filter out sections that are not in the order list
27
- const ids = orders?.filter((id)=>sections?.some((v)=>v?.id === id));
28
- // Return the ordered sections
29
- const orderedSections = ids?.map((id)=>sections?.find((v)=>v?.id === id)) ?? [];
30
- // Return the sections that are not in the order list
31
- const sectionsNotInOrder = sections?.filter((v)=>!v?.id || !ids?.includes(v.id)) ?? [];
32
- // Return the ordered sections + the sections that are not in the order list
33
- return orderedSections.concat(sectionsNotInOrder);
34
- };
35
- function normalizePageSectionResponse(sections, orders) {
36
- const sortedSections = orderSection(sections, orders);
37
- const childrens = sortedSections.map((item)=>{
38
- if (!item?.component) return false;
39
- try {
40
- const data = JSON.parse(item.component);
41
- return data;
42
- } catch {
43
- return false;
44
- }
45
- }).filter(Boolean);
46
- return normalizeBuilderData({
47
- uid: 'ROOT',
48
- tag: 'Root',
49
- childrens
50
- });
51
- }
52
- function normalizePageSectionResponseV2(sections, orders) {
53
- const sortedSections = orderSection(sections, orders);
54
- const childrens = sortedSections.map((item)=>{
55
- if (!item?.component) return false;
56
- try {
57
- const data = JSON.parse(item.component);
58
- return data;
59
- } catch {
60
- return false;
61
- }
62
- }).filter(Boolean);
63
- return childrens.map((v)=>{
64
- return {
65
- uid: v.uid,
66
- lazy: Boolean(v.settings?.lazy),
67
- priority: Boolean(v.settings?.priority),
68
- data: normalizeBuilderData(v)
69
- };
70
- });
71
- }
72
- const parseBuilderTemplateV2 = (data)=>{
73
- return normalizePageSectionResponseV2([
74
- ...data?.pageSections ?? [],
75
- ...data?.themePageCustomSections ?? []
76
- ], data?.sectionPosition);
77
- };
78
- const parseBuilderTemplate = (data)=>{
79
- return normalizePageSectionResponse([
80
- ...data?.pageSections ?? [],
81
- ...data?.themePageCustomSections ?? []
82
- ], data?.sectionPosition);
83
- };
84
-
85
- export { normalizeBuilderData, normalizePageSectionResponseV2, parseBuilderTemplate, parseBuilderTemplateV2 };
1
+ let normalizeBuilderData=e=>{let t={};function i(e,t={}){if(e){let{childrens:n,dateModified:r,editorConfigs:o,...a}=e;if("section"===a.type)t[a.uid]=a;else{let e=n?.map(e=>e?.uid)??[];t[a.uid]={...a,childrens:e},n&&n.map(e=>i(e,t))}}}return i(e,t),{...t}},orderSection=(e,t)=>{let i=t?.filter(t=>e?.some(e=>e?.id===t)),n=i?.map(t=>e?.find(e=>e?.id===t))??[],r=e?.filter(e=>!e?.id||!i?.includes(e.id))??[];return n.concat(r)};function normalizePageSectionResponse(e,t){let i=orderSection(e,t),n=i.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:n})}function normalizePageSectionResponseV2(e,t){let i=orderSection(e,t),n=i.map(e=>{if(!e?.component)return!1;try{let t=JSON.parse(e.component);return t}catch{return!1}}).filter(Boolean);return n.map(e=>({uid:e.uid,lazy:!!e.settings?.lazy,priority:!!e.settings?.priority,data:normalizeBuilderData(e)}))}let parseBuilderTemplateV2=e=>normalizePageSectionResponseV2([...e?.pageSections??[],...e?.themePageCustomSections??[]],e?.sectionPosition),parseBuilderTemplate=e=>normalizePageSectionResponse([...e?.pageSections??[],...e?.themePageCustomSections??[]],e?.sectionPosition);export{normalizeBuilderData,normalizePageSectionResponseV2,parseBuilderTemplate,parseBuilderTemplateV2};
@@ -1,13 +1 @@
1
- const parseJson = (json)=>{
2
- if (!json) return null;
3
- try {
4
- return JSON.parse(json);
5
- } catch (e) {
6
- return null;
7
- }
8
- };
9
- const serializableJson = (props)=>{
10
- return JSON.parse(JSON.stringify(props));
11
- };
12
-
13
- export { parseJson, serializableJson };
1
+ let parseJson=r=>{if(!r)return null;try{return JSON.parse(r)}catch(r){return null}},serializableJson=r=>JSON.parse(JSON.stringify(r));export{parseJson,serializableJson};
@@ -1,5 +1 @@
1
- function isBot(input) {
2
- 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);
3
- }
4
-
5
- export { isBot };
1
+ 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)}export{isBot};
@@ -1,43 +1 @@
1
- import { PageViewUpDocument } from '@gem-sdk/core';
2
- import { useCallback, useEffect } from 'react';
3
- import { isBot } from '../helpers/user-agent.js';
4
-
5
- const useTrackingView = (token, handle, isFallback)=>{
6
- const shopToken = token || process.env.NEXT_PUBLIC_SHOP_TOKEN;
7
- const apiURL = process.env.NEXT_PUBLIC_API_URL;
8
- const sendTracking = useCallback((handle)=>{
9
- if (!apiURL || !shopToken) return;
10
- const bot = isBot(navigator.userAgent);
11
- const variables = {
12
- pageHandle: handle,
13
- userAgent: bot ? 'BOT' : 'BROWSER'
14
- };
15
- const headers = {
16
- 'Content-Type': 'application/json',
17
- 'X-GemX-Shop-Token': shopToken
18
- };
19
- fetch(apiURL, {
20
- method: 'POST',
21
- headers,
22
- body: JSON.stringify({
23
- query: PageViewUpDocument,
24
- variables
25
- })
26
- }).finally(()=>{
27
- //
28
- });
29
- }, [
30
- apiURL,
31
- shopToken
32
- ]);
33
- useEffect(()=>{
34
- if (!handle || isFallback) return;
35
- sendTracking(handle);
36
- }, [
37
- handle,
38
- sendTracking,
39
- isFallback
40
- ]);
41
- };
42
-
43
- export { useTrackingView };
1
+ import{PageViewUpDocument as e}from"@gem-sdk/core";import{useCallback as o,useEffect as r}from"react";let useTrackingView=(t,n,i)=>{let p=t||process.env.NEXT_PUBLIC_SHOP_TOKEN,s=process.env.NEXT_PUBLIC_API_URL,a=o(o=>{if(!s||!p)return;let r={pageHandle:o},t={"Content-Type":"application/json","X-GemX-Shop-Token":p};fetch(s,{method:"POST",headers:t,body:JSON.stringify({query:e,variables:r})}).finally(()=>{})},[s,p]);r(()=>{n&&!i&&a(n)},[n,a,i])};export{useTrackingView};
@@ -1,40 +1 @@
1
- import { jsx } from 'react/jsx-runtime';
2
- import parse, { Element, Text } from 'html-react-parser';
3
- import Script from 'next/script';
4
-
5
- const parseHtml = (html, isHead)=>{
6
- if (!html) return undefined;
7
- try {
8
- return parse(html, {
9
- replace: (node)=>{
10
- if (node.type === 'script' && node instanceof Element) {
11
- const child = node.children?.[0];
12
- if (child instanceof Text) {
13
- if (isHead) return /*#__PURE__*/ jsx("script", {
14
- ...node.attribs,
15
- dangerouslySetInnerHTML: {
16
- __html: child.data
17
- }
18
- });
19
- else return /*#__PURE__*/ jsx(Script, {
20
- ...node.attribs,
21
- dangerouslySetInnerHTML: {
22
- __html: child.data
23
- }
24
- });
25
- } else {
26
- if (!isHead) {
27
- return /*#__PURE__*/ jsx(Script, {
28
- ...node.attribs
29
- });
30
- }
31
- }
32
- }
33
- }
34
- });
35
- } catch {
36
- return undefined;
37
- }
38
- };
39
-
40
- export { parseHtml };
1
+ import{jsx as t}from"react/jsx-runtime";import r,{Element as e,Text as a}from"html-react-parser";import i from"next/script";let parseHtml=(n,s)=>{if(n)try{return r(n,{replace:r=>{if("script"===r.type&&r instanceof e){let e=r.children?.[0];if(e instanceof a)return s?t("script",{...r.attribs,dangerouslySetInnerHTML:{__html:e.data}}):t(i,{...r.attribs,dangerouslySetInnerHTML:{__html:e.data}});if(!s)return t(i,{...r.attribs})}}})}catch{return}};export{parseHtml};