@gem-sdk/pages 1.58.0-staging.43 → 1.60.8
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 +0 -1
- package/dist/cjs/components/ErrorFallback.js +0 -1
- package/dist/cjs/components/FacebookPixel.js +9 -7
- package/dist/cjs/components/FooterForPostPurchase.js +0 -1
- package/dist/cjs/components/GoogleAnalytic.js +10 -9
- package/dist/cjs/components/TikTokPixel.js +0 -1
- package/dist/cjs/components/builder/Body.js +0 -1
- package/dist/cjs/components/builder/Footer.js +0 -1
- package/dist/cjs/components/builder/Header.js +0 -1
- package/dist/cjs/components/builder/InteractionSelectOnPageHeader.js +3 -9
- package/dist/cjs/components/builder/PopupManager.js +0 -1
- package/dist/cjs/components/builder/SwitchView.js +0 -1
- package/dist/cjs/components/builder/Toolbar.js +0 -1
- package/dist/cjs/components/builder/Toolbox.js +0 -1
- package/dist/cjs/components/image-to-layout/AddSectionImageToLayout.js +0 -1
- package/dist/cjs/components/image-to-layout/DropElement.js +0 -1
- package/dist/cjs/components/image-to-layout/ImageToLayout.js +0 -1
- package/dist/cjs/index.js +12 -12
- package/dist/cjs/layouts/main.js +0 -1
- package/dist/cjs/libs/api/get-post-purchase-props-preview.js +0 -1
- package/dist/cjs/libs/api/get-static-page-props-preview.js +15 -18
- package/dist/cjs/libs/hooks/use-tracking-view.js +0 -1
- package/dist/cjs/libs/parse-html.js +14 -21
- package/dist/esm/components/ErrorBoundary.js +0 -1
- package/dist/esm/components/ErrorFallback.js +0 -1
- package/dist/esm/components/FacebookPixel.js +9 -7
- package/dist/esm/components/FooterForPostPurchase.js +0 -1
- package/dist/esm/components/GoogleAnalytic.js +10 -9
- package/dist/esm/components/TikTokPixel.js +0 -1
- package/dist/esm/components/builder/Body.js +0 -1
- package/dist/esm/components/builder/Footer.js +0 -1
- package/dist/esm/components/builder/Header.js +0 -1
- package/dist/esm/components/builder/InteractionSelectOnPageHeader.js +3 -9
- package/dist/esm/components/builder/PopupManager.js +0 -1
- package/dist/esm/components/builder/SwitchView.js +0 -1
- package/dist/esm/components/builder/Toolbar.js +0 -1
- package/dist/esm/components/builder/Toolbox.js +0 -1
- package/dist/esm/components/image-to-layout/AddSectionImageToLayout.js +0 -1
- package/dist/esm/components/image-to-layout/DropElement.js +0 -1
- package/dist/esm/components/image-to-layout/ImageToLayout.js +0 -1
- package/dist/esm/index.js +6 -6
- package/dist/esm/layouts/main.js +0 -1
- package/dist/esm/libs/api/get-post-purchase-props-preview.js +0 -1
- package/dist/esm/libs/api/get-static-page-props-preview.js +16 -19
- package/dist/esm/libs/hooks/use-tracking-view.js +0 -1
- package/dist/esm/libs/parse-html.js +14 -21
- package/dist/types/index.d.ts +31 -31
- package/package.json +5 -5
|
@@ -1,23 +1,25 @@
|
|
|
1
|
-
'use client';
|
|
2
1
|
'use strict';
|
|
3
2
|
|
|
4
3
|
var jsxRuntime = require('react/jsx-runtime');
|
|
5
4
|
var core = require('@gem-sdk/core');
|
|
6
|
-
var
|
|
5
|
+
var router = require('next/router');
|
|
7
6
|
var Script = require('next/script');
|
|
8
7
|
var react = require('react');
|
|
9
8
|
|
|
10
9
|
const FacebookPixel = ({ pixelId })=>{
|
|
11
|
-
const
|
|
12
|
-
const searchParams = navigation.useSearchParams();
|
|
10
|
+
const router$1 = router.useRouter();
|
|
13
11
|
react.useEffect(()=>{
|
|
14
12
|
const handleRouteChange = ()=>{
|
|
15
13
|
core.fpixel.pageview();
|
|
16
14
|
};
|
|
17
|
-
handleRouteChange
|
|
15
|
+
router$1.events.on('routeChangeComplete', handleRouteChange);
|
|
16
|
+
router$1.events.on('hashChangeComplete', handleRouteChange);
|
|
17
|
+
return ()=>{
|
|
18
|
+
router$1.events.off('routeChangeComplete', handleRouteChange);
|
|
19
|
+
router$1.events.off('hashChangeComplete', handleRouteChange);
|
|
20
|
+
};
|
|
18
21
|
}, [
|
|
19
|
-
|
|
20
|
-
searchParams
|
|
22
|
+
router$1.events
|
|
21
23
|
]);
|
|
22
24
|
if (!pixelId) return null;
|
|
23
25
|
return /*#__PURE__*/ jsxRuntime.jsx(Script, {
|
|
@@ -1,28 +1,29 @@
|
|
|
1
|
-
'use client';
|
|
2
1
|
'use strict';
|
|
3
2
|
|
|
4
3
|
var jsxRuntime = require('react/jsx-runtime');
|
|
5
4
|
var core = require('@gem-sdk/core');
|
|
6
|
-
var
|
|
5
|
+
var router = require('next/router');
|
|
7
6
|
var Script = require('next/script');
|
|
8
7
|
var react = require('react');
|
|
9
8
|
|
|
10
9
|
const GoogleAnalytic = ({ trackingId })=>{
|
|
11
|
-
const
|
|
12
|
-
const pathName = navigation.usePathname();
|
|
10
|
+
const router$1 = router.useRouter();
|
|
13
11
|
react.useEffect(()=>{
|
|
14
|
-
const url = pathName + searchParams.toString();
|
|
15
12
|
const handleRouteChange = (url)=>{
|
|
16
13
|
core.gtag.pageview(url, trackingId);
|
|
17
14
|
};
|
|
18
|
-
handleRouteChange
|
|
15
|
+
router$1.events.on('routeChangeComplete', handleRouteChange);
|
|
16
|
+
router$1.events.on('hashChangeComplete', handleRouteChange);
|
|
17
|
+
return ()=>{
|
|
18
|
+
router$1.events.off('routeChangeComplete', handleRouteChange);
|
|
19
|
+
router$1.events.off('hashChangeComplete', handleRouteChange);
|
|
20
|
+
};
|
|
19
21
|
}, [
|
|
20
22
|
trackingId,
|
|
21
|
-
|
|
22
|
-
searchParams
|
|
23
|
+
router$1.events
|
|
23
24
|
]);
|
|
24
25
|
const handleOnReady = ()=>{
|
|
25
|
-
core.gtag.pageview(
|
|
26
|
+
core.gtag.pageview(router$1.pathname, trackingId);
|
|
26
27
|
};
|
|
27
28
|
if (!trackingId) return null;
|
|
28
29
|
if (trackingId.startsWith('UA-')) return /*#__PURE__*/ jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
'use client';
|
|
2
1
|
'use strict';
|
|
3
2
|
|
|
4
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
@@ -38,13 +37,8 @@ const InteractionSelectOnPageHeader = ()=>{
|
|
|
38
37
|
}, [
|
|
39
38
|
handleClickOutside
|
|
40
39
|
]);
|
|
41
|
-
react.useEffect(()=>{
|
|
42
|
-
setHoverOption(null);
|
|
43
|
-
}, [
|
|
44
|
-
selectType
|
|
45
|
-
]);
|
|
46
40
|
const isShowOverlay = react.useMemo(()=>{
|
|
47
|
-
return hoverOption !== 'ELEMENT' && (selectType === 'PAGE' || selectType === 'ELEMENT' && hoverOption === 'PAGE');
|
|
41
|
+
return hoverOption !== 'ELEMENT' && (selectType === 'PAGE' || selectType === 'ELEMENT' && hoverOption === 'PAGE') && settingType === 'TRIGGER';
|
|
48
42
|
}, [
|
|
49
43
|
hoverOption,
|
|
50
44
|
selectType
|
|
@@ -93,7 +87,7 @@ const InteractionSelectOnPageHeader = ()=>{
|
|
|
93
87
|
className: "gp-grow",
|
|
94
88
|
children: title
|
|
95
89
|
}),
|
|
96
|
-
/*#__PURE__*/ jsxRuntime.jsx("div", {
|
|
90
|
+
settingType === 'TRIGGER' && /*#__PURE__*/ jsxRuntime.jsx("div", {
|
|
97
91
|
className: "gp-w-[21px]",
|
|
98
92
|
children: /*#__PURE__*/ jsxRuntime.jsx("svg", {
|
|
99
93
|
width: "16",
|
|
@@ -111,7 +105,7 @@ const InteractionSelectOnPageHeader = ()=>{
|
|
|
111
105
|
})
|
|
112
106
|
]
|
|
113
107
|
}),
|
|
114
|
-
openDropdown && /*#__PURE__*/ jsxRuntime.jsxs("div", {
|
|
108
|
+
openDropdown && settingType === 'TRIGGER' && /*#__PURE__*/ jsxRuntime.jsxs("div", {
|
|
115
109
|
ref: popupRef,
|
|
116
110
|
className: "gp-p-2 gp-flex gp-flex-col gp-absolute gp-top-[calc(100%_+_4px)] gp-w-[280px] gp-bg-[#151515] gp-rounded-xl gp-text-white",
|
|
117
111
|
children: [
|
package/dist/cjs/index.js
CHANGED
|
@@ -18,6 +18,12 @@ var userAgent = require('./libs/helpers/user-agent.js');
|
|
|
18
18
|
var normalize = require('./libs/helpers/normalize.js');
|
|
19
19
|
var getFallback = require('./libs/helpers/get-fallback.js');
|
|
20
20
|
var common = require('./libs/helpers/common.js');
|
|
21
|
+
var collectionDetail = require('./pages/collection-detail.js');
|
|
22
|
+
var preview = require('./pages/preview.js');
|
|
23
|
+
var productDetail = require('./pages/product-detail.js');
|
|
24
|
+
var _static = require('./pages/static.js');
|
|
25
|
+
var builder = require('./pages/builder.js');
|
|
26
|
+
var staticV2 = require('./pages/static-v2.js');
|
|
21
27
|
var getStaticPaths = require('./libs/getStaticPaths.js');
|
|
22
28
|
var genFonts = require('./libs/helpers/gen-fonts.js');
|
|
23
29
|
var googleFonts = require('./libs/google-fonts.js');
|
|
@@ -29,12 +35,6 @@ var _500 = require('./pages/500.js');
|
|
|
29
35
|
var GoogleAnalytic = require('./components/GoogleAnalytic.js');
|
|
30
36
|
var FacebookPixel = require('./components/FacebookPixel.js');
|
|
31
37
|
var TikTokPixel = require('./components/TikTokPixel.js');
|
|
32
|
-
var collectionDetail = require('./pages/collection-detail.js');
|
|
33
|
-
var preview = require('./pages/preview.js');
|
|
34
|
-
var productDetail = require('./pages/product-detail.js');
|
|
35
|
-
var _static = require('./pages/static.js');
|
|
36
|
-
var builder = require('./pages/builder.js');
|
|
37
|
-
var staticV2 = require('./pages/static-v2.js');
|
|
38
38
|
|
|
39
39
|
|
|
40
40
|
|
|
@@ -59,6 +59,12 @@ exports.normalizePageSectionResponseV2 = normalize.normalizePageSectionResponseV
|
|
|
59
59
|
exports.parseBuilderTemplateV2 = normalize.parseBuilderTemplateV2;
|
|
60
60
|
exports.getFallbackV2 = getFallback.getFallbackV2;
|
|
61
61
|
exports.retryWithDelay = common.retryWithDelay;
|
|
62
|
+
exports.CollectionDetailPage = collectionDetail.default;
|
|
63
|
+
exports.PreviewPage = preview.PreviewPage;
|
|
64
|
+
exports.ProductDetailPage = productDetail.default;
|
|
65
|
+
exports.StaticPage = _static.default;
|
|
66
|
+
exports.BuilderPage = builder.BuilderPage;
|
|
67
|
+
exports.StaticPageV2 = staticV2.StaticPageV2;
|
|
62
68
|
exports.getStaticPaths = getStaticPaths.getStaticPaths;
|
|
63
69
|
exports.getFontFromGroupSetting = genFonts.getFontFromGroupSetting;
|
|
64
70
|
exports.getFontsFromDataBuilder = genFonts.getFontsFromDataBuilder;
|
|
@@ -72,9 +78,3 @@ exports.Page500 = _500.Page500;
|
|
|
72
78
|
exports.GoogleAnalytic = GoogleAnalytic.GoogleAnalytic;
|
|
73
79
|
exports.FacebookPixel = FacebookPixel.FacebookPixel;
|
|
74
80
|
exports.TikTokPixel = TikTokPixel.TikTokPixel;
|
|
75
|
-
exports.CollectionDetailPage = collectionDetail.default;
|
|
76
|
-
exports.PreviewPage = preview.PreviewPage;
|
|
77
|
-
exports.ProductDetailPage = productDetail.default;
|
|
78
|
-
exports.StaticPage = _static.default;
|
|
79
|
-
exports.BuilderPage = builder.BuilderPage;
|
|
80
|
-
exports.StaticPageV2 = staticV2.StaticPageV2;
|
package/dist/cjs/layouts/main.js
CHANGED
|
@@ -9,7 +9,6 @@ var generateManifres = require('../helpers/generate-manifres.js');
|
|
|
9
9
|
var getFallback = require('../helpers/get-fallback.js');
|
|
10
10
|
var normalize = require('../helpers/normalize.js');
|
|
11
11
|
var parseJson = require('../helpers/parse-json.js');
|
|
12
|
-
var customFonts = require('../custom-fonts.js');
|
|
13
12
|
|
|
14
13
|
const getStaticPagePropsPreview = (fetcher, shopifyFetcher)=>async (slug)=>{
|
|
15
14
|
try {
|
|
@@ -20,8 +19,9 @@ const getStaticPagePropsPreview = (fetcher, shopifyFetcher)=>async (slug)=>{
|
|
|
20
19
|
};
|
|
21
20
|
const [theme, storeProperty, shopifyMeta] = await Promise.allSettled([
|
|
22
21
|
fetcher([
|
|
23
|
-
core.
|
|
24
|
-
variables
|
|
22
|
+
core.PreviewPageDocument,
|
|
23
|
+
variables,
|
|
24
|
+
'previewPage'
|
|
25
25
|
]),
|
|
26
26
|
fetcher([
|
|
27
27
|
core.StorePropertyDocument
|
|
@@ -33,21 +33,19 @@ const getStaticPagePropsPreview = (fetcher, shopifyFetcher)=>async (slug)=>{
|
|
|
33
33
|
if (theme.status === 'rejected') {
|
|
34
34
|
throw new Error(theme.reason?.[0]);
|
|
35
35
|
}
|
|
36
|
-
const dataBuilder = theme.value.
|
|
36
|
+
const dataBuilder = theme.value.previewPage;
|
|
37
37
|
if (!dataBuilder) {
|
|
38
38
|
throw new Error(`No data builder found for slug: /preview/${slug}`);
|
|
39
39
|
}
|
|
40
|
-
const themePageCustomFonts = dataBuilder.customFonts;
|
|
41
40
|
const pageTemplate = normalize.parseBuilderTemplateV2(dataBuilder);
|
|
42
|
-
const [elementFontStyle, fontStyle, fallback
|
|
41
|
+
const [elementFontStyle, fontStyle, fallback] = await Promise.all([
|
|
43
42
|
googleFonts.getFontStyleFromPageTemplate(pageTemplate),
|
|
44
|
-
googleFonts.getFontFromGlobalStyle(dataBuilder?.
|
|
45
|
-
getFallback.getFallbackV2(fetcher, pageTemplate)
|
|
46
|
-
customFonts.getCustomFonts(themePageCustomFonts)
|
|
43
|
+
googleFonts.getFontFromGlobalStyle(dataBuilder?.pageStyle?.data),
|
|
44
|
+
getFallback.getFallbackV2(fetcher, pageTemplate)
|
|
47
45
|
]);
|
|
48
46
|
const mobileOnly = dataBuilder.isMobile ?? false;
|
|
49
|
-
const description = dataBuilder?.
|
|
50
|
-
const thumbnail = parseJson.parseJson(dataBuilder?.
|
|
47
|
+
const description = dataBuilder?.themePageDataSEO?.find((item)=>item?.key === 'global-meta-description')?.value;
|
|
48
|
+
const thumbnail = parseJson.parseJson(dataBuilder?.themePageDataSEO?.find((item)=>item?.key === 'global-meta-thumbnail')?.value);
|
|
51
49
|
const shopMeta = shopifyMeta.status === 'fulfilled' ? shopifyMeta.value : undefined;
|
|
52
50
|
const shopData = storeProperty.status === 'fulfilled' ? storeProperty.value : undefined;
|
|
53
51
|
const favicon = shopData?.storeProperty?.favicon ?? '/favicon/favicon-32x32.png';
|
|
@@ -121,7 +119,7 @@ const getStaticPagePropsPreview = (fetcher, shopifyFetcher)=>async (slug)=>{
|
|
|
121
119
|
const countryIsoCode = shopMeta?.localization.country.isoCode ?? null;
|
|
122
120
|
const locale = !languageIsoCode || !countryIsoCode ? null : `${languageIsoCode}-${countryIsoCode}`;
|
|
123
121
|
return parseJson.serializableJson({
|
|
124
|
-
themeStyle: genCss.genCSS(dataBuilder?.
|
|
122
|
+
themeStyle: genCss.genCSS(dataBuilder?.pageStyle?.data, mobileOnly),
|
|
125
123
|
fontStyle,
|
|
126
124
|
elementFontStyle,
|
|
127
125
|
builderData: pageTemplate,
|
|
@@ -137,12 +135,11 @@ const getStaticPagePropsPreview = (fetcher, shopifyFetcher)=>async (slug)=>{
|
|
|
137
135
|
swatches: parseJson.parseJson(shopData?.storeProperty?.swatchesConfig),
|
|
138
136
|
seo,
|
|
139
137
|
mobileOnly,
|
|
140
|
-
gaTrackingId: dataBuilder.
|
|
141
|
-
facebookPixelId: dataBuilder.
|
|
142
|
-
tiktokPixelId: dataBuilder.
|
|
143
|
-
customCodeHeader: dataBuilder.
|
|
144
|
-
customCodeBody: dataBuilder.
|
|
145
|
-
customFonts: customFonts$1
|
|
138
|
+
gaTrackingId: dataBuilder.themePageAnalytic?.gaTrackingID ?? null,
|
|
139
|
+
facebookPixelId: dataBuilder.themePageAnalytic?.fbPixelID ?? null,
|
|
140
|
+
tiktokPixelId: dataBuilder.themePageAnalytic?.tiktokPixelID ?? null,
|
|
141
|
+
customCodeHeader: dataBuilder.themePageCustomCode?.header ?? null,
|
|
142
|
+
customCodeBody: dataBuilder.themePageCustomCode?.body ?? null
|
|
146
143
|
});
|
|
147
144
|
} catch (err) {
|
|
148
145
|
nextjs.captureException(err);
|
|
@@ -9,28 +9,21 @@ const parseHtml = (html, isHead)=>{
|
|
|
9
9
|
try {
|
|
10
10
|
return parse(html, {
|
|
11
11
|
replace: (node)=>{
|
|
12
|
-
if (node.type
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
}
|
|
26
|
-
});
|
|
27
|
-
} else {
|
|
28
|
-
if (!isHead) {
|
|
29
|
-
return /*#__PURE__*/ jsxRuntime.jsx(Script, {
|
|
30
|
-
...node.attribs
|
|
31
|
-
});
|
|
12
|
+
if (node.type !== 'script' || !(node instanceof parse.Element)) return null;
|
|
13
|
+
const child = node.children?.[0];
|
|
14
|
+
if (!child) return null;
|
|
15
|
+
if (!(child instanceof parse.Text) && !isHead) return /*#__PURE__*/ jsxRuntime.jsx(Script, {
|
|
16
|
+
...node.attribs
|
|
17
|
+
});
|
|
18
|
+
if (child instanceof parse.Text && isHead) {
|
|
19
|
+
return /*#__PURE__*/ jsxRuntime.jsx(Script, {
|
|
20
|
+
...node.attribs,
|
|
21
|
+
type: "text/javascript",
|
|
22
|
+
strategy: isHead ? 'beforeInteractive' : 'afterInteractive',
|
|
23
|
+
dangerouslySetInnerHTML: {
|
|
24
|
+
__html: child.data
|
|
32
25
|
}
|
|
33
|
-
}
|
|
26
|
+
});
|
|
34
27
|
}
|
|
35
28
|
}
|
|
36
29
|
});
|
|
@@ -1,21 +1,23 @@
|
|
|
1
|
-
'use client';
|
|
2
1
|
import { jsx } from 'react/jsx-runtime';
|
|
3
2
|
import { fpixel } from '@gem-sdk/core';
|
|
4
|
-
import {
|
|
3
|
+
import { useRouter } from 'next/router';
|
|
5
4
|
import Script from 'next/script';
|
|
6
5
|
import { useEffect } from 'react';
|
|
7
6
|
|
|
8
7
|
const FacebookPixel = ({ pixelId })=>{
|
|
9
|
-
const
|
|
10
|
-
const searchParams = useSearchParams();
|
|
8
|
+
const router = useRouter();
|
|
11
9
|
useEffect(()=>{
|
|
12
10
|
const handleRouteChange = ()=>{
|
|
13
11
|
fpixel.pageview();
|
|
14
12
|
};
|
|
15
|
-
handleRouteChange
|
|
13
|
+
router.events.on('routeChangeComplete', handleRouteChange);
|
|
14
|
+
router.events.on('hashChangeComplete', handleRouteChange);
|
|
15
|
+
return ()=>{
|
|
16
|
+
router.events.off('routeChangeComplete', handleRouteChange);
|
|
17
|
+
router.events.off('hashChangeComplete', handleRouteChange);
|
|
18
|
+
};
|
|
16
19
|
}, [
|
|
17
|
-
|
|
18
|
-
searchParams
|
|
20
|
+
router.events
|
|
19
21
|
]);
|
|
20
22
|
if (!pixelId) return null;
|
|
21
23
|
return /*#__PURE__*/ jsx(Script, {
|
|
@@ -1,26 +1,27 @@
|
|
|
1
|
-
'use client';
|
|
2
1
|
import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
|
|
3
2
|
import { gtag } from '@gem-sdk/core';
|
|
4
|
-
import {
|
|
3
|
+
import { useRouter } from 'next/router';
|
|
5
4
|
import Script from 'next/script';
|
|
6
5
|
import { useEffect } from 'react';
|
|
7
6
|
|
|
8
7
|
const GoogleAnalytic = ({ trackingId })=>{
|
|
9
|
-
const
|
|
10
|
-
const pathName = usePathname();
|
|
8
|
+
const router = useRouter();
|
|
11
9
|
useEffect(()=>{
|
|
12
|
-
const url = pathName + searchParams.toString();
|
|
13
10
|
const handleRouteChange = (url)=>{
|
|
14
11
|
gtag.pageview(url, trackingId);
|
|
15
12
|
};
|
|
16
|
-
handleRouteChange
|
|
13
|
+
router.events.on('routeChangeComplete', handleRouteChange);
|
|
14
|
+
router.events.on('hashChangeComplete', handleRouteChange);
|
|
15
|
+
return ()=>{
|
|
16
|
+
router.events.off('routeChangeComplete', handleRouteChange);
|
|
17
|
+
router.events.off('hashChangeComplete', handleRouteChange);
|
|
18
|
+
};
|
|
17
19
|
}, [
|
|
18
20
|
trackingId,
|
|
19
|
-
|
|
20
|
-
searchParams
|
|
21
|
+
router.events
|
|
21
22
|
]);
|
|
22
23
|
const handleOnReady = ()=>{
|
|
23
|
-
gtag.pageview(
|
|
24
|
+
gtag.pageview(router.pathname, trackingId);
|
|
24
25
|
};
|
|
25
26
|
if (!trackingId) return null;
|
|
26
27
|
if (trackingId.startsWith('UA-')) return /*#__PURE__*/ jsxs(Fragment, {
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
'use client';
|
|
2
1
|
import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
|
|
3
2
|
import { usePageStore, useInteraction } from '@gem-sdk/core';
|
|
4
3
|
import { useState, useRef, useCallback, useEffect, useMemo } from 'react';
|
|
@@ -34,13 +33,8 @@ const InteractionSelectOnPageHeader = ()=>{
|
|
|
34
33
|
}, [
|
|
35
34
|
handleClickOutside
|
|
36
35
|
]);
|
|
37
|
-
useEffect(()=>{
|
|
38
|
-
setHoverOption(null);
|
|
39
|
-
}, [
|
|
40
|
-
selectType
|
|
41
|
-
]);
|
|
42
36
|
const isShowOverlay = useMemo(()=>{
|
|
43
|
-
return hoverOption !== 'ELEMENT' && (selectType === 'PAGE' || selectType === 'ELEMENT' && hoverOption === 'PAGE');
|
|
37
|
+
return hoverOption !== 'ELEMENT' && (selectType === 'PAGE' || selectType === 'ELEMENT' && hoverOption === 'PAGE') && settingType === 'TRIGGER';
|
|
44
38
|
}, [
|
|
45
39
|
hoverOption,
|
|
46
40
|
selectType
|
|
@@ -89,7 +83,7 @@ const InteractionSelectOnPageHeader = ()=>{
|
|
|
89
83
|
className: "gp-grow",
|
|
90
84
|
children: title
|
|
91
85
|
}),
|
|
92
|
-
/*#__PURE__*/ jsx("div", {
|
|
86
|
+
settingType === 'TRIGGER' && /*#__PURE__*/ jsx("div", {
|
|
93
87
|
className: "gp-w-[21px]",
|
|
94
88
|
children: /*#__PURE__*/ jsx("svg", {
|
|
95
89
|
width: "16",
|
|
@@ -107,7 +101,7 @@ const InteractionSelectOnPageHeader = ()=>{
|
|
|
107
101
|
})
|
|
108
102
|
]
|
|
109
103
|
}),
|
|
110
|
-
openDropdown && /*#__PURE__*/ jsxs("div", {
|
|
104
|
+
openDropdown && settingType === 'TRIGGER' && /*#__PURE__*/ jsxs("div", {
|
|
111
105
|
ref: popupRef,
|
|
112
106
|
className: "gp-p-2 gp-flex gp-flex-col gp-absolute gp-top-[calc(100%_+_4px)] gp-w-[280px] gp-bg-[#151515] gp-rounded-xl gp-text-white",
|
|
113
107
|
children: [
|
package/dist/esm/index.js
CHANGED
|
@@ -16,6 +16,12 @@ export { isBot } from './libs/helpers/user-agent.js';
|
|
|
16
16
|
export { normalizePageSectionResponseV2, parseBuilderTemplateV2 } from './libs/helpers/normalize.js';
|
|
17
17
|
export { getFallbackV2 } from './libs/helpers/get-fallback.js';
|
|
18
18
|
export { retryWithDelay } from './libs/helpers/common.js';
|
|
19
|
+
export { default as CollectionDetailPage } from './pages/collection-detail.js';
|
|
20
|
+
export { PreviewPage } from './pages/preview.js';
|
|
21
|
+
export { default as ProductDetailPage } from './pages/product-detail.js';
|
|
22
|
+
export { default as StaticPage } from './pages/static.js';
|
|
23
|
+
export { BuilderPage } from './pages/builder.js';
|
|
24
|
+
export { StaticPageV2 } from './pages/static-v2.js';
|
|
19
25
|
export { getStaticPaths } from './libs/getStaticPaths.js';
|
|
20
26
|
export { getFontFromGroupSetting, getFontsFromDataBuilder } from './libs/helpers/gen-fonts.js';
|
|
21
27
|
export { getFontFromGlobalStyle, getFonts } from './libs/google-fonts.js';
|
|
@@ -27,9 +33,3 @@ export { Page500 } from './pages/500.js';
|
|
|
27
33
|
export { GoogleAnalytic } from './components/GoogleAnalytic.js';
|
|
28
34
|
export { FacebookPixel } from './components/FacebookPixel.js';
|
|
29
35
|
export { TikTokPixel } from './components/TikTokPixel.js';
|
|
30
|
-
export { default as CollectionDetailPage } from './pages/collection-detail.js';
|
|
31
|
-
export { PreviewPage } from './pages/preview.js';
|
|
32
|
-
export { default as ProductDetailPage } from './pages/product-detail.js';
|
|
33
|
-
export { default as StaticPage } from './pages/static.js';
|
|
34
|
-
export { BuilderPage } from './pages/builder.js';
|
|
35
|
-
export { StaticPageV2 } from './pages/static-v2.js';
|
package/dist/esm/layouts/main.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { PreviewPageDocument, StorePropertyDocument } from '@gem-sdk/core';
|
|
2
2
|
import { ShopMetaDocument } from '@gem-sdk/adapter-shopify';
|
|
3
3
|
import { captureException } from '@sentry/nextjs';
|
|
4
4
|
import { getFontStyleFromPageTemplate, getFontFromGlobalStyle } from '../google-fonts.js';
|
|
@@ -7,7 +7,6 @@ import { generateManifest } from '../helpers/generate-manifres.js';
|
|
|
7
7
|
import { getFallbackV2 } from '../helpers/get-fallback.js';
|
|
8
8
|
import { parseBuilderTemplateV2 } from '../helpers/normalize.js';
|
|
9
9
|
import { parseJson, serializableJson } from '../helpers/parse-json.js';
|
|
10
|
-
import { getCustomFonts } from '../custom-fonts.js';
|
|
11
10
|
|
|
12
11
|
const getStaticPagePropsPreview = (fetcher, shopifyFetcher)=>async (slug)=>{
|
|
13
12
|
try {
|
|
@@ -18,8 +17,9 @@ const getStaticPagePropsPreview = (fetcher, shopifyFetcher)=>async (slug)=>{
|
|
|
18
17
|
};
|
|
19
18
|
const [theme, storeProperty, shopifyMeta] = await Promise.allSettled([
|
|
20
19
|
fetcher([
|
|
21
|
-
|
|
22
|
-
variables
|
|
20
|
+
PreviewPageDocument,
|
|
21
|
+
variables,
|
|
22
|
+
'previewPage'
|
|
23
23
|
]),
|
|
24
24
|
fetcher([
|
|
25
25
|
StorePropertyDocument
|
|
@@ -31,21 +31,19 @@ const getStaticPagePropsPreview = (fetcher, shopifyFetcher)=>async (slug)=>{
|
|
|
31
31
|
if (theme.status === 'rejected') {
|
|
32
32
|
throw new Error(theme.reason?.[0]);
|
|
33
33
|
}
|
|
34
|
-
const dataBuilder = theme.value.
|
|
34
|
+
const dataBuilder = theme.value.previewPage;
|
|
35
35
|
if (!dataBuilder) {
|
|
36
36
|
throw new Error(`No data builder found for slug: /preview/${slug}`);
|
|
37
37
|
}
|
|
38
|
-
const themePageCustomFonts = dataBuilder.customFonts;
|
|
39
38
|
const pageTemplate = parseBuilderTemplateV2(dataBuilder);
|
|
40
|
-
const [elementFontStyle, fontStyle, fallback
|
|
39
|
+
const [elementFontStyle, fontStyle, fallback] = await Promise.all([
|
|
41
40
|
getFontStyleFromPageTemplate(pageTemplate),
|
|
42
|
-
getFontFromGlobalStyle(dataBuilder?.
|
|
43
|
-
getFallbackV2(fetcher, pageTemplate)
|
|
44
|
-
getCustomFonts(themePageCustomFonts)
|
|
41
|
+
getFontFromGlobalStyle(dataBuilder?.pageStyle?.data),
|
|
42
|
+
getFallbackV2(fetcher, pageTemplate)
|
|
45
43
|
]);
|
|
46
44
|
const mobileOnly = dataBuilder.isMobile ?? false;
|
|
47
|
-
const description = dataBuilder?.
|
|
48
|
-
const thumbnail = parseJson(dataBuilder?.
|
|
45
|
+
const description = dataBuilder?.themePageDataSEO?.find((item)=>item?.key === 'global-meta-description')?.value;
|
|
46
|
+
const thumbnail = parseJson(dataBuilder?.themePageDataSEO?.find((item)=>item?.key === 'global-meta-thumbnail')?.value);
|
|
49
47
|
const shopMeta = shopifyMeta.status === 'fulfilled' ? shopifyMeta.value : undefined;
|
|
50
48
|
const shopData = storeProperty.status === 'fulfilled' ? storeProperty.value : undefined;
|
|
51
49
|
const favicon = shopData?.storeProperty?.favicon ?? '/favicon/favicon-32x32.png';
|
|
@@ -119,7 +117,7 @@ const getStaticPagePropsPreview = (fetcher, shopifyFetcher)=>async (slug)=>{
|
|
|
119
117
|
const countryIsoCode = shopMeta?.localization.country.isoCode ?? null;
|
|
120
118
|
const locale = !languageIsoCode || !countryIsoCode ? null : `${languageIsoCode}-${countryIsoCode}`;
|
|
121
119
|
return serializableJson({
|
|
122
|
-
themeStyle: genCSS(dataBuilder?.
|
|
120
|
+
themeStyle: genCSS(dataBuilder?.pageStyle?.data, mobileOnly),
|
|
123
121
|
fontStyle,
|
|
124
122
|
elementFontStyle,
|
|
125
123
|
builderData: pageTemplate,
|
|
@@ -135,12 +133,11 @@ const getStaticPagePropsPreview = (fetcher, shopifyFetcher)=>async (slug)=>{
|
|
|
135
133
|
swatches: parseJson(shopData?.storeProperty?.swatchesConfig),
|
|
136
134
|
seo,
|
|
137
135
|
mobileOnly,
|
|
138
|
-
gaTrackingId: dataBuilder.
|
|
139
|
-
facebookPixelId: dataBuilder.
|
|
140
|
-
tiktokPixelId: dataBuilder.
|
|
141
|
-
customCodeHeader: dataBuilder.
|
|
142
|
-
customCodeBody: dataBuilder.
|
|
143
|
-
customFonts
|
|
136
|
+
gaTrackingId: dataBuilder.themePageAnalytic?.gaTrackingID ?? null,
|
|
137
|
+
facebookPixelId: dataBuilder.themePageAnalytic?.fbPixelID ?? null,
|
|
138
|
+
tiktokPixelId: dataBuilder.themePageAnalytic?.tiktokPixelID ?? null,
|
|
139
|
+
customCodeHeader: dataBuilder.themePageCustomCode?.header ?? null,
|
|
140
|
+
customCodeBody: dataBuilder.themePageCustomCode?.body ?? null
|
|
144
141
|
});
|
|
145
142
|
} catch (err) {
|
|
146
143
|
captureException(err);
|
|
@@ -7,28 +7,21 @@ const parseHtml = (html, isHead)=>{
|
|
|
7
7
|
try {
|
|
8
8
|
return parse(html, {
|
|
9
9
|
replace: (node)=>{
|
|
10
|
-
if (node.type
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
}
|
|
24
|
-
});
|
|
25
|
-
} else {
|
|
26
|
-
if (!isHead) {
|
|
27
|
-
return /*#__PURE__*/ jsx(Script, {
|
|
28
|
-
...node.attribs
|
|
29
|
-
});
|
|
10
|
+
if (node.type !== 'script' || !(node instanceof Element)) return null;
|
|
11
|
+
const child = node.children?.[0];
|
|
12
|
+
if (!child) return null;
|
|
13
|
+
if (!(child instanceof Text) && !isHead) return /*#__PURE__*/ jsx(Script, {
|
|
14
|
+
...node.attribs
|
|
15
|
+
});
|
|
16
|
+
if (child instanceof Text && isHead) {
|
|
17
|
+
return /*#__PURE__*/ jsx(Script, {
|
|
18
|
+
...node.attribs,
|
|
19
|
+
type: "text/javascript",
|
|
20
|
+
strategy: isHead ? 'beforeInteractive' : 'afterInteractive',
|
|
21
|
+
dangerouslySetInnerHTML: {
|
|
22
|
+
__html: child.data
|
|
30
23
|
}
|
|
31
|
-
}
|
|
24
|
+
});
|
|
32
25
|
}
|
|
33
26
|
}
|
|
34
27
|
});
|
package/dist/types/index.d.ts
CHANGED
|
@@ -157,6 +157,36 @@ type RetryConfig = {
|
|
|
157
157
|
};
|
|
158
158
|
declare const retryWithDelay: <T = unknown>(fn: () => T, config?: RetryConfig) => Promise<T>;
|
|
159
159
|
|
|
160
|
+
type PreviewPageProps = {
|
|
161
|
+
components: Record<string, React.ComponentType<any>>;
|
|
162
|
+
pageType: ShopType.PublishedThemePageType;
|
|
163
|
+
};
|
|
164
|
+
declare const PreviewPage: React.FC<PreviewPageProps>;
|
|
165
|
+
|
|
166
|
+
type StaticPageProps = PageBuilderProps;
|
|
167
|
+
declare const StaticPage: React.FC<StaticPageProps & AdditionalPageBuilderProps>;
|
|
168
|
+
|
|
169
|
+
type BuilderPageProps = {
|
|
170
|
+
components: Record<string, React.ComponentType<any>>;
|
|
171
|
+
seo?: NextSeoProps;
|
|
172
|
+
themeStyle?: string | null;
|
|
173
|
+
fontStyle?: string | null;
|
|
174
|
+
header?: BuilderState;
|
|
175
|
+
footer?: BuilderState;
|
|
176
|
+
sectionData?: Record<string, SectionData$1>;
|
|
177
|
+
storefrontToken?: string | null;
|
|
178
|
+
storefrontHandle?: string | null;
|
|
179
|
+
shopToken?: string | null;
|
|
180
|
+
mode?: RenderMode;
|
|
181
|
+
pageType: ShopType.PublishedThemePageType;
|
|
182
|
+
editorImageToLayout?: boolean;
|
|
183
|
+
isThemeSectionEditor?: boolean;
|
|
184
|
+
hiddenToolbar?: boolean;
|
|
185
|
+
pageName: string;
|
|
186
|
+
isOriginTemplate?: boolean;
|
|
187
|
+
};
|
|
188
|
+
declare const BuilderPage: React.FC<BuilderPageProps>;
|
|
189
|
+
|
|
160
190
|
declare const getStaticPaths: GetStaticPaths;
|
|
161
191
|
|
|
162
192
|
type TypographyV2FontFamilyType = 'google' | 'custom' | 'theme' | 'bunny';
|
|
@@ -227,34 +257,4 @@ type Props = {
|
|
|
227
257
|
};
|
|
228
258
|
declare const TikTokPixel: ({ pixelId }: Props) => react_jsx_runtime.JSX.Element | null;
|
|
229
259
|
|
|
230
|
-
|
|
231
|
-
components: Record<string, React.ComponentType<any>>;
|
|
232
|
-
pageType: ShopType.PublishedThemePageType;
|
|
233
|
-
};
|
|
234
|
-
declare const PreviewPage: React.FC<PreviewPageProps>;
|
|
235
|
-
|
|
236
|
-
type StaticPageProps = PageBuilderProps;
|
|
237
|
-
declare const StaticPage: React.FC<StaticPageProps & AdditionalPageBuilderProps>;
|
|
238
|
-
|
|
239
|
-
type BuilderPageProps = {
|
|
240
|
-
components: Record<string, React.ComponentType<any>>;
|
|
241
|
-
seo?: NextSeoProps;
|
|
242
|
-
themeStyle?: string | null;
|
|
243
|
-
fontStyle?: string | null;
|
|
244
|
-
header?: BuilderState;
|
|
245
|
-
footer?: BuilderState;
|
|
246
|
-
sectionData?: Record<string, SectionData$1>;
|
|
247
|
-
storefrontToken?: string | null;
|
|
248
|
-
storefrontHandle?: string | null;
|
|
249
|
-
shopToken?: string | null;
|
|
250
|
-
mode?: RenderMode;
|
|
251
|
-
pageType: ShopType.PublishedThemePageType;
|
|
252
|
-
editorImageToLayout?: boolean;
|
|
253
|
-
isThemeSectionEditor?: boolean;
|
|
254
|
-
hiddenToolbar?: boolean;
|
|
255
|
-
pageName: string;
|
|
256
|
-
isOriginTemplate?: boolean;
|
|
257
|
-
};
|
|
258
|
-
declare const BuilderPage: React.FC<BuilderPageProps>;
|
|
259
|
-
|
|
260
|
-
export { AppPropsWithLayout, BuilderPage, CollectionDetailPage, CollectionPageProps, ErrorBoundary, ErrorFallback, FacebookPixel, GoogleAnalytic, NextPageWithLayout, Page404, Page500, PageBuilderProps, PageBuilderPropsV2, PreviewPage, ProductDetailPage, ProductPageProps, StaticPage, StaticPageProps, StaticPagePropsV2, StaticPageV2, TikTokPixel, createAppAPIFetcher, createFetcher, createShopifyFetcher, genCSS, getBuilderProps, getCollectionProps, getFallbackV2, getFontFromGlobalStyle, getFontFromGroupSetting, getFonts, getFontsFromDataBuilder, getHomePageProps, getHomePagePropsV2, getLayout, getPostPurchasePropsPreview, getPreviewProps, getProductProps, getStaticPagePropsPreview, getStaticPagePropsV2, getStaticPaths, getStorefrontApi, isBot, normalizePageSectionResponseV2, parseBuilderTemplateV2, retryWithDelay, usePagePreview, useTrackingView };
|
|
260
|
+
export { AppPropsWithLayout, BuilderPage, CollectionDetailPage, CollectionPageProps, ErrorBoundary, ErrorFallback, FacebookPixel, GoogleAnalytic, NextPageWithLayout, Page404, Page500, PageBuilderProps, PreviewPage, ProductDetailPage, ProductPageProps, StaticPage, StaticPageProps, StaticPagePropsV2, StaticPageV2, TikTokPixel, createAppAPIFetcher, createFetcher, createShopifyFetcher, genCSS, getBuilderProps, getCollectionProps, getFallbackV2, getFontFromGlobalStyle, getFontFromGroupSetting, getFonts, getFontsFromDataBuilder, getHomePageProps, getHomePagePropsV2, getLayout, getPostPurchasePropsPreview, getPreviewProps, getProductProps, getStaticPagePropsPreview, getStaticPagePropsV2, getStaticPaths, getStorefrontApi, isBot, normalizePageSectionResponseV2, parseBuilderTemplateV2, retryWithDelay, usePagePreview, useTrackingView };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gem-sdk/pages",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.60.8",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"main": "dist/cjs/index.js",
|
|
@@ -26,10 +26,10 @@
|
|
|
26
26
|
"next": "latest"
|
|
27
27
|
},
|
|
28
28
|
"devDependencies": {
|
|
29
|
-
"@gem-sdk/core": "1.
|
|
30
|
-
"@gem-sdk/plugin-cookie-bar": "1.58.0
|
|
31
|
-
"@gem-sdk/plugin-quick-view": "1.58.0
|
|
32
|
-
"@gem-sdk/plugin-sticky-add-to-cart": "1.58.0
|
|
29
|
+
"@gem-sdk/core": "1.60.7",
|
|
30
|
+
"@gem-sdk/plugin-cookie-bar": "1.58.0",
|
|
31
|
+
"@gem-sdk/plugin-quick-view": "1.58.0",
|
|
32
|
+
"@gem-sdk/plugin-sticky-add-to-cart": "1.58.0"
|
|
33
33
|
},
|
|
34
34
|
"peerDependencies": {
|
|
35
35
|
"next": ">=13"
|