@builder.io/react 6.0.2 → 6.0.3
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/CHANGELOG.md +10 -0
- package/dist/builder-react-lite.cjs.js +1 -1
- package/dist/builder-react-lite.cjs.js.map +1 -1
- package/dist/builder-react-lite.esm.js +1 -1
- package/dist/builder-react-lite.esm.js.map +1 -1
- package/dist/builder-react.browser.js +2 -2
- package/dist/builder-react.browser.js.map +1 -1
- package/dist/builder-react.cjs.js +1 -1
- package/dist/builder-react.cjs.js.map +1 -1
- package/dist/builder-react.es5.js +1 -1
- package/dist/builder-react.es5.js.map +1 -1
- package/dist/builder-react.unpkg.js +2 -2
- package/dist/builder-react.unpkg.js.map +1 -1
- package/dist/lib/package.json +1 -1
- package/dist/lib/src/blocks/PersonalizationContainer.js +20 -17
- package/dist/lib/src/blocks/PersonalizationContainer.js.map +1 -1
- package/dist/lib/src/sdk-version.js +1 -1
- package/dist/types/src/blocks/PersonalizationContainer.d.ts +1 -0
- package/dist/types/src/sdk-version.d.ts +1 -1
- package/package.json +2 -2
- package/src/blocks/PersonalizationContainer.tsx +16 -4
package/dist/lib/package.json
CHANGED
|
@@ -42,11 +42,11 @@ var builder_blocks_component_1 = require("../components/builder-blocks.component
|
|
|
42
42
|
var filter_with_custom_targeting_1 = require("../functions/filter-with-custom-targeting");
|
|
43
43
|
var builder_store_1 = require("../store/builder-store");
|
|
44
44
|
function PersonalizationContainer(props) {
|
|
45
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v;
|
|
45
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w;
|
|
46
46
|
var isBeingHydrated = Boolean(sdk_1.Builder.isBrowser && ((_a = window.__hydrated) === null || _a === void 0 ? void 0 : _a[(_b = props.builderBlock) === null || _b === void 0 ? void 0 : _b.id]));
|
|
47
47
|
var rootRef = (0, react_1.useRef)(null);
|
|
48
|
-
var
|
|
49
|
-
var
|
|
48
|
+
var _x = (0, react_2.useState)(isBeingHydrated), isClient = _x[0], setIsClient = _x[1];
|
|
49
|
+
var _y = (0, react_2.useState)(0), update = _y[0], setUpdate = _y[1];
|
|
50
50
|
var builderStore = (0, react_1.useContext)(builder_store_1.BuilderStoreContext);
|
|
51
51
|
(0, react_2.useEffect)(function () {
|
|
52
52
|
var _a;
|
|
@@ -54,6 +54,7 @@ function PersonalizationContainer(props) {
|
|
|
54
54
|
var subscriber = sdk_1.builder.userAttributesChanged.subscribe(function () {
|
|
55
55
|
setUpdate(update + 1);
|
|
56
56
|
});
|
|
57
|
+
var unsubs = [function () { return subscriber.unsubscribe(); }];
|
|
57
58
|
if (!(sdk_1.Builder.isEditing || sdk_1.Builder.isPreviewing)) {
|
|
58
59
|
var variant_1 = filteredVariants[0];
|
|
59
60
|
// fire a custom event to update the personalization container
|
|
@@ -65,7 +66,7 @@ function PersonalizationContainer(props) {
|
|
|
65
66
|
bubbles: true,
|
|
66
67
|
}));
|
|
67
68
|
// add an intersection observer to fire a builder.variantDisplayed event when the container is in the viewport
|
|
68
|
-
var
|
|
69
|
+
var observer_1 = new IntersectionObserver(function (entries) {
|
|
69
70
|
entries.forEach(function (entry) {
|
|
70
71
|
var _a;
|
|
71
72
|
if (entry.isIntersecting) {
|
|
@@ -79,10 +80,11 @@ function PersonalizationContainer(props) {
|
|
|
79
80
|
}
|
|
80
81
|
});
|
|
81
82
|
});
|
|
82
|
-
|
|
83
|
+
observer_1.observe(rootRef.current);
|
|
84
|
+
unsubs.push(function () { return observer_1.disconnect(); });
|
|
83
85
|
}
|
|
84
86
|
return function () {
|
|
85
|
-
|
|
87
|
+
unsubs.forEach(function (fn) { return fn(); });
|
|
86
88
|
};
|
|
87
89
|
}, []);
|
|
88
90
|
if (sdk_1.Builder.isServer) {
|
|
@@ -96,27 +98,28 @@ function PersonalizationContainer(props) {
|
|
|
96
98
|
react_1.default.createElement(builder_blocks_component_1.BuilderBlocks, { blocks: variant.blocks, parentElementId: (_b = props.builderBlock) === null || _b === void 0 ? void 0 : _b.id, dataPath: "component.options.variants.".concat(index, ".blocks"), child: true })));
|
|
97
99
|
}),
|
|
98
100
|
react_1.default.createElement("script", { id: "variants-script-".concat((_e = props.builderBlock) === null || _e === void 0 ? void 0 : _e.id), dangerouslySetInnerHTML: {
|
|
99
|
-
__html: getPersonalizationScript(props.variants, (_f = props.builderBlock) === null || _f === void 0 ? void 0 : _f.id),
|
|
101
|
+
__html: getPersonalizationScript(props.variants, ((_f = props.builderBlock) === null || _f === void 0 ? void 0 : _f.id) || 'none', (_g = props.builderState.state) === null || _g === void 0 ? void 0 : _g.locale),
|
|
100
102
|
} }),
|
|
101
|
-
react_1.default.createElement(builder_blocks_component_1.BuilderBlocks, { blocks: (
|
|
103
|
+
react_1.default.createElement(builder_blocks_component_1.BuilderBlocks, { blocks: (_h = props.builderBlock) === null || _h === void 0 ? void 0 : _h.children, parentElementId: (_j = props.builderBlock) === null || _j === void 0 ? void 0 : _j.id, dataPath: "this.children", child: true })),
|
|
102
104
|
react_1.default.createElement("script", { dangerouslySetInnerHTML: {
|
|
103
|
-
__html: "\n window.__hydrated = window.__hydrated || {};\n window.__hydrated['".concat((
|
|
105
|
+
__html: "\n window.__hydrated = window.__hydrated || {};\n window.__hydrated['".concat((_k = props.builderBlock) === null || _k === void 0 ? void 0 : _k.id, "'] = true;\n ").replace(/\s+/g, ' '),
|
|
104
106
|
} })));
|
|
105
107
|
}
|
|
106
108
|
var filteredVariants = (props.variants || []).filter(function (variant) {
|
|
107
|
-
|
|
109
|
+
var _a;
|
|
110
|
+
return (0, filter_with_custom_targeting_1.filterWithCustomTargeting)(__assign(__assign({}, (((_a = props.builderState.state) === null || _a === void 0 ? void 0 : _a.locale) ? { locale: props.builderState.state.locale } : {})), sdk_1.builder.getUserAttributes()), variant.query, variant.startDate, variant.endDate);
|
|
108
111
|
});
|
|
109
112
|
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
110
|
-
react_1.default.createElement("div", __assign({ ref: rootRef }, props.attributes, { style: __assign({ opacity: isClient ? 1 : 0, transition: 'opacity 0.2s ease-in-out' }, (
|
|
113
|
+
react_1.default.createElement("div", __assign({ ref: rootRef }, props.attributes, { style: __assign({ opacity: isClient ? 1 : 0, transition: 'opacity 0.2s ease-in-out' }, (_l = props.attributes) === null || _l === void 0 ? void 0 : _l.style), className: "builder-personalization-container ".concat(props.attributes.className, " ").concat(isClient ? '' : 'builder-personalization-container-loading') }), sdk_1.Builder.isEditing &&
|
|
111
114
|
typeof props.previewingIndex === 'number' &&
|
|
112
|
-
props.previewingIndex < (((
|
|
115
|
+
props.previewingIndex < (((_m = props.variants) === null || _m === void 0 ? void 0 : _m.length) || 0) ? (react_1.default.createElement(builder_blocks_component_1.BuilderBlocks, { blocks: (_p = (_o = props.variants) === null || _o === void 0 ? void 0 : _o[props.previewingIndex]) === null || _p === void 0 ? void 0 : _p.blocks, parentElementId: (_q = props.builderBlock) === null || _q === void 0 ? void 0 : _q.id, dataPath: "component.options.variants.".concat(props.previewingIndex, ".blocks"), child: true })) : // If editing the default or we're on the server and there are no matching variants show the default
|
|
113
116
|
(sdk_1.Builder.isEditing && typeof props.previewingIndex !== 'number') ||
|
|
114
117
|
!isClient ||
|
|
115
|
-
!filteredVariants.length ? (react_1.default.createElement(builder_blocks_component_1.BuilderBlocks, { blocks: (
|
|
118
|
+
!filteredVariants.length ? (react_1.default.createElement(builder_blocks_component_1.BuilderBlocks, { blocks: (_r = props.builderBlock) === null || _r === void 0 ? void 0 : _r.children, parentElementId: (_s = props.builderBlock) === null || _s === void 0 ? void 0 : _s.id, dataPath: "this.children", child: true })) : (
|
|
116
119
|
// Show the variant matching the current user attributes
|
|
117
|
-
react_1.default.createElement(builder_blocks_component_1.BuilderBlocks, { blocks: (
|
|
120
|
+
react_1.default.createElement(builder_blocks_component_1.BuilderBlocks, { blocks: (_t = filteredVariants[0]) === null || _t === void 0 ? void 0 : _t.blocks, parentElementId: (_u = props.builderBlock) === null || _u === void 0 ? void 0 : _u.id, dataPath: "component.options.variants.".concat((_v = props.variants) === null || _v === void 0 ? void 0 : _v.indexOf(filteredVariants[0]), ".blocks"), child: true }))),
|
|
118
121
|
react_1.default.createElement("script", { dangerouslySetInnerHTML: {
|
|
119
|
-
__html: "\n window.__hydrated = window.__hydrated || {};\n window.__hydrated['".concat((
|
|
122
|
+
__html: "\n window.__hydrated = window.__hydrated || {};\n window.__hydrated['".concat((_w = props.builderBlock) === null || _w === void 0 ? void 0 : _w.id, "'] = true;\n ").replace(/\s+/g, ' '),
|
|
120
123
|
} })));
|
|
121
124
|
}
|
|
122
125
|
exports.PersonalizationContainer = PersonalizationContainer;
|
|
@@ -165,7 +168,7 @@ sdk_1.Builder.registerComponent(PersonalizationContainer, {
|
|
|
165
168
|
},
|
|
166
169
|
],
|
|
167
170
|
});
|
|
168
|
-
function getPersonalizationScript(variants, blockId) {
|
|
169
|
-
return "\n (function() {\n function getCookie(name) {\n var nameEQ = name + \"=\";\n var ca = document.cookie.split(';');\n for(var i=0;i < ca.length;i++) {\n var c = ca[i];\n while (c.charAt(0)==' ') c = c.substring(1,c.length);\n if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);\n }\n return null;\n }\n function removeVariants() {\n variants.forEach(function (template, index) {\n document.querySelector('template[data-variant-id=\"' + \"".concat(blockId, "\" + index + '\"]').remove();\n });\n document.getElementById('variants-script-").concat(blockId, "').remove();\n }\n\n var attributes = JSON.parse(getCookie(\"").concat(sdk_1.Builder.attributesCookieName, "\") || \"{}\");\n var variants = ").concat(JSON.stringify(variants === null || variants === void 0 ? void 0 : variants.map(function (v) { return ({ query: v.query, startDate: v.startDate, endDate: v.endDate }); })), ";\n var winningVariantIndex = variants.findIndex(function(variant) {\n return filterWithCustomTargeting(\n attributes,\n variant.query,\n variant.startDate,\n variant.endDate\n );\n });\n var isDebug = location.href.includes('builder.debug=true');\n if (isDebug) {\n console.debug('PersonalizationContainer', {\n attributes: attributes,\n variants: variants,\n winningVariantIndex: winningVariantIndex,\n });\n }\n if (winningVariantIndex !== -1) {\n var winningVariant = document.querySelector('template[data-variant-id=\"' + \"").concat(blockId, "\" + winningVariantIndex + '\"]');\n if (winningVariant) {\n var parentNode = winningVariant.parentNode;\n var newParent = parentNode.cloneNode(false);\n newParent.appendChild(winningVariant.content.firstChild);\n parentNode.parentNode.replaceChild(newParent, parentNode);\n if (isDebug) {\n console.debug('PersonalizationContainer', 'Winning variant Replaced:', winningVariant);\n }\n }\n } else if (variants.length > 0) {\n removeVariants();\n }\n ").concat(filter_with_custom_targeting_1.filterWithCustomTargetingScript, "\n })();\n ").replace(/\s+/g, ' ');
|
|
171
|
+
function getPersonalizationScript(variants, blockId, locale) {
|
|
172
|
+
return "\n (function() {\n function getCookie(name) {\n var nameEQ = name + \"=\";\n var ca = document.cookie.split(';');\n for(var i=0;i < ca.length;i++) {\n var c = ca[i];\n while (c.charAt(0)==' ') c = c.substring(1,c.length);\n if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);\n }\n return null;\n }\n function removeVariants() {\n variants.forEach(function (template, index) {\n document.querySelector('template[data-variant-id=\"' + \"".concat(blockId, "\" + index + '\"]').remove();\n });\n document.getElementById('variants-script-").concat(blockId, "').remove();\n }\n\n var attributes = JSON.parse(getCookie(\"").concat(sdk_1.Builder.attributesCookieName, "\") || \"{}\");\n ").concat(locale ? "attributes.locale = \"".concat(locale, "\";") : '', "\n var variants = ").concat(JSON.stringify(variants === null || variants === void 0 ? void 0 : variants.map(function (v) { return ({ query: v.query, startDate: v.startDate, endDate: v.endDate }); })), ";\n var winningVariantIndex = variants.findIndex(function(variant) {\n return filterWithCustomTargeting(\n attributes,\n variant.query,\n variant.startDate,\n variant.endDate\n );\n });\n var isDebug = location.href.includes('builder.debug=true');\n if (isDebug) {\n console.debug('PersonalizationContainer', {\n attributes: attributes,\n variants: variants,\n winningVariantIndex: winningVariantIndex,\n });\n }\n if (winningVariantIndex !== -1) {\n var winningVariant = document.querySelector('template[data-variant-id=\"' + \"").concat(blockId, "\" + winningVariantIndex + '\"]');\n if (winningVariant) {\n var parentNode = winningVariant.parentNode;\n var newParent = parentNode.cloneNode(false);\n newParent.appendChild(winningVariant.content.firstChild);\n parentNode.parentNode.replaceChild(newParent, parentNode);\n if (isDebug) {\n console.debug('PersonalizationContainer', 'Winning variant Replaced:', winningVariant);\n }\n }\n } else if (variants.length > 0) {\n removeVariants();\n }\n ").concat(filter_with_custom_targeting_1.filterWithCustomTargetingScript, "\n })();\n ").replace(/\s+/g, ' ');
|
|
170
173
|
}
|
|
171
174
|
//# sourceMappingURL=PersonalizationContainer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PersonalizationContainer.js","sourceRoot":"","sources":["../../../../src/blocks/PersonalizationContainer.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAAkD;AAClD,uCAAmE;AACnE,+BAA4C;AAC5C,mFAAuE;AACvE,0FAImD;AACnD,wDAA6D;
|
|
1
|
+
{"version":3,"file":"PersonalizationContainer.js","sourceRoot":"","sources":["../../../../src/blocks/PersonalizationContainer.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const SDK_VERSION = "6.0.
|
|
1
|
+
export declare const SDK_VERSION = "6.0.3";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@builder.io/react",
|
|
3
|
-
"version": "6.0.
|
|
3
|
+
"version": "6.0.3",
|
|
4
4
|
"description": "",
|
|
5
5
|
"keywords": [],
|
|
6
6
|
"main": "dist/builder-react.cjs.js",
|
|
@@ -97,7 +97,7 @@
|
|
|
97
97
|
"react-dom": ">=16.8.0 || ^19.0.0-rc"
|
|
98
98
|
},
|
|
99
99
|
"dependencies": {
|
|
100
|
-
"@builder.io/sdk": "4.0.
|
|
100
|
+
"@builder.io/sdk": "4.0.3",
|
|
101
101
|
"@emotion/core": "^10.0.17",
|
|
102
102
|
"hash-sum": "^2.0.0",
|
|
103
103
|
"isolated-vm": "^5.0.0",
|
|
@@ -13,6 +13,7 @@ export type PersonalizationContainerProps = {
|
|
|
13
13
|
children: React.ReactNode;
|
|
14
14
|
previewingIndex: number | null;
|
|
15
15
|
builderBlock?: BuilderElement;
|
|
16
|
+
builderState: any;
|
|
16
17
|
variants?: [
|
|
17
18
|
{
|
|
18
19
|
query: Query[];
|
|
@@ -38,6 +39,7 @@ export function PersonalizationContainer(props: PersonalizationContainerProps) {
|
|
|
38
39
|
const subscriber = builder.userAttributesChanged.subscribe(() => {
|
|
39
40
|
setUpdate(update + 1);
|
|
40
41
|
});
|
|
42
|
+
let unsubs = [() => subscriber.unsubscribe()];
|
|
41
43
|
|
|
42
44
|
if (!(Builder.isEditing || Builder.isPreviewing)) {
|
|
43
45
|
const variant = filteredVariants[0];
|
|
@@ -70,10 +72,11 @@ export function PersonalizationContainer(props: PersonalizationContainerProps) {
|
|
|
70
72
|
});
|
|
71
73
|
|
|
72
74
|
observer.observe(rootRef.current!);
|
|
75
|
+
unsubs.push(() => observer.disconnect());
|
|
73
76
|
}
|
|
74
77
|
|
|
75
78
|
return () => {
|
|
76
|
-
|
|
79
|
+
unsubs.forEach(fn => fn());
|
|
77
80
|
};
|
|
78
81
|
}, []);
|
|
79
82
|
|
|
@@ -103,7 +106,11 @@ export function PersonalizationContainer(props: PersonalizationContainerProps) {
|
|
|
103
106
|
<script
|
|
104
107
|
id={`variants-script-${props.builderBlock?.id}`}
|
|
105
108
|
dangerouslySetInnerHTML={{
|
|
106
|
-
__html: getPersonalizationScript(
|
|
109
|
+
__html: getPersonalizationScript(
|
|
110
|
+
props.variants,
|
|
111
|
+
props.builderBlock?.id || 'none',
|
|
112
|
+
props.builderState.state?.locale
|
|
113
|
+
),
|
|
107
114
|
}}
|
|
108
115
|
/>
|
|
109
116
|
<BuilderBlocks
|
|
@@ -127,7 +134,10 @@ export function PersonalizationContainer(props: PersonalizationContainerProps) {
|
|
|
127
134
|
|
|
128
135
|
const filteredVariants = (props.variants || []).filter(variant => {
|
|
129
136
|
return filterWithCustomTargeting(
|
|
130
|
-
|
|
137
|
+
{
|
|
138
|
+
...(props.builderState.state?.locale ? { locale: props.builderState.state.locale } : {}),
|
|
139
|
+
...builder.getUserAttributes(),
|
|
140
|
+
},
|
|
131
141
|
variant.query,
|
|
132
142
|
variant.startDate,
|
|
133
143
|
variant.endDate
|
|
@@ -241,7 +251,8 @@ Builder.registerComponent(PersonalizationContainer, {
|
|
|
241
251
|
|
|
242
252
|
function getPersonalizationScript(
|
|
243
253
|
variants: PersonalizationContainerProps['variants'],
|
|
244
|
-
blockId
|
|
254
|
+
blockId: string,
|
|
255
|
+
locale?: string
|
|
245
256
|
) {
|
|
246
257
|
return `
|
|
247
258
|
(function() {
|
|
@@ -263,6 +274,7 @@ function getPersonalizationScript(
|
|
|
263
274
|
}
|
|
264
275
|
|
|
265
276
|
var attributes = JSON.parse(getCookie("${Builder.attributesCookieName}") || "{}");
|
|
277
|
+
${locale ? `attributes.locale = "${locale}";` : ''}
|
|
266
278
|
var variants = ${JSON.stringify(variants?.map(v => ({ query: v.query, startDate: v.startDate, endDate: v.endDate })))};
|
|
267
279
|
var winningVariantIndex = variants.findIndex(function(variant) {
|
|
268
280
|
return filterWithCustomTargeting(
|