@builder.io/sdk-react 3.0.3 → 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 (87) hide show
  1. package/lib/browser/blocks-exports.cjs +169 -32
  2. package/lib/browser/blocks-exports.mjs +1286 -884
  3. package/lib/browser/index.cjs +1 -1
  4. package/lib/browser/index.mjs +17 -16
  5. package/lib/browser/server-entry-a1c64831.cjs +2 -0
  6. package/lib/browser/{server-entry-c904f136.js → server-entry-df5e89e5.js} +279 -237
  7. package/lib/browser/server-entry.cjs +1 -1
  8. package/lib/browser/server-entry.mjs +1 -1
  9. package/lib/edge/{accordion-c786f197.js → accordion-289f3464.js} +1 -1
  10. package/lib/edge/{accordion-032726a7.cjs → accordion-fbfb71f4.cjs} +1 -1
  11. package/lib/edge/{blocks-827b0a87.cjs → blocks-459a090b.cjs} +11 -11
  12. package/lib/edge/{blocks-105e50e5.js → blocks-582a7fd7.js} +87 -88
  13. package/lib/edge/blocks-exports.cjs +1 -1
  14. package/lib/edge/blocks-exports.mjs +13 -12
  15. package/lib/edge/{button-f0e0ea72.js → button-9b112da6.js} +2 -2
  16. package/lib/edge/{button-5cbfe22c.cjs → button-da357144.cjs} +1 -1
  17. package/lib/edge/{columns-d07da61d.cjs → columns-a211113f.cjs} +2 -2
  18. package/lib/edge/{columns-9e187314.js → columns-aba58dda.js} +18 -18
  19. package/lib/edge/{content-variants-59dc0824.js → content-variants-08f4371c.js} +165 -124
  20. package/lib/edge/content-variants-4b5899b5.cjs +134 -0
  21. package/lib/edge/dynamic-blocks-exports.cjs +3 -1
  22. package/lib/edge/dynamic-blocks-exports.mjs +5 -2
  23. package/lib/edge/form-4d4553c2.js +166 -0
  24. package/lib/edge/form-e3a3afd4.cjs +1 -0
  25. package/lib/edge/{get-class-prop-name-6b143ec7.js → get-class-prop-name-38c2baca.js} +1 -1
  26. package/lib/edge/{get-class-prop-name-8fb0e5ad.cjs → get-class-prop-name-fbe244e3.cjs} +1 -1
  27. package/lib/edge/{image-2a2b26d2.js → image-38917f45.js} +22 -24
  28. package/lib/edge/image-590e36ae.cjs +17 -0
  29. package/lib/edge/{img-72bf9d21.cjs → img-8d549af8.cjs} +1 -1
  30. package/lib/edge/{img-2c4c6b78.js → img-c49066fa.js} +1 -1
  31. package/lib/edge/index.cjs +1 -1
  32. package/lib/edge/index.mjs +18 -17
  33. package/lib/edge/{input-6eca8427.cjs → input-1ae3842f.cjs} +1 -1
  34. package/lib/edge/{input-752f3ce9.js → input-e7301f4e.js} +1 -1
  35. package/lib/edge/personalization-container-035be6ba.js +384 -0
  36. package/lib/edge/personalization-container-25cd8b5e.cjs +138 -0
  37. package/lib/edge/{select-a1d6e80e.js → select-4187b229.js} +1 -1
  38. package/lib/edge/{select-49a73a0b.cjs → select-64fdaa79.cjs} +1 -1
  39. package/lib/edge/server-entry-2ef4e66a.cjs +2 -0
  40. package/lib/edge/{server-entry-35f12729.js → server-entry-61fca4f7.js} +322 -280
  41. package/lib/edge/server-entry.cjs +1 -1
  42. package/lib/edge/server-entry.mjs +1 -1
  43. package/lib/edge/{slot-2327e009.cjs → slot-995f63c2.cjs} +1 -1
  44. package/lib/edge/{slot-b9bcbd41.js → slot-d6c46a42.js} +3 -3
  45. package/lib/edge/{symbol-3527699b.cjs → symbol-498daa97.cjs} +1 -1
  46. package/lib/edge/{symbol-33e7736f.js → symbol-623dc717.js} +2 -2
  47. package/lib/edge/{tabs-bc422e4c.js → tabs-12ba41b1.js} +3 -3
  48. package/lib/edge/{tabs-2df0eaa2.cjs → tabs-d39499cd.cjs} +1 -1
  49. package/lib/edge/video-4ecfd08b.cjs +1 -0
  50. package/lib/edge/{video-58c2cc8d.js → video-a3f10439.js} +0 -1
  51. package/lib/node/blocks-exports.cjs +170 -33
  52. package/lib/node/blocks-exports.mjs +1372 -970
  53. package/lib/node/index.cjs +1 -1
  54. package/lib/node/index.mjs +17 -16
  55. package/lib/node/init.cjs +1 -1
  56. package/lib/node/init.mjs +3 -3
  57. package/lib/node/{server-entry-d1ed35c5.js → server-entry-27d9d31e.js} +279 -237
  58. package/lib/node/server-entry-98ebff74.cjs +2 -0
  59. package/lib/node/server-entry.cjs +1 -1
  60. package/lib/node/server-entry.mjs +1 -1
  61. package/lib/node/{setIvm-6675714a.js → setIvm-2dde9074.js} +1 -1
  62. package/lib/node/{setIvm-e4deba11.cjs → setIvm-784fe19f.cjs} +1 -1
  63. package/lib/node/setIvm.cjs +1 -1
  64. package/lib/node/setIvm.mjs +2 -2
  65. package/lib/node/{should-force-browser-runtime-in-node-75b2b3a0.js → should-force-browser-runtime-in-node-80f081c8.js} +1 -1
  66. package/lib/node/{should-force-browser-runtime-in-node-03adae17.cjs → should-force-browser-runtime-in-node-cd6baa94.cjs} +1 -1
  67. package/package.json +2 -2
  68. package/types/blocks/form/form/form.d.ts +1 -0
  69. package/types/blocks/personalization-container/component-info.d.ts +2 -0
  70. package/types/blocks/personalization-container/helpers/inlined-fns.d.ts +8 -0
  71. package/types/blocks/personalization-container/helpers.d.ts +27 -0
  72. package/types/blocks/personalization-container/index.d.ts +1 -0
  73. package/types/blocks/personalization-container/personalization-container.d.ts +4 -0
  74. package/types/blocks/personalization-container/personalization-container.types.d.ts +14 -0
  75. package/types/constants/sdk-version.d.ts +1 -1
  76. package/types/helpers/user-attributes.d.ts +17 -0
  77. package/types/index-helpers/blocks-exports.d.ts +1 -0
  78. package/types/types/components.d.ts +2 -2
  79. package/types/types/input.d.ts +1 -0
  80. package/lib/browser/server-entry-5eafc5bd.cjs +0 -2
  81. package/lib/edge/content-variants-0db90715.cjs +0 -134
  82. package/lib/edge/form-79639135.cjs +0 -1
  83. package/lib/edge/form-7a7b98cf.js +0 -176
  84. package/lib/edge/image-4db81d72.cjs +0 -17
  85. package/lib/edge/server-entry-6b2058e2.cjs +0 -2
  86. package/lib/edge/video-e20dcbbc.cjs +0 -1
  87. package/lib/node/server-entry-606ce65a.cjs +0 -2
@@ -7,27 +7,27 @@ const v = "react", I = "[Builder.io]: ", f = {
7
7
  function c() {
8
8
  return typeof window != "undefined" && typeof document != "undefined";
9
9
  }
10
- const rt = (t) => {
10
+ const ot = (t) => {
11
11
  const e = {};
12
12
  return t.forEach((n, r) => {
13
13
  e[r] = n;
14
14
  }), e;
15
- }, F = (t) => t instanceof URLSearchParams ? rt(t) : t, D = (t) => typeof t == "string" ? t : t instanceof URLSearchParams ? t.toString() : new URLSearchParams(t).toString();
16
- function ot() {
15
+ }, M = (t) => t instanceof URLSearchParams ? ot(t) : t, K = (t) => typeof t == "string" ? t : t instanceof URLSearchParams ? t.toString() : new URLSearchParams(t).toString();
16
+ function it() {
17
17
  return c() && window.self !== window.top;
18
18
  }
19
- function st(t) {
20
- return ot() && // accessing window.location.search is safe here because `isIframe()` is only `true` if we're in a browser.
21
- D(t || window.location.search).indexOf("builder.frameEditing=") !== -1;
19
+ function at(t) {
20
+ return it() && // accessing window.location.search is safe here because `isIframe()` is only `true` if we're in a browser.
21
+ K(t || window.location.search).indexOf("builder.frameEditing=") !== -1;
22
22
  }
23
- const it = () => {
23
+ const ct = () => {
24
24
  if (c()) {
25
25
  const t = new URL(location.href);
26
26
  return t.pathname === "" && (t.pathname = "/"), t;
27
27
  } else
28
28
  return console.warn("Cannot get location for tracking in non-browser environment"), null;
29
- }, at = () => typeof navigator == "object" && navigator.userAgent || "", ct = () => {
30
- const t = at(), e = {
29
+ }, ut = () => typeof navigator == "object" && navigator.userAgent || "", lt = () => {
30
+ const t = ut(), e = {
31
31
  Android() {
32
32
  return t.match(/Android/i);
33
33
  },
@@ -46,32 +46,32 @@ const it = () => {
46
46
  any() {
47
47
  return e.Android() || e.BlackBerry() || e.iOS() || e.Opera() || e.Windows() || v === "reactNative";
48
48
  }
49
- }, n = t.match(/Tablet|iPad/i), r = it();
49
+ }, n = t.match(/Tablet|iPad/i), r = ct();
50
50
  return {
51
51
  urlPath: r == null ? void 0 : r.pathname,
52
52
  host: (r == null ? void 0 : r.host) || (r == null ? void 0 : r.hostname),
53
53
  device: n ? "tablet" : e.any() ? "mobile" : "desktop"
54
54
  };
55
55
  }, y = (t) => t != null;
56
- function Zt(t) {
56
+ function ee(t) {
57
57
  const e = t || (c() ? window.location.search : void 0);
58
- return e ? D(e).indexOf("builder.preview=") !== -1 : !1;
58
+ return e ? K(e).indexOf("builder.preview=") !== -1 : !1;
59
59
  }
60
- const qt = (t) => ({
60
+ const ne = (t) => ({
61
61
  type: "builder.registerComponent",
62
- data: N(t)
63
- }), ut = (t) => {
62
+ data: j(t)
63
+ }), dt = (t) => {
64
64
  const e = t.toString().trim(), n = /^[a-zA-Z0-9_]+\s*=>/i.test(e);
65
65
  return `return (${!e.startsWith("function") && !e.startsWith("async") && !e.startsWith("(") && !n ? "function " : ""}${e}).apply(this, arguments)`;
66
66
  };
67
- function N(t) {
68
- return JSON.parse(JSON.stringify(t, (e, n) => typeof n == "function" ? ut(n) : n));
67
+ function j(t) {
68
+ return JSON.parse(JSON.stringify(t, (e, n) => typeof n == "function" ? dt(n) : n));
69
69
  }
70
- const U = {};
71
- function lt(t, e) {
72
- t === "plugin" && (e = N(e));
73
- let n = U[t];
74
- if (n || (n = U[t] = []), n.push(e), c()) {
70
+ const B = {};
71
+ function ft(t, e) {
72
+ t === "plugin" && (e = j(e));
73
+ let n = B[t];
74
+ if (n || (n = B[t] = []), n.push(e), c()) {
75
75
  const r = {
76
76
  type: "builder.register",
77
77
  data: {
@@ -81,47 +81,47 @@ function lt(t, e) {
81
81
  };
82
82
  try {
83
83
  parent.postMessage(r, "*"), parent !== window && window.postMessage(r, "*");
84
- } catch (o) {
85
- console.debug("Could not postmessage", o);
84
+ } catch (s) {
85
+ console.debug("Could not postmessage", s);
86
86
  }
87
87
  }
88
88
  }
89
- const B = {};
90
- function te(t) {
89
+ const L = {};
90
+ function re(t) {
91
91
  if (c()) {
92
- Object.assign(B, t);
92
+ Object.assign(L, t);
93
93
  const e = {
94
94
  type: "builder.settingsChange",
95
- data: B
95
+ data: L
96
96
  };
97
97
  parent.postMessage(e, "*");
98
98
  }
99
99
  }
100
- const R = "builder.", dt = "options.", M = (t) => {
100
+ const V = "builder.", ht = "options.", W = (t) => {
101
101
  if (!t)
102
102
  return {};
103
- const e = F(t), n = {};
103
+ const e = M(t), n = {};
104
104
  return Object.keys(e).forEach((r) => {
105
- if (r.startsWith(R)) {
106
- const o = r.replace(R, "").replace(dt, "");
107
- n[o] = e[r];
105
+ if (r.startsWith(V)) {
106
+ const s = r.replace(V, "").replace(ht, "");
107
+ n[s] = e[r];
108
108
  }
109
109
  }), n;
110
- }, ft = () => {
110
+ }, gt = () => {
111
111
  if (!c())
112
112
  return {};
113
113
  const t = new URLSearchParams(window.location.search);
114
- return M(t);
115
- }, K = "3.0.3", j = () => ({
114
+ return W(t);
115
+ }, _ = "3.0.6", $ = () => ({
116
116
  "X-Builder-SDK": v,
117
117
  "X-Builder-SDK-GEN": "2",
118
- "X-Builder-SDK-Version": K
119
- }), ht = (t) => {
118
+ "X-Builder-SDK-Version": _
119
+ }), pt = (t) => {
120
120
  if (t === "localhost" || t === "127.0.0.1")
121
121
  return t;
122
122
  const e = t.split(".");
123
123
  return e.length > 2 ? e.slice(1).join(".") : t;
124
- }, W = ({
124
+ }, O = ({
125
125
  name: t,
126
126
  canTrack: e
127
127
  }) => {
@@ -132,14 +132,14 @@ const R = "builder.", dt = "options.", M = (t) => {
132
132
  f.warn("[COOKIE] GET error: ", (r == null ? void 0 : r.message) || r);
133
133
  return;
134
134
  }
135
- }, $ = async (t) => W(t), gt = (t) => t.map(([e, n]) => n ? `${e}=${n}` : e).filter(y).join("; "), pt = [["secure", ""], ["SameSite", "None"]], mt = ({
135
+ }, G = async (t) => O(t), mt = (t) => t.map(([e, n]) => n ? `${e}=${n}` : e).filter(y).join("; "), yt = [["secure", ""], ["SameSite", "None"]], bt = ({
136
136
  name: t,
137
137
  value: e,
138
138
  expires: n
139
139
  }) => {
140
- const o = (c() ? location.protocol === "https:" : !0) ? pt : [[]], s = n ? [["expires", n.toUTCString()]] : [[]], i = [[t, e], ...s, ["path", "/"], ["domain", ht(window.location.hostname)], ...o];
141
- return gt(i);
142
- }, _ = async ({
140
+ const s = (c() ? location.protocol === "https:" : !0) ? yt : [[]], o = n ? [["expires", n.toUTCString()]] : [[]], i = [[t, e], ...o, ["path", "/"], ["domain", pt(window.location.hostname)], ...s];
141
+ return mt(i);
142
+ }, P = async ({
143
143
  name: t,
144
144
  value: e,
145
145
  expires: n,
@@ -148,103 +148,103 @@ const R = "builder.", dt = "options.", M = (t) => {
148
148
  try {
149
149
  if (!r)
150
150
  return;
151
- const o = mt({
151
+ const s = bt({
152
152
  name: t,
153
153
  value: e,
154
154
  expires: n
155
155
  });
156
- document.cookie = o;
157
- } catch (o) {
158
- f.warn("[COOKIE] SET error: ", (o == null ? void 0 : o.message) || o);
156
+ document.cookie = s;
157
+ } catch (s) {
158
+ f.warn("[COOKIE] SET error: ", (s == null ? void 0 : s.message) || s);
159
159
  }
160
160
  };
161
- function yt() {
161
+ function St() {
162
162
  return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function(t) {
163
163
  const e = Math.random() * 16 | 0;
164
164
  return (t == "x" ? e : e & 3 | 8).toString(16);
165
165
  });
166
166
  }
167
- function G() {
168
- return yt().replace(/-/g, "");
167
+ function J() {
168
+ return St().replace(/-/g, "");
169
169
  }
170
- const H = "builderSessionId", wt = async ({
170
+ const z = "builderSessionId", wt = async ({
171
171
  canTrack: t
172
172
  }) => {
173
173
  if (!t)
174
174
  return;
175
- const e = await $({
176
- name: H,
175
+ const e = await G({
176
+ name: z,
177
177
  canTrack: t
178
178
  });
179
179
  if (y(e))
180
180
  return e;
181
181
  {
182
- const n = St();
183
- return bt({
182
+ const n = vt();
183
+ return It({
184
184
  id: n,
185
185
  canTrack: t
186
186
  }), n;
187
187
  }
188
- }, St = () => G(), bt = ({
188
+ }, vt = () => J(), It = ({
189
189
  id: t,
190
190
  canTrack: e
191
- }) => _({
192
- name: H,
191
+ }) => P({
192
+ name: z,
193
193
  value: t,
194
194
  canTrack: e
195
- }), J = () => c() && typeof localStorage != "undefined" ? localStorage : void 0, vt = ({
195
+ }), H = () => c() && typeof localStorage != "undefined" ? localStorage : void 0, kt = ({
196
196
  key: t,
197
197
  canTrack: e
198
198
  }) => {
199
199
  var n;
200
200
  try {
201
- return e ? (n = J()) == null ? void 0 : n.getItem(t) : void 0;
201
+ return e ? (n = H()) == null ? void 0 : n.getItem(t) : void 0;
202
202
  } catch (r) {
203
203
  console.debug("[LocalStorage] GET error: ", r);
204
204
  return;
205
205
  }
206
- }, It = ({
206
+ }, At = ({
207
207
  key: t,
208
208
  canTrack: e,
209
209
  value: n
210
210
  }) => {
211
211
  var r;
212
212
  try {
213
- e && ((r = J()) == null || r.setItem(t, n));
214
- } catch (o) {
215
- console.debug("[LocalStorage] SET error: ", o);
213
+ e && ((r = H()) == null || r.setItem(t, n));
214
+ } catch (s) {
215
+ console.debug("[LocalStorage] SET error: ", s);
216
216
  }
217
- }, X = "builderVisitorId", kt = ({
217
+ }, X = "builderVisitorId", Et = ({
218
218
  canTrack: t
219
219
  }) => {
220
220
  if (!t)
221
221
  return;
222
- const e = vt({
222
+ const e = kt({
223
223
  key: X,
224
224
  canTrack: t
225
225
  });
226
226
  if (y(e))
227
227
  return e;
228
228
  {
229
- const n = Et();
230
- return At({
229
+ const n = Ot();
230
+ return Pt({
231
231
  id: n,
232
232
  canTrack: t
233
233
  }), n;
234
234
  }
235
- }, Et = () => G(), At = ({
235
+ }, Ot = () => J(), Pt = ({
236
236
  id: t,
237
237
  canTrack: e
238
- }) => It({
238
+ }) => At({
239
239
  key: X,
240
240
  value: t,
241
241
  canTrack: e
242
242
  });
243
- function Pt(t) {
243
+ function Ct(t) {
244
244
  var e;
245
245
  typeof process != "undefined" && ((e = process.env) != null && e.DEBUG) && String(process.env.DEBUG) == "true" && f.log(t);
246
246
  }
247
- const Ot = async ({
247
+ const Ut = async ({
248
248
  canTrack: t
249
249
  }) => {
250
250
  if (!t)
@@ -254,31 +254,31 @@ const Ot = async ({
254
254
  };
255
255
  const e = await wt({
256
256
  canTrack: t
257
- }), n = kt({
257
+ }), n = Et({
258
258
  canTrack: t
259
259
  });
260
260
  return {
261
261
  sessionId: e,
262
262
  visitorId: n
263
263
  };
264
- }, Ct = async ({
264
+ }, Tt = async ({
265
265
  type: t,
266
266
  canTrack: e,
267
267
  apiKey: n,
268
268
  metadata: r,
269
- ...o
269
+ ...s
270
270
  }) => ({
271
271
  type: t,
272
272
  data: {
273
- ...o,
273
+ ...s,
274
274
  metadata: {
275
275
  url: location.href,
276
276
  ...r
277
277
  },
278
- ...await Ot({
278
+ ...await Ut({
279
279
  canTrack: e
280
280
  }),
281
- userAttributes: ct(),
281
+ userAttributes: lt(),
282
282
  ownerId: n
283
283
  }
284
284
  });
@@ -290,35 +290,35 @@ async function xt({
290
290
  f.error("Missing API key for track call. Please provide your API key.");
291
291
  return;
292
292
  }
293
- if (!e.canTrack || st() || !(c() || v === "reactNative"))
293
+ if (!e.canTrack || at() || !(c() || v === "reactNative"))
294
294
  return;
295
295
  const r = `${t || "https://cdn.builder.io"}/api/v1/track`;
296
- return Pt(r), fetch(r, {
296
+ return Ct(r), fetch(r, {
297
297
  method: "POST",
298
298
  body: JSON.stringify({
299
- events: [await Ct(e)]
299
+ events: [await Tt(e)]
300
300
  }),
301
301
  headers: {
302
302
  "content-type": "application/json",
303
- ...j()
303
+ ...$()
304
304
  },
305
305
  mode: "cors"
306
- }).catch((o) => {
307
- console.error("Failed to track: ", o);
306
+ }).catch((s) => {
307
+ console.error("Failed to track: ", s);
308
308
  });
309
309
  }
310
- const ee = (t) => xt({
310
+ const se = (t) => xt({
311
311
  ...t,
312
312
  canTrack: !0
313
- }), Tt = ["*.beta.builder.io", "beta.builder.io", "builder.io", "localhost", "qa.builder.io"];
314
- function z(t, e) {
313
+ }), Rt = ["*.beta.builder.io", "beta.builder.io", "builder.io", "localhost", "qa.builder.io"];
314
+ function Q(t, e) {
315
315
  if (!e.origin.startsWith("http") && !e.origin.startsWith("https"))
316
316
  return !1;
317
317
  const n = new URL(e.origin), r = n.hostname;
318
- return (t || Tt).findIndex((o) => o.startsWith("*.") ? r.endsWith(o.slice(1)) : o === r) > -1;
318
+ return (t || Rt).findIndex((s) => s.startsWith("*.") ? r.endsWith(s.slice(1)) : s === r) > -1;
319
319
  }
320
- const ne = () => {
321
- lt("insertMenu", {
320
+ const oe = () => {
321
+ ft("insertMenu", {
322
322
  name: "_default",
323
323
  default: !0,
324
324
  items: [{
@@ -340,19 +340,20 @@ const ne = () => {
340
340
  }]
341
341
  });
342
342
  };
343
- let L = !1;
344
- const Ut = (t = {}) => {
343
+ let N = !1;
344
+ const Bt = (t = {}) => {
345
345
  var e, n;
346
- L || (L = !0, c() && ((e = window.parent) == null || e.postMessage({
346
+ N || (N = !0, c() && ((e = window.parent) == null || e.postMessage({
347
347
  type: "builder.sdkInfo",
348
348
  data: {
349
349
  target: v,
350
- version: K,
350
+ version: _,
351
351
  supportsPatchUpdates: !1,
352
352
  // Supports builder-model="..." attribute which is needed to
353
353
  // scope our '+ add block' button styling
354
354
  supportsAddBlockScoping: !0,
355
- supportsCustomBreakpoints: !0
355
+ supportsCustomBreakpoints: !0,
356
+ blockLevelPersonalization: !0
356
357
  }
357
358
  }, "*"), (n = window.parent) == null || n.postMessage({
358
359
  type: "builder.updateContent",
@@ -360,23 +361,23 @@ const Ut = (t = {}) => {
360
361
  options: t
361
362
  }
362
363
  }, "*"), window.addEventListener("message", (r) => {
363
- var s, i;
364
- if (!z(t.trustedHosts, r))
364
+ var o, i;
365
+ if (!Q(t.trustedHosts, r))
365
366
  return;
366
367
  const {
367
- data: o
368
+ data: s
368
369
  } = r;
369
- if (o != null && o.type)
370
- switch (o.type) {
370
+ if (s != null && s.type)
371
+ switch (s.type) {
371
372
  case "builder.evaluate": {
372
- const u = o.data.text, w = o.data.arguments || [], p = o.data.id, k = new Function(u);
373
+ const u = s.data.text, b = s.data.arguments || [], p = s.data.id, k = new Function(u);
373
374
  let l, h = null;
374
375
  try {
375
- l = k.apply(null, w);
376
+ l = k.apply(null, b);
376
377
  } catch (g) {
377
378
  h = g;
378
379
  }
379
- h ? (s = window.parent) == null || s.postMessage({
380
+ h ? (o = window.parent) == null || o.postMessage({
380
381
  type: "builder.evaluateError",
381
382
  data: {
382
383
  id: p,
@@ -402,38 +403,38 @@ const Ut = (t = {}) => {
402
403
  }
403
404
  }
404
405
  })));
405
- }, Bt = ({
406
+ }, Lt = ({
406
407
  model: t,
407
408
  trustedHosts: e,
408
409
  callbacks: n
409
410
  }) => (r) => {
410
- if (!z(e, r))
411
+ if (!Q(e, r))
411
412
  return;
412
413
  const {
413
- data: o
414
+ data: s
414
415
  } = r;
415
- if (o)
416
- switch (o.type) {
416
+ if (s)
417
+ switch (s.type) {
417
418
  case "builder.configureSdk": {
418
- n.configureSdk(o.data);
419
+ n.configureSdk(s.data);
419
420
  break;
420
421
  }
421
422
  case "builder.triggerAnimation": {
422
- n.animation(o.data);
423
+ n.animation(s.data);
423
424
  break;
424
425
  }
425
426
  case "builder.contentUpdate": {
426
- const s = o.data, i = s.key || s.alias || s.entry || s.modelName, u = s.data;
427
+ const o = s.data, i = o.key || o.alias || o.entry || o.modelName, u = o.data;
427
428
  i === t && n.contentUpdate(u);
428
429
  break;
429
430
  }
430
431
  }
431
- }, re = (t, e, n) => {
432
+ }, ie = (t, e, n) => {
432
433
  if (!c)
433
434
  return f.warn("`subscribeToEditor` only works in the browser. It currently seems to be running on the server."), () => {
434
435
  };
435
- Ut();
436
- const r = Bt({
436
+ Bt();
437
+ const r = Lt({
437
438
  callbacks: {
438
439
  contentUpdate: e,
439
440
  animation: () => {
@@ -447,45 +448,45 @@ const Ut = (t = {}) => {
447
448
  return window.addEventListener("message", r), () => {
448
449
  window.removeEventListener("message", r);
449
450
  };
450
- }, Rt = "builder.tests", P = (t) => `${Rt}.${t}`, Lt = ({
451
+ }, Vt = "builder.tests", C = (t) => `${Vt}.${t}`, Nt = ({
451
452
  contentId: t
452
- }) => $({
453
- name: P(t),
453
+ }) => G({
454
+ name: C(t),
454
455
  canTrack: !0
455
- }), Vt = ({
456
+ }), Ft = ({
456
457
  contentId: t
457
- }) => W({
458
- name: P(t),
458
+ }) => O({
459
+ name: C(t),
459
460
  canTrack: !0
460
- }), Ft = ({
461
+ }), Dt = ({
461
462
  contentId: t,
462
463
  value: e
463
- }) => _({
464
- name: P(t),
464
+ }) => P({
465
+ name: C(t),
465
466
  value: e,
466
467
  canTrack: !0
467
- }), Q = (t) => y(t.id) && y(t.variations) && Object.keys(t.variations).length > 0, Dt = ({
468
+ }), Y = (t) => y(t.id) && y(t.variations) && Object.keys(t.variations).length > 0, Mt = ({
468
469
  id: t,
469
470
  variations: e
470
471
  }) => {
471
- var o;
472
+ var s;
472
473
  let n = 0;
473
474
  const r = Math.random();
474
- for (const s in e) {
475
- const i = (o = e[s]) == null ? void 0 : o.testRatio;
475
+ for (const o in e) {
476
+ const i = (s = e[o]) == null ? void 0 : s.testRatio;
476
477
  if (n += i, r < n)
477
- return s;
478
+ return o;
478
479
  }
479
480
  return t;
480
- }, Y = (t) => {
481
- const e = Dt(t);
482
- return Ft({
481
+ }, Z = (t) => {
482
+ const e = Mt(t);
483
+ return Dt({
483
484
  contentId: t.id,
484
485
  value: e
485
486
  }).catch((n) => {
486
487
  f.error("could not store A/B test variation: ", n);
487
488
  }), e;
488
- }, Z = ({
489
+ }, q = ({
489
490
  item: t,
490
491
  testGroupId: e
491
492
  }) => {
@@ -499,7 +500,7 @@ const Ut = (t = {}) => {
499
500
  testVariationId: n.id,
500
501
  testVariationName: n.name || (n.id === t.id ? "Default" : "")
501
502
  };
502
- }, oe = ({
503
+ }, ae = ({
503
504
  item: t,
504
505
  canTrack: e
505
506
  }) => {
@@ -507,14 +508,14 @@ const Ut = (t = {}) => {
507
508
  return t;
508
509
  if (!t)
509
510
  return;
510
- if (!Q(t))
511
+ if (!Y(t))
511
512
  return t;
512
- const n = Vt({
513
+ const n = Ft({
513
514
  contentId: t.id
514
- }) || Y({
515
+ }) || Z({
515
516
  variations: t.variations,
516
517
  id: t.id
517
- }), r = Z({
518
+ }), r = q({
518
519
  item: t,
519
520
  testGroupId: n
520
521
  });
@@ -522,186 +523,225 @@ const Ut = (t = {}) => {
522
523
  ...t,
523
524
  ...r
524
525
  };
525
- }, Nt = async ({
526
+ }, Kt = async ({
526
527
  item: t,
527
528
  canTrack: e
528
529
  }) => {
529
- if (!e || !Q(t))
530
+ if (!e || !Y(t))
530
531
  return t;
531
- const r = await Lt({
532
+ const r = await Nt({
532
533
  contentId: t.id
533
- }) || Y({
534
+ }) || Z({
534
535
  variations: t.variations,
535
536
  id: t.id
536
- }), o = Z({
537
+ }), s = q({
537
538
  item: t,
538
539
  testGroupId: r
539
540
  });
540
541
  return {
541
542
  ...t,
542
- ...o
543
+ ...s
544
+ };
545
+ }, F = "builder.userAttributes";
546
+ function jt() {
547
+ let t = !0;
548
+ const e = /* @__PURE__ */ new Set();
549
+ return {
550
+ setUserAttributes(n) {
551
+ if (!c())
552
+ return;
553
+ const r = {
554
+ ...this.getUserAttributes(),
555
+ ...n
556
+ };
557
+ P({
558
+ name: F,
559
+ value: JSON.stringify(r),
560
+ canTrack: t
561
+ }), e.forEach((s) => s(r));
562
+ },
563
+ getUserAttributes() {
564
+ return c() ? JSON.parse(O({
565
+ name: F,
566
+ canTrack: t
567
+ }) || "{}") : {};
568
+ },
569
+ subscribeOnUserAttributesChange(n) {
570
+ return e.add(n), () => {
571
+ e.delete(n);
572
+ };
573
+ },
574
+ setCanTrack(n) {
575
+ t = n;
576
+ }
543
577
  };
544
- }, Mt = (t) => y(t) ? t : !0;
545
- function Kt() {
578
+ }
579
+ const tt = jt(), ce = (t) => {
580
+ tt.setUserAttributes(t);
581
+ }, Wt = (t) => {
582
+ const e = y(t) ? t : !0;
583
+ return tt.setCanTrack(e), e;
584
+ };
585
+ function _t() {
546
586
  return typeof globalThis != "undefined" ? globalThis : typeof window != "undefined" ? window : typeof global != "undefined" ? global : typeof self != "undefined" ? self : globalThis;
547
587
  }
548
- function jt() {
549
- const t = Kt().fetch;
588
+ function $t() {
589
+ const t = _t().fetch;
550
590
  if (typeof t == "undefined")
551
591
  throw console.warn(`Builder SDK could not find a global fetch function. Make sure you have a polyfill for fetch in your project.
552
592
  For more information, read https://github.com/BuilderIO/this-package-uses-fetch`), new Error("Builder SDK could not find a global `fetch` function");
553
593
  return t;
554
594
  }
555
- const Wt = jt();
556
- function A(t, e = null, n = ".") {
557
- return Object.keys(t).reduce((r, o) => {
558
- const s = t[o], i = [e, o].filter(Boolean).join(n);
559
- return [typeof s == "object", s !== null, !(Array.isArray(s) && s.length === 0)].every(Boolean) ? {
595
+ const Gt = $t();
596
+ function E(t, e = null, n = ".") {
597
+ return Object.keys(t).reduce((r, s) => {
598
+ const o = t[s], i = [e, s].filter(Boolean).join(n);
599
+ return [typeof o == "object", o !== null, !(Array.isArray(o) && o.length === 0)].every(Boolean) ? {
560
600
  ...r,
561
- ...A(s, i, n)
601
+ ...E(o, i, n)
562
602
  } : {
563
603
  ...r,
564
- [i]: s
604
+ [i]: o
565
605
  };
566
606
  }, {});
567
607
  }
568
- function q(t, e, n = {}) {
608
+ function et(t, e, n = {}) {
569
609
  for (const r in t) {
570
- const o = t[r], s = e ? e + "." + r : r;
571
- o && typeof o == "object" && !Array.isArray(o) && !Object.keys(o).find((i) => i.startsWith("$")) ? q(o, s, n) : n[s] = o;
610
+ const s = t[r], o = e ? e + "." + r : r;
611
+ s && typeof s == "object" && !Array.isArray(s) && !Object.keys(s).find((i) => i.startsWith("$")) ? et(s, o, n) : n[o] = s;
572
612
  }
573
613
  return n;
574
614
  }
575
- function $t(t) {
615
+ function Jt(t) {
576
616
  const e = {};
577
617
  for (const n in t) {
578
618
  const r = n.split(".");
579
- let o = e;
580
- for (let s = 0; s < r.length; s++) {
581
- const i = r[s];
582
- s === r.length - 1 ? o[i] = t[n] : (o[i] = o[i] || {}, o = o[i]);
619
+ let s = e;
620
+ for (let o = 0; o < r.length; o++) {
621
+ const i = r[o];
622
+ o === r.length - 1 ? s[i] = t[n] : (s[i] = s[i] || {}, s = s[i]);
583
623
  }
584
624
  }
585
625
  return e;
586
626
  }
587
- const _t = "v3", V = (t) => typeof t == "number" && !isNaN(t) && t >= 0, O = (t) => {
627
+ const zt = "v3", D = (t) => typeof t == "number" && !isNaN(t) && t >= 0, U = (t) => {
588
628
  const {
589
629
  limit: e = 30,
590
630
  userAttributes: n,
591
631
  query: r,
592
- model: o,
593
- apiKey: s,
632
+ model: s,
633
+ apiKey: o,
594
634
  enrich: i,
595
635
  locale: u,
596
- apiVersion: w = _t,
636
+ apiVersion: b = zt,
597
637
  fields: p,
598
638
  omit: k,
599
639
  offset: l,
600
640
  cacheSeconds: h,
601
641
  staleCacheSeconds: g,
602
642
  sort: S,
603
- includeUnpublished: C,
604
- apiHost: tt
643
+ includeUnpublished: T,
644
+ apiHost: nt
605
645
  } = t;
606
- if (!s)
646
+ if (!o)
607
647
  throw new Error("Missing API key");
608
- if (!["v3"].includes(w))
609
- throw new Error(`Invalid apiVersion: expected 'v3', received '${w}'`);
610
- const et = e !== 1, nt = tt || "https://cdn.builder.io", a = new URL(`${nt}/api/${w}/content/${o}`);
611
- a.searchParams.set("apiKey", s), a.searchParams.set("limit", String(e)), a.searchParams.set("noTraverse", String(et)), a.searchParams.set("includeRefs", String(!0));
612
- const E = u || (n == null ? void 0 : n.locale);
648
+ if (!["v3"].includes(b))
649
+ throw new Error(`Invalid apiVersion: expected 'v3', received '${b}'`);
650
+ const rt = e !== 1, st = nt || "https://cdn.builder.io", a = new URL(`${st}/api/${b}/content/${s}`);
651
+ a.searchParams.set("apiKey", o), a.searchParams.set("limit", String(e)), a.searchParams.set("noTraverse", String(rt)), a.searchParams.set("includeRefs", String(!0));
652
+ const A = u || (n == null ? void 0 : n.locale);
613
653
  let m = n || {};
614
- if (E && (a.searchParams.set("locale", E), m = {
615
- locale: E,
654
+ if (A && (a.searchParams.set("locale", A), m = {
655
+ locale: A,
616
656
  ...m
617
- }), i && a.searchParams.set("enrich", String(i)), a.searchParams.set("omit", k || "meta.componentsUsed"), p && a.searchParams.set("fields", p), Number.isFinite(l) && l > -1 && a.searchParams.set("offset", String(Math.floor(l))), typeof C == "boolean" && a.searchParams.set("includeUnpublished", String(C)), h && V(h) && a.searchParams.set("cacheSeconds", String(h)), g && V(g) && a.searchParams.set("staleCacheSeconds", String(g)), S) {
618
- const d = A({
657
+ }), i && a.searchParams.set("enrich", String(i)), a.searchParams.set("omit", k || "meta.componentsUsed"), p && a.searchParams.set("fields", p), Number.isFinite(l) && l > -1 && a.searchParams.set("offset", String(Math.floor(l))), typeof T == "boolean" && a.searchParams.set("includeUnpublished", String(T)), h && D(h) && a.searchParams.set("cacheSeconds", String(h)), g && D(g) && a.searchParams.set("staleCacheSeconds", String(g)), S) {
658
+ const d = E({
619
659
  sort: S
620
660
  });
621
- for (const b in d)
622
- a.searchParams.set(b, JSON.stringify(d[b]));
661
+ for (const w in d)
662
+ a.searchParams.set(w, JSON.stringify(d[w]));
623
663
  }
624
664
  const x = {
625
- ...ft(),
626
- ...F(t.options || {})
665
+ ...gt(),
666
+ ...M(t.options || {})
627
667
  };
628
668
  m = {
629
669
  ...m,
630
- ...Ht(x)
670
+ ...Xt(x)
631
671
  };
632
- const T = A(x);
633
- for (const d in T)
634
- a.searchParams.set(d, String(T[d]));
672
+ const R = E(x);
673
+ for (const d in R)
674
+ a.searchParams.set(d, String(R[d]));
635
675
  if (Object.keys(m).length > 0 && a.searchParams.set("userAttributes", JSON.stringify(m)), r) {
636
- const d = q({
676
+ const d = et({
637
677
  query: r
638
678
  });
639
- for (const b in d)
640
- a.searchParams.set(b, JSON.stringify(d[b]));
679
+ for (const w in d)
680
+ a.searchParams.set(w, JSON.stringify(d[w]));
641
681
  }
642
682
  return a;
643
- }, Gt = (t) => {
683
+ }, Ht = (t) => {
644
684
  const e = {};
645
685
  for (const n in t)
646
686
  n.startsWith("userAttributes.") && (e[n] = t[n], delete t[n]);
647
687
  return e;
648
- }, Ht = (t) => {
688
+ }, Xt = (t) => {
649
689
  if (c() && t.preview === "BUILDER_STUDIO") {
650
690
  t["userAttributes.urlPath"] = window.location.pathname, t["userAttributes.host"] = window.location.host;
651
- const e = Gt(t), {
691
+ const e = Ht(t), {
652
692
  userAttributes: n
653
- } = $t(e);
693
+ } = Jt(e);
654
694
  return n;
655
695
  }
656
696
  return {};
657
- }, Jt = (t) => "results" in t;
658
- async function Xt(t) {
659
- const e = await Yt({
697
+ }, Qt = (t) => "results" in t;
698
+ async function Yt(t) {
699
+ const e = await te({
660
700
  ...t,
661
701
  limit: 1
662
702
  });
663
703
  return e && e[0] || null;
664
704
  }
665
- const zt = async (t) => {
705
+ const Zt = async (t) => {
666
706
  var i, u;
667
- const e = O(t), n = (i = t.fetch) != null ? i : Wt, r = {
707
+ const e = U(t), n = (i = t.fetch) != null ? i : Gt, r = {
668
708
  ...t.fetchOptions,
669
709
  headers: {
670
710
  ...(u = t.fetchOptions) == null ? void 0 : u.headers,
671
- ...j()
711
+ ...$()
672
712
  }
673
713
  };
674
714
  return await (await n(e.href, r)).json();
675
- }, Qt = async (t, e, n = O(t)) => {
676
- const r = Mt(t.canTrack);
715
+ }, qt = async (t, e, n = U(t)) => {
716
+ const r = Wt(t.canTrack);
677
717
  if (n.search.includes("preview="), !r || !(c() || v === "reactNative"))
678
718
  return e.results;
679
719
  try {
680
- const o = [];
681
- for (const s of e.results)
682
- o.push(await Nt({
683
- item: s,
720
+ const s = [];
721
+ for (const o of e.results)
722
+ s.push(await Kt({
723
+ item: o,
684
724
  canTrack: r
685
725
  }));
686
- e.results = o;
687
- } catch (o) {
688
- f.error("Could not process A/B tests. ", o);
726
+ e.results = s;
727
+ } catch (s) {
728
+ f.error("Could not process A/B tests. ", s);
689
729
  }
690
730
  return e.results;
691
731
  };
692
- async function Yt(t) {
693
- const e = O(t), n = await zt(t);
694
- if (!Jt(n))
732
+ async function te(t) {
733
+ const e = U(t), n = await Zt(t);
734
+ if (!Qt(n))
695
735
  throw f.error("Error fetching data. ", {
696
736
  url: e,
697
737
  content: n,
698
738
  options: t
699
739
  }), n;
700
- return Qt(t, n);
740
+ return qt(t, n);
701
741
  }
702
- const se = async (t) => {
703
- var r, o, s;
704
- const e = t.path || ((r = t.url) == null ? void 0 : r.pathname) || ((o = t.userAttributes) == null ? void 0 : o.urlPath), n = {
742
+ const ue = async (t) => {
743
+ var r, s, o;
744
+ const e = t.path || ((r = t.url) == null ? void 0 : r.pathname) || ((s = t.userAttributes) == null ? void 0 : s.urlPath), n = {
705
745
  ...t,
706
746
  apiKey: t.apiKey,
707
747
  model: t.model || "page",
@@ -711,38 +751,40 @@ const se = async (t) => {
711
751
  urlPath: e
712
752
  } : {}
713
753
  },
714
- options: M(t.searchParams || ((s = t.url) == null ? void 0 : s.searchParams) || t.options)
754
+ options: W(t.searchParams || ((o = t.url) == null ? void 0 : o.searchParams) || t.options)
715
755
  };
716
756
  return {
717
757
  apiKey: n.apiKey,
718
758
  model: n.model,
719
- content: await Xt(n)
759
+ content: await Yt(n)
720
760
  };
721
761
  };
722
762
  export {
723
763
  v as TARGET,
724
- Qt as _processContentResult,
764
+ qt as _processContentResult,
725
765
  xt as _track,
726
766
  y as checkIsDefined,
727
- Bt as createEditorListener,
728
- qt as createRegisterComponentMessage,
729
- se as fetchBuilderProps,
730
- Yt as fetchEntries,
731
- Xt as fetchOneEntry,
732
- M as getBuilderSearchParams,
733
- Mt as getDefaultCanTrack,
734
- ct as getUserAttributes,
735
- oe as handleABTestingSync,
767
+ Lt as createEditorListener,
768
+ ne as createRegisterComponentMessage,
769
+ ue as fetchBuilderProps,
770
+ te as fetchEntries,
771
+ Yt as fetchOneEntry,
772
+ W as getBuilderSearchParams,
773
+ Wt as getDefaultCanTrack,
774
+ lt as getUserAttributes,
775
+ ae as handleABTestingSync,
736
776
  c as isBrowser,
737
- st as isEditing,
738
- Zt as isPreviewing,
739
- Pt as logFetch,
777
+ at as isEditing,
778
+ ee as isPreviewing,
779
+ Ct as logFetch,
740
780
  f as logger,
741
- lt as register,
742
- ne as registerInsertMenu,
743
- N as serializeIncludingFunctions,
744
- te as setEditorSettings,
745
- Ut as setupBrowserForEditing,
746
- re as subscribeToEditor,
747
- ee as track
781
+ ft as register,
782
+ oe as registerInsertMenu,
783
+ j as serializeIncludingFunctions,
784
+ ce as setClientUserAttributes,
785
+ re as setEditorSettings,
786
+ Bt as setupBrowserForEditing,
787
+ ie as subscribeToEditor,
788
+ se as track,
789
+ tt as userAttributesService
748
790
  };