@builder.io/sdk-react 3.0.5 → 3.0.7

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 (81) hide show
  1. package/lib/browser/blocks-exports.cjs +167 -30
  2. package/lib/browser/blocks-exports.mjs +1370 -931
  3. package/lib/browser/index.cjs +1 -1
  4. package/lib/browser/index.mjs +17 -16
  5. package/lib/{edge/server-entry-67bfc740.js → browser/server-entry-20c79b90.js} +319 -274
  6. package/lib/browser/server-entry-762e29e0.cjs +2 -0
  7. package/lib/browser/server-entry.cjs +1 -1
  8. package/lib/browser/server-entry.mjs +1 -1
  9. package/lib/edge/{accordion-190c4426.cjs → accordion-071aa4f9.cjs} +1 -1
  10. package/lib/edge/{accordion-cd6e0363.js → accordion-22c2c037.js} +1 -1
  11. package/lib/edge/{blocks-fe2d7c1a.js → blocks-2989e629.js} +1343 -1318
  12. package/lib/edge/blocks-d3f37507.cjs +30 -0
  13. package/lib/edge/blocks-exports.cjs +1 -1
  14. package/lib/edge/blocks-exports.mjs +13 -12
  15. package/lib/edge/{button-6a27481c.js → button-2b5270c4.js} +2 -2
  16. package/lib/edge/{button-694fcd4f.cjs → button-a2cc6565.cjs} +1 -1
  17. package/lib/edge/{columns-90e6407e.js → columns-21b9be25.js} +3 -3
  18. package/lib/edge/{columns-b38bf0f7.cjs → columns-b7240242.cjs} +1 -1
  19. package/lib/edge/{content-variants-cbb89349.js → content-variants-88f4dc64.js} +165 -124
  20. package/lib/edge/content-variants-fdd5ee50.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-547645eb.cjs → form-77687883.cjs} +1 -1
  24. package/lib/edge/{form-16bbf874.js → form-d29f3cc0.js} +3 -3
  25. package/lib/edge/{get-class-prop-name-8b719c6b.js → get-class-prop-name-dbc5d99c.js} +1 -1
  26. package/lib/edge/{get-class-prop-name-58770197.cjs → get-class-prop-name-f597545d.cjs} +1 -1
  27. package/lib/edge/{img-8859c851.cjs → img-03f9002b.cjs} +1 -1
  28. package/lib/edge/{img-d3351743.js → img-fed70928.js} +1 -1
  29. package/lib/edge/index.cjs +1 -1
  30. package/lib/edge/index.mjs +18 -17
  31. package/lib/edge/{input-24c601b4.js → input-083c3c35.js} +1 -1
  32. package/lib/edge/{input-4fe0fc6d.cjs → input-1e548fd0.cjs} +1 -1
  33. package/lib/edge/personalization-container-bcff3433.js +384 -0
  34. package/lib/edge/personalization-container-dde10a09.cjs +138 -0
  35. package/lib/edge/{select-c73bd418.cjs → select-21e33225.cjs} +1 -1
  36. package/lib/edge/{select-af05377b.js → select-9f22c2ba.js} +1 -1
  37. package/lib/{browser/server-entry-785c0408.js → edge/server-entry-43a6f5be.js} +339 -298
  38. package/lib/edge/server-entry-ac35a5c8.cjs +2 -0
  39. package/lib/edge/server-entry.cjs +1 -1
  40. package/lib/edge/server-entry.mjs +1 -1
  41. package/lib/edge/{slot-759c8dd9.cjs → slot-a9f5d6c0.cjs} +1 -1
  42. package/lib/edge/{slot-32a4df0c.js → slot-ca171e8c.js} +3 -3
  43. package/lib/edge/{symbol-50360a37.js → symbol-8f6ff028.js} +2 -2
  44. package/lib/edge/{symbol-8d63aa7d.cjs → symbol-a2015c7e.cjs} +1 -1
  45. package/lib/edge/{tabs-6535c934.js → tabs-6b67fca2.js} +3 -3
  46. package/lib/edge/{tabs-fc6c1700.cjs → tabs-880c9088.cjs} +1 -1
  47. package/lib/node/blocks-exports.cjs +168 -31
  48. package/lib/node/blocks-exports.mjs +1343 -904
  49. package/lib/node/index.cjs +1 -1
  50. package/lib/node/index.mjs +17 -16
  51. package/lib/node/init.cjs +1 -1
  52. package/lib/node/init.mjs +3 -3
  53. package/lib/node/server-entry-0b433783.cjs +2 -0
  54. package/lib/node/{server-entry-ffc70868.js → server-entry-6626257d.js} +280 -237
  55. package/lib/node/server-entry.cjs +1 -1
  56. package/lib/node/server-entry.mjs +1 -1
  57. package/lib/node/{setIvm-4ce0db03.cjs → setIvm-49abbae6.cjs} +1 -1
  58. package/lib/node/{setIvm-2cea7252.js → setIvm-5cb298bf.js} +1 -1
  59. package/lib/node/setIvm.cjs +1 -1
  60. package/lib/node/setIvm.mjs +2 -2
  61. package/lib/node/{should-force-browser-runtime-in-node-d3e6df07.cjs → should-force-browser-runtime-in-node-11e8399e.cjs} +1 -1
  62. package/lib/node/{should-force-browser-runtime-in-node-c0d50009.js → should-force-browser-runtime-in-node-94f1a5b3.js} +1 -1
  63. package/package.json +1 -1
  64. package/types/blocks/personalization-container/component-info.d.ts +2 -0
  65. package/types/blocks/personalization-container/helpers/inlined-fns.d.ts +8 -0
  66. package/types/blocks/personalization-container/helpers.d.ts +27 -0
  67. package/types/blocks/personalization-container/index.d.ts +1 -0
  68. package/types/blocks/personalization-container/personalization-container.d.ts +4 -0
  69. package/types/blocks/personalization-container/personalization-container.types.d.ts +14 -0
  70. package/types/constants/device-sizes.d.ts +3 -2
  71. package/types/constants/sdk-version.d.ts +1 -1
  72. package/types/helpers/user-attributes.d.ts +17 -0
  73. package/types/index-helpers/blocks-exports.d.ts +1 -0
  74. package/types/types/builder-block.d.ts +0 -1
  75. package/types/types/builder-content.d.ts +1 -0
  76. package/types/types/input.d.ts +1 -0
  77. package/lib/browser/server-entry-101d66b8.cjs +0 -2
  78. package/lib/edge/blocks-766e8d45.cjs +0 -30
  79. package/lib/edge/content-variants-4e385c19.cjs +0 -134
  80. package/lib/edge/server-entry-3c7fa63a.cjs +0 -2
  81. package/lib/node/server-entry-95273908.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 R = {};
71
+ function ft(t, e) {
72
+ t === "plugin" && (e = j(e));
73
+ let n = R[t];
74
+ if (n || (n = R[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.5", j = () => ({
114
+ return W(t);
115
+ }, _ = "3.0.7", $ = () => ({
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 X = "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: X,
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: X,
193
193
  value: t,
194
194
  canTrack: e
195
- }), J = () => c() && typeof localStorage != "undefined" ? localStorage : void 0, vt = ({
195
+ }), z = () => 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 = z()) == 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 = z()) == null || r.setItem(t, n));
214
+ } catch (s) {
215
+ console.debug("[LocalStorage] SET error: ", s);
216
216
  }
217
- }, X = "builderVisitorId", kt = ({
217
+ }, H = "builderVisitorId", Et = ({
218
218
  canTrack: t
219
219
  }) => {
220
220
  if (!t)
221
221
  return;
222
- const e = vt({
223
- key: X,
222
+ const e = kt({
223
+ key: H,
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({
239
- key: X,
238
+ }) => At({
239
+ key: H,
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
+ }), Bt = ["*.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 || Bt).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,21 @@ const ne = () => {
340
340
  }]
341
341
  });
342
342
  };
343
- let L = !1;
344
- const Ut = (t = {}) => {
343
+ let N = !1;
344
+ const Rt = (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
+ supportsXSmallBreakpoint: !0,
357
+ blockLevelPersonalization: !0
356
358
  }
357
359
  }, "*"), (n = window.parent) == null || n.postMessage({
358
360
  type: "builder.updateContent",
@@ -360,23 +362,23 @@ const Ut = (t = {}) => {
360
362
  options: t
361
363
  }
362
364
  }, "*"), window.addEventListener("message", (r) => {
363
- var s, i;
364
- if (!z(t.trustedHosts, r))
365
+ var o, i;
366
+ if (!Q(t.trustedHosts, r))
365
367
  return;
366
368
  const {
367
- data: o
369
+ data: s
368
370
  } = r;
369
- if (o != null && o.type)
370
- switch (o.type) {
371
+ if (s != null && s.type)
372
+ switch (s.type) {
371
373
  case "builder.evaluate": {
372
- const u = o.data.text, w = o.data.arguments || [], p = o.data.id, k = new Function(u);
374
+ const u = s.data.text, b = s.data.arguments || [], p = s.data.id, k = new Function(u);
373
375
  let l, h = null;
374
376
  try {
375
- l = k.apply(null, w);
377
+ l = k.apply(null, b);
376
378
  } catch (g) {
377
379
  h = g;
378
380
  }
379
- h ? (s = window.parent) == null || s.postMessage({
381
+ h ? (o = window.parent) == null || o.postMessage({
380
382
  type: "builder.evaluateError",
381
383
  data: {
382
384
  id: p,
@@ -402,38 +404,38 @@ const Ut = (t = {}) => {
402
404
  }
403
405
  }
404
406
  })));
405
- }, Bt = ({
407
+ }, Lt = ({
406
408
  model: t,
407
409
  trustedHosts: e,
408
410
  callbacks: n
409
411
  }) => (r) => {
410
- if (!z(e, r))
412
+ if (!Q(e, r))
411
413
  return;
412
414
  const {
413
- data: o
415
+ data: s
414
416
  } = r;
415
- if (o)
416
- switch (o.type) {
417
+ if (s)
418
+ switch (s.type) {
417
419
  case "builder.configureSdk": {
418
- n.configureSdk(o.data);
420
+ n.configureSdk(s.data);
419
421
  break;
420
422
  }
421
423
  case "builder.triggerAnimation": {
422
- n.animation(o.data);
424
+ n.animation(s.data);
423
425
  break;
424
426
  }
425
427
  case "builder.contentUpdate": {
426
- const s = o.data, i = s.key || s.alias || s.entry || s.modelName, u = s.data;
428
+ const o = s.data, i = o.key || o.alias || o.entry || o.modelName, u = o.data;
427
429
  i === t && n.contentUpdate(u);
428
430
  break;
429
431
  }
430
432
  }
431
- }, re = (t, e, n) => {
433
+ }, ie = (t, e, n) => {
432
434
  if (!c)
433
435
  return f.warn("`subscribeToEditor` only works in the browser. It currently seems to be running on the server."), () => {
434
436
  };
435
- Ut();
436
- const r = Bt({
437
+ Rt();
438
+ const r = Lt({
437
439
  callbacks: {
438
440
  contentUpdate: e,
439
441
  animation: () => {
@@ -447,45 +449,45 @@ const Ut = (t = {}) => {
447
449
  return window.addEventListener("message", r), () => {
448
450
  window.removeEventListener("message", r);
449
451
  };
450
- }, Rt = "builder.tests", P = (t) => `${Rt}.${t}`, Lt = ({
452
+ }, Vt = "builder.tests", C = (t) => `${Vt}.${t}`, Nt = ({
451
453
  contentId: t
452
- }) => $({
453
- name: P(t),
454
+ }) => G({
455
+ name: C(t),
454
456
  canTrack: !0
455
- }), Vt = ({
457
+ }), Ft = ({
456
458
  contentId: t
457
- }) => W({
458
- name: P(t),
459
+ }) => O({
460
+ name: C(t),
459
461
  canTrack: !0
460
- }), Ft = ({
462
+ }), Dt = ({
461
463
  contentId: t,
462
464
  value: e
463
- }) => _({
464
- name: P(t),
465
+ }) => P({
466
+ name: C(t),
465
467
  value: e,
466
468
  canTrack: !0
467
- }), Q = (t) => y(t.id) && y(t.variations) && Object.keys(t.variations).length > 0, Dt = ({
469
+ }), Y = (t) => y(t.id) && y(t.variations) && Object.keys(t.variations).length > 0, Mt = ({
468
470
  id: t,
469
471
  variations: e
470
472
  }) => {
471
- var o;
473
+ var s;
472
474
  let n = 0;
473
475
  const r = Math.random();
474
- for (const s in e) {
475
- const i = (o = e[s]) == null ? void 0 : o.testRatio;
476
+ for (const o in e) {
477
+ const i = (s = e[o]) == null ? void 0 : s.testRatio;
476
478
  if (n += i, r < n)
477
- return s;
479
+ return o;
478
480
  }
479
481
  return t;
480
- }, Y = (t) => {
481
- const e = Dt(t);
482
- return Ft({
482
+ }, Z = (t) => {
483
+ const e = Mt(t);
484
+ return Dt({
483
485
  contentId: t.id,
484
486
  value: e
485
487
  }).catch((n) => {
486
488
  f.error("could not store A/B test variation: ", n);
487
489
  }), e;
488
- }, Z = ({
490
+ }, q = ({
489
491
  item: t,
490
492
  testGroupId: e
491
493
  }) => {
@@ -499,7 +501,7 @@ const Ut = (t = {}) => {
499
501
  testVariationId: n.id,
500
502
  testVariationName: n.name || (n.id === t.id ? "Default" : "")
501
503
  };
502
- }, oe = ({
504
+ }, ae = ({
503
505
  item: t,
504
506
  canTrack: e
505
507
  }) => {
@@ -507,14 +509,14 @@ const Ut = (t = {}) => {
507
509
  return t;
508
510
  if (!t)
509
511
  return;
510
- if (!Q(t))
512
+ if (!Y(t))
511
513
  return t;
512
- const n = Vt({
514
+ const n = Ft({
513
515
  contentId: t.id
514
- }) || Y({
516
+ }) || Z({
515
517
  variations: t.variations,
516
518
  id: t.id
517
- }), r = Z({
519
+ }), r = q({
518
520
  item: t,
519
521
  testGroupId: n
520
522
  });
@@ -522,125 +524,164 @@ const Ut = (t = {}) => {
522
524
  ...t,
523
525
  ...r
524
526
  };
525
- }, Nt = async ({
527
+ }, Kt = async ({
526
528
  item: t,
527
529
  canTrack: e
528
530
  }) => {
529
- if (!e || !Q(t))
531
+ if (!e || !Y(t))
530
532
  return t;
531
- const r = await Lt({
533
+ const r = await Nt({
532
534
  contentId: t.id
533
- }) || Y({
535
+ }) || Z({
534
536
  variations: t.variations,
535
537
  id: t.id
536
- }), o = Z({
538
+ }), s = q({
537
539
  item: t,
538
540
  testGroupId: r
539
541
  });
540
542
  return {
541
543
  ...t,
542
- ...o
544
+ ...s
545
+ };
546
+ }, F = "builder.userAttributes";
547
+ function jt() {
548
+ let t = !0;
549
+ const e = /* @__PURE__ */ new Set();
550
+ return {
551
+ setUserAttributes(n) {
552
+ if (!c())
553
+ return;
554
+ const r = {
555
+ ...this.getUserAttributes(),
556
+ ...n
557
+ };
558
+ P({
559
+ name: F,
560
+ value: JSON.stringify(r),
561
+ canTrack: t
562
+ }), e.forEach((s) => s(r));
563
+ },
564
+ getUserAttributes() {
565
+ return c() ? JSON.parse(O({
566
+ name: F,
567
+ canTrack: t
568
+ }) || "{}") : {};
569
+ },
570
+ subscribeOnUserAttributesChange(n) {
571
+ return e.add(n), () => {
572
+ e.delete(n);
573
+ };
574
+ },
575
+ setCanTrack(n) {
576
+ t = n;
577
+ }
543
578
  };
544
- }, Mt = (t) => y(t) ? t : !0;
545
- function Kt() {
579
+ }
580
+ const tt = jt(), ce = (t) => {
581
+ tt.setUserAttributes(t);
582
+ }, Wt = (t) => {
583
+ const e = y(t) ? t : !0;
584
+ return tt.setCanTrack(e), e;
585
+ };
586
+ function _t() {
546
587
  return typeof globalThis != "undefined" ? globalThis : typeof window != "undefined" ? window : typeof global != "undefined" ? global : typeof self != "undefined" ? self : globalThis;
547
588
  }
548
- function jt() {
549
- const t = Kt().fetch;
589
+ function $t() {
590
+ const t = _t().fetch;
550
591
  if (typeof t == "undefined")
551
592
  throw console.warn(`Builder SDK could not find a global fetch function. Make sure you have a polyfill for fetch in your project.
552
593
  For more information, read https://github.com/BuilderIO/this-package-uses-fetch`), new Error("Builder SDK could not find a global `fetch` function");
553
594
  return t;
554
595
  }
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) ? {
596
+ const Gt = $t();
597
+ function E(t, e = null, n = ".") {
598
+ return Object.keys(t).reduce((r, s) => {
599
+ const o = t[s], i = [e, s].filter(Boolean).join(n);
600
+ return [typeof o == "object", o !== null, !(Array.isArray(o) && o.length === 0)].every(Boolean) ? {
560
601
  ...r,
561
- ...A(s, i, n)
602
+ ...E(o, i, n)
562
603
  } : {
563
604
  ...r,
564
- [i]: s
605
+ [i]: o
565
606
  };
566
607
  }, {});
567
608
  }
568
- function q(t, e, n = {}) {
609
+ function et(t, e, n = {}) {
569
610
  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;
611
+ const s = t[r], o = e ? e + "." + r : r;
612
+ s && typeof s == "object" && !Array.isArray(s) && !Object.keys(s).find((i) => i.startsWith("$")) ? et(s, o, n) : n[o] = s;
572
613
  }
573
614
  return n;
574
615
  }
575
- function $t(t) {
616
+ function Jt(t) {
576
617
  const e = {};
577
618
  for (const n in t) {
578
619
  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]);
620
+ let s = e;
621
+ for (let o = 0; o < r.length; o++) {
622
+ const i = r[o];
623
+ o === r.length - 1 ? s[i] = t[n] : (s[i] = s[i] || {}, s = s[i]);
583
624
  }
584
625
  }
585
626
  return e;
586
627
  }
587
- const _t = "v3", V = (t) => typeof t == "number" && !isNaN(t) && t >= 0, O = (t) => {
628
+ const Xt = "v3", D = (t) => typeof t == "number" && !isNaN(t) && t >= 0, U = (t) => {
588
629
  const {
589
630
  limit: e = 30,
590
631
  userAttributes: n,
591
632
  query: r,
592
- model: o,
593
- apiKey: s,
633
+ model: s,
634
+ apiKey: o,
594
635
  enrich: i,
595
636
  locale: u,
596
- apiVersion: w = _t,
637
+ apiVersion: b = Xt,
597
638
  fields: p,
598
639
  omit: k,
599
640
  offset: l,
600
641
  cacheSeconds: h,
601
642
  staleCacheSeconds: g,
602
643
  sort: S,
603
- includeUnpublished: C,
604
- apiHost: tt
644
+ includeUnpublished: T,
645
+ apiHost: nt
605
646
  } = t;
606
- if (!s)
647
+ if (!o)
607
648
  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);
649
+ if (!["v3"].includes(b))
650
+ throw new Error(`Invalid apiVersion: expected 'v3', received '${b}'`);
651
+ const rt = e !== 1, st = nt || "https://cdn.builder.io", a = new URL(`${st}/api/${b}/content/${s}`);
652
+ a.searchParams.set("apiKey", o), a.searchParams.set("limit", String(e)), a.searchParams.set("noTraverse", String(rt)), a.searchParams.set("includeRefs", String(!0));
653
+ const A = u || (n == null ? void 0 : n.locale);
613
654
  let m = n || {};
614
- if (E && (a.searchParams.set("locale", E), m = {
615
- locale: E,
655
+ if (A && (a.searchParams.set("locale", A), m = {
656
+ locale: A,
616
657
  ...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({
658
+ }), 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) {
659
+ const d = E({
619
660
  sort: S
620
661
  });
621
- for (const b in d)
622
- a.searchParams.set(b, JSON.stringify(d[b]));
662
+ for (const w in d)
663
+ a.searchParams.set(w, JSON.stringify(d[w]));
623
664
  }
624
665
  const x = {
625
- ...ft(),
626
- ...F(t.options || {})
666
+ ...gt(),
667
+ ...M(t.options || {})
627
668
  };
628
669
  m = {
629
670
  ...m,
630
671
  ...Ht(x)
631
672
  };
632
- const T = A(x);
633
- for (const d in T)
634
- a.searchParams.set(d, String(T[d]));
673
+ const B = E(x);
674
+ for (const d in B)
675
+ a.searchParams.set(d, String(B[d]));
635
676
  if (Object.keys(m).length > 0 && a.searchParams.set("userAttributes", JSON.stringify(m)), r) {
636
- const d = q({
677
+ const d = et({
637
678
  query: r
638
679
  });
639
- for (const b in d)
640
- a.searchParams.set(b, JSON.stringify(d[b]));
680
+ for (const w in d)
681
+ a.searchParams.set(w, JSON.stringify(d[w]));
641
682
  }
642
683
  return a;
643
- }, Gt = (t) => {
684
+ }, zt = (t) => {
644
685
  const e = {};
645
686
  for (const n in t)
646
687
  n.startsWith("userAttributes.") && (e[n] = t[n], delete t[n]);
@@ -648,60 +689,60 @@ const _t = "v3", V = (t) => typeof t == "number" && !isNaN(t) && t >= 0, O = (t)
648
689
  }, Ht = (t) => {
649
690
  if (c() && t.preview === "BUILDER_STUDIO") {
650
691
  t["userAttributes.urlPath"] = window.location.pathname, t["userAttributes.host"] = window.location.host;
651
- const e = Gt(t), {
692
+ const e = zt(t), {
652
693
  userAttributes: n
653
- } = $t(e);
694
+ } = Jt(e);
654
695
  return n;
655
696
  }
656
697
  return {};
657
- }, Jt = (t) => "results" in t;
658
- async function Xt(t) {
659
- const e = await Yt({
698
+ }, Qt = (t) => "results" in t;
699
+ async function Yt(t) {
700
+ const e = await te({
660
701
  ...t,
661
702
  limit: 1
662
703
  });
663
704
  return e && e[0] || null;
664
705
  }
665
- const zt = async (t) => {
706
+ const Zt = async (t) => {
666
707
  var i, u;
667
- const e = O(t), n = (i = t.fetch) != null ? i : Wt, r = {
708
+ const e = U(t), n = (i = t.fetch) != null ? i : Gt, r = {
668
709
  ...t.fetchOptions,
669
710
  headers: {
670
711
  ...(u = t.fetchOptions) == null ? void 0 : u.headers,
671
- ...j()
712
+ ...$()
672
713
  }
673
714
  };
674
715
  return await (await n(e.href, r)).json();
675
- }, Qt = async (t, e, n = O(t)) => {
676
- const r = Mt(t.canTrack);
716
+ }, qt = async (t, e, n = U(t)) => {
717
+ const r = Wt(t.canTrack);
677
718
  if (n.search.includes("preview="), !r || !(c() || v === "reactNative"))
678
719
  return e.results;
679
720
  try {
680
- const o = [];
681
- for (const s of e.results)
682
- o.push(await Nt({
683
- item: s,
721
+ const s = [];
722
+ for (const o of e.results)
723
+ s.push(await Kt({
724
+ item: o,
684
725
  canTrack: r
685
726
  }));
686
- e.results = o;
687
- } catch (o) {
688
- f.error("Could not process A/B tests. ", o);
727
+ e.results = s;
728
+ } catch (s) {
729
+ f.error("Could not process A/B tests. ", s);
689
730
  }
690
731
  return e.results;
691
732
  };
692
- async function Yt(t) {
693
- const e = O(t), n = await zt(t);
694
- if (!Jt(n))
733
+ async function te(t) {
734
+ const e = U(t), n = await Zt(t);
735
+ if (!Qt(n))
695
736
  throw f.error("Error fetching data. ", {
696
737
  url: e,
697
738
  content: n,
698
739
  options: t
699
740
  }), n;
700
- return Qt(t, n);
741
+ return qt(t, n);
701
742
  }
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 = {
743
+ const ue = async (t) => {
744
+ var r, s, o;
745
+ const e = t.path || ((r = t.url) == null ? void 0 : r.pathname) || ((s = t.userAttributes) == null ? void 0 : s.urlPath), n = {
705
746
  ...t,
706
747
  apiKey: t.apiKey,
707
748
  model: t.model || "page",
@@ -711,39 +752,41 @@ const se = async (t) => {
711
752
  urlPath: e
712
753
  } : {}
713
754
  },
714
- options: M(t.searchParams || ((s = t.url) == null ? void 0 : s.searchParams) || t.options)
755
+ options: W(t.searchParams || ((o = t.url) == null ? void 0 : o.searchParams) || t.options)
715
756
  };
716
757
  return {
717
758
  apiKey: n.apiKey,
718
759
  model: n.model,
719
- content: await Xt(n)
760
+ content: await Yt(n)
720
761
  };
721
762
  };
722
763
  export {
723
764
  I as MSG_PREFIX,
724
765
  v as TARGET,
725
- Qt as _processContentResult,
766
+ qt as _processContentResult,
726
767
  xt as _track,
727
768
  y as checkIsDefined,
728
- Bt as createEditorListener,
729
- qt as createRegisterComponentMessage,
730
- se as fetchBuilderProps,
731
- Yt as fetchEntries,
732
- Xt as fetchOneEntry,
733
- M as getBuilderSearchParams,
734
- Mt as getDefaultCanTrack,
735
- ct as getUserAttributes,
736
- oe as handleABTestingSync,
769
+ Lt as createEditorListener,
770
+ ne as createRegisterComponentMessage,
771
+ ue as fetchBuilderProps,
772
+ te as fetchEntries,
773
+ Yt as fetchOneEntry,
774
+ W as getBuilderSearchParams,
775
+ Wt as getDefaultCanTrack,
776
+ lt as getUserAttributes,
777
+ ae as handleABTestingSync,
737
778
  c as isBrowser,
738
- st as isEditing,
739
- Zt as isPreviewing,
740
- Pt as logFetch,
779
+ at as isEditing,
780
+ ee as isPreviewing,
781
+ Ct as logFetch,
741
782
  f as logger,
742
- lt as register,
743
- ne as registerInsertMenu,
744
- N as serializeIncludingFunctions,
745
- te as setEditorSettings,
746
- Ut as setupBrowserForEditing,
747
- re as subscribeToEditor,
748
- ee as track
783
+ ft as register,
784
+ oe as registerInsertMenu,
785
+ j as serializeIncludingFunctions,
786
+ ce as setClientUserAttributes,
787
+ re as setEditorSettings,
788
+ Rt as setupBrowserForEditing,
789
+ ie as subscribeToEditor,
790
+ se as track,
791
+ tt as userAttributesService
749
792
  };