@builder.io/sdk-react-native 3.0.4 → 3.0.6

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 (228) hide show
  1. package/lib/browser/commonjs/blocks/columns/columns.js +4 -4
  2. package/lib/browser/commonjs/blocks/columns/columns.js.map +1 -1
  3. package/lib/browser/commonjs/blocks/personalization-container/component-info.js +43 -0
  4. package/lib/browser/commonjs/blocks/personalization-container/component-info.js.map +1 -0
  5. package/lib/browser/commonjs/blocks/personalization-container/helpers/inlined-fns.js +94 -0
  6. package/lib/browser/commonjs/blocks/personalization-container/helpers/inlined-fns.js.map +1 -0
  7. package/lib/browser/commonjs/blocks/personalization-container/helpers.js +76 -0
  8. package/lib/browser/commonjs/blocks/personalization-container/helpers.js.map +1 -0
  9. package/lib/browser/commonjs/blocks/personalization-container/index.js +14 -0
  10. package/lib/browser/commonjs/blocks/personalization-container/index.js.map +1 -0
  11. package/lib/browser/commonjs/blocks/personalization-container/personalization-container.js +130 -0
  12. package/lib/browser/commonjs/blocks/personalization-container/personalization-container.js.map +1 -0
  13. package/lib/browser/commonjs/blocks/personalization-container/personalization-container.types.js +6 -0
  14. package/lib/browser/commonjs/blocks/personalization-container/personalization-container.types.js.map +1 -0
  15. package/lib/browser/commonjs/components/blocks/blocks-wrapper.js +2 -1
  16. package/lib/browser/commonjs/components/blocks/blocks-wrapper.js.map +1 -1
  17. package/lib/browser/commonjs/constants/builder-registered-components.js +21 -16
  18. package/lib/browser/commonjs/constants/builder-registered-components.js.map +1 -1
  19. package/lib/browser/commonjs/constants/sdk-version.js +1 -1
  20. package/lib/browser/commonjs/helpers/canTrack.js +6 -1
  21. package/lib/browser/commonjs/helpers/canTrack.js.map +1 -1
  22. package/lib/browser/commonjs/helpers/user-attributes.js +56 -0
  23. package/lib/browser/commonjs/helpers/user-attributes.js.map +1 -0
  24. package/lib/browser/commonjs/scripts/init-editing.js +2 -1
  25. package/lib/browser/commonjs/scripts/init-editing.js.map +1 -1
  26. package/lib/browser/module/blocks/columns/columns.js +4 -4
  27. package/lib/browser/module/blocks/columns/columns.js.map +1 -1
  28. package/lib/browser/module/blocks/personalization-container/component-info.js +37 -0
  29. package/lib/browser/module/blocks/personalization-container/component-info.js.map +1 -0
  30. package/lib/browser/module/blocks/personalization-container/helpers/inlined-fns.js +87 -0
  31. package/lib/browser/module/blocks/personalization-container/helpers/inlined-fns.js.map +1 -0
  32. package/lib/browser/module/blocks/personalization-container/helpers.js +62 -0
  33. package/lib/browser/module/blocks/personalization-container/helpers.js.map +1 -0
  34. package/lib/browser/module/blocks/personalization-container/index.js +2 -0
  35. package/lib/browser/module/blocks/personalization-container/index.js.map +1 -0
  36. package/lib/browser/module/blocks/personalization-container/personalization-container.js +121 -0
  37. package/lib/browser/module/blocks/personalization-container/personalization-container.js.map +1 -0
  38. package/lib/browser/module/blocks/personalization-container/personalization-container.types.js +2 -0
  39. package/lib/browser/module/blocks/personalization-container/personalization-container.types.js.map +1 -0
  40. package/lib/browser/module/components/blocks/blocks-wrapper.js +2 -1
  41. package/lib/browser/module/components/blocks/blocks-wrapper.js.map +1 -1
  42. package/lib/browser/module/constants/builder-registered-components.js +6 -1
  43. package/lib/browser/module/constants/builder-registered-components.js.map +1 -1
  44. package/lib/browser/module/constants/sdk-version.js +1 -1
  45. package/lib/browser/module/helpers/canTrack.js +6 -1
  46. package/lib/browser/module/helpers/canTrack.js.map +1 -1
  47. package/lib/browser/module/helpers/user-attributes.js +47 -0
  48. package/lib/browser/module/helpers/user-attributes.js.map +1 -0
  49. package/lib/browser/module/scripts/init-editing.js +2 -1
  50. package/lib/browser/module/scripts/init-editing.js.map +1 -1
  51. package/lib/browser/typescript/blocks/personalization-container/component-info.d.ts +3 -0
  52. package/lib/browser/typescript/blocks/personalization-container/component-info.d.ts.map +1 -0
  53. package/lib/browser/typescript/blocks/personalization-container/helpers/inlined-fns.d.ts +9 -0
  54. package/lib/browser/typescript/blocks/personalization-container/helpers/inlined-fns.d.ts.map +1 -0
  55. package/lib/browser/typescript/blocks/personalization-container/helpers.d.ts +28 -0
  56. package/lib/browser/typescript/blocks/personalization-container/helpers.d.ts.map +1 -0
  57. package/lib/browser/typescript/blocks/personalization-container/index.d.ts +2 -0
  58. package/lib/browser/typescript/blocks/personalization-container/index.d.ts.map +1 -0
  59. package/lib/browser/typescript/blocks/personalization-container/personalization-container.d.ts +5 -0
  60. package/lib/browser/typescript/blocks/personalization-container/personalization-container.d.ts.map +1 -0
  61. package/lib/browser/typescript/blocks/personalization-container/personalization-container.types.d.ts +15 -0
  62. package/lib/browser/typescript/blocks/personalization-container/personalization-container.types.d.ts.map +1 -0
  63. package/lib/browser/typescript/components/blocks/blocks-wrapper.d.ts.map +1 -1
  64. package/lib/browser/typescript/constants/builder-registered-components.d.ts.map +1 -1
  65. package/lib/browser/typescript/constants/sdk-version.d.ts +1 -1
  66. package/lib/browser/typescript/helpers/canTrack.d.ts.map +1 -1
  67. package/lib/browser/typescript/helpers/user-attributes.d.ts +18 -0
  68. package/lib/browser/typescript/helpers/user-attributes.d.ts.map +1 -0
  69. package/lib/browser/typescript/scripts/init-editing.d.ts.map +1 -1
  70. package/lib/browser/typescript/types/input.d.ts +1 -0
  71. package/lib/browser/typescript/types/input.d.ts.map +1 -1
  72. package/lib/edge/commonjs/blocks/columns/columns.js +4 -4
  73. package/lib/edge/commonjs/blocks/columns/columns.js.map +1 -1
  74. package/lib/edge/commonjs/blocks/personalization-container/component-info.js +43 -0
  75. package/lib/edge/commonjs/blocks/personalization-container/component-info.js.map +1 -0
  76. package/lib/edge/commonjs/blocks/personalization-container/helpers/inlined-fns.js +94 -0
  77. package/lib/edge/commonjs/blocks/personalization-container/helpers/inlined-fns.js.map +1 -0
  78. package/lib/edge/commonjs/blocks/personalization-container/helpers.js +76 -0
  79. package/lib/edge/commonjs/blocks/personalization-container/helpers.js.map +1 -0
  80. package/lib/edge/commonjs/blocks/personalization-container/index.js +14 -0
  81. package/lib/edge/commonjs/blocks/personalization-container/index.js.map +1 -0
  82. package/lib/edge/commonjs/blocks/personalization-container/personalization-container.js +130 -0
  83. package/lib/edge/commonjs/blocks/personalization-container/personalization-container.js.map +1 -0
  84. package/lib/edge/commonjs/blocks/personalization-container/personalization-container.types.js +6 -0
  85. package/lib/edge/commonjs/blocks/personalization-container/personalization-container.types.js.map +1 -0
  86. package/lib/edge/commonjs/components/blocks/blocks-wrapper.js +2 -1
  87. package/lib/edge/commonjs/components/blocks/blocks-wrapper.js.map +1 -1
  88. package/lib/edge/commonjs/constants/builder-registered-components.js +21 -16
  89. package/lib/edge/commonjs/constants/builder-registered-components.js.map +1 -1
  90. package/lib/edge/commonjs/constants/sdk-version.js +1 -1
  91. package/lib/edge/commonjs/helpers/canTrack.js +6 -1
  92. package/lib/edge/commonjs/helpers/canTrack.js.map +1 -1
  93. package/lib/edge/commonjs/helpers/user-attributes.js +56 -0
  94. package/lib/edge/commonjs/helpers/user-attributes.js.map +1 -0
  95. package/lib/edge/commonjs/scripts/init-editing.js +2 -1
  96. package/lib/edge/commonjs/scripts/init-editing.js.map +1 -1
  97. package/lib/edge/module/blocks/columns/columns.js +4 -4
  98. package/lib/edge/module/blocks/columns/columns.js.map +1 -1
  99. package/lib/edge/module/blocks/personalization-container/component-info.js +37 -0
  100. package/lib/edge/module/blocks/personalization-container/component-info.js.map +1 -0
  101. package/lib/edge/module/blocks/personalization-container/helpers/inlined-fns.js +87 -0
  102. package/lib/edge/module/blocks/personalization-container/helpers/inlined-fns.js.map +1 -0
  103. package/lib/edge/module/blocks/personalization-container/helpers.js +62 -0
  104. package/lib/edge/module/blocks/personalization-container/helpers.js.map +1 -0
  105. package/lib/edge/module/blocks/personalization-container/index.js +2 -0
  106. package/lib/edge/module/blocks/personalization-container/index.js.map +1 -0
  107. package/lib/edge/module/blocks/personalization-container/personalization-container.js +121 -0
  108. package/lib/edge/module/blocks/personalization-container/personalization-container.js.map +1 -0
  109. package/lib/edge/module/blocks/personalization-container/personalization-container.types.js +2 -0
  110. package/lib/edge/module/blocks/personalization-container/personalization-container.types.js.map +1 -0
  111. package/lib/edge/module/components/blocks/blocks-wrapper.js +2 -1
  112. package/lib/edge/module/components/blocks/blocks-wrapper.js.map +1 -1
  113. package/lib/edge/module/constants/builder-registered-components.js +6 -1
  114. package/lib/edge/module/constants/builder-registered-components.js.map +1 -1
  115. package/lib/edge/module/constants/sdk-version.js +1 -1
  116. package/lib/edge/module/helpers/canTrack.js +6 -1
  117. package/lib/edge/module/helpers/canTrack.js.map +1 -1
  118. package/lib/edge/module/helpers/user-attributes.js +47 -0
  119. package/lib/edge/module/helpers/user-attributes.js.map +1 -0
  120. package/lib/edge/module/scripts/init-editing.js +2 -1
  121. package/lib/edge/module/scripts/init-editing.js.map +1 -1
  122. package/lib/edge/typescript/blocks/personalization-container/component-info.d.ts +3 -0
  123. package/lib/edge/typescript/blocks/personalization-container/component-info.d.ts.map +1 -0
  124. package/lib/edge/typescript/blocks/personalization-container/helpers/inlined-fns.d.ts +9 -0
  125. package/lib/edge/typescript/blocks/personalization-container/helpers/inlined-fns.d.ts.map +1 -0
  126. package/lib/edge/typescript/blocks/personalization-container/helpers.d.ts +28 -0
  127. package/lib/edge/typescript/blocks/personalization-container/helpers.d.ts.map +1 -0
  128. package/lib/edge/typescript/blocks/personalization-container/index.d.ts +2 -0
  129. package/lib/edge/typescript/blocks/personalization-container/index.d.ts.map +1 -0
  130. package/lib/edge/typescript/blocks/personalization-container/personalization-container.d.ts +5 -0
  131. package/lib/edge/typescript/blocks/personalization-container/personalization-container.d.ts.map +1 -0
  132. package/lib/edge/typescript/blocks/personalization-container/personalization-container.types.d.ts +15 -0
  133. package/lib/edge/typescript/blocks/personalization-container/personalization-container.types.d.ts.map +1 -0
  134. package/lib/edge/typescript/components/blocks/blocks-wrapper.d.ts.map +1 -1
  135. package/lib/edge/typescript/constants/builder-registered-components.d.ts.map +1 -1
  136. package/lib/edge/typescript/constants/sdk-version.d.ts +1 -1
  137. package/lib/edge/typescript/helpers/canTrack.d.ts.map +1 -1
  138. package/lib/edge/typescript/helpers/user-attributes.d.ts +18 -0
  139. package/lib/edge/typescript/helpers/user-attributes.d.ts.map +1 -0
  140. package/lib/edge/typescript/scripts/init-editing.d.ts.map +1 -1
  141. package/lib/edge/typescript/types/input.d.ts +1 -0
  142. package/lib/edge/typescript/types/input.d.ts.map +1 -1
  143. package/lib/node/commonjs/blocks/columns/columns.js +4 -4
  144. package/lib/node/commonjs/blocks/columns/columns.js.map +1 -1
  145. package/lib/node/commonjs/blocks/personalization-container/component-info.js +43 -0
  146. package/lib/node/commonjs/blocks/personalization-container/component-info.js.map +1 -0
  147. package/lib/node/commonjs/blocks/personalization-container/helpers/inlined-fns.js +94 -0
  148. package/lib/node/commonjs/blocks/personalization-container/helpers/inlined-fns.js.map +1 -0
  149. package/lib/node/commonjs/blocks/personalization-container/helpers.js +76 -0
  150. package/lib/node/commonjs/blocks/personalization-container/helpers.js.map +1 -0
  151. package/lib/node/commonjs/blocks/personalization-container/index.js +14 -0
  152. package/lib/node/commonjs/blocks/personalization-container/index.js.map +1 -0
  153. package/lib/node/commonjs/blocks/personalization-container/personalization-container.js +130 -0
  154. package/lib/node/commonjs/blocks/personalization-container/personalization-container.js.map +1 -0
  155. package/lib/node/commonjs/blocks/personalization-container/personalization-container.types.js +6 -0
  156. package/lib/node/commonjs/blocks/personalization-container/personalization-container.types.js.map +1 -0
  157. package/lib/node/commonjs/components/blocks/blocks-wrapper.js +2 -1
  158. package/lib/node/commonjs/components/blocks/blocks-wrapper.js.map +1 -1
  159. package/lib/node/commonjs/constants/builder-registered-components.js +21 -16
  160. package/lib/node/commonjs/constants/builder-registered-components.js.map +1 -1
  161. package/lib/node/commonjs/constants/sdk-version.js +1 -1
  162. package/lib/node/commonjs/helpers/canTrack.js +6 -1
  163. package/lib/node/commonjs/helpers/canTrack.js.map +1 -1
  164. package/lib/node/commonjs/helpers/user-attributes.js +56 -0
  165. package/lib/node/commonjs/helpers/user-attributes.js.map +1 -0
  166. package/lib/node/commonjs/scripts/init-editing.js +2 -1
  167. package/lib/node/commonjs/scripts/init-editing.js.map +1 -1
  168. package/lib/node/module/blocks/columns/columns.js +4 -4
  169. package/lib/node/module/blocks/columns/columns.js.map +1 -1
  170. package/lib/node/module/blocks/personalization-container/component-info.js +37 -0
  171. package/lib/node/module/blocks/personalization-container/component-info.js.map +1 -0
  172. package/lib/node/module/blocks/personalization-container/helpers/inlined-fns.js +87 -0
  173. package/lib/node/module/blocks/personalization-container/helpers/inlined-fns.js.map +1 -0
  174. package/lib/node/module/blocks/personalization-container/helpers.js +62 -0
  175. package/lib/node/module/blocks/personalization-container/helpers.js.map +1 -0
  176. package/lib/node/module/blocks/personalization-container/index.js +2 -0
  177. package/lib/node/module/blocks/personalization-container/index.js.map +1 -0
  178. package/lib/node/module/blocks/personalization-container/personalization-container.js +121 -0
  179. package/lib/node/module/blocks/personalization-container/personalization-container.js.map +1 -0
  180. package/lib/node/module/blocks/personalization-container/personalization-container.types.js +2 -0
  181. package/lib/node/module/blocks/personalization-container/personalization-container.types.js.map +1 -0
  182. package/lib/node/module/components/blocks/blocks-wrapper.js +2 -1
  183. package/lib/node/module/components/blocks/blocks-wrapper.js.map +1 -1
  184. package/lib/node/module/constants/builder-registered-components.js +6 -1
  185. package/lib/node/module/constants/builder-registered-components.js.map +1 -1
  186. package/lib/node/module/constants/sdk-version.js +1 -1
  187. package/lib/node/module/helpers/canTrack.js +6 -1
  188. package/lib/node/module/helpers/canTrack.js.map +1 -1
  189. package/lib/node/module/helpers/user-attributes.js +47 -0
  190. package/lib/node/module/helpers/user-attributes.js.map +1 -0
  191. package/lib/node/module/scripts/init-editing.js +2 -1
  192. package/lib/node/module/scripts/init-editing.js.map +1 -1
  193. package/lib/node/typescript/blocks/personalization-container/component-info.d.ts +3 -0
  194. package/lib/node/typescript/blocks/personalization-container/component-info.d.ts.map +1 -0
  195. package/lib/node/typescript/blocks/personalization-container/helpers/inlined-fns.d.ts +9 -0
  196. package/lib/node/typescript/blocks/personalization-container/helpers/inlined-fns.d.ts.map +1 -0
  197. package/lib/node/typescript/blocks/personalization-container/helpers.d.ts +28 -0
  198. package/lib/node/typescript/blocks/personalization-container/helpers.d.ts.map +1 -0
  199. package/lib/node/typescript/blocks/personalization-container/index.d.ts +2 -0
  200. package/lib/node/typescript/blocks/personalization-container/index.d.ts.map +1 -0
  201. package/lib/node/typescript/blocks/personalization-container/personalization-container.d.ts +5 -0
  202. package/lib/node/typescript/blocks/personalization-container/personalization-container.d.ts.map +1 -0
  203. package/lib/node/typescript/blocks/personalization-container/personalization-container.types.d.ts +15 -0
  204. package/lib/node/typescript/blocks/personalization-container/personalization-container.types.d.ts.map +1 -0
  205. package/lib/node/typescript/components/blocks/blocks-wrapper.d.ts.map +1 -1
  206. package/lib/node/typescript/constants/builder-registered-components.d.ts.map +1 -1
  207. package/lib/node/typescript/constants/sdk-version.d.ts +1 -1
  208. package/lib/node/typescript/helpers/canTrack.d.ts.map +1 -1
  209. package/lib/node/typescript/helpers/user-attributes.d.ts +18 -0
  210. package/lib/node/typescript/helpers/user-attributes.d.ts.map +1 -0
  211. package/lib/node/typescript/scripts/init-editing.d.ts.map +1 -1
  212. package/lib/node/typescript/types/input.d.ts +1 -0
  213. package/lib/node/typescript/types/input.d.ts.map +1 -1
  214. package/package.json +1 -1
  215. package/src/blocks/columns/columns.tsx +3 -3
  216. package/src/blocks/personalization-container/component-info.ts +37 -0
  217. package/src/blocks/personalization-container/helpers/inlined-fns.ts +88 -0
  218. package/src/blocks/personalization-container/helpers.ts +84 -0
  219. package/src/blocks/personalization-container/index.ts +1 -0
  220. package/src/blocks/personalization-container/personalization-container.tsx +176 -0
  221. package/src/blocks/personalization-container/personalization-container.types.ts +14 -0
  222. package/src/components/blocks/blocks-wrapper.tsx +4 -1
  223. package/src/constants/builder-registered-components.ts +6 -1
  224. package/src/constants/sdk-version.ts +1 -1
  225. package/src/helpers/canTrack.ts +6 -1
  226. package/src/helpers/user-attributes.ts +49 -0
  227. package/src/scripts/init-editing.ts +2 -1
  228. package/src/types/input.ts +1 -0
@@ -0,0 +1,176 @@
1
+ import * as React from "react";
2
+ import {
3
+ FlatList,
4
+ ScrollView,
5
+ View,
6
+ StyleSheet,
7
+ Image,
8
+ Text,
9
+ Pressable,
10
+ TextInput,
11
+ TouchableOpacity,
12
+ Button,
13
+ Linking,
14
+ } from "react-native";
15
+ import { useState, useRef, useEffect } from "react";
16
+ import Blocks from "../../components/blocks/blocks";
17
+ import InlinedScript from "../../components/inlined-script";
18
+ import InlinedStyles from "../../components/inlined-styles";
19
+ import { isEditing } from "../../functions/is-editing";
20
+ import { isPreviewing } from "../../functions/is-previewing";
21
+ import { getDefaultCanTrack } from "../../helpers/canTrack";
22
+ import { userAttributesService } from "../../helpers/user-attributes";
23
+ import {
24
+ checkShouldRenderVariants,
25
+ filterWithCustomTargeting,
26
+ getBlocksToRender,
27
+ getPersonalizationScript,
28
+ } from "./helpers";
29
+ import type { PersonalizationContainerProps } from "./personalization-container.types";
30
+
31
+ function PersonalizationContainer(props: PersonalizationContainerProps) {
32
+ const rootRef = useRef<HTMLDivElement>(null);
33
+ const [userAttributes, setUserAttributes] = useState(() =>
34
+ userAttributesService.getUserAttributes()
35
+ );
36
+
37
+ const [scriptStr, setScriptStr] = useState(() =>
38
+ getPersonalizationScript(
39
+ props.variants,
40
+ props.builderBlock?.id || "none",
41
+ props.builderContext?.rootState?.locale as string | undefined
42
+ )
43
+ );
44
+
45
+ const [unsubscribers, setUnsubscribers] = useState(() => []);
46
+
47
+ const [shouldRenderVariants, setShouldRenderVariants] = useState(() =>
48
+ checkShouldRenderVariants(
49
+ props.variants,
50
+ getDefaultCanTrack(props.builderContext?.canTrack)
51
+ )
52
+ );
53
+
54
+ const [isHydrated, setIsHydrated] = useState(() => false);
55
+
56
+ function filteredVariants() {
57
+ return (props.variants || []).filter((variant) => {
58
+ return filterWithCustomTargeting(
59
+ {
60
+ ...(props.builderContext?.rootState?.locale
61
+ ? {
62
+ locale: props.builderContext?.rootState?.locale,
63
+ }
64
+ : {}),
65
+ ...(userAttributes as any),
66
+ },
67
+ variant.query,
68
+ variant.startDate,
69
+ variant.endDate
70
+ );
71
+ });
72
+ }
73
+
74
+ function blocksToRender() {
75
+ return getBlocksToRender({
76
+ variants: props.variants,
77
+ fallbackBlocks: props.builderBlock?.children,
78
+ isHydrated: isHydrated,
79
+ filteredVariants: filteredVariants(),
80
+ previewingIndex: props.previewingIndex,
81
+ });
82
+ }
83
+
84
+ function hideVariantsStyleString() {
85
+ return (props.variants || [])
86
+ .map(
87
+ (_, index) =>
88
+ `[data-variant-id="${props.builderBlock?.id}-${index}"] { display: none; } `
89
+ )
90
+ .join("");
91
+ }
92
+
93
+ useEffect(() => {
94
+ setIsHydrated(true);
95
+ const unsub = userAttributesService.subscribeOnUserAttributesChange(
96
+ (attrs) => {
97
+ setUserAttributes(attrs);
98
+ }
99
+ );
100
+ if (!(isEditing() || isPreviewing())) {
101
+ const variant = filteredVariants()[0];
102
+ if (rootRef.current) {
103
+ rootRef.current.dispatchEvent(
104
+ new CustomEvent("builder.variantLoaded", {
105
+ detail: {
106
+ variant: variant || "default",
107
+ content: props.builderContext?.content,
108
+ },
109
+ bubbles: true,
110
+ })
111
+ );
112
+ const observer = new IntersectionObserver((entries) => {
113
+ entries.forEach((entry) => {
114
+ if (entry.isIntersecting && rootRef.current) {
115
+ rootRef.current.dispatchEvent(
116
+ new CustomEvent("builder.variantDisplayed", {
117
+ detail: {
118
+ variant: variant || "default",
119
+ content: props.builderContext?.content,
120
+ },
121
+ bubbles: true,
122
+ })
123
+ );
124
+ }
125
+ });
126
+ });
127
+ observer.observe(rootRef.current);
128
+ }
129
+ }
130
+ unsubscribers.push(unsub);
131
+ }, []);
132
+
133
+ useEffect(() => {
134
+ return () => {
135
+ unsubscribers.forEach((unsub) => unsub());
136
+ };
137
+ }, []);
138
+
139
+ return (
140
+ <View ref={rootRef} {...props.attributes}>
141
+ {shouldRenderVariants ? (
142
+ <>
143
+ {props.variants?.map((variant, index) => (
144
+ <View
145
+ key={index}
146
+ data-variant-id={`${props.builderBlock?.id}-${index}`}
147
+ >
148
+ <Blocks
149
+ blocks={variant.blocks}
150
+ parent={props.builderBlock?.id}
151
+ path={`component.options.variants.${index}.blocks`}
152
+ />
153
+ </View>
154
+ ))}
155
+ <InlinedStyles
156
+ nonce={props.builderContext?.nonce || ""}
157
+ styles={hideVariantsStyleString()}
158
+ id={`variants-styles-${props.builderBlock?.id}`}
159
+ />
160
+ <InlinedScript
161
+ nonce={props.builderContext?.nonce || ""}
162
+ scriptStr={scriptStr}
163
+ id={`variants-script-${props.builderBlock?.id}`}
164
+ />
165
+ </>
166
+ ) : null}
167
+ <Blocks
168
+ blocks={blocksToRender().blocks}
169
+ parent={props.builderBlock?.id}
170
+ path={blocksToRender().path}
171
+ />
172
+ </View>
173
+ );
174
+ }
175
+
176
+ export default PersonalizationContainer;
@@ -0,0 +1,14 @@
1
+ import type { BuilderBlock } from '../../types/builder-block';
2
+ import type { BuilderDataProps } from '../../types/builder-props';
3
+ import type { Query } from './helpers';
4
+ export type PersonalizationContainerProps = {
5
+ children?: any;
6
+ attributes?: any;
7
+ previewingIndex?: number | null;
8
+ variants?: Array<{
9
+ blocks: BuilderBlock[];
10
+ query: Query[];
11
+ startDate?: string;
12
+ endDate?: string;
13
+ }>;
14
+ } & BuilderDataProps
@@ -49,8 +49,11 @@ function BlocksWrapper(props: BlocksWrapperProps) {
49
49
  if (!props.path) {
50
50
  return undefined;
51
51
  }
52
+ const thisPrefix = "this.";
52
53
  const pathPrefix = "component.options.";
53
- return props.path.startsWith(pathPrefix)
54
+ return props.path.startsWith(thisPrefix)
55
+ ? props.path.replace(thisPrefix, "")
56
+ : props.path.startsWith(pathPrefix)
54
57
  ? props.path
55
58
  : `${pathPrefix}${props.path || ""}`;
56
59
  }
@@ -8,6 +8,8 @@ import { componentInfo as fragmentComponentInfo } from '../blocks/fragment/compo
8
8
  import { default as Fragment } from '../blocks/fragment/index';
9
9
  import { componentInfo as imageComponentInfo } from '../blocks/image/component-info';
10
10
  import { default as Image } from '../blocks/image/index';
11
+ import { componentInfo as personalizationContainerComponentInfo } from '../blocks/personalization-container/component-info';
12
+ import { default as PersonalizationContainer } from '../blocks/personalization-container/index';
11
13
  import { componentInfo as sectionComponentInfo } from '../blocks/section/component-info';
12
14
  import { default as Section } from '../blocks/section/index';
13
15
  import { componentInfo as slotComponentInfo } from '../blocks/slot/component-info';
@@ -50,7 +52,10 @@ export const getDefaultRegisteredComponents: () => RegisteredComponent[] = () =>
50
52
  }, {
51
53
  component: Text,
52
54
  ...textComponentInfo
53
- }, ...(TARGET === 'rsc' ? [] : [{
55
+ }, ...(TARGET === 'react' ? [{
56
+ component: PersonalizationContainer,
57
+ ...personalizationContainerComponentInfo
58
+ }] : []), ...(TARGET === 'rsc' ? [] : [{
54
59
  component: Tabs,
55
60
  ...tabsComponentInfo
56
61
  }, {
@@ -1 +1 @@
1
- export const SDK_VERSION = "3.0.4"
1
+ export const SDK_VERSION = "3.0.6"
@@ -1,2 +1,7 @@
1
1
  import { checkIsDefined } from './nullable';
2
- export const getDefaultCanTrack = (canTrack?: boolean) => checkIsDefined(canTrack) ? canTrack : true
2
+ import { userAttributesService } from './user-attributes';
3
+ export const getDefaultCanTrack = (canTrack?: boolean) => {
4
+ const result = checkIsDefined(canTrack) ? canTrack : true;
5
+ userAttributesService.setCanTrack(result);
6
+ return result;
7
+ }
@@ -0,0 +1,49 @@
1
+ import { isBrowser } from '../functions/is-browser';
2
+ import { getCookieSync, setCookie } from './cookie';
3
+ export interface UserAttributes {
4
+ [key: string]: any;
5
+ }
6
+ export const USER_ATTRIBUTES_COOKIE_NAME = 'builder.userAttributes';
7
+ export function createUserAttributesService() {
8
+ let canTrack = true;
9
+ const subscribers = new Set<(attrs: UserAttributes) => void>();
10
+ return {
11
+ setUserAttributes(newAttrs: UserAttributes) {
12
+ if (!isBrowser()) {
13
+ return;
14
+ }
15
+ const userAttributes: UserAttributes = {
16
+ ...this.getUserAttributes(),
17
+ ...newAttrs
18
+ };
19
+ setCookie({
20
+ name: USER_ATTRIBUTES_COOKIE_NAME,
21
+ value: JSON.stringify(userAttributes),
22
+ canTrack
23
+ });
24
+ subscribers.forEach(callback => callback(userAttributes));
25
+ },
26
+ getUserAttributes() {
27
+ if (!isBrowser()) {
28
+ return {};
29
+ }
30
+ return JSON.parse(getCookieSync({
31
+ name: USER_ATTRIBUTES_COOKIE_NAME,
32
+ canTrack
33
+ }) || '{}');
34
+ },
35
+ subscribeOnUserAttributesChange(callback: (attrs: UserAttributes) => void) {
36
+ subscribers.add(callback);
37
+ return () => {
38
+ subscribers.delete(callback);
39
+ };
40
+ },
41
+ setCanTrack(value: boolean) {
42
+ canTrack = value;
43
+ }
44
+ };
45
+ }
46
+ export const userAttributesService = createUserAttributesService();
47
+ export const setClientUserAttributes = (attributes: UserAttributes) => {
48
+ userAttributesService.setUserAttributes(attributes);
49
+ }
@@ -47,7 +47,8 @@ export const setupBrowserForEditing = (options: {
47
47
  // Supports builder-model="..." attribute which is needed to
48
48
  // scope our '+ add block' button styling
49
49
  supportsAddBlockScoping: true,
50
- supportsCustomBreakpoints: true
50
+ supportsCustomBreakpoints: true,
51
+ blockLevelPersonalization: true
51
52
  }
52
53
  }, '*');
53
54
  window.parent?.postMessage({
@@ -125,6 +125,7 @@ export interface Input {
125
125
  * Use optionally with inputs of type `reference`. Restricts the content entry picker to a specific model by name.
126
126
  */
127
127
  model?: string;
128
+ behavior?: string;
128
129
  valueType?: {
129
130
  type?: string;
130
131
  };