@builder.io/react 5.0.2-9 → 5.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/.yarnrc.yml +1 -0
- package/CHANGELOG.md +14 -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 +3 -3
- package/dist/lib/src/blocks/PersonalizationContainer.js +32 -23
- package/dist/lib/src/blocks/PersonalizationContainer.js.map +1 -1
- package/dist/lib/src/functions/filter-with-custom-targeting.js +3 -1
- package/dist/lib/src/functions/filter-with-custom-targeting.js.map +1 -1
- package/dist/types/src/functions/filter-with-custom-targeting.d.ts +1 -0
- package/package.json +6 -7
- package/scripts/fix-core-version.sh +0 -0
- package/src/blocks/PersonalizationContainer.tsx +121 -82
- package/src/functions/filter-with-custom-targeting.ts +3 -0
- package/.npmrc +0 -1
package/dist/lib/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@builder.io/react",
|
|
3
|
-
"version": "5.0.
|
|
3
|
+
"version": "5.0.3",
|
|
4
4
|
"description": "",
|
|
5
5
|
"keywords": [],
|
|
6
6
|
"main": "dist/builder-react.cjs.js",
|
|
@@ -58,8 +58,8 @@
|
|
|
58
58
|
"cross-env": "^5.0.1",
|
|
59
59
|
"jest": "^28.1.3",
|
|
60
60
|
"jest-environment-jsdom": "^28.1.3",
|
|
61
|
-
"nx": "
|
|
62
|
-
"nx-cloud": "
|
|
61
|
+
"nx": "^19.6.5",
|
|
62
|
+
"nx-cloud": "^19.0.0",
|
|
63
63
|
"prettier": "^3.2.5",
|
|
64
64
|
"prompt": "^1.0.0",
|
|
65
65
|
"react": ">=16.8.0",
|
|
@@ -20,16 +20,14 @@ var sdk_1 = require("@builder.io/sdk");
|
|
|
20
20
|
var react_2 = require("react");
|
|
21
21
|
var builder_blocks_component_1 = require("../components/builder-blocks.component");
|
|
22
22
|
var filter_with_custom_targeting_1 = require("../functions/filter-with-custom-targeting");
|
|
23
|
-
var attributeCookieName = 'builder.attributes';
|
|
24
23
|
function PersonalizationContainer(props) {
|
|
25
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t;
|
|
24
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v;
|
|
26
25
|
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]));
|
|
27
|
-
var
|
|
28
|
-
var
|
|
26
|
+
var _w = (0, react_2.useState)(isBeingHydrated), isClient = _w[0], setIsClient = _w[1];
|
|
27
|
+
var _x = (0, react_2.useState)(0), update = _x[0], setUpdate = _x[1];
|
|
29
28
|
(0, react_2.useEffect)(function () {
|
|
30
29
|
setIsClient(true);
|
|
31
30
|
var subscriber = sdk_1.builder.userAttributesChanged.subscribe(function () {
|
|
32
|
-
sdk_1.builder.setCookie(attributeCookieName, JSON.stringify(sdk_1.builder.getUserAttributes()));
|
|
33
31
|
setUpdate(update + 1);
|
|
34
32
|
});
|
|
35
33
|
return function () {
|
|
@@ -37,36 +35,44 @@ function PersonalizationContainer(props) {
|
|
|
37
35
|
};
|
|
38
36
|
}, []);
|
|
39
37
|
if (sdk_1.Builder.isServer) {
|
|
40
|
-
react_1.default.createElement(react_1.default.Fragment, null,
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
38
|
+
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
39
|
+
react_1.default.createElement("div", __assign({}, props.attributes, {
|
|
40
|
+
// same as the client side styles for hydration matching
|
|
41
|
+
style: __assign({ opacity: 1, transition: 'opacity 0.2s ease-in-out' }, (_c = props.attributes) === null || _c === void 0 ? void 0 : _c.style), className: "builder-personalization-container ".concat(props.attributes.className) }), (_d = props.variants) === null || _d === void 0 ? void 0 :
|
|
42
|
+
_d.map(function (variant, index) {
|
|
43
|
+
var _a, _b;
|
|
44
|
+
return (react_1.default.createElement("template", { key: index, "data-variant-id": ((_a = props.builderBlock) === null || _a === void 0 ? void 0 : _a.id) + index },
|
|
45
|
+
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 })));
|
|
46
|
+
}),
|
|
47
|
+
react_1.default.createElement("script", { id: "variants-script-".concat((_e = props.builderBlock) === null || _e === void 0 ? void 0 : _e.id), dangerouslySetInnerHTML: {
|
|
48
|
+
__html: getPersonalizationScript(props.variants, (_f = props.builderBlock) === null || _f === void 0 ? void 0 : _f.id),
|
|
49
|
+
} }),
|
|
50
|
+
react_1.default.createElement(builder_blocks_component_1.BuilderBlocks, { blocks: (_g = props.builderBlock) === null || _g === void 0 ? void 0 : _g.children, parentElementId: (_h = props.builderBlock) === null || _h === void 0 ? void 0 : _h.id, dataPath: "this.children", child: true })),
|
|
51
|
+
react_1.default.createElement("script", { dangerouslySetInnerHTML: {
|
|
52
|
+
__html: "\n window.__hydrated = window.__hydrated || {};\n window.__hydrated['".concat((_j = props.builderBlock) === null || _j === void 0 ? void 0 : _j.id, "'] = true;\n ").replace(/\s+/g, ' '),
|
|
53
|
+
} })));
|
|
49
54
|
}
|
|
50
55
|
var filteredVariants = (props.variants || []).filter(function (variant) {
|
|
51
56
|
return (0, filter_with_custom_targeting_1.filterWithCustomTargeting)(sdk_1.builder.getUserAttributes(), variant.query, variant.startDate, variant.endDate);
|
|
52
57
|
});
|
|
53
|
-
return (react_1.default.createElement(
|
|
54
|
-
sdk_1.Builder.isEditing &&
|
|
58
|
+
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
59
|
+
react_1.default.createElement("div", __assign({}, props.attributes, { style: __assign({ opacity: isClient ? 1 : 0, transition: 'opacity 0.2s ease-in-out' }, (_k = props.attributes) === null || _k === void 0 ? void 0 : _k.style), className: "builder-personalization-container ".concat(props.attributes.className, " ").concat(isClient ? '' : 'builder-personalization-container-loading') }), sdk_1.Builder.isEditing &&
|
|
55
60
|
typeof props.previewingIndex === 'number' &&
|
|
56
|
-
props.previewingIndex < (((
|
|
61
|
+
props.previewingIndex < (((_l = props.variants) === null || _l === void 0 ? void 0 : _l.length) || 0) ? (react_1.default.createElement(builder_blocks_component_1.BuilderBlocks, { blocks: (_o = (_m = props.variants) === null || _m === void 0 ? void 0 : _m[props.previewingIndex]) === null || _o === void 0 ? void 0 : _o.blocks, parentElementId: (_p = props.builderBlock) === null || _p === void 0 ? void 0 : _p.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
|
|
57
62
|
(sdk_1.Builder.isEditing && typeof props.previewingIndex !== 'number') ||
|
|
58
63
|
!isClient ||
|
|
59
|
-
!filteredVariants.length ? (react_1.default.createElement(builder_blocks_component_1.BuilderBlocks, { blocks: (
|
|
64
|
+
!filteredVariants.length ? (react_1.default.createElement(builder_blocks_component_1.BuilderBlocks, { blocks: (_q = props.builderBlock) === null || _q === void 0 ? void 0 : _q.children, parentElementId: (_r = props.builderBlock) === null || _r === void 0 ? void 0 : _r.id, dataPath: "this.children", child: true })) : (
|
|
60
65
|
// Show the variant matching the current user attributes
|
|
61
|
-
react_1.default.createElement(builder_blocks_component_1.BuilderBlocks, { blocks: (
|
|
66
|
+
react_1.default.createElement(builder_blocks_component_1.BuilderBlocks, { blocks: (_s = filteredVariants[0]) === null || _s === void 0 ? void 0 : _s.blocks, parentElementId: (_t = props.builderBlock) === null || _t === void 0 ? void 0 : _t.id, dataPath: "component.options.variants.".concat((_u = props.variants) === null || _u === void 0 ? void 0 : _u.indexOf(filteredVariants[0]), ".blocks"), child: true }))),
|
|
62
67
|
react_1.default.createElement("script", { dangerouslySetInnerHTML: {
|
|
63
|
-
__html: "\n window.__hydrated = window.__hydrated || {};\n window.__hydrated['".concat((
|
|
68
|
+
__html: "\n window.__hydrated = window.__hydrated || {};\n window.__hydrated['".concat((_v = props.builderBlock) === null || _v === void 0 ? void 0 : _v.id, "'] = true;\n ").replace(/\s+/g, ' '),
|
|
64
69
|
} })));
|
|
65
70
|
}
|
|
66
71
|
exports.PersonalizationContainer = PersonalizationContainer;
|
|
67
72
|
sdk_1.Builder.registerComponent(PersonalizationContainer, {
|
|
68
73
|
name: 'PersonalizationContainer',
|
|
69
74
|
noWrap: true,
|
|
75
|
+
friendlyName: 'Dynamic Container',
|
|
70
76
|
image: 'https://cdn.builder.io/api/v1/image/assets%2FYJIGb4i01jvw0SRdL5Bt%2F37229ed30d8c41dfb10b8cca1992053a',
|
|
71
77
|
canHaveChildren: true,
|
|
72
78
|
inputs: [
|
|
@@ -79,20 +85,24 @@ sdk_1.Builder.registerComponent(PersonalizationContainer, {
|
|
|
79
85
|
{
|
|
80
86
|
name: 'name',
|
|
81
87
|
type: 'text',
|
|
88
|
+
localized: false,
|
|
82
89
|
},
|
|
83
90
|
{
|
|
84
91
|
name: 'query',
|
|
85
92
|
friendlyName: 'Targeting rules',
|
|
86
93
|
type: 'BuilderQuery',
|
|
87
94
|
defaultValue: [],
|
|
95
|
+
localized: false,
|
|
88
96
|
},
|
|
89
97
|
{
|
|
90
98
|
name: 'startDate',
|
|
91
99
|
type: 'date',
|
|
100
|
+
localized: false,
|
|
92
101
|
},
|
|
93
102
|
{
|
|
94
103
|
name: 'endDate',
|
|
95
104
|
type: 'date',
|
|
105
|
+
localized: false,
|
|
96
106
|
},
|
|
97
107
|
{
|
|
98
108
|
name: 'blocks',
|
|
@@ -104,8 +114,7 @@ sdk_1.Builder.registerComponent(PersonalizationContainer, {
|
|
|
104
114
|
},
|
|
105
115
|
],
|
|
106
116
|
});
|
|
107
|
-
function getPersonalizationScript(
|
|
108
|
-
var
|
|
109
|
-
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((_a = props.builderBlock) === null || _a === void 0 ? void 0 : _a.id, "\" + index + '\"]').remove();\n });\n document.getElementById('variants-script-").concat((_b = props.builderBlock) === null || _b === void 0 ? void 0 : _b.id, "').remove();\n }\n\n var attributes = JSON.parse(getCookie(\"").concat(attributeCookieName, "\") || \"{}\");\n var variants = ").concat(JSON.stringify((_c = props.variants) === null || _c === void 0 ? void 0 : _c.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 if (winningVariantIndex !== -1) {\n var winningVariant = document.querySelector('template[data-variant-index=\"' + \"").concat((_d = props.builderBlock) === null || _d === void 0 ? void 0 : _d.id, "\" + 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 }\n } else if (variants.length > 0) {\n removeVariants(); \n }\n function filterWithCustomTargeting(e,t,n,r){var i={query:t,startDate:n,endDate:r},o=e.date&&new Date(e.date)||new Date;return!(i.startDate&&new Date(i.startDate)>o)&&(!(i.endDate&&new Date(i.endDate)<o)&&(!i.query||!i.query.length||i.query.every((function(t){return objectMatchesQuery(e,t)}))))}function isString(e){return\"string\"==typeof e}function isNumber(e){return\"number\"==typeof e}function objectMatchesQuery(e,t){return function(){var n=t.property,r=t.operator,i=t.value;if(t&&\"urlPath\"===t.property&&t.value&&\"string\"==typeof t.value&&\"/\"!==t.value&&t.value.endsWith(\"/\")&&(i=t.value.slice(0,-1)),!n||!r)return!0;if(Array.isArray(i))return\"isNot\"===r?i.every((function(t){return objectMatchesQuery(e,{property:n,operator:r,value:t})})):!!i.find((function(t){return objectMatchesQuery(e,{property:n,operator:r,value:t})}));var o=e[n];if(Array.isArray(o))return o.includes(i);switch(r){case\"is\":return o===i;case\"isNot\":return o!==i;case\"contains\":return(isString(o)||Array.isArray(o))&&o.includes(String(i));case\"startsWith\":return isString(o)&&o.startsWith(String(i));case\"endsWith\":return isString(o)&&o.endsWith(String(i));case\"greaterThan\":return isNumber(o)&&isNumber(i)&&o>i;case\"lessThan\":return isNumber(o)&&isNumber(i)&&o<i;case\"greaterThanOrEqualTo\":return isNumber(o)&&isNumber(i)&&o>=i;case\"lessThanOrEqualTo\":return isNumber(o)&&isNumber(i)&&o<=i}return!1}()}\n })();\n ").replace(/\s+/g, ' ');
|
|
117
|
+
function getPersonalizationScript(variants, blockId) {
|
|
118
|
+
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, ' ');
|
|
110
119
|
}
|
|
111
120
|
//# sourceMappingURL=PersonalizationContainer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PersonalizationContainer.js","sourceRoot":"","sources":["../../../../src/blocks/PersonalizationContainer.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,gDAA0B;AAC1B,uCAAmE;AACnE,+BAA4C;AAC5C,mFAAuE;AACvE,
|
|
1
|
+
{"version":3,"file":"PersonalizationContainer.js","sourceRoot":"","sources":["../../../../src/blocks/PersonalizationContainer.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.filterWithCustomTargeting = void 0;
|
|
3
|
+
exports.filterWithCustomTargeting = exports.filterWithCustomTargetingScript = void 0;
|
|
4
|
+
// minified version of the function need to be added to the script
|
|
5
|
+
exports.filterWithCustomTargetingScript = "function filterWithCustomTargeting(e,t,n,r){var i={query:t,startDate:n,endDate:r},o=e.date&&new Date(e.date)||new Date;return!(i.startDate&&new Date(i.startDate)>o)&&(!(i.endDate&&new Date(i.endDate)<o)&&(!i.query||!i.query.length||i.query.every((function(t){return objectMatchesQuery(e,t)}))))}function isString(e){return\"string\"==typeof e}function isNumber(e){return\"number\"==typeof e}function objectMatchesQuery(e,t){return function(){var n=t.property,r=t.operator,i=t.value;if(t&&\"urlPath\"===t.property&&t.value&&\"string\"==typeof t.value&&\"/\"!==t.value&&t.value.endsWith(\"/\")&&(i=t.value.slice(0,-1)),!n||!r)return!0;if(Array.isArray(i))return\"isNot\"===r?i.every((function(t){return objectMatchesQuery(e,{property:n,operator:r,value:t})})):!!i.find((function(t){return objectMatchesQuery(e,{property:n,operator:r,value:t})}));var o=e[n];if(Array.isArray(o))return o.includes(i);switch(r){case\"is\":return o===i;case\"isNot\":return o!==i;case\"contains\":return(isString(o)||Array.isArray(o))&&o.includes(String(i));case\"startsWith\":return isString(o)&&o.startsWith(String(i));case\"endsWith\":return isString(o)&&o.endsWith(String(i));case\"greaterThan\":return isNumber(o)&&isNumber(i)&&o>i;case\"lessThan\":return isNumber(o)&&isNumber(i)&&o<i;case\"greaterThanOrEqualTo\":return isNumber(o)&&isNumber(i)&&o>=i;case\"lessThanOrEqualTo\":return isNumber(o)&&isNumber(i)&&o<=i}return!1}()}";
|
|
4
6
|
function filterWithCustomTargeting(userAttributes, query, startDate, endDate) {
|
|
5
7
|
var item = {
|
|
6
8
|
query: query,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter-with-custom-targeting.js","sourceRoot":"","sources":["../../../../src/functions/filter-with-custom-targeting.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"filter-with-custom-targeting.js","sourceRoot":"","sources":["../../../../src/functions/filter-with-custom-targeting.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,5 +10,6 @@ export type Query = {
|
|
|
10
10
|
operator: QueryOperator;
|
|
11
11
|
value: QueryValue;
|
|
12
12
|
};
|
|
13
|
+
export declare const filterWithCustomTargetingScript = "function filterWithCustomTargeting(e,t,n,r){var i={query:t,startDate:n,endDate:r},o=e.date&&new Date(e.date)||new Date;return!(i.startDate&&new Date(i.startDate)>o)&&(!(i.endDate&&new Date(i.endDate)<o)&&(!i.query||!i.query.length||i.query.every((function(t){return objectMatchesQuery(e,t)}))))}function isString(e){return\"string\"==typeof e}function isNumber(e){return\"number\"==typeof e}function objectMatchesQuery(e,t){return function(){var n=t.property,r=t.operator,i=t.value;if(t&&\"urlPath\"===t.property&&t.value&&\"string\"==typeof t.value&&\"/\"!==t.value&&t.value.endsWith(\"/\")&&(i=t.value.slice(0,-1)),!n||!r)return!0;if(Array.isArray(i))return\"isNot\"===r?i.every((function(t){return objectMatchesQuery(e,{property:n,operator:r,value:t})})):!!i.find((function(t){return objectMatchesQuery(e,{property:n,operator:r,value:t})}));var o=e[n];if(Array.isArray(o))return o.includes(i);switch(r){case\"is\":return o===i;case\"isNot\":return o!==i;case\"contains\":return(isString(o)||Array.isArray(o))&&o.includes(String(i));case\"startsWith\":return isString(o)&&o.startsWith(String(i));case\"endsWith\":return isString(o)&&o.endsWith(String(i));case\"greaterThan\":return isNumber(o)&&isNumber(i)&&o>i;case\"lessThan\":return isNumber(o)&&isNumber(i)&&o<i;case\"greaterThanOrEqualTo\":return isNumber(o)&&isNumber(i)&&o>=i;case\"lessThanOrEqualTo\":return isNumber(o)&&isNumber(i)&&o<=i}return!1}()}";
|
|
13
14
|
export declare function filterWithCustomTargeting(userAttributes: UserAttributes, query: Query[], startDate?: string, endDate?: string): boolean;
|
|
14
15
|
export {};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@builder.io/react",
|
|
3
|
-
"version": "5.0.
|
|
3
|
+
"version": "5.0.3",
|
|
4
4
|
"description": "",
|
|
5
5
|
"keywords": [],
|
|
6
6
|
"main": "dist/builder-react.cjs.js",
|
|
@@ -58,8 +58,8 @@
|
|
|
58
58
|
"cross-env": "^5.0.1",
|
|
59
59
|
"jest": "^28.1.3",
|
|
60
60
|
"jest-environment-jsdom": "^28.1.3",
|
|
61
|
-
"nx": "
|
|
62
|
-
"nx-cloud": "
|
|
61
|
+
"nx": "^19.6.5",
|
|
62
|
+
"nx-cloud": "^19.0.0",
|
|
63
63
|
"prettier": "^3.2.5",
|
|
64
64
|
"prompt": "^1.0.0",
|
|
65
65
|
"react": ">=16.8.0",
|
|
@@ -98,7 +98,7 @@
|
|
|
98
98
|
"react-dom": ">=16.8.0"
|
|
99
99
|
},
|
|
100
100
|
"dependencies": {
|
|
101
|
-
"@builder.io/sdk": "3.0.2
|
|
101
|
+
"@builder.io/sdk": "3.0.2",
|
|
102
102
|
"@emotion/core": "^10.0.17",
|
|
103
103
|
"hash-sum": "^2.0.0",
|
|
104
104
|
"isolated-vm": "^5.0.0",
|
|
@@ -106,6 +106,5 @@
|
|
|
106
106
|
},
|
|
107
107
|
"installConfig": {
|
|
108
108
|
"hoistingLimits": "workspaces"
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
File without changes
|
|
@@ -2,9 +2,12 @@ import React from 'react';
|
|
|
2
2
|
import { Builder, builder, BuilderElement } from '@builder.io/sdk';
|
|
3
3
|
import { useEffect, useState } from 'react';
|
|
4
4
|
import { BuilderBlocks } from '../components/builder-blocks.component';
|
|
5
|
-
import {
|
|
5
|
+
import {
|
|
6
|
+
filterWithCustomTargeting,
|
|
7
|
+
filterWithCustomTargetingScript,
|
|
8
|
+
Query,
|
|
9
|
+
} from '../functions/filter-with-custom-targeting';
|
|
6
10
|
|
|
7
|
-
const attributeCookieName = 'builder.attributes';
|
|
8
11
|
export type PersonalizationContainerProps = {
|
|
9
12
|
children: React.ReactNode;
|
|
10
13
|
previewingIndex: number | null;
|
|
@@ -30,7 +33,6 @@ export function PersonalizationContainer(props: PersonalizationContainerProps) {
|
|
|
30
33
|
useEffect(() => {
|
|
31
34
|
setIsClient(true);
|
|
32
35
|
const subscriber = builder.userAttributesChanged.subscribe(() => {
|
|
33
|
-
builder.setCookie(attributeCookieName, JSON.stringify(builder.getUserAttributes()));
|
|
34
36
|
setUpdate(update + 1);
|
|
35
37
|
});
|
|
36
38
|
return () => {
|
|
@@ -39,34 +41,51 @@ export function PersonalizationContainer(props: PersonalizationContainerProps) {
|
|
|
39
41
|
}, []);
|
|
40
42
|
|
|
41
43
|
if (Builder.isServer) {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
<
|
|
44
|
+
return (
|
|
45
|
+
<React.Fragment>
|
|
46
|
+
<div
|
|
47
|
+
{...props.attributes}
|
|
48
|
+
// same as the client side styles for hydration matching
|
|
49
|
+
style={{
|
|
50
|
+
opacity: 1,
|
|
51
|
+
transition: 'opacity 0.2s ease-in-out',
|
|
52
|
+
...props.attributes?.style,
|
|
53
|
+
}}
|
|
54
|
+
className={`builder-personalization-container ${props.attributes.className}`}
|
|
55
|
+
>
|
|
56
|
+
{props.variants?.map((variant, index) => (
|
|
57
|
+
<template key={index} data-variant-id={props.builderBlock?.id! + index}>
|
|
58
|
+
<BuilderBlocks
|
|
59
|
+
blocks={variant.blocks}
|
|
60
|
+
parentElementId={props.builderBlock?.id}
|
|
61
|
+
dataPath={`component.options.variants.${index}.blocks`}
|
|
62
|
+
child
|
|
63
|
+
/>
|
|
64
|
+
</template>
|
|
65
|
+
))}
|
|
66
|
+
<script
|
|
67
|
+
id={`variants-script-${props.builderBlock?.id}`}
|
|
68
|
+
dangerouslySetInnerHTML={{
|
|
69
|
+
__html: getPersonalizationScript(props.variants, props.builderBlock?.id),
|
|
70
|
+
}}
|
|
71
|
+
/>
|
|
45
72
|
<BuilderBlocks
|
|
46
|
-
blocks={
|
|
73
|
+
blocks={props.builderBlock?.children}
|
|
47
74
|
parentElementId={props.builderBlock?.id}
|
|
48
|
-
dataPath=
|
|
75
|
+
dataPath="this.children"
|
|
49
76
|
child
|
|
50
77
|
/>
|
|
51
|
-
</
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
data-default-variant-id={props.builderBlock?.id}
|
|
60
|
-
className={`builder-personalization-container ${props.attributes.className}`}
|
|
61
|
-
>
|
|
62
|
-
<BuilderBlocks
|
|
63
|
-
blocks={props.builderBlock?.children}
|
|
64
|
-
parentElementId={props.builderBlock?.id}
|
|
65
|
-
dataPath="this.children"
|
|
66
|
-
child
|
|
78
|
+
</div>
|
|
79
|
+
<script
|
|
80
|
+
dangerouslySetInnerHTML={{
|
|
81
|
+
__html: `
|
|
82
|
+
window.__hydrated = window.__hydrated || {};
|
|
83
|
+
window.__hydrated['${props.builderBlock?.id}'] = true;
|
|
84
|
+
`.replace(/\s+/g, ' '),
|
|
85
|
+
}}
|
|
67
86
|
/>
|
|
68
|
-
</
|
|
69
|
-
|
|
87
|
+
</React.Fragment>
|
|
88
|
+
);
|
|
70
89
|
}
|
|
71
90
|
|
|
72
91
|
const filteredVariants = (props.variants || []).filter(variant => {
|
|
@@ -79,49 +98,50 @@ export function PersonalizationContainer(props: PersonalizationContainerProps) {
|
|
|
79
98
|
});
|
|
80
99
|
|
|
81
100
|
return (
|
|
82
|
-
<
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
<
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
101
|
+
<React.Fragment>
|
|
102
|
+
<div
|
|
103
|
+
{...props.attributes}
|
|
104
|
+
style={{
|
|
105
|
+
opacity: isClient ? 1 : 0,
|
|
106
|
+
transition: 'opacity 0.2s ease-in-out',
|
|
107
|
+
...props.attributes?.style,
|
|
108
|
+
}}
|
|
109
|
+
className={`builder-personalization-container ${
|
|
110
|
+
props.attributes.className
|
|
111
|
+
} ${isClient ? '' : 'builder-personalization-container-loading'}`}
|
|
112
|
+
>
|
|
113
|
+
{/* If editing a specific varient */}
|
|
114
|
+
{Builder.isEditing &&
|
|
115
|
+
typeof props.previewingIndex === 'number' &&
|
|
116
|
+
props.previewingIndex < (props.variants?.length || 0) ? (
|
|
117
|
+
<BuilderBlocks
|
|
118
|
+
blocks={props.variants?.[props.previewingIndex]?.blocks}
|
|
119
|
+
parentElementId={props.builderBlock?.id}
|
|
120
|
+
dataPath={`component.options.variants.${props.previewingIndex}.blocks`}
|
|
121
|
+
child
|
|
122
|
+
/>
|
|
123
|
+
) : // If editing the default or we're on the server and there are no matching variants show the default
|
|
124
|
+
(Builder.isEditing && typeof props.previewingIndex !== 'number') ||
|
|
125
|
+
!isClient ||
|
|
126
|
+
!filteredVariants.length ? (
|
|
127
|
+
<BuilderBlocks
|
|
128
|
+
blocks={props.builderBlock?.children}
|
|
129
|
+
parentElementId={props.builderBlock?.id}
|
|
130
|
+
dataPath="this.children"
|
|
131
|
+
child
|
|
132
|
+
/>
|
|
133
|
+
) : (
|
|
134
|
+
// Show the variant matching the current user attributes
|
|
135
|
+
<BuilderBlocks
|
|
136
|
+
blocks={filteredVariants[0]?.blocks}
|
|
137
|
+
parentElementId={props.builderBlock?.id}
|
|
138
|
+
dataPath={`component.options.variants.${props.variants?.indexOf(
|
|
139
|
+
filteredVariants[0]
|
|
140
|
+
)}.blocks`}
|
|
141
|
+
child
|
|
142
|
+
/>
|
|
143
|
+
)}
|
|
144
|
+
</div>
|
|
125
145
|
<script
|
|
126
146
|
dangerouslySetInnerHTML={{
|
|
127
147
|
__html: `
|
|
@@ -130,13 +150,14 @@ export function PersonalizationContainer(props: PersonalizationContainerProps) {
|
|
|
130
150
|
`.replace(/\s+/g, ' '),
|
|
131
151
|
}}
|
|
132
152
|
/>
|
|
133
|
-
</
|
|
153
|
+
</React.Fragment>
|
|
134
154
|
);
|
|
135
155
|
}
|
|
136
156
|
|
|
137
157
|
Builder.registerComponent(PersonalizationContainer, {
|
|
138
158
|
name: 'PersonalizationContainer',
|
|
139
159
|
noWrap: true,
|
|
160
|
+
friendlyName: 'Dynamic Container',
|
|
140
161
|
image:
|
|
141
162
|
'https://cdn.builder.io/api/v1/image/assets%2FYJIGb4i01jvw0SRdL5Bt%2F37229ed30d8c41dfb10b8cca1992053a',
|
|
142
163
|
canHaveChildren: true,
|
|
@@ -150,20 +171,24 @@ Builder.registerComponent(PersonalizationContainer, {
|
|
|
150
171
|
{
|
|
151
172
|
name: 'name',
|
|
152
173
|
type: 'text',
|
|
174
|
+
localized: false,
|
|
153
175
|
},
|
|
154
176
|
{
|
|
155
177
|
name: 'query',
|
|
156
178
|
friendlyName: 'Targeting rules',
|
|
157
179
|
type: 'BuilderQuery',
|
|
158
180
|
defaultValue: [],
|
|
181
|
+
localized: false,
|
|
159
182
|
},
|
|
160
183
|
{
|
|
161
184
|
name: 'startDate',
|
|
162
185
|
type: 'date',
|
|
186
|
+
localized: false,
|
|
163
187
|
},
|
|
164
188
|
{
|
|
165
189
|
name: 'endDate',
|
|
166
190
|
type: 'date',
|
|
191
|
+
localized: false,
|
|
167
192
|
},
|
|
168
193
|
{
|
|
169
194
|
name: 'blocks',
|
|
@@ -176,7 +201,10 @@ Builder.registerComponent(PersonalizationContainer, {
|
|
|
176
201
|
],
|
|
177
202
|
});
|
|
178
203
|
|
|
179
|
-
function getPersonalizationScript(
|
|
204
|
+
function getPersonalizationScript(
|
|
205
|
+
variants: PersonalizationContainerProps['variants'],
|
|
206
|
+
blockId?: string
|
|
207
|
+
) {
|
|
180
208
|
return `
|
|
181
209
|
(function() {
|
|
182
210
|
function getCookie(name) {
|
|
@@ -189,15 +217,15 @@ function getPersonalizationScript(props: PersonalizationContainerProps) {
|
|
|
189
217
|
}
|
|
190
218
|
return null;
|
|
191
219
|
}
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
220
|
+
function removeVariants() {
|
|
221
|
+
variants.forEach(function (template, index) {
|
|
222
|
+
document.querySelector('template[data-variant-id="' + "${blockId}" + index + '"]').remove();
|
|
223
|
+
});
|
|
224
|
+
document.getElementById('variants-script-${blockId}').remove();
|
|
225
|
+
}
|
|
198
226
|
|
|
199
|
-
var attributes = JSON.parse(getCookie("${
|
|
200
|
-
var variants = ${JSON.stringify(
|
|
227
|
+
var attributes = JSON.parse(getCookie("${Builder.attributesCookieName}") || "{}");
|
|
228
|
+
var variants = ${JSON.stringify(variants?.map(v => ({ query: v.query, startDate: v.startDate, endDate: v.endDate })))};
|
|
201
229
|
var winningVariantIndex = variants.findIndex(function(variant) {
|
|
202
230
|
return filterWithCustomTargeting(
|
|
203
231
|
attributes,
|
|
@@ -206,18 +234,29 @@ function getPersonalizationScript(props: PersonalizationContainerProps) {
|
|
|
206
234
|
variant.endDate
|
|
207
235
|
);
|
|
208
236
|
});
|
|
237
|
+
var isDebug = location.href.includes('builder.debug=true');
|
|
238
|
+
if (isDebug) {
|
|
239
|
+
console.debug('PersonalizationContainer', {
|
|
240
|
+
attributes: attributes,
|
|
241
|
+
variants: variants,
|
|
242
|
+
winningVariantIndex: winningVariantIndex,
|
|
243
|
+
});
|
|
244
|
+
}
|
|
209
245
|
if (winningVariantIndex !== -1) {
|
|
210
|
-
var winningVariant = document.querySelector('template[data-variant-
|
|
246
|
+
var winningVariant = document.querySelector('template[data-variant-id="' + "${blockId}" + winningVariantIndex + '"]');
|
|
211
247
|
if (winningVariant) {
|
|
212
248
|
var parentNode = winningVariant.parentNode;
|
|
213
249
|
var newParent = parentNode.cloneNode(false);
|
|
214
250
|
newParent.appendChild(winningVariant.content.firstChild);
|
|
215
251
|
parentNode.parentNode.replaceChild(newParent, parentNode);
|
|
252
|
+
if (isDebug) {
|
|
253
|
+
console.debug('PersonalizationContainer', 'Winning variant Replaced:', winningVariant);
|
|
254
|
+
}
|
|
216
255
|
}
|
|
217
256
|
} else if (variants.length > 0) {
|
|
218
|
-
removeVariants();
|
|
257
|
+
removeVariants();
|
|
219
258
|
}
|
|
220
|
-
|
|
259
|
+
${filterWithCustomTargetingScript}
|
|
221
260
|
})();
|
|
222
261
|
`.replace(/\s+/g, ' ');
|
|
223
262
|
}
|
|
@@ -24,6 +24,9 @@ export type Query = {
|
|
|
24
24
|
value: QueryValue;
|
|
25
25
|
};
|
|
26
26
|
|
|
27
|
+
// minified version of the function need to be added to the script
|
|
28
|
+
export const filterWithCustomTargetingScript = `function filterWithCustomTargeting(e,t,n,r){var i={query:t,startDate:n,endDate:r},o=e.date&&new Date(e.date)||new Date;return!(i.startDate&&new Date(i.startDate)>o)&&(!(i.endDate&&new Date(i.endDate)<o)&&(!i.query||!i.query.length||i.query.every((function(t){return objectMatchesQuery(e,t)}))))}function isString(e){return"string"==typeof e}function isNumber(e){return"number"==typeof e}function objectMatchesQuery(e,t){return function(){var n=t.property,r=t.operator,i=t.value;if(t&&"urlPath"===t.property&&t.value&&"string"==typeof t.value&&"/"!==t.value&&t.value.endsWith("/")&&(i=t.value.slice(0,-1)),!n||!r)return!0;if(Array.isArray(i))return"isNot"===r?i.every((function(t){return objectMatchesQuery(e,{property:n,operator:r,value:t})})):!!i.find((function(t){return objectMatchesQuery(e,{property:n,operator:r,value:t})}));var o=e[n];if(Array.isArray(o))return o.includes(i);switch(r){case"is":return o===i;case"isNot":return o!==i;case"contains":return(isString(o)||Array.isArray(o))&&o.includes(String(i));case"startsWith":return isString(o)&&o.startsWith(String(i));case"endsWith":return isString(o)&&o.endsWith(String(i));case"greaterThan":return isNumber(o)&&isNumber(i)&&o>i;case"lessThan":return isNumber(o)&&isNumber(i)&&o<i;case"greaterThanOrEqualTo":return isNumber(o)&&isNumber(i)&&o>=i;case"lessThanOrEqualTo":return isNumber(o)&&isNumber(i)&&o<=i}return!1}()}`;
|
|
29
|
+
|
|
27
30
|
export function filterWithCustomTargeting(
|
|
28
31
|
userAttributes: UserAttributes,
|
|
29
32
|
query: Query[],
|
package/.npmrc
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
git-tag-version=false
|