@sprig-technologies/sprig-browser 2.32.10 → 2.33.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{core-s7v77Fsd.js → core-DuIpyIdz.js} +193 -188
- package/dist/core-XsNCvQMt.cjs +12 -0
- package/dist/core.cjs +1 -1
- package/dist/core.js +2 -2
- package/dist/index.cjs +1 -1
- package/dist/index.js +2 -2
- package/dist/{metricsReporter-eI04W7R0.cjs → metricsReporter-BS7FQHoM.cjs} +1 -1
- package/dist/{metricsReporter-lf84Y5sr.js → metricsReporter-DbO9obdT.js} +1 -1
- package/dist/replay.cjs +1 -1
- package/dist/replay.js +483 -386
- package/dist/{view-CGgXNSb2.js → view-Cf3oYcCU.js} +648 -628
- package/dist/view-DeY0w8JY.cjs +669 -0
- package/package.json +1 -1
- package/dist/core-B_CnBIaq.cjs +0 -12
- package/dist/view-2CSaceDW.cjs +0 -669
|
@@ -1,29 +1,29 @@
|
|
|
1
1
|
var Ut = Object.defineProperty;
|
|
2
2
|
var St = (t, e, n) => e in t ? Ut(t, e, { enumerable: !0, configurable: !0, writable: !0, value: n }) : t[e] = n;
|
|
3
3
|
var $ = (t, e, n) => (St(t, typeof e != "symbol" ? e + "" : e, n), n);
|
|
4
|
-
import { g as T, s as Xe, l as D, e as w, S as g, v as Ze, m as k, b as M, h as et, E as re, D as
|
|
4
|
+
import { g as T, s as Xe, l as D, e as w, S as g, v as Ze, m as k, b as M, h as et, E as re, D as V, c as It, r as N, i as kt, j as Et, k as _t, n as Fe, o as ze, a as xt, p as tt, d as Dt, q as rt } from "./metricsReporter-DbO9obdT.js";
|
|
5
5
|
const rr = 360, ir = "ul-app", nr = "#e6e6e6", or = "#bd282a", sr = 1030, He = () => {
|
|
6
6
|
try {
|
|
7
7
|
return window.parent.Intercom;
|
|
8
8
|
} catch {
|
|
9
9
|
return null;
|
|
10
10
|
}
|
|
11
|
-
},
|
|
11
|
+
}, Ve = [Object.freeze(Object.defineProperty({ __proto__: null, disable: () => {
|
|
12
12
|
const t = He();
|
|
13
13
|
t && (t.ul_wasVisible = !!document.querySelector("iframe.intercom-launcher-frame"), t.ul_wasVisible && t("update", { hide_default_launcher: !0 }));
|
|
14
14
|
}, enable: () => {
|
|
15
15
|
const t = He();
|
|
16
16
|
t && (t.ul_wasVisible && t("update", { hide_default_launcher: !1 }), delete t.ul_wasVisible);
|
|
17
17
|
} }, Symbol.toStringTag, { value: "Module" }))];
|
|
18
|
-
class
|
|
18
|
+
class Rt {
|
|
19
19
|
static disable() {
|
|
20
|
-
|
|
20
|
+
Ve.forEach((e) => e.disable());
|
|
21
21
|
}
|
|
22
22
|
static enable() {
|
|
23
|
-
|
|
23
|
+
Ve.forEach((e) => e.enable());
|
|
24
24
|
}
|
|
25
25
|
}
|
|
26
|
-
const
|
|
26
|
+
const We = "ul-view-sdk-script", At = ["ios", "android"], q = "visitors", F = "environments";
|
|
27
27
|
async function C(t, e) {
|
|
28
28
|
var i, o, a;
|
|
29
29
|
const { shouldDropOnRateLimit: n, ...s } = e;
|
|
@@ -32,8 +32,8 @@ async function C(t, e) {
|
|
|
32
32
|
if (r.ok) {
|
|
33
33
|
const l = (i = r.headers) == null ? void 0 : i.get("Authorization"), p = l ? l.split(" ") : void 0, d = p && p.length === 2 ? p[1] : void 0, c = (o = r.headers) == null ? void 0 : o.get("x-ul-visitor-id");
|
|
34
34
|
if (window.UserLeap.userId && c === window.UserLeap.visitorId) {
|
|
35
|
-
const
|
|
36
|
-
|
|
35
|
+
const y = D.getItemObject("sprig.anon.env.vid.map");
|
|
36
|
+
y && y[window.UserLeap.envId] === c && (delete y[window.UserLeap.envId], D.setItemObject("sprig.anon.env.vid.map", y));
|
|
37
37
|
}
|
|
38
38
|
d && c && (c !== window.UserLeap.visitorId || window.UserLeap.token !== d) && (x("token", d), x("vid", c), w.emit(g.VisitorIDUpdated, { visitorId: c }), window.UserLeap.token = d, window.UserLeap.visitorId = c);
|
|
39
39
|
}
|
|
@@ -47,7 +47,7 @@ function x(t, e) {
|
|
|
47
47
|
function De() {
|
|
48
48
|
return window.previewMode ? "0" : window.UserLeap.visitorId ?? "";
|
|
49
49
|
}
|
|
50
|
-
function
|
|
50
|
+
function A(t, e, n) {
|
|
51
51
|
const s = [window.UserLeap._API_URL, "sdk", t];
|
|
52
52
|
return e && e.forEach((r) => {
|
|
53
53
|
s.push(r), r === F ? s.push(window.UserLeap.envId) : r === q && s.push(De());
|
|
@@ -55,70 +55,70 @@ function R(t, e, n) {
|
|
|
55
55
|
}
|
|
56
56
|
const X = async (t, e) => {
|
|
57
57
|
var Te, je, Me;
|
|
58
|
-
const { context: n, delay: s, forceBrandedLogo: r, endCard: i, isFeedback: o = !1, heatmap: a, locale: l, previewMode: p, productConfig: d, questions: c, responseGroupUid:
|
|
59
|
-
if (
|
|
60
|
-
if (
|
|
61
|
-
w.emit(g.ReplayCapture, { responseGroupUid:
|
|
58
|
+
const { context: n, delay: s, forceBrandedLogo: r, endCard: i, isFeedback: o = !1, heatmap: a, locale: l, previewMode: p, productConfig: d, questions: c, responseGroupUid: y, surveyId: u, uuid: m, vid: I, sessionReplay: _, studyType: f } = t, v = T(window.UserLeap), U = ie(v), S = ge(v);
|
|
59
|
+
if (_)
|
|
60
|
+
if (U)
|
|
61
|
+
w.emit(g.ReplayCapture, { responseGroupUid: y, hasQuestions: !!(c != null && c.length), surveyId: u, uploadId: _.uploadId, replayType: _.replayDurationType ?? "before", seconds: _.replayDurationSeconds, generateVideoUploadUrlPayload: { mediaRecordingUid: Ze(), mediaType: "screen", questionId: 1, responseGroupUid: y, surveyId: u, updatedAt: (/* @__PURE__ */ new Date()).toISOString(), visitorId: window.UserLeap.visitorId, isReplay: !0 } });
|
|
62
62
|
else {
|
|
63
63
|
if (!k.replay)
|
|
64
64
|
return window.UserLeap.reportError("displayQuestions", new Error("Replay module not registered")), { success: !1, message: "Replay module not registered", surveyState: "no survey" };
|
|
65
|
-
k.replay.scheduleOrCaptureReplay({ responseGroupId:
|
|
65
|
+
k.replay.scheduleOrCaptureReplay({ responseGroupId: y, surveyId: u, visitorId: I, replayParams: _, completeUploadHeaders: v, apiUrl: window.UserLeap._API_URL, triggerTimestamp: Date.now(), isStandalone: c.length === 0 });
|
|
66
66
|
}
|
|
67
67
|
if (a) {
|
|
68
68
|
if (!k.replay)
|
|
69
69
|
return window.UserLeap.reportError("displayQuestions", new Error("Replay module not registered")), { success: !1, message: "Replay module not registered", surveyState: "no survey" };
|
|
70
|
-
const { eventId:
|
|
71
|
-
await k.replay.initializeReplay({ maxReplayDurationSeconds: 300, maxInflightRequests: window.UserLeap.maxInflightReplayRequests, teardownAfter: !0 }), k.replay.tryReplayAction(() => {
|
|
70
|
+
const { eventId: L, replayParams: J, responseGroupUid: fe, surveyId: ve } = a;
|
|
71
|
+
await k.replay.initializeReplay({ maxReplayDurationSeconds: 300, maxInflightRequests: window.UserLeap.maxInflightReplayRequests, teardownAfter: !0, apiUrl: window.UserLeap._API_URL }), k.replay.tryReplayAction(() => {
|
|
72
72
|
var qe;
|
|
73
|
-
return (qe = k.replay) == null ? void 0 : qe.scheduleCapture({ apiUrl: window.UserLeap._API_URL, completeUploadHeaders:
|
|
73
|
+
return (qe = k.replay) == null ? void 0 : qe.scheduleCapture({ apiUrl: window.UserLeap._API_URL, completeUploadHeaders: v, eventId: L, isHeatmap: !0, replayParams: J, responseGroupId: fe, surveyId: ve, triggerTimestamp: Date.now(), visitorId: I });
|
|
74
74
|
}, "Error in scheduling/capturing replay");
|
|
75
75
|
}
|
|
76
76
|
if (I == null || !(c != null && c.length))
|
|
77
77
|
return M.info("CannotDisplaySurvey", { vid: I }), { success: !1, message: "[Sprig] no survey found", surveyState: "no survey" };
|
|
78
78
|
if (window.UserLeap.container) {
|
|
79
79
|
M.info("AlreadyDisplayingSurvey");
|
|
80
|
-
const
|
|
81
|
-
return console.warn(
|
|
82
|
-
}
|
|
83
|
-
if (I !== window.UserLeap.visitorId &&
|
|
84
|
-
const
|
|
85
|
-
return window.UserLeap.reportError("DisplaySurvey", new Error(
|
|
86
|
-
}
|
|
87
|
-
M.info("ShowingSurvey", { surveyId: u }), (Te = k.replay) == null || Te.RecordSurveyShown({ id: u, userAgent: window.navigator.userAgent }),
|
|
88
|
-
let O,
|
|
89
|
-
const K = (
|
|
90
|
-
const { "view.version": J } =
|
|
91
|
-
J !==
|
|
80
|
+
const L = "[Sprig] (ERR-409) Found an existing Survey container, aborting rendering of this survey";
|
|
81
|
+
return console.warn(L), { success: !1, message: L, surveyState: "no survey" };
|
|
82
|
+
}
|
|
83
|
+
if (I !== window.UserLeap.visitorId && m !== window.UserLeap.visitorId && !window.previewMode) {
|
|
84
|
+
const L = "Attempted to display survey to a different visitor";
|
|
85
|
+
return window.UserLeap.reportError("DisplaySurvey", new Error(L)), { success: !1, message: L, surveyState: "no survey" };
|
|
86
|
+
}
|
|
87
|
+
M.info("ShowingSurvey", { surveyId: u }), (Te = k.replay) == null || Te.RecordSurveyShown({ id: u, userAgent: window.navigator.userAgent }), Rt.disable(), w.emit(g.SurveyWillPresent, { name: g.SurveyWillPresent, "survey.id": u });
|
|
88
|
+
let O, h, E, R, z = document.createElement("div");
|
|
89
|
+
const K = (L) => {
|
|
90
|
+
const { "view.version": J } = L;
|
|
91
|
+
J !== v["x-ul-sdk-version"] && nt(), w.removeListener("verify.view.version", K);
|
|
92
92
|
};
|
|
93
|
-
w.on("verify.view.version", K), window.UserLeap.useMobileStyling =
|
|
94
|
-
const
|
|
93
|
+
w.on("verify.view.version", K), window.UserLeap.useMobileStyling = S, et(v) ? (O = "ul-direct-embeded-frame", h = document.head, E = window, R = !1, (() => {
|
|
94
|
+
const L = T(window.UserLeap), J = ie(L), fe = window.UserLeap.forceDirectEmbed, ve = L["userleap-platform"] === "web";
|
|
95
95
|
return J || fe && ve;
|
|
96
|
-
})() && (it(u, o), z.id = O, window.UserLeap.container.appendChild(z), ot(), w.emit(g.SurveyLifeCycle, { state: "presented" }), w.emit(g.SurveyPresented, { name: g.SurveyPresented, "survey.id": u }))) : { frameId: O, contentWinDocHead:
|
|
97
|
-
const B = { apiURL: window.UserLeap._API_URL, cards: c, configureExitOnOverlayClick: (
|
|
98
|
-
w.once(g.CloseSurveyOnOverlayClick,
|
|
99
|
-
}, context: n, endCard: i, envId: window.UserLeap.envId, eventEmitFn: w.emit.bind(w), fontFamily: window.UserLeap.fontFamily, fontFamilyURL: window.UserLeap.fontFamilyURL, forceBrandedLogo: r, frame: z, headers:
|
|
96
|
+
})() && (it(u, o), z.id = O, window.UserLeap.container.appendChild(z), ot(), w.emit(g.SurveyLifeCycle, { state: "presented" }), w.emit(g.SurveyPresented, { name: g.SurveyPresented, "survey.id": u }))) : { frameId: O, contentWinDocHead: h, contentWindow: E, hasOverlay: R, iframe: z } = Ct({ productConfig: d, useMobileStyling: S, surveyId: u, isFeedback: o }), window.UserLeap.frameId = O;
|
|
97
|
+
const B = { apiURL: window.UserLeap._API_URL, cards: c, configureExitOnOverlayClick: (L) => {
|
|
98
|
+
w.once(g.CloseSurveyOnOverlayClick, L);
|
|
99
|
+
}, context: n, endCard: i, envId: window.UserLeap.envId, eventEmitFn: w.emit.bind(w), fontFamily: window.UserLeap.fontFamily, fontFamilyURL: window.UserLeap.fontFamilyURL, forceBrandedLogo: r, frame: z, headers: v, locale: l, mobileSDKVersion: window.UserLeap.mobileSDKVersion, previewKey: D.getItem("sprig.previewKey"), previewMode: p, productConfig: { framePosition: d == null ? void 0 : d.framePosition, desktopDisplay: d == null ? void 0 : d.desktopDisplay, placement: d == null ? void 0 : d.placement }, responseGroupUid: y, startingQuestionIdx: (je = window.UserLeap.config) == null ? void 0 : je.startingQuestionIdx, studyType: f, styleNonce: window.UserLeap.styleNonce, surveyId: u, tabTitle: document.title, trackPageViewUrl: e, ulEvents: re, upchunkLibraryURL: window.UserLeap.upchunkLibraryURL, useMobileStyling: S, userId: m, viewDocument: E == null ? void 0 : E.document, viewWindow: E, visitorAttributes: { externalUserId: window.UserLeap.userId, email: window.UserLeap.email }, ...window.UserLeap._config };
|
|
100
100
|
(Me = window.UserLeap._config) != null && Me.startingQuestionIdx && (window.UserLeap._config = { ...window.UserLeap._config, startingQuestionIdx: null });
|
|
101
101
|
const Lt = (o ? window.UserLeap.feedbackCustomStyles : window.UserLeap.customStyles) ?? d.customStyles;
|
|
102
102
|
B.customStyles = Lt, E && (E.__cfg = B);
|
|
103
|
-
const
|
|
103
|
+
const ye = window.UserLeap.viewSDKURL ? window.UserLeap.viewSDKURL : B.path, Oe = document.getElementById(We);
|
|
104
104
|
Oe && Oe.remove();
|
|
105
|
-
const
|
|
106
|
-
const
|
|
107
|
-
return window.UserLeap.nonce &&
|
|
105
|
+
const me = function() {
|
|
106
|
+
const L = document.createElement("script");
|
|
107
|
+
return window.UserLeap.nonce && L.setAttribute("nonce", window.UserLeap.nonce), L.id = We, L;
|
|
108
108
|
}(), Ce = () => {
|
|
109
109
|
window.UserLeap.container && Object.assign(window.UserLeap.container.style, { display: "flex" });
|
|
110
110
|
};
|
|
111
111
|
if (B.installationMethod === "web-npm" || B.installationMethod === "web-npm-bundled") {
|
|
112
|
-
const { default:
|
|
113
|
-
|
|
112
|
+
const { default: L } = await import("./view-Cf3oYcCU.js");
|
|
113
|
+
L.configure(B), R && window.UserLeap.container && Ce();
|
|
114
114
|
} else
|
|
115
|
-
|
|
115
|
+
ye && (me.src = ye, R && me.addEventListener("load", () => {
|
|
116
116
|
window.UserLeap.container && Ce();
|
|
117
|
-
}), E == null || E.addEventListener("error", (
|
|
118
|
-
|
|
117
|
+
}), E == null || E.addEventListener("error", (L) => {
|
|
118
|
+
L.target instanceof HTMLScriptElement && L.target.src === ye && window.UserLeap.reportError("loadFrameScript", new Error("Frame script failed to load"));
|
|
119
119
|
}, { capture: !0, once: !0 }));
|
|
120
|
-
|
|
121
|
-
const Pe = { success: !0, surveyState: "ready", surveyId: u, responseGroupUid:
|
|
120
|
+
h == null || h.appendChild(me);
|
|
121
|
+
const Pe = { success: !0, surveyState: "ready", surveyId: u, responseGroupUid: y };
|
|
122
122
|
return window.UserLeap.isMobileSDK && s && (Pe.delay = s), Pe;
|
|
123
123
|
};
|
|
124
124
|
function ge(t) {
|
|
@@ -129,9 +129,9 @@ function ge(t) {
|
|
|
129
129
|
return ie(t) || e > 10 && e < 500;
|
|
130
130
|
}
|
|
131
131
|
function ie(t) {
|
|
132
|
-
return
|
|
132
|
+
return At.includes(t["userleap-platform"]);
|
|
133
133
|
}
|
|
134
|
-
const
|
|
134
|
+
const Re = "ul-frame";
|
|
135
135
|
window.UserLeap && window.Sprig && (window.Sprig._gtm ? window.Sprig = window.UserLeap : window.UserLeap = window.Sprig), window.UserLeap || (window.UserLeap = window.Sprig), window.Sprig || (window.Sprig = window.UserLeap);
|
|
136
136
|
const he = "0px", it = (t, e, n) => {
|
|
137
137
|
window.UserLeap.container = document.createElement("div"), window.UserLeap.container.className = "ul-container" + (e ? " ul-container-feedback" : ""), t && (window.UserLeap.container.dataset.studyId = t.toString());
|
|
@@ -161,11 +161,11 @@ const he = "0px", it = (t, e, n) => {
|
|
|
161
161
|
(d = window.UserLeap.windowDimensions) != null && d.width ? r.width = `${window.UserLeap.windowDimensions.width}px` : r.width = "100%", (c = window.UserLeap.windowDimensions) != null && c.height ? r.maxHeight = window.UserLeap.windowDimensions.height - 20 + "px" : window.UserLeap.maxHeight ? r.maxHeight = window.UserLeap.maxHeight : r.maxHeight = document.body.clientHeight - 20 + "px", ["light", "dark"].includes(i.overlayStyleMobile) && (p = !0);
|
|
162
162
|
else {
|
|
163
163
|
r.width = "360px", r.maxHeight = window.UserLeap.maxHeight || "66vh";
|
|
164
|
-
const
|
|
164
|
+
const y = () => {
|
|
165
165
|
p = !0, l = { margin: "auto", position: "static" };
|
|
166
166
|
};
|
|
167
167
|
if (s)
|
|
168
|
-
a ?
|
|
168
|
+
a ? y() : l = { position: "relative", height: "300px" };
|
|
169
169
|
else
|
|
170
170
|
switch (i.framePosition) {
|
|
171
171
|
case "bottomLeft":
|
|
@@ -178,35 +178,35 @@ const he = "0px", it = (t, e, n) => {
|
|
|
178
178
|
l = { top: 0 };
|
|
179
179
|
break;
|
|
180
180
|
case "center":
|
|
181
|
-
|
|
181
|
+
y();
|
|
182
182
|
}
|
|
183
183
|
}
|
|
184
|
-
return p && ((
|
|
185
|
-
const
|
|
186
|
-
|
|
184
|
+
return p && ((y, u) => {
|
|
185
|
+
const m = { position: "fixed", overflow: "auto", top: "0px", left: "0px", display: "none", height: "100%", width: "100%", transition: "background-color 0.3s ease-out", zIndex: 2147483646 }, I = u ? y.overlayStyleMobile : y.overlayStyle;
|
|
186
|
+
m["background-color"] = I === "light" ? "rgba(255,255,255, 0.95)" : "rgba(0,0,0,0.9)", u || (m.margin = "auto"), window.UserLeap.container && Object.assign(window.UserLeap.container.style, m);
|
|
187
187
|
})(i, n), Object.assign(t.style, r, l), p;
|
|
188
188
|
}, Ct = ({ productConfig: t, useMobileStyling: e, surveyId: n, isFeedback: s }) => {
|
|
189
|
-
var
|
|
190
|
-
const r =
|
|
189
|
+
var y, u;
|
|
190
|
+
const r = Re, i = s && t.desktopDisplay === "slider";
|
|
191
191
|
it(n, s, i), Pt();
|
|
192
192
|
const o = document.createElement("iframe");
|
|
193
193
|
o.id = r, o.setAttribute("title", "Sprig User Feedback Dialog");
|
|
194
194
|
const a = Ot(o, t, e, s);
|
|
195
195
|
ot();
|
|
196
196
|
let l = !1;
|
|
197
|
-
o.setHeight = (
|
|
198
|
-
parseInt(o.style.height) ==
|
|
197
|
+
o.setHeight = (m) => {
|
|
198
|
+
parseInt(o.style.height) == m && l || (l = !0, o.style.height = `${m}px`, w.emit(g.SurveyHeight, { name: g.SurveyHeight, contentFrameHeight: m, "survey.id": n }));
|
|
199
199
|
};
|
|
200
200
|
let p = !1;
|
|
201
|
-
o.setWidth = (
|
|
202
|
-
parseInt(o.style.width) ==
|
|
203
|
-
}, (
|
|
201
|
+
o.setWidth = (m) => {
|
|
202
|
+
parseInt(o.style.width) == m && p || (p = !0, o.style.width = `${m}px`, w.emit(g.SurveyWidth, { name: g.SurveyWidth, contentFrameWidth: m, "survey.id": n }));
|
|
203
|
+
}, (y = window.UserLeap.container) == null || y.appendChild(o), t && (e ? t.exitOnOverlayClickMobile : t.exitOnOverlayClick) && window.UserLeap.container && (window.UserLeap.container.onclick = () => {
|
|
204
204
|
w.emit(g.CloseSurveyOnOverlayClick);
|
|
205
205
|
}), w.emit(g.SurveyLifeCycle, { state: "presented" }), w.emit(g.SurveyPresented, { name: g.SurveyPresented, "survey.id": n });
|
|
206
206
|
const d = (u = o.contentWindow) == null ? void 0 : u.document;
|
|
207
207
|
if (d && (d.open("text/html", "replace"), d.write("<!doctype html><head></head><body></body></html>"), d.close(), !e)) {
|
|
208
|
-
const
|
|
209
|
-
|
|
208
|
+
const m = d.body;
|
|
209
|
+
m.style.display = "flex", m.style.alignItems = "center";
|
|
210
210
|
}
|
|
211
211
|
const c = d == null ? void 0 : d.head;
|
|
212
212
|
return { frameId: r, contentWinDocHead: c, contentWindow: o.contentWindow, hasOverlay: a, iframe: o };
|
|
@@ -220,7 +220,7 @@ const he = "0px", it = (t, e, n) => {
|
|
|
220
220
|
Object.entries(st).forEach(([t, e]) => {
|
|
221
221
|
w.off(t, e);
|
|
222
222
|
});
|
|
223
|
-
}, j = (t) => !!t && t.nodeType === Node.ELEMENT_NODE,
|
|
223
|
+
}, j = (t) => !!t && t.nodeType === Node.ELEMENT_NODE, Ne = (t) => t instanceof HTMLElement || t instanceof SVGElement, se = ({ document: t, elementId: e, styleString: n, nonce: s }) => {
|
|
224
224
|
const r = t.getElementById(e);
|
|
225
225
|
if (r)
|
|
226
226
|
return void (r.textContent = n);
|
|
@@ -244,10 +244,10 @@ const he = "0px", it = (t, e, n) => {
|
|
|
244
244
|
if (j(s) && j(r)) {
|
|
245
245
|
const l = s.querySelector(".ul-card--matrix_grid"), p = !l && e && n;
|
|
246
246
|
try {
|
|
247
|
-
p && (r.style.width = "360px"), i = s.clientHeight, i += ((
|
|
248
|
-
const u =
|
|
249
|
-
let
|
|
250
|
-
return j(
|
|
247
|
+
p && (r.style.width = "360px"), i = s.clientHeight, i += ((y) => {
|
|
248
|
+
const u = y.querySelector(".sprig-question-body"), m = y.querySelector(".ul-card"), I = y.querySelector(".ul-card-main-content"), _ = y.querySelector(".ul-footer"), f = y.querySelector(".sprig-container");
|
|
249
|
+
let v = 0;
|
|
250
|
+
return j(m) && (v += m.scrollHeight - m.clientHeight), j(I) && (v += I.scrollHeight - I.clientHeight), j(u) && (v += u.scrollHeight - u.clientHeight), j(_) && j(f) && f.clientHeight === 0 && (v += _.clientHeight), v;
|
|
251
251
|
})(t);
|
|
252
252
|
const d = getComputedStyle(s);
|
|
253
253
|
a = i;
|
|
@@ -261,34 +261,34 @@ const he = "0px", it = (t, e, n) => {
|
|
|
261
261
|
}, ar = (t) => {
|
|
262
262
|
const e = t.querySelector(".ul-card__container");
|
|
263
263
|
e && (e.scrollTop = 0);
|
|
264
|
-
}, at = () =>
|
|
265
|
-
let $e = !1,
|
|
264
|
+
}, at = () => b, G = () => document.getElementById("sprig-feedback-container"), Se = () => document.getElementById("sprig-feedback-loading-animation"), dt = () => !!document.getElementById(Re);
|
|
265
|
+
let $e = !1, b = null, P = null, Ae = !1, Z = null, H = null;
|
|
266
266
|
const qt = ["bottom-left", "bottom-right", "center-left", "center-right"], ae = () => {
|
|
267
267
|
var e;
|
|
268
268
|
const t = window.UserLeap.container;
|
|
269
269
|
return ((e = t == null ? void 0 : t.parentElement) == null ? void 0 : e.id) === "sprig-feedback-loading-container";
|
|
270
270
|
}, lt = () => document.getElementById("sprig-feedback-error-container"), ct = () => {
|
|
271
|
-
if (!
|
|
271
|
+
if (!b)
|
|
272
272
|
return 0;
|
|
273
|
-
const t =
|
|
273
|
+
const t = b == null ? void 0 : b.clientWidth, e = window.getComputedStyle(b);
|
|
274
274
|
return t + parseInt(e.borderRightWidth || "0") + parseInt(e.borderLeftWidth || "0");
|
|
275
275
|
}, de = (t) => {
|
|
276
276
|
const e = G();
|
|
277
277
|
e && (H != null && H.endsWith("right") ? e.style.right = `${t}px` : H != null && H.endsWith("left") && (e.style.left = `${t}px`));
|
|
278
278
|
}, be = () => {
|
|
279
|
-
if (
|
|
279
|
+
if (b && (ae() || lt())) {
|
|
280
280
|
w.off(g.SurveyAppeared, Y), Ie();
|
|
281
281
|
const t = ct();
|
|
282
282
|
return de(-t), !0;
|
|
283
283
|
}
|
|
284
284
|
return !1;
|
|
285
285
|
}, Y = () => {
|
|
286
|
-
if (!
|
|
286
|
+
if (!b || !P)
|
|
287
287
|
return;
|
|
288
288
|
const t = Se();
|
|
289
|
-
t && t.remove(),
|
|
289
|
+
t && t.remove(), b.style.height = "auto", b.style.width = "auto", P.disabled = !1, Ae = !1;
|
|
290
290
|
}, Ie = () => {
|
|
291
|
-
if (
|
|
291
|
+
if (b && !Se()) {
|
|
292
292
|
const t = (() => {
|
|
293
293
|
if (Se())
|
|
294
294
|
return;
|
|
@@ -302,10 +302,10 @@ const qt = ["bottom-left", "bottom-right", "center-left", "center-right"], ae =
|
|
|
302
302
|
</div>
|
|
303
303
|
`, e;
|
|
304
304
|
})();
|
|
305
|
-
t && (
|
|
305
|
+
t && (b.style.height = "300px", b.style.width = "360px", b.appendChild(t));
|
|
306
306
|
}
|
|
307
307
|
}, Ge = () => {
|
|
308
|
-
|
|
308
|
+
b && P && (de(0), P.disabled = !0, Ae = !0);
|
|
309
309
|
}, pt = async (t, e, n) => {
|
|
310
310
|
const { buttonTheme: s, customStyles: r, eventId: i, placement: o, desktopDisplay: a, feedbackLabel: l, surveyUuid: p, surveyId: d } = t;
|
|
311
311
|
window.UserLeap.feedbackCustomStyles = void 0;
|
|
@@ -316,47 +316,47 @@ const qt = ["bottom-left", "bottom-right", "center-left", "center-right"], ae =
|
|
|
316
316
|
c.remove(), w.off(re.SURVEY_FADING_OUT, be);
|
|
317
317
|
}
|
|
318
318
|
Z = i, se({ document, elementId: "sprig-feedback-style", styleString: '.ul-loading-spinner-container{font-size:1.8rem;flex-grow:1;width:100%;height:100%;display:flex;align-items:center;justify-content:center}.ul-loading-spinner{display:inline-block;position:relative;width:6rem;height:6rem}.ul-loading-spinner div{box-sizing:border-box;display:block;position:absolute;width:80%;height:80%;margin:5px;border:5px solid #152e3e;border-radius:50%;animation:lds-ring 1.2s cubic-bezier(.5,0,.5,1) infinite;border-color:#152e3e transparent transparent transparent}.ul-loading-spinner .first{animation-delay:-.45s}.ul-loading-spinner .second{animation-delay:-.3s}.ul-loading-spinner .third{animation-delay:-.15s}@keyframes lds-ring{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.fade-in-transition{animation:fadeIn .4s ease-in}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}#sprig-feedback-button{border-left:0;border-radius:0 8px 8px 0;display:grid;padding:8px;text-align:center;transition:all ease-in-out 1s;z-index:inherit}#sprig-feedback-button:hover{cursor:pointer}.sprig-feedback-button-label{writing-mode:vertical-lr;text-orientation:sideways}.sprig-feedback-button-right{transform:rotate(180deg)}.sprig-feedback-button-bottom{align-self:flex-end;margin-bottom:20px}.sprig-feedback-button-light{background:#efefee;color:#000;border:1px solid #e2e3e1}.sprig-feedback-button-dark{background:#000;color:#fff;border:1px solid #000000}#sprig-feedback-container{display:flex;align-items:center;position:fixed;transition:right .2s linear,left .2s linear;z-index:2147483646}.sprig-feedback-container-left{flex-flow:row-reverse}.sprig-feedback-container-center{top:50%;transform:translateY(-50%)}.sprig-feedback-container-bottom{bottom:0%;margin-bottom:15px}.sprig-feedback-loading-container{align-items:center;background-color:#fff;border:2px solid var(--feedback-border);display:flex;max-height:90vh;max-width:90vw;min-width:0px}.sprig-feedback-loading-container-left{border-left:none;border-radius:0 8px 8px 0}.sprig-feedback-loading-container-right{border-right:none;border-radius:8px 0 0 8px}#sprig-feedback-error-container{margin:auto;text-align:center;width:360px}.sprig-feedback-error-text{font-weight:400;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol}#sprig-feedback-loading-container .ul-container{position:relative;max-height:inherit}#sprig-feedback-loading-animation{position:absolute}.sprig-feedback-loading-container-previews iframe{max-height:inherit!important}', nonce: window.UserLeap.styleNonce }), se({ document, elementId: "ul-custom-style", styleString: r ?? "", nonce: window.UserLeap.styleNonce }), $e = a === "center-modal", H = o;
|
|
319
|
-
const [
|
|
320
|
-
((
|
|
321
|
-
if (G() || !qt.includes(
|
|
319
|
+
const [y, u] = o.split("-");
|
|
320
|
+
((f) => {
|
|
321
|
+
if (G() || !qt.includes(f))
|
|
322
322
|
return;
|
|
323
|
-
const [
|
|
324
|
-
|
|
323
|
+
const [v, U] = f.split("-"), S = document.createElement("div");
|
|
324
|
+
S.id = "sprig-feedback-container", S.classList.add(`sprig-feedback-container-${U}`, `sprig-feedback-container-${v}`), document.body.appendChild(S);
|
|
325
325
|
})(o), c = G(), P = document.createElement("button");
|
|
326
|
-
const
|
|
327
|
-
|
|
328
|
-
const
|
|
326
|
+
const m = document.createElement("div");
|
|
327
|
+
m.className = "sprig-feedback-button-label", m.innerText = l, P.appendChild(m), P.id = "sprig-feedback-button", P.classList.add(`sprig-feedback-button-${u}`, `sprig-feedback-button-${y}`, `sprig-feedback-button-${s}`, "fade-in-transition"), w.on(re.SURVEY_FADING_OUT, be), P.addEventListener("click", async () => {
|
|
328
|
+
const f = document.getElementById("sprig-feedback-error-container");
|
|
329
329
|
if (dt() || lt()) {
|
|
330
330
|
if (be()) {
|
|
331
|
-
w.emit(g.SurveyWillClose, { name: g.SurveyWillClose, initiator:
|
|
332
|
-
const
|
|
333
|
-
|
|
331
|
+
w.emit(g.SurveyWillClose, { name: g.SurveyWillClose, initiator: V.FeedbackClosed, studyType: "feedbackButton", "survey.id": d });
|
|
332
|
+
const U = G();
|
|
333
|
+
f && U && (U.remove(), Z = null, b = null);
|
|
334
334
|
}
|
|
335
335
|
return;
|
|
336
336
|
}
|
|
337
|
-
if (ge(T(window.UserLeap)) ||
|
|
338
|
-
return
|
|
339
|
-
const
|
|
340
|
-
const
|
|
341
|
-
return
|
|
337
|
+
if (ge(T(window.UserLeap)) || Ae || Ge(), e)
|
|
338
|
+
return b && b.classList.add("sprig-feedback-loading-container-previews"), await X(e), void Y();
|
|
339
|
+
const v = await (async (U) => {
|
|
340
|
+
const S = await C(A("1", [q], "startFeedbackStudy"), { body: JSON.stringify({ surveyUuid: U }), method: "POST" });
|
|
341
|
+
return S.ok ? S.json : null;
|
|
342
342
|
})(p);
|
|
343
|
-
if (
|
|
344
|
-
w.once(g.SurveyAppeared, Y), X({ ...
|
|
345
|
-
else if (
|
|
346
|
-
const
|
|
347
|
-
|
|
343
|
+
if (v)
|
|
344
|
+
w.once(g.SurveyAppeared, Y), X({ ...v, studyType: "feedbackButton" }, n);
|
|
345
|
+
else if (b) {
|
|
346
|
+
const U = Ft();
|
|
347
|
+
b.appendChild(U), Y(), b.style.height = "300px", b.style.width = "360px";
|
|
348
348
|
}
|
|
349
349
|
}), c == null || c.appendChild(P), w.emit(g.FeedbackButtonLoaded, { name: g.FeedbackButtonLoaded, "survey.id": d });
|
|
350
|
-
const { useMobileStyling: I, _config: { border:
|
|
350
|
+
const { useMobileStyling: I, _config: { border: _ } } = window.UserLeap;
|
|
351
351
|
if ($e || I)
|
|
352
352
|
de(0);
|
|
353
353
|
else {
|
|
354
|
-
const
|
|
355
|
-
|
|
356
|
-
const
|
|
357
|
-
de(-
|
|
354
|
+
const f = document.createElement("div");
|
|
355
|
+
f.id = "sprig-feedback-loading-container", f.className = `sprig-feedback-loading-container sprig-feedback-loading-container-${u}`, f.style.setProperty("--feedback-border", _), b = f, Ie(), c == null || c.appendChild(f);
|
|
356
|
+
const v = ct();
|
|
357
|
+
de(-v);
|
|
358
358
|
}
|
|
359
|
-
window.UserLeap._config.isOnQuestionsTab && e && !ae() &&
|
|
359
|
+
window.UserLeap._config.isOnQuestionsTab && e && !ae() && b && (Ge(), Ie(), b && b.classList.add("sprig-feedback-loading-container-previews"), X(e), Y());
|
|
360
360
|
}, Ft = () => {
|
|
361
361
|
const t = document.createElement("div");
|
|
362
362
|
t.id = "sprig-feedback-error-container", t.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 40 40" fill="none">
|
|
@@ -499,10 +499,10 @@ const Ee = (t) => {
|
|
|
499
499
|
e.report(s / 1e3), setTimeout(() => _e(t, e), t);
|
|
500
500
|
}, 0);
|
|
501
501
|
};
|
|
502
|
-
let le, ce, pe, ue, Je,
|
|
502
|
+
let le, ce, pe, ue, Je, W = {};
|
|
503
503
|
const ne = (t, e = 1) => {
|
|
504
504
|
const { name: n } = t;
|
|
505
|
-
|
|
505
|
+
W[n] = (W[n] || 0) + e;
|
|
506
506
|
}, gt = (t) => {
|
|
507
507
|
let e = 1;
|
|
508
508
|
return t.childNodes.forEach((n) => {
|
|
@@ -522,10 +522,10 @@ const ne = (t, e = 1) => {
|
|
|
522
522
|
case "characterData":
|
|
523
523
|
return void ne(ue);
|
|
524
524
|
}
|
|
525
|
-
},
|
|
526
|
-
le.report(
|
|
527
|
-
},
|
|
528
|
-
le =
|
|
525
|
+
}, Vt = (t) => t.forEach(Ht), Wt = () => {
|
|
526
|
+
le.report(W[le.name] || 0), ce.report(W[ce.name] || 0), pe.report(W[pe.name] || 0), ue.report(W[ue.name] || 0), W = {};
|
|
527
|
+
}, Nt = (t = 1e3) => {
|
|
528
|
+
le = N("sdk_mutations_nodes_added"), ce = N("sdk_mutations_nodes_removed"), pe = N("sdk_mutations_attributes_changed"), ue = N("sdk_mutations_character_data"), Je = new MutationObserver(Vt), Je.observe(document, { attributes: !0, attributeOldValue: !0, characterData: !0, characterDataOldValue: !0, childList: !0, subtree: !0 }), setInterval(Wt, t);
|
|
529
529
|
}, Bt = ({ isWeb: t, reportingIntervalSeconds: e, thresholds: n, postMetrics: s }) => {
|
|
530
530
|
kt(n, (r, i) => {
|
|
531
531
|
var o, a;
|
|
@@ -534,17 +534,17 @@ const ne = (t, e = 1) => {
|
|
|
534
534
|
(a = k.replay) == null || a.disableRecording("Threshold violated", new Error(l), { reportError: !1 }), window.UserLeap.reportError("Sdk Performance Metric threshold violated", new Error("Sdk Performance Metric threshold violated"), { metricName: i.metric, type: i.type, value: i.value }, { metricName: i.metric }), _t();
|
|
535
535
|
}
|
|
536
536
|
}), Et({ reportingIntervalSeconds: e, postMetrics: s }), t && (((r = 1e3) => {
|
|
537
|
-
const i =
|
|
537
|
+
const i = N("sdk_event_queue_latency_seconds");
|
|
538
538
|
_e(r, i);
|
|
539
539
|
})(), ((r = 1e4) => {
|
|
540
|
-
ut =
|
|
541
|
-
})(),
|
|
540
|
+
ut = N("sdk_dom_nodes_count"), wt = N("sdk_page_html_characters"), Ke(), setInterval(Ke, r);
|
|
541
|
+
})(), Nt());
|
|
542
542
|
}, $t = "test", Gt = ["popState", "pushState", "replaceState"];
|
|
543
543
|
let ee;
|
|
544
|
-
const we = {}, Q = "!email",
|
|
544
|
+
const we = {}, Q = "!email", yt = "pageUrl";
|
|
545
545
|
let Le = window.location.href;
|
|
546
546
|
function te(t) {
|
|
547
|
-
var a;
|
|
547
|
+
var a, l;
|
|
548
548
|
const { pageUrlEvents: e, interactiveEvents: n, dismissOnPageChange: s, platform: r } = window.UserLeap._config;
|
|
549
549
|
if (r && r !== "web")
|
|
550
550
|
return;
|
|
@@ -553,25 +553,28 @@ function te(t) {
|
|
|
553
553
|
e && bt(window.location.href), n && (ft(), Kt()), at() && (() => {
|
|
554
554
|
if (ae())
|
|
555
555
|
return;
|
|
556
|
-
const
|
|
557
|
-
|
|
558
|
-
})(), xt.getItem("sprig.isCapturingHeatmap") && ((a = k.replay) == null
|
|
556
|
+
const p = G();
|
|
557
|
+
p && (It(Z) || (p.remove(), Z = null, b = null));
|
|
558
|
+
})(), xt.getItem("sprig.isCapturingHeatmap") && ((l = (a = k.replay) == null ? void 0 : a.checkPendingHeatmapsUrl()) == null || l.then((p) => {
|
|
559
|
+
var d;
|
|
560
|
+
p && ((d = k.replay) == null || d.uploadReadyPendingCaptures(!0));
|
|
561
|
+
})), !ae() && s && o && o !== window.location.href && t && Gt.includes(t.type) && window.UserLeap("dismissActiveSurvey", V.PageChange);
|
|
559
562
|
}
|
|
560
|
-
const
|
|
563
|
+
const mt = { capture: !0 }, Kt = () => {
|
|
561
564
|
const t = window.UserLeap._config.interactiveEvents.filter((n) => tt(n, window.location.href)).map((n) => {
|
|
562
565
|
const { name: s, properties: r } = n, { selector: i, innerText: o } = r;
|
|
563
566
|
return i ? (a) => {
|
|
564
|
-
if (
|
|
567
|
+
if (Ne(a.target))
|
|
565
568
|
try {
|
|
566
569
|
a.target.closest(i) && window.UserLeap("track", s);
|
|
567
570
|
} catch {
|
|
568
571
|
}
|
|
569
572
|
return !1;
|
|
570
|
-
} : (a) => (
|
|
573
|
+
} : (a) => (Ne(a.target) && a.target.innerText === o && window.UserLeap("track", s), !1);
|
|
571
574
|
}), e = (n) => t.forEach((s) => s(n));
|
|
572
|
-
window.UserLeap._config.interactiveEventsHandler = e, window.addEventListener("click", e,
|
|
575
|
+
window.UserLeap._config.interactiveEventsHandler = e, window.addEventListener("click", e, mt);
|
|
573
576
|
}, ft = () => {
|
|
574
|
-
window.UserLeap._config.interactiveEventsHandler && window.removeEventListener("click", window.UserLeap._config.interactiveEventsHandler,
|
|
577
|
+
window.UserLeap._config.interactiveEventsHandler && window.removeEventListener("click", window.UserLeap._config.interactiveEventsHandler, mt), delete window.UserLeap._config.interactiveEventsHandler;
|
|
575
578
|
};
|
|
576
579
|
function vt() {
|
|
577
580
|
const t = D.getItemObject("userleap.ids");
|
|
@@ -589,18 +592,18 @@ function bt(t, e, n, s) {
|
|
|
589
592
|
if (t.endsWith("mock_snippet.html"))
|
|
590
593
|
return;
|
|
591
594
|
M.info("PageView", { url: t });
|
|
592
|
-
const o =
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
595
|
+
const o = (r = document == null ? void 0 : document.querySelector('meta[name="description"]')) == null ? void 0 : r.getAttribute("content");
|
|
596
|
+
(i = k.replay) == null || i.RecordPageView({ ...o && { description: o }, url: t, referrer: document.referrer, pageTitle: document.title });
|
|
597
|
+
const a = window.UserLeap._config.pageUrlEvents;
|
|
598
|
+
let l = !1;
|
|
599
|
+
if (a && a.length)
|
|
600
|
+
for (let d = 0; d < a.length && (l = tt(a[d], t), !l); d++)
|
|
596
601
|
;
|
|
597
|
-
if (!
|
|
602
|
+
if (!l)
|
|
598
603
|
return;
|
|
599
604
|
window.UserLeap.debugMode && console.info("[DEBUG] Sprig trackPageView", t);
|
|
600
|
-
const
|
|
601
|
-
s && (
|
|
602
|
-
const p = (r = document == null ? void 0 : document.querySelector('meta[name="description"]')) == null ? void 0 : r.getAttribute("content");
|
|
603
|
-
(i = k.replay) == null || i.RecordPageView({ ...p && { description: p }, url: t, referrer: document.referrer, pageTitle: document.title });
|
|
605
|
+
const p = { url: t };
|
|
606
|
+
s && (p.trackPageView = !0), window.UserLeap._queue.push(["track", yt, e, p, n]);
|
|
604
607
|
} catch (o) {
|
|
605
608
|
o instanceof Error && (o.stack = t, window.UserLeap.reportError("trackPageView", o)), console.warn("[Sprig] (ERR-428) Failed to track page view", o);
|
|
606
609
|
}
|
|
@@ -619,7 +622,7 @@ async function Ue(t, e) {
|
|
|
619
622
|
const n = De();
|
|
620
623
|
t && !e && (window.UserLeap._config.mode = $t);
|
|
621
624
|
const s = ge(T(window.UserLeap)), r = await C(function(i) {
|
|
622
|
-
const o = new URL(
|
|
625
|
+
const o = new URL(A("1", [F], "questions"));
|
|
623
626
|
return Object.entries(i || {}).forEach(([a, l]) => {
|
|
624
627
|
l && o.searchParams.append(a, String(l));
|
|
625
628
|
}), o.toString();
|
|
@@ -652,50 +655,50 @@ const Yt = function(t) {
|
|
|
652
655
|
if (!window.UserLeap)
|
|
653
656
|
return;
|
|
654
657
|
const e = async (r = {}) => {
|
|
655
|
-
var
|
|
658
|
+
var f, v, U, S, O;
|
|
656
659
|
const { userId: i, anonymousId: o, metadata: a = {}, properties: l, showSurveyCallback: p } = r;
|
|
657
660
|
let { eventName: d } = r;
|
|
658
|
-
if (window.UserLeap.debugMode && d !==
|
|
661
|
+
if (window.UserLeap.debugMode && d !== yt && console.info("[DEBUG] Sprig track", r), t.mode === "test")
|
|
659
662
|
return;
|
|
660
663
|
const c = D.getItem("sprig.previewKey") ?? void 0;
|
|
661
664
|
if (t.requireUserIdForTracking && !window.UserLeap.userId && !i) {
|
|
662
|
-
const
|
|
663
|
-
return console.warn(
|
|
665
|
+
const h = "[Sprig] - Skipping tracking without userId";
|
|
666
|
+
return console.warn(h), { success: !1, message: h, surveyState: "no survey" };
|
|
664
667
|
}
|
|
665
668
|
if (!d || d.trim().length === 0) {
|
|
666
669
|
d = d ? String(d) : "";
|
|
667
|
-
const
|
|
668
|
-
return console.warn(
|
|
670
|
+
const h = "[Sprig] - Invalid event name " + d;
|
|
671
|
+
return console.warn(h), { success: !1, message: h, surveyState: "no survey" };
|
|
669
672
|
}
|
|
670
|
-
const
|
|
671
|
-
a.url || (a.url =
|
|
672
|
-
const u = window.UserLeap.delayingSurvey || dt() ? await C(
|
|
673
|
+
const y = ee ?? window.location.href;
|
|
674
|
+
a.url || (a.url = y), x("trackStartUrl", y), (v = (f = window.UserLeap) == null ? void 0 : f._config) != null && v.optimizelyEnabled && (ie(T(window.UserLeap)) || oe.getAndSetWebOptimizelyExperiments(), a.optimizelyExperiments = Object.assign({}, oe.getAllOptimizelyExperiments())), (S = (U = window.UserLeap) == null ? void 0 : U._config) != null && S.launchDarklyEnabled && (a.launchDarklyFlags = ke.getAllLaunchDarklyVariations()), i && (window.UserLeap.userId = i), o && (window.UserLeap.partnerAnonymousId = o), l && (a.eventProperties = l), (O = k.replay) == null || O.RecordEvent({ name: d, url: a.url }), M.info("TrackEvent", { eventName: d });
|
|
675
|
+
const u = window.UserLeap.delayingSurvey || dt() ? await C(A("1", [q], "events/batch"), { body: JSON.stringify({ events: [{ event: d, metadata: a }], previewKey: c }), method: "POST", shouldDropOnRateLimit: !0 }) : await C(A("1", [q], "events"), { body: JSON.stringify({ event: d, metadata: a, previewKey: c }), method: "POST", shouldDropOnRateLimit: !0 });
|
|
673
676
|
if (!u.ok) {
|
|
674
|
-
const
|
|
675
|
-
return u.reportError && (console.warn(
|
|
677
|
+
const h = "[Sprig] (ERR-421) Failed to track event";
|
|
678
|
+
return u.reportError && (console.warn(h, u.error), u.error && window.UserLeap.reportError("track", u.error)), { success: !1, message: h, error: u.error, surveyState: "no survey" };
|
|
676
679
|
}
|
|
677
680
|
i && x("uid", i), o && x("aid", o);
|
|
678
|
-
const
|
|
679
|
-
|
|
681
|
+
const m = u.json;
|
|
682
|
+
m.invalidPreviewKey && D.removeItem("sprig.previewKey");
|
|
680
683
|
const I = a.trackPageView ? a.url : void 0;
|
|
681
|
-
return
|
|
684
|
+
return m != null && m.feedbackButton && pt(m.feedbackButton, void 0, I), await async function(h, E) {
|
|
682
685
|
var z, K;
|
|
683
|
-
let
|
|
684
|
-
return !(E && ((z =
|
|
685
|
-
}(u, p) ? function(
|
|
686
|
+
let R = !0;
|
|
687
|
+
return !(E && ((z = h == null ? void 0 : h.json) != null && z.surveyId) && (window.UserLeap.delayingSurvey = !0, R = await E(h.json.surveyId), window.UserLeap.delayingSurvey = !1, !R)) && ((K = h == null ? void 0 : h.json) != null && K.delay && !window.UserLeap.isMobileSDK && (window.UserLeap.delayingSurvey = !0, await rt(h.json.delay), window.UserLeap.delayingSurvey = !1), R);
|
|
688
|
+
}(u, p) ? function(h) {
|
|
686
689
|
if (!window.UserLeap._config.dismissOnPageChange)
|
|
687
690
|
return !0;
|
|
688
|
-
const E = new URL(
|
|
689
|
-
return E.hostname ===
|
|
690
|
-
}(
|
|
691
|
+
const E = new URL(h), R = new URL(ee ?? window.location.href);
|
|
692
|
+
return E.hostname === R.hostname && E.pathname === R.pathname;
|
|
693
|
+
}(y) ? X(m, I) : { success: !1, message: "Study should not be displayed after page navigation", surveyState: "no survey" } : { success: !1, message: "[Sprig] Callback returned false, aborting rendering of survey", surveyState: "no survey" };
|
|
691
694
|
}, n = (r, i) => {
|
|
692
695
|
var a;
|
|
693
|
-
const o = (a = r == null ? void 0 : r.querySelector(`[id="${
|
|
696
|
+
const o = (a = r == null ? void 0 : r.querySelector(`[id="${Re}"]`)) == null ? void 0 : a.contentDocument;
|
|
694
697
|
o && se({ document: o, elementId: "ul-custom-style", styleString: i });
|
|
695
|
-
}, s = { displaySurvey: async (r) => (console.warn("[Sprig] displaySurvey should only be used to debug your studies; not intended for production usage."), window.UserLeap("dismissActiveSurvey",
|
|
696
|
-
window.UserLeap("dismissActiveSurvey",
|
|
698
|
+
}, s = { displaySurvey: async (r) => (console.warn("[Sprig] displaySurvey should only be used to debug your studies; not intended for production usage."), window.UserLeap("dismissActiveSurvey", V.Override), Ue({ surveyId: r }, !0)), _previewSurvey(r) {
|
|
699
|
+
window.UserLeap("dismissActiveSurvey", V.Override), Ue({ surveyTemplateId: r }, !1);
|
|
697
700
|
}, _reviewSurvey(r) {
|
|
698
|
-
window.UserLeap("dismissActiveSurvey",
|
|
701
|
+
window.UserLeap("dismissActiveSurvey", V.Override), Ue({ surveyId: r }, !1);
|
|
699
702
|
}, previewSurvey(r) {
|
|
700
703
|
s._previewSurvey(r);
|
|
701
704
|
}, reviewSurvey(r) {
|
|
@@ -706,7 +709,7 @@ const Yt = function(t) {
|
|
|
706
709
|
window.UserLeap._queue.unpause();
|
|
707
710
|
}, setVisitorToken() {
|
|
708
711
|
console.warn("[Sprig] setVisitorToken is deprecated.");
|
|
709
|
-
}, dismissActiveSurvey(r =
|
|
712
|
+
}, dismissActiveSurvey(r = V.API) {
|
|
710
713
|
window.UserLeap.container && w.emit(g.SurveyWillClose, { name: g.SurveyWillClose, initiator: r, "survey.id": parseInt(window.UserLeap.container.dataset.studyId) });
|
|
711
714
|
}, async setAttribute(r, i) {
|
|
712
715
|
if (!r || !i && i !== 0 && i !== !1) {
|
|
@@ -742,7 +745,7 @@ const Yt = function(t) {
|
|
|
742
745
|
return { success: !0 };
|
|
743
746
|
const l = {};
|
|
744
747
|
let p;
|
|
745
|
-
return i && (l.userId = window.UserLeap.userId = i), o && (l.partnerAnonymousId = window.UserLeap.partnerAnonymousId = o), a && Object.keys(a).length > 0 ? (p = await C(
|
|
748
|
+
return i && (l.userId = window.UserLeap.userId = i), o && (l.partnerAnonymousId = window.UserLeap.partnerAnonymousId = o), a && Object.keys(a).length > 0 ? (p = await C(A("1", [F, q], "attributes"), { body: JSON.stringify(a), method: "PUT" }), p.ok ? Object.assign(we, a) : p.reportError && (console.warn("[Sprig] (ERR-432) identifyAndSetAttributes failed", p.error), p.error && window.UserLeap.reportError("identifyAndSetAttributes", p.error))) : p = await C(A("1", [F, q]), { body: JSON.stringify(l), method: "PUT" }), a && a[Q] && (window.UserLeap.email = a[Q]), p.ok && (i && x("uid", i), o && x("aid", o)), { success: !!p.ok };
|
|
746
749
|
}, async removeAttributes(r) {
|
|
747
750
|
if (window.UserLeap.debugMode && console.info("[DEBUG] Sprig removeAttributes", r), t.mode === "test")
|
|
748
751
|
return;
|
|
@@ -754,7 +757,7 @@ const Yt = function(t) {
|
|
|
754
757
|
const o = "[Sprig] - Skipping tracking without userId";
|
|
755
758
|
return console.warn(o), { success: !1, message: o };
|
|
756
759
|
}
|
|
757
|
-
const i = await C(
|
|
760
|
+
const i = await C(A("1", [F, q], "attributes"), { body: JSON.stringify({ delete: r }), method: "DELETE" });
|
|
758
761
|
return !i.ok && i.reportError && (console.warn("[Sprig] (ERR-433) Remove attributes failed", i.error), i.error && window.UserLeap.reportError("removeAttributes", i.error)), { success: !!i.ok };
|
|
759
762
|
}, async addSurveyListener(r) {
|
|
760
763
|
w.on(g.SurveyLifeCycle, r);
|
|
@@ -777,7 +780,7 @@ const Yt = function(t) {
|
|
|
777
780
|
if (t.mode === "test" || r === window.UserLeap.userId)
|
|
778
781
|
return;
|
|
779
782
|
window.UserLeap.userId = r;
|
|
780
|
-
const i = window.UserLeap.visitorId, o = await C(
|
|
783
|
+
const i = window.UserLeap.visitorId, o = await C(A("1", [F, q]), { body: JSON.stringify({ userId: r }), method: "PUT" });
|
|
781
784
|
o.ok ? (i !== window.UserLeap.visitorId && ((a = k.replay) == null || a.clearUserReplayData()), x("uid", r)) : o.reportError && (console.warn("[Sprig] (ERR-420) Failed to set user id", o.error), o.error && window.UserLeap.reportError("setUserId", o.error));
|
|
782
785
|
}, async setPartnerAnonymousId(r) {
|
|
783
786
|
if (window.UserLeap.debugMode && console.info("[DEBUG] Sprig setPartnerAnonymousId", r), r == null) {
|
|
@@ -792,19 +795,19 @@ const Yt = function(t) {
|
|
|
792
795
|
}, applyStyles(r) {
|
|
793
796
|
window.UserLeap.customStyles = r, n(window.UserLeap.container, r);
|
|
794
797
|
}, setWindowDimensions(r, i) {
|
|
795
|
-
var
|
|
798
|
+
var y, u;
|
|
796
799
|
const o = typeof r == "string" ? parseInt(r, 10) : r, a = typeof i == "string" ? parseInt(i, 10) : i;
|
|
797
800
|
isNaN(o) || isNaN(a) || (window.UserLeap.windowDimensions = { width: o, height: a });
|
|
798
801
|
const l = T(window.UserLeap), p = ge(l), d = l["userleap-platform"] === "web";
|
|
799
802
|
if (!window.UserLeap.frameId)
|
|
800
803
|
return;
|
|
801
804
|
const c = document.getElementById(window.UserLeap.frameId);
|
|
802
|
-
c && (window.UserLeap.useMobileStyling && ((
|
|
805
|
+
c && (window.UserLeap.useMobileStyling && ((y = window.UserLeap.windowDimensions) != null && y.width && (c.style.width = `${window.UserLeap.windowDimensions.width}px`), (u = window.UserLeap.windowDimensions) != null && u.height && (c.style.maxHeight = window.UserLeap.windowDimensions.height - 20 + "px"), c.contentDocument && (c.style.height = String(Mt(c.contentDocument, d && !p, et(l))[0]) + "px")), w.emit(g.SurveyDimensions, { name: g.SurveyDimensions, contentFrameWidth: c.clientWidth, contentFrameHeight: c.clientHeight, "survey.id": parseInt(window.UserLeap.container.dataset.studyId) }));
|
|
803
806
|
}, logoutUser() {
|
|
804
807
|
var r;
|
|
805
808
|
window.UserLeap.debugMode && console.info("[DEBUG] Sprig logout"), M.info("LogOut", { vid: window.UserLeap.visitorId, userId: window.UserLeap.userId }), window.UserLeap.visitorId = null, window.UserLeap.userId = null, window.UserLeap.partnerAnonymousId = null, window.UserLeap.token = null, window.UserLeap.email = null, D.removeItem("userleap.ids"), window.UserLeap._queue.isPaused() && window.UserLeap._queue.empty(), ht(), (r = k.replay) == null || r.clearUserReplayData(), window.UserLeap._queue.unpause();
|
|
806
809
|
}, teardown() {
|
|
807
|
-
["hashchange", "popstate"].forEach((r) => window.removeEventListener(r, te, !0)), window.UserLeap._config.interactiveEvents && ft(), window.UserLeap("dismissActiveSurvey",
|
|
810
|
+
["hashchange", "popstate"].forEach((r) => window.removeEventListener(r, te, !0)), window.UserLeap._config.interactiveEvents && ft(), window.UserLeap("dismissActiveSurvey", V.API), delete window.UserLeap, delete window.Sprig, delete window._Sprig;
|
|
808
811
|
}, integrateOptimizely(r, i = !0) {
|
|
809
812
|
var o, a;
|
|
810
813
|
if ((a = (o = window.UserLeap) == null ? void 0 : o._config) != null && a.optimizelyEnabled)
|
|
@@ -852,19 +855,19 @@ const Yt = function(t) {
|
|
|
852
855
|
};
|
|
853
856
|
async function Xt(t, e, n = {}, s = {}) {
|
|
854
857
|
const r = window.__cfg && window.__cfg.mode, i = De(), o = window.UserLeap.envId, a = window.document.documentElement, l = { mode: r, screenWidth: window.screen.width, screenHeight: window.screen.height, clientWidth: a.clientWidth, clientHeight: a.clientHeight, location: ee ?? window.location.href, language: window.navigator.language, ...n }, p = { action: t, breadcrumbs: M.breadcrumbs, err: { message: `${e == null ? void 0 : e.name} - ${e == null ? void 0 : e.message}`, stack: e == null ? void 0 : e.stack }, meta: l, vid: i, envId: o, ...s };
|
|
855
|
-
(await C(
|
|
858
|
+
(await C(A("1", null, "errors"), { method: "POST", headers: { "x-ul-error": window.btoa(`userleap-${Date.now()}-error`) }, body: JSON.stringify(p), shouldDropOnRateLimit: !0 })).ok || console.warn("[Sprig] (ERR-444) Failed to report error to API", e);
|
|
856
859
|
}
|
|
857
860
|
function Zt(t = {}) {
|
|
858
861
|
var s;
|
|
859
862
|
(s = window.SprigLoggerCallback) == null || s.call(window, "Initializing Sprig");
|
|
860
863
|
const e = new URLSearchParams(window.location.search).get("sprigPreviewKey") ?? "";
|
|
861
864
|
async function n() {
|
|
862
|
-
var
|
|
865
|
+
var y, u, m, I, _;
|
|
863
866
|
if (window.UserLeap.loaded)
|
|
864
867
|
return;
|
|
865
|
-
if ((
|
|
866
|
-
for (const
|
|
867
|
-
window.UserLeap[
|
|
868
|
+
if ((y = window.SprigLoggerCallback) == null || y.call(window, "Loading Sprig"), window.UserLeap.reportError = Xt, window.UserLeap.loaded = !0, window.UserLeap._config = Object.assign({}, t, window.UserLeap.config), window.UserLeap.delayingSurvey = !1, window.UserLeap._config && typeof window.UserLeap._config == "object")
|
|
869
|
+
for (const f in window.UserLeap._config)
|
|
870
|
+
window.UserLeap[f] = window.UserLeap._config[f];
|
|
868
871
|
if (!window.UserLeap.envId) {
|
|
869
872
|
if (!window.UserLeap.appId)
|
|
870
873
|
throw new Error("Missing Environment id");
|
|
@@ -881,28 +884,30 @@ function Zt(t = {}) {
|
|
|
881
884
|
window.UserLeap._API_URL || (window.UserLeap._API_URL = "https://api.sprig.com");
|
|
882
885
|
const a = [...window.UserLeap._queue];
|
|
883
886
|
window.UserLeap._queue = new zt(window.UserLeap, []), window.UserLeap._queue.pause();
|
|
884
|
-
for (let
|
|
885
|
-
window.UserLeap._queue.push(a[
|
|
887
|
+
for (let f = 0; f < a.length; f++)
|
|
888
|
+
window.UserLeap._queue.push(a[f]);
|
|
886
889
|
const l = r.token;
|
|
887
890
|
l ? (window.UserLeap.token = l, window.UserLeap.visitorId = r.vid ?? null, window.UserLeap.userId = r.uid ?? null, window.UserLeap.partnerAnonymousId = r.aid ?? null) : ht();
|
|
888
891
|
const p = ie(T(window.UserLeap));
|
|
889
|
-
(
|
|
890
|
-
const d = await async function(
|
|
891
|
-
var
|
|
892
|
-
const
|
|
892
|
+
(u = window.SprigLoggerCallback) == null || u.call(window, "Sprig fetching config");
|
|
893
|
+
const d = await async function(f) {
|
|
894
|
+
var O, h;
|
|
895
|
+
const v = T(window.UserLeap);
|
|
893
896
|
document.addEventListener("securitypolicyviolation", Fe);
|
|
894
|
-
const
|
|
895
|
-
if (document.removeEventListener("securitypolicyviolation", Fe), !
|
|
896
|
-
return (
|
|
897
|
-
const S =
|
|
898
|
-
return S != null && S.disabled ? ((
|
|
897
|
+
const U = await Xe(A("1", [F], "config"), { headers: v });
|
|
898
|
+
if (document.removeEventListener("securitypolicyviolation", Fe), !U.ok)
|
|
899
|
+
return (O = window.SprigLoggerCallback) == null || O.call(window, "Sprig config fetch failed"), U.reportError && (console.warn("[Sprig] (ERR-422) Failed to load configuration", U.error), U.error && window.UserLeap.reportError("applyRemoteConfig", U.error)), ze("Disabled: failed to fetch configuration"), f;
|
|
900
|
+
const S = U.json;
|
|
901
|
+
return S != null && S.disabled ? ((h = window.SprigLoggerCallback) == null || h.call(window, "Sprig config fetch disabled"), ze(`Disabled: ${S.disabled}`), { disabled: S.disabled }) : Object.assign({}, S, f);
|
|
899
902
|
}(t);
|
|
900
|
-
(
|
|
901
|
-
var
|
|
902
|
-
await C(
|
|
903
|
-
} })
|
|
904
|
-
|
|
905
|
-
|
|
903
|
+
(m = window.SprigLoggerCallback) == null || m.call(window, "Sprig fetched config"), Bt({ isWeb: !p, reportingIntervalSeconds: d.metricsReportingEnabled || d.mobileMetricsReportingEnabled ? d.metricsReportingIntervalSeconds : 0, thresholds: d.metricThresholds, postMetrics: async (f) => {
|
|
904
|
+
var v;
|
|
905
|
+
await C(A("1", [F], "metrics"), { body: f, method: "POST", headers: { "x-ul-replay-enabled": `${!!((v = k.replay) != null && v.isReplayRecording())}` }, shouldDropOnRateLimit: !0 });
|
|
906
|
+
} });
|
|
907
|
+
const c = d.alwaysOnReplay ? { userAgent: window.navigator.userAgent, surveyId: d.alwaysOnReplay.surveyId, responseGroupUuid: d.alwaysOnReplay.responseGroupUuid, sdkVersion: "2.33.0", maxDurationSeconds: d.alwaysOnReplay.maxDurationSeconds } : void 0;
|
|
908
|
+
await ((I = k.replay) == null ? void 0 : I.initializeReplay({ maxReplayDurationSeconds: d.maxReplayDurationSeconds, maxInflightRequests: window.UserLeap.maxInflightReplayRequests ?? 2, replaySettings: d.replaySettings, apiUrl: window.UserLeap._API_URL, alwaysOnConfig: c })), Yt(d), await Qt(d), window.UserLeap._queue.unpause(), (_ = window.SprigLoggerCallback) == null || _.call(window, "SdkReady"), w.emit(g.SDKReady, { mobileMetricsReportingEnabled: !!d.mobileMetricsReportingEnabled, metricsReportingInterval: d.metricsReportingIntervalSeconds || 0, metricsThresholds: d.metricThresholds || [], maxMobileReplayDurationSeconds: d.maxMobileReplayDurationSeconds, mobileReplaySettings: d.mobileReplaySettings }), w.emit(g.VisitorIDUpdated, { visitorId: window.UserLeap.visitorId }), w.on(g.VisitorIDUpdated, () => {
|
|
909
|
+
for (const f in we)
|
|
910
|
+
delete we[f];
|
|
906
911
|
});
|
|
907
912
|
}
|
|
908
913
|
window.UserLeap.UPDATES = re, window.UserLeap("setPreviewKey", e), document.readyState === "complete" ? n() : window.attachEvent ? window.attachEvent("onload", n) : window.addEventListener("load", () => {
|
|
@@ -992,7 +997,7 @@ const Ye = { configure: (t) => {
|
|
|
992
997
|
} }, dr = { sprig: Ye, SprigAPI: xe, configure: Ye.configure };
|
|
993
998
|
export {
|
|
994
999
|
ir as A,
|
|
995
|
-
|
|
1000
|
+
Rt as C,
|
|
996
1001
|
rr as D,
|
|
997
1002
|
sr as E,
|
|
998
1003
|
xe as S,
|