@builder.io/sdk-react 3.0.1 → 3.0.2

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 (83) hide show
  1. package/lib/browser/blocks-exports.cjs +21 -21
  2. package/lib/browser/blocks-exports.mjs +657 -658
  3. package/lib/browser/index.cjs +1 -1
  4. package/lib/browser/index.mjs +1 -1
  5. package/lib/browser/server-entry-75ce8600.cjs +2 -0
  6. package/lib/browser/server-entry-a2495a20.js +748 -0
  7. package/lib/browser/server-entry.cjs +1 -1
  8. package/lib/browser/server-entry.mjs +1 -1
  9. package/lib/edge/{accordion-decb24cf.cjs → accordion-1c16f65e.cjs} +1 -1
  10. package/lib/edge/{accordion-1572cb0d.js → accordion-c020e15b.js} +1 -1
  11. package/lib/edge/blocks-27ac5b23.js +3534 -0
  12. package/lib/edge/blocks-cd946d16.cjs +30 -0
  13. package/lib/edge/blocks-exports.cjs +1 -1
  14. package/lib/edge/blocks-exports.mjs +2 -2
  15. package/lib/edge/{button-0709893d.js → button-5cdb4f26.js} +2 -2
  16. package/lib/edge/{button-cf66cf8d.cjs → button-8572fca5.cjs} +1 -1
  17. package/lib/edge/{columns-e234acc6.js → columns-3ac1fa96.js} +5 -6
  18. package/lib/edge/columns-c8a9cb89.cjs +28 -0
  19. package/lib/edge/{content-variants-3ab9230f.js → content-variants-23c8eec6.js} +209 -205
  20. package/lib/edge/content-variants-caa23bf7.cjs +134 -0
  21. package/lib/edge/form-3d9bf265.cjs +1 -0
  22. package/lib/edge/{form-27bcc23a.js → form-7fc5691b.js} +14 -15
  23. package/lib/edge/{get-class-prop-name-0b3d48a4.cjs → get-class-prop-name-29fd576a.cjs} +1 -1
  24. package/lib/edge/{get-class-prop-name-a3bd113c.js → get-class-prop-name-a4845b04.js} +1 -1
  25. package/lib/edge/{img-e0c8f7f9.cjs → img-102acaa2.cjs} +1 -1
  26. package/lib/edge/{img-80be6914.js → img-388698cb.js} +1 -1
  27. package/lib/edge/index.cjs +1 -1
  28. package/lib/edge/index.mjs +1 -1
  29. package/lib/edge/{input-f5ba6b1e.cjs → input-10e350a9.cjs} +1 -1
  30. package/lib/edge/{input-920922d5.js → input-5484e9e7.js} +1 -1
  31. package/lib/edge/{select-673864b7.js → select-b8406bcf.js} +1 -1
  32. package/lib/edge/{select-2ced1aca.cjs → select-f11be7a7.cjs} +1 -1
  33. package/lib/edge/server-entry-1879cbc4.cjs +2 -0
  34. package/lib/edge/server-entry-7ce03a4e.js +746 -0
  35. package/lib/edge/server-entry.cjs +1 -1
  36. package/lib/edge/server-entry.mjs +1 -1
  37. package/lib/edge/{slot-68f2b177.js → slot-23f75377.js} +5 -6
  38. package/lib/edge/slot-4ab390ec.cjs +1 -0
  39. package/lib/edge/{symbol-7e260a70.js → symbol-2eafb4e0.js} +2 -2
  40. package/lib/edge/{symbol-ded9dba9.cjs → symbol-fa343d77.cjs} +1 -1
  41. package/lib/edge/{tabs-5156494d.js → tabs-4c9c64f6.js} +15 -16
  42. package/lib/edge/tabs-7d258d82.cjs +1 -0
  43. package/lib/edge/text-5915f038.js +17 -0
  44. package/lib/edge/text-e6dbb721.cjs +1 -0
  45. package/lib/node/blocks-exports.cjs +22 -22
  46. package/lib/node/blocks-exports.mjs +542 -543
  47. package/lib/node/index.cjs +1 -1
  48. package/lib/node/index.mjs +3 -3
  49. package/lib/node/init.cjs +1 -1
  50. package/lib/node/init.mjs +3 -3
  51. package/lib/node/server-entry-2b263dde.js +749 -0
  52. package/lib/node/server-entry-ec330556.cjs +2 -0
  53. package/lib/node/server-entry.cjs +1 -1
  54. package/lib/node/server-entry.mjs +1 -1
  55. package/lib/node/{setIvm-aba1bed8.cjs → setIvm-1e6f0b60.cjs} +1 -1
  56. package/lib/node/{setIvm-8b303d4e.js → setIvm-7eb67cd6.js} +1 -1
  57. package/lib/node/setIvm.cjs +1 -1
  58. package/lib/node/setIvm.mjs +2 -2
  59. package/lib/node/{should-force-browser-runtime-in-node-491a9b55.cjs → should-force-browser-runtime-in-node-23218b19.cjs} +1 -1
  60. package/lib/node/{should-force-browser-runtime-in-node-0a037bde.js → should-force-browser-runtime-in-node-cdae9360.js} +1 -1
  61. package/package.json +1 -1
  62. package/types/constants/sdk-version.d.ts +1 -1
  63. package/types/functions/get-block-component-options.d.ts +2 -1
  64. package/types/functions/get-processed-block.d.ts +1 -6
  65. package/types/helpers/flatten.d.ts +6 -0
  66. package/types/server-index.d.ts +1 -1
  67. package/lib/browser/server-entry-017b8439.js +0 -717
  68. package/lib/browser/server-entry-9f80066e.cjs +0 -2
  69. package/lib/edge/blocks-9c35be74.js +0 -916
  70. package/lib/edge/blocks-d3823063.cjs +0 -12
  71. package/lib/edge/columns-2fdf0656.cjs +0 -28
  72. package/lib/edge/content-variants-616a6c0f.cjs +0 -134
  73. package/lib/edge/evaluate-ccf1ad96.cjs +0 -19
  74. package/lib/edge/evaluate-f0b82ede.js +0 -2612
  75. package/lib/edge/form-7c61693d.cjs +0 -1
  76. package/lib/edge/server-entry-6c0047ea.js +0 -715
  77. package/lib/edge/server-entry-de142ee8.cjs +0 -2
  78. package/lib/edge/slot-cc8b4e5b.cjs +0 -1
  79. package/lib/edge/tabs-d422921f.cjs +0 -1
  80. package/lib/edge/text-27a917c0.js +0 -37
  81. package/lib/edge/text-5796f488.cjs +0 -1
  82. package/lib/node/server-entry-e91e06a3.cjs +0 -2
  83. package/lib/node/server-entry-fdedc1aa.js +0 -718
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("react/jsx-runtime"),h=require("react"),m=require("./blocks-d3823063.cjs"),A=require("./evaluate-ccf1ad96.cjs"),T=require("./server-entry-de142ee8.cjs");require("./blocks-exports.cjs");require("./get-class-prop-name-0b3d48a4.cjs");require("./dynamic-renderer-b29b45ca.cjs");const B=["production","qa","test","development","dev","cdn-qa","cloud","fast","cdn2","cdn-prod"],O=()=>{const e=process.env.NODE_ENV||"production";return B.includes(e)?e:"production"};function J(e){var S,x;const o=h.useRef(null),[q,g]=h.useState(()=>"unsubmitted"),[v,y]=h.useState(()=>null),[R,F]=h.useState(()=>"");function N(i){var l,d;const a={...e.builderContext.rootState,...i};e.builderContext.rootSetState?(d=(l=e.builderContext).rootSetState)==null||d.call(l,a):e.builderContext.rootState=a}function f(){return T.isEditing()&&e.previewState||q}function w(i){var l;const a=e.sendWithJs||e.sendSubmissionsTo==="email";if(e.sendSubmissionsTo==="zapier")i.preventDefault();else if(a){if(!(e.action||e.sendSubmissionsTo==="email")){i.preventDefault();return}i.preventDefault();const d=i.currentTarget||i.target,E=e.customHeaders||{};let b;const P=new FormData(d),k=Array.from(d.querySelectorAll("input,select,textarea")).filter(t=>!!t.name).map(t=>{let n;const c=t.name;if(t instanceof HTMLInputElement)if(t.type==="radio"){if(t.checked)return n=t.name,{key:c,value:n}}else if(t.type==="checkbox")n=t.checked;else if(t.type==="number"||t.type==="range"){const r=t.valueAsNumber;isNaN(r)||(n=r)}else t.type==="file"?n=t.files:n=t.value;else n=t.value;return{key:c,value:n}});let u=e.contentType;if(e.sendSubmissionsTo==="email"&&(u="multipart/form-data"),Array.from(k).forEach(({value:t})=>{(t instanceof File||Array.isArray(t)&&t[0]instanceof File||t instanceof FileList)&&(u="multipart/form-data")}),u!=="application/json")b=P;else{const t={};Array.from(k).forEach(({value:n,key:c})=>{m.set(t,c,n)}),b=JSON.stringify(t)}u&&u!=="multipart/form-data"&&(a&&((l=e.action)!=null&&l.includes("zapier.com"))||(E["content-type"]=u));const C=new CustomEvent("presubmit",{detail:{body:b}});if(o.current&&(o.current.dispatchEvent(C),C.defaultPrevented))return;g("sending");const D=`${O()==="dev"?"http://localhost:5000":"https://builder.io"}/api/v1/form-submit?apiKey=${e.builderContext.apiKey}&to=${btoa(e.sendSubmissionsToEmail||"")}&name=${encodeURIComponent(e.name||"")}`,j=e.sendSubmissionsTo==="email"?D:e.action;T.logFetch(j),fetch(j,{body:b,headers:E,method:e.method||"post"}).then(async t=>{let n;const c=t.headers.get("content-type");if(c&&c.indexOf("application/json")!==-1?n=await t.json():n=await t.text(),!t.ok&&e.errorMessagePath){let r=A.get(n,e.errorMessagePath);r&&(typeof r!="string"&&(r=JSON.stringify(r)),F(r),N({formErrorMessage:r}))}if(y(n),g(t.ok?"success":"error"),t.ok){const r=new CustomEvent("submit:success",{detail:{res:t,body:n}});if(o.current){if(o.current.dispatchEvent(r),r.defaultPrevented)return;e.resetFormOnSubmit!==!1&&o.current.reset()}if(e.successUrl)if(o.current){const M=new CustomEvent("route",{detail:{url:e.successUrl}});o.current.dispatchEvent(M),M.defaultPrevented||(location.href=e.successUrl)}else location.href=e.successUrl}},t=>{const n=new CustomEvent("submit:error",{detail:{error:t}});o.current&&(o.current.dispatchEvent(n),n.defaultPrevented)||(y(t),g("error"))})}}return s.jsxs(s.Fragment,{children:[" ",s.jsxs("form",{validate:e.validate,ref:o,action:!e.sendWithJs&&e.action,method:e.method,name:e.name,onSubmit:i=>w(i),...e.attributes,children:[e.builderBlock&&e.builderBlock.children?s.jsx(s.Fragment,{children:(x=(S=e.builderBlock)==null?void 0:S.children)==null?void 0:x.map((i,a)=>s.jsx(m.Block,{block:i,context:e.builderContext,registeredComponents:e.builderComponents,linkComponent:e.builderLinkComponent},`form-block-${a}`))}):null,f()==="error"?s.jsx(m.Blocks,{path:"errorMessage",blocks:e.errorMessage,context:e.builderContext}):null,f()==="sending"?s.jsx(m.Blocks,{path:"sendingMessage",blocks:e.sendingMessage,context:e.builderContext}):null,f()==="error"&&v?s.jsx("pre",{className:"builder-form-error-text pre-135d4696",children:JSON.stringify(v,null,2)}):null,f()==="success"?s.jsx(m.Blocks,{path:"successMessage",blocks:e.successMessage,context:e.builderContext}):null]})," ",s.jsx("style",{children:".pre-135d4696 { padding: 10px; color: red; text-align: center; }"})," "]})}exports.default=J;
@@ -1,715 +0,0 @@
1
- const b = "react", re = (e) => {
2
- const t = {};
3
- return e.forEach((n, r) => {
4
- t[r] = n;
5
- }), t;
6
- }, V = (e) => e instanceof URLSearchParams ? re(e) : e, F = (e) => typeof e == "string" ? e : e instanceof URLSearchParams ? e.toString() : new URLSearchParams(e).toString();
7
- function c() {
8
- return typeof window != "undefined" && typeof document != "undefined";
9
- }
10
- function oe() {
11
- return c() && window.self !== window.top;
12
- }
13
- function se(e) {
14
- return oe() && // accessing window.location.search is safe here because `isIframe()` is only `true` if we're in a browser.
15
- F(e || window.location.search).indexOf("builder.frameEditing=") !== -1;
16
- }
17
- function Je(e) {
18
- const t = e || (c() ? window.location.search : void 0);
19
- return t ? F(t).indexOf("builder.preview=") !== -1 : !1;
20
- }
21
- const qe = (e) => ({
22
- type: "builder.registerComponent",
23
- data: M(e)
24
- }), ie = (e) => {
25
- const t = e.toString().trim(), n = /^[a-zA-Z0-9_]+\s*=>/i.test(t);
26
- return `return (${!t.startsWith("function") && !t.startsWith("async") && !t.startsWith("(") && !n ? "function " : ""}${t}).apply(this, arguments)`;
27
- };
28
- function M(e) {
29
- return JSON.parse(JSON.stringify(e, (t, n) => typeof n == "function" ? ie(n) : n));
30
- }
31
- const T = {};
32
- function ae(e, t) {
33
- e === "plugin" && (t = M(t));
34
- let n = T[e];
35
- if (n || (n = T[e] = []), n.push(t), c()) {
36
- const r = {
37
- type: "builder.register",
38
- data: {
39
- type: e,
40
- info: t
41
- }
42
- };
43
- try {
44
- parent.postMessage(r, "*"), parent !== window && window.postMessage(r, "*");
45
- } catch (o) {
46
- console.debug("Could not postmessage", o);
47
- }
48
- }
49
- }
50
- const B = {};
51
- function Qe(e) {
52
- if (c()) {
53
- Object.assign(B, e);
54
- const t = {
55
- type: "builder.settingsChange",
56
- data: B
57
- };
58
- parent.postMessage(t, "*");
59
- }
60
- }
61
- const R = "builder.", ce = "options.", N = (e) => {
62
- if (!e)
63
- return {};
64
- const t = V(e), n = {};
65
- return Object.keys(t).forEach((r) => {
66
- if (r.startsWith(R)) {
67
- const o = r.replace(R, "").replace(ce, "");
68
- n[o] = t[r];
69
- }
70
- }), n;
71
- }, ue = () => {
72
- if (!c())
73
- return {};
74
- const e = new URLSearchParams(window.location.search);
75
- return N(e);
76
- }, I = "[Builder.io]: ", f = {
77
- log: (...e) => console.log(I, ...e),
78
- error: (...e) => console.error(I, ...e),
79
- warn: (...e) => console.warn(I, ...e),
80
- debug: (...e) => console.debug(I, ...e)
81
- }, D = "3.0.1", K = () => ({
82
- "X-Builder-SDK": b,
83
- "X-Builder-SDK-GEN": "2",
84
- "X-Builder-SDK-Version": D
85
- }), m = (e) => e != null, de = (e) => {
86
- if (e === "localhost" || e === "127.0.0.1")
87
- return e;
88
- const t = e.split(".");
89
- return t.length > 2 ? t.slice(1).join(".") : e;
90
- }, j = ({
91
- name: e,
92
- canTrack: t
93
- }) => {
94
- var n;
95
- try {
96
- return t ? (n = document.cookie.split("; ").find((r) => r.startsWith(`${e}=`))) == null ? void 0 : n.split("=")[1] : void 0;
97
- } catch (r) {
98
- f.warn("[COOKIE] GET error: ", (r == null ? void 0 : r.message) || r);
99
- return;
100
- }
101
- }, W = async (e) => j(e), le = (e) => e.map(([t, n]) => n ? `${t}=${n}` : t).filter(m).join("; "), fe = [["secure", ""], ["SameSite", "None"]], he = ({
102
- name: e,
103
- value: t,
104
- expires: n
105
- }) => {
106
- const o = (c() ? location.protocol === "https:" : !0) ? fe : [[]], s = n ? [["expires", n.toUTCString()]] : [[]], i = [[e, t], ...s, ["path", "/"], ["domain", de(window.location.hostname)], ...o];
107
- return le(i);
108
- }, $ = async ({
109
- name: e,
110
- value: t,
111
- expires: n,
112
- canTrack: r
113
- }) => {
114
- try {
115
- if (!r)
116
- return;
117
- const o = he({
118
- name: e,
119
- value: t,
120
- expires: n
121
- });
122
- document.cookie = o;
123
- } catch (o) {
124
- f.warn("[COOKIE] SET error: ", (o == null ? void 0 : o.message) || o);
125
- }
126
- };
127
- function ge() {
128
- return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function(e) {
129
- const t = Math.random() * 16 | 0;
130
- return (e == "x" ? t : t & 3 | 8).toString(16);
131
- });
132
- }
133
- function G() {
134
- return ge().replace(/-/g, "");
135
- }
136
- const _ = "builderSessionId", pe = async ({
137
- canTrack: e
138
- }) => {
139
- if (!e)
140
- return;
141
- const t = await W({
142
- name: _,
143
- canTrack: e
144
- });
145
- if (m(t))
146
- return t;
147
- {
148
- const n = me();
149
- return ye({
150
- id: n,
151
- canTrack: e
152
- }), n;
153
- }
154
- }, me = () => G(), ye = ({
155
- id: e,
156
- canTrack: t
157
- }) => $({
158
- name: _,
159
- value: e,
160
- canTrack: t
161
- }), H = () => c() && typeof localStorage != "undefined" ? localStorage : void 0, Se = ({
162
- key: e,
163
- canTrack: t
164
- }) => {
165
- var n;
166
- try {
167
- return t ? (n = H()) == null ? void 0 : n.getItem(e) : void 0;
168
- } catch (r) {
169
- console.debug("[LocalStorage] GET error: ", r);
170
- return;
171
- }
172
- }, we = ({
173
- key: e,
174
- canTrack: t,
175
- value: n
176
- }) => {
177
- var r;
178
- try {
179
- t && ((r = H()) == null || r.setItem(e, n));
180
- } catch (o) {
181
- console.debug("[LocalStorage] SET error: ", o);
182
- }
183
- }, X = "builderVisitorId", be = ({
184
- canTrack: e
185
- }) => {
186
- if (!e)
187
- return;
188
- const t = Se({
189
- key: X,
190
- canTrack: e
191
- });
192
- if (m(t))
193
- return t;
194
- {
195
- const n = ve();
196
- return Ie({
197
- id: n,
198
- canTrack: e
199
- }), n;
200
- }
201
- }, ve = () => G(), Ie = ({
202
- id: e,
203
- canTrack: t
204
- }) => we({
205
- key: X,
206
- value: e,
207
- canTrack: t
208
- });
209
- function ke(e) {
210
- var t;
211
- typeof process != "undefined" && ((t = process.env) != null && t.DEBUG) && String(process.env.DEBUG) == "true" && f.log(e);
212
- }
213
- const Ee = () => {
214
- if (c()) {
215
- const e = new URL(location.href);
216
- return e.pathname === "" && (e.pathname = "/"), e;
217
- } else
218
- return console.warn("Cannot get location for tracking in non-browser environment"), null;
219
- }, Oe = () => typeof navigator == "object" && navigator.userAgent || "", Pe = () => {
220
- const e = Oe(), t = {
221
- Android() {
222
- return e.match(/Android/i);
223
- },
224
- BlackBerry() {
225
- return e.match(/BlackBerry/i);
226
- },
227
- iOS() {
228
- return e.match(/iPhone|iPod/i);
229
- },
230
- Opera() {
231
- return e.match(/Opera Mini/i);
232
- },
233
- Windows() {
234
- return e.match(/IEMobile/i) || e.match(/WPDesktop/i);
235
- },
236
- any() {
237
- return t.Android() || t.BlackBerry() || t.iOS() || t.Opera() || t.Windows() || b === "reactNative";
238
- }
239
- }, n = e.match(/Tablet|iPad/i), r = Ee();
240
- return {
241
- urlPath: r == null ? void 0 : r.pathname,
242
- host: (r == null ? void 0 : r.host) || (r == null ? void 0 : r.hostname),
243
- device: n ? "tablet" : t.any() ? "mobile" : "desktop"
244
- };
245
- }, Ce = async ({
246
- canTrack: e
247
- }) => {
248
- if (!e)
249
- return {
250
- visitorId: void 0,
251
- sessionId: void 0
252
- };
253
- const t = await pe({
254
- canTrack: e
255
- }), n = be({
256
- canTrack: e
257
- });
258
- return {
259
- sessionId: t,
260
- visitorId: n
261
- };
262
- }, xe = async ({
263
- type: e,
264
- canTrack: t,
265
- apiKey: n,
266
- metadata: r,
267
- ...o
268
- }) => ({
269
- type: e,
270
- data: {
271
- ...o,
272
- metadata: {
273
- url: location.href,
274
- ...r
275
- },
276
- ...await Ce({
277
- canTrack: t
278
- }),
279
- userAttributes: Pe(),
280
- ownerId: n
281
- }
282
- });
283
- async function Ae({
284
- apiHost: e,
285
- ...t
286
- }) {
287
- if (!t.apiKey) {
288
- f.error("Missing API key for track call. Please provide your API key.");
289
- return;
290
- }
291
- if (!t.canTrack || se() || !(c() || b === "reactNative"))
292
- return;
293
- const r = `${e || "https://cdn.builder.io"}/api/v1/track`;
294
- return ke(r), fetch(r, {
295
- method: "POST",
296
- body: JSON.stringify({
297
- events: [await xe(t)]
298
- }),
299
- headers: {
300
- "content-type": "application/json",
301
- ...K()
302
- },
303
- mode: "cors"
304
- }).catch((o) => {
305
- console.error("Failed to track: ", o);
306
- });
307
- }
308
- const Ye = (e) => Ae({
309
- ...e,
310
- canTrack: !0
311
- }), Te = ["*.beta.builder.io", "beta.builder.io", "builder.io", "localhost", "qa.builder.io"];
312
- function z(e, t) {
313
- if (!t.origin.startsWith("http") && !t.origin.startsWith("https"))
314
- return !1;
315
- const n = new URL(t.origin), r = n.hostname;
316
- return (e || Te).findIndex((o) => o.startsWith("*.") ? r.endsWith(o.slice(1)) : o === r) > -1;
317
- }
318
- const Ze = () => {
319
- ae("insertMenu", {
320
- name: "_default",
321
- default: !0,
322
- items: [{
323
- name: "Box"
324
- }, {
325
- name: "Text"
326
- }, {
327
- name: "Image"
328
- }, {
329
- name: "Columns"
330
- }, {
331
- name: "Core:Section"
332
- }, {
333
- name: "Core:Button"
334
- }, {
335
- name: "Embed"
336
- }, {
337
- name: "Custom Code"
338
- }]
339
- });
340
- };
341
- let U = !1;
342
- const Be = (e = {}) => {
343
- var t, n;
344
- U || (U = !0, c() && ((t = window.parent) == null || t.postMessage({
345
- type: "builder.sdkInfo",
346
- data: {
347
- target: b,
348
- version: D,
349
- supportsPatchUpdates: !1,
350
- // Supports builder-model="..." attribute which is needed to
351
- // scope our '+ add block' button styling
352
- supportsAddBlockScoping: !0,
353
- supportsCustomBreakpoints: !0
354
- }
355
- }, "*"), (n = window.parent) == null || n.postMessage({
356
- type: "builder.updateContent",
357
- data: {
358
- options: e
359
- }
360
- }, "*"), window.addEventListener("message", (r) => {
361
- var s, i;
362
- if (!z(e.trustedHosts, r))
363
- return;
364
- const {
365
- data: o
366
- } = r;
367
- if (o != null && o.type)
368
- switch (o.type) {
369
- case "builder.evaluate": {
370
- const u = o.data.text, y = o.data.arguments || [], p = o.data.id, k = new Function(u);
371
- let d, h = null;
372
- try {
373
- d = k.apply(null, y);
374
- } catch (g) {
375
- h = g;
376
- }
377
- h ? (s = window.parent) == null || s.postMessage({
378
- type: "builder.evaluateError",
379
- data: {
380
- id: p,
381
- error: h.message
382
- }
383
- }, "*") : d && typeof d.then == "function" ? d.then((g) => {
384
- var S;
385
- (S = window.parent) == null || S.postMessage({
386
- type: "builder.evaluateResult",
387
- data: {
388
- id: p,
389
- result: g
390
- }
391
- }, "*");
392
- }).catch(console.error) : (i = window.parent) == null || i.postMessage({
393
- type: "builder.evaluateResult",
394
- data: {
395
- result: d,
396
- id: p
397
- }
398
- }, "*");
399
- break;
400
- }
401
- }
402
- })));
403
- }, Re = ({
404
- model: e,
405
- trustedHosts: t,
406
- callbacks: n
407
- }) => (r) => {
408
- if (!z(t, r))
409
- return;
410
- const {
411
- data: o
412
- } = r;
413
- if (o)
414
- switch (o.type) {
415
- case "builder.configureSdk": {
416
- n.configureSdk(o.data);
417
- break;
418
- }
419
- case "builder.triggerAnimation": {
420
- n.animation(o.data);
421
- break;
422
- }
423
- case "builder.contentUpdate": {
424
- const s = o.data, i = s.key || s.alias || s.entry || s.modelName, u = s.data;
425
- i === e && n.contentUpdate(u);
426
- break;
427
- }
428
- }
429
- }, et = (e, t, n) => {
430
- if (!c)
431
- return f.warn("`subscribeToEditor` only works in the browser. It currently seems to be running on the server."), () => {
432
- };
433
- Be();
434
- const r = Re({
435
- callbacks: {
436
- contentUpdate: t,
437
- animation: () => {
438
- },
439
- configureSdk: () => {
440
- }
441
- },
442
- model: e,
443
- trustedHosts: n == null ? void 0 : n.trustedHosts
444
- });
445
- return window.addEventListener("message", r), () => {
446
- window.removeEventListener("message", r);
447
- };
448
- }, Ue = "builder.tests", P = (e) => `${Ue}.${e}`, Le = ({
449
- contentId: e
450
- }) => W({
451
- name: P(e),
452
- canTrack: !0
453
- }), Ve = ({
454
- contentId: e
455
- }) => j({
456
- name: P(e),
457
- canTrack: !0
458
- }), Fe = ({
459
- contentId: e,
460
- value: t
461
- }) => $({
462
- name: P(e),
463
- value: t,
464
- canTrack: !0
465
- }), J = (e) => m(e.id) && m(e.variations) && Object.keys(e.variations).length > 0, Me = ({
466
- id: e,
467
- variations: t
468
- }) => {
469
- var o;
470
- let n = 0;
471
- const r = Math.random();
472
- for (const s in t) {
473
- const i = (o = t[s]) == null ? void 0 : o.testRatio;
474
- if (n += i, r < n)
475
- return s;
476
- }
477
- return e;
478
- }, q = (e) => {
479
- const t = Me(e);
480
- return Fe({
481
- contentId: e.id,
482
- value: t
483
- }).catch((n) => {
484
- f.error("could not store A/B test variation: ", n);
485
- }), t;
486
- }, Q = ({
487
- item: e,
488
- testGroupId: t
489
- }) => {
490
- const n = e.variations[t];
491
- return t === e.id || // handle edge-case where `testGroupId` points to non-existing variation
492
- !n ? {
493
- testVariationId: e.id,
494
- testVariationName: "Default"
495
- } : {
496
- data: n.data,
497
- testVariationId: n.id,
498
- testVariationName: n.name || (n.id === e.id ? "Default" : "")
499
- };
500
- }, tt = ({
501
- item: e,
502
- canTrack: t
503
- }) => {
504
- if (!t)
505
- return e;
506
- if (!e)
507
- return;
508
- if (!J(e))
509
- return e;
510
- const n = Ve({
511
- contentId: e.id
512
- }) || q({
513
- variations: e.variations,
514
- id: e.id
515
- }), r = Q({
516
- item: e,
517
- testGroupId: n
518
- });
519
- return {
520
- ...e,
521
- ...r
522
- };
523
- }, Ne = async ({
524
- item: e,
525
- canTrack: t
526
- }) => {
527
- if (!t || !J(e))
528
- return e;
529
- const r = await Le({
530
- contentId: e.id
531
- }) || q({
532
- variations: e.variations,
533
- id: e.id
534
- }), o = Q({
535
- item: e,
536
- testGroupId: r
537
- });
538
- return {
539
- ...e,
540
- ...o
541
- };
542
- }, De = (e) => m(e) ? e : !0;
543
- function Ke() {
544
- return typeof globalThis != "undefined" ? globalThis : typeof window != "undefined" ? window : typeof global != "undefined" ? global : typeof self != "undefined" ? self : globalThis;
545
- }
546
- function je() {
547
- const e = Ke().fetch;
548
- if (typeof e == "undefined")
549
- throw console.warn(`Builder SDK could not find a global fetch function. Make sure you have a polyfill for fetch in your project.
550
- For more information, read https://github.com/BuilderIO/this-package-uses-fetch`), new Error("Builder SDK could not find a global `fetch` function");
551
- return e;
552
- }
553
- const We = je();
554
- function O(e, t = null, n = ".") {
555
- return Object.keys(e).reduce((r, o) => {
556
- const s = e[o], i = [t, o].filter(Boolean).join(n);
557
- return [typeof s == "object", s !== null, !(Array.isArray(s) && s.length === 0)].every(Boolean) ? {
558
- ...r,
559
- ...O(s, i, n)
560
- } : {
561
- ...r,
562
- [i]: s
563
- };
564
- }, {});
565
- }
566
- function Y(e, t, n = {}) {
567
- for (const r in e) {
568
- const o = e[r], s = t ? t + "." + r : r;
569
- o && typeof o == "object" && !Array.isArray(o) && !Object.keys(o).find((i) => i.startsWith("$")) ? Y(o, s, n) : n[s] = o;
570
- }
571
- return n;
572
- }
573
- const $e = "v3", L = (e) => typeof e == "number" && !isNaN(e) && e >= 0, C = (e) => {
574
- const {
575
- limit: t = 30,
576
- userAttributes: n,
577
- query: r,
578
- model: o,
579
- apiKey: s,
580
- enrich: i,
581
- locale: u,
582
- apiVersion: y = $e,
583
- fields: p,
584
- omit: k,
585
- offset: d,
586
- cacheSeconds: h,
587
- staleCacheSeconds: g,
588
- sort: S,
589
- includeUnpublished: x,
590
- apiHost: Z
591
- } = e;
592
- if (!s)
593
- throw new Error("Missing API key");
594
- if (!["v3"].includes(y))
595
- throw new Error(`Invalid apiVersion: expected 'v3', received '${y}'`);
596
- const ee = t !== 1, te = Z || "https://cdn.builder.io", a = new URL(`${te}/api/${y}/content/${o}`);
597
- a.searchParams.set("apiKey", s), a.searchParams.set("limit", String(t)), a.searchParams.set("noTraverse", String(ee)), a.searchParams.set("includeRefs", String(!0));
598
- const E = u || (n == null ? void 0 : n.locale);
599
- let v = n;
600
- if (E && (a.searchParams.set("locale", E), v = {
601
- locale: E,
602
- ...v
603
- }), i && a.searchParams.set("enrich", String(i)), a.searchParams.set("omit", k || "meta.componentsUsed"), p && a.searchParams.set("fields", p), Number.isFinite(d) && d > -1 && a.searchParams.set("offset", String(Math.floor(d))), typeof x == "boolean" && a.searchParams.set("includeUnpublished", String(x)), h && L(h) && a.searchParams.set("cacheSeconds", String(h)), g && L(g) && a.searchParams.set("staleCacheSeconds", String(g)), S) {
604
- const l = O({
605
- sort: S
606
- });
607
- for (const w in l)
608
- a.searchParams.set(w, JSON.stringify(l[w]));
609
- }
610
- const ne = {
611
- ...ue(),
612
- ...V(e.options || {})
613
- }, A = O(ne);
614
- for (const l in A)
615
- a.searchParams.set(l, String(A[l]));
616
- if (v && a.searchParams.set("userAttributes", JSON.stringify(v)), r) {
617
- const l = Y({
618
- query: r
619
- });
620
- for (const w in l)
621
- a.searchParams.set(w, JSON.stringify(l[w]));
622
- }
623
- return a;
624
- }, Ge = (e) => "results" in e;
625
- async function _e(e) {
626
- const t = await ze({
627
- ...e,
628
- limit: 1
629
- });
630
- return t && t[0] || null;
631
- }
632
- const He = async (e) => {
633
- var i, u;
634
- const t = C(e), n = (i = e.fetch) != null ? i : We, r = {
635
- ...e.fetchOptions,
636
- headers: {
637
- ...(u = e.fetchOptions) == null ? void 0 : u.headers,
638
- ...K()
639
- }
640
- };
641
- return await (await n(t.href, r)).json();
642
- }, Xe = async (e, t, n = C(e)) => {
643
- const r = De(e.canTrack);
644
- if (n.search.includes("preview="), !r || !(c() || b === "reactNative"))
645
- return t.results;
646
- try {
647
- const o = [];
648
- for (const s of t.results)
649
- o.push(await Ne({
650
- item: s,
651
- canTrack: r
652
- }));
653
- t.results = o;
654
- } catch (o) {
655
- f.error("Could not process A/B tests. ", o);
656
- }
657
- return t.results;
658
- };
659
- async function ze(e) {
660
- const t = C(e), n = await He(e);
661
- if (!Ge(n))
662
- throw f.error("Error fetching data. ", {
663
- url: t,
664
- content: n,
665
- options: e
666
- }), n;
667
- return Xe(e, n);
668
- }
669
- const nt = async (e) => {
670
- var r, o, s;
671
- const t = e.path || ((r = e.url) == null ? void 0 : r.pathname) || ((o = e.userAttributes) == null ? void 0 : o.urlPath), n = {
672
- ...e,
673
- apiKey: e.apiKey,
674
- model: e.model || "page",
675
- userAttributes: {
676
- ...e.userAttributes,
677
- ...t ? {
678
- urlPath: t
679
- } : {}
680
- },
681
- options: N(e.searchParams || ((s = e.url) == null ? void 0 : s.searchParams) || e.options)
682
- };
683
- return {
684
- apiKey: n.apiKey,
685
- model: n.model,
686
- content: await _e(n)
687
- };
688
- };
689
- export {
690
- b as TARGET,
691
- Xe as _processContentResult,
692
- Ae as _track,
693
- m as checkIsDefined,
694
- Re as createEditorListener,
695
- qe as createRegisterComponentMessage,
696
- nt as fetchBuilderProps,
697
- ze as fetchEntries,
698
- _e as fetchOneEntry,
699
- N as getBuilderSearchParams,
700
- De as getDefaultCanTrack,
701
- Pe as getUserAttributes,
702
- tt as handleABTestingSync,
703
- c as isBrowser,
704
- se as isEditing,
705
- Je as isPreviewing,
706
- ke as logFetch,
707
- f as logger,
708
- ae as register,
709
- Ze as registerInsertMenu,
710
- M as serializeIncludingFunctions,
711
- Qe as setEditorSettings,
712
- Be as setupBrowserForEditing,
713
- et as subscribeToEditor,
714
- Ye as track
715
- };