makethisbetter 1.28.2 → 1.28.3

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.
@@ -230,8 +230,8 @@ class He {
230
230
  constructor(t, e, r, n, s = "right", o = !0) {
231
231
  this.currentMode = "markup", this.handlePointerMove = (a) => {
232
232
  if (a.pointerType !== "mouse") return;
233
- const l = this.hintBarEl.getBoundingClientRect(), c = a.clientX >= l.left && a.clientX <= l.right && a.clientY >= l.top && a.clientY <= l.bottom;
234
- this.hintBarEl.classList.toggle("mtb-hint-bar--under-pointer", c);
233
+ const c = this.hintBarEl.getBoundingClientRect(), l = a.clientX >= c.left && a.clientX <= c.right && a.clientY >= c.top && a.clientY <= c.bottom;
234
+ this.hintBarEl.classList.toggle("mtb-hint-bar--under-pointer", l);
235
235
  }, this.touchHintDismissListening = !1, this.dismissTouchHint = () => {
236
236
  this.hintBarEl.classList.add("mtb-hint-bar--dismissed"), this.stopTouchHintDismissListening();
237
237
  }, this.messages = e, this.touch = S(), this.hintBarEl = t.el("div", "mtb-hint-bar"), this.hintBarEl.innerHTML = `<span class="mtb-toolbar-hint">${d(this.idleHint())}</span>`, this.touch && !o && this.hintBarEl.classList.add("mtb-hint-bar--dismissed"), this.el = t.el("div", "mtb-toolbar"), s === "left" && this.el.classList.add("left"), this.el.innerHTML = this.buildHTML(e), t.append(this.hintBarEl, this.el), this.host = t.host, this.host.setAttribute("data-mtb-toolbar", ""), this.hintTextEl = this.hintBarEl.querySelector(".mtb-toolbar-hint"), this.markupBtn = this.el.querySelector(".mtb-toolbar-mode-markup"), this.recordBtn = this.el.querySelector(".mtb-toolbar-mode-record"), this.markupBtn.addEventListener("click", () => {
@@ -646,12 +646,12 @@ class Ge {
646
646
  if (!t) return null;
647
647
  const e = this.drawLayer.viewportDrift(), r = V(t.x - e.x, t.y - e.y);
648
648
  if (!r) return t;
649
- const n = r.getBoundingClientRect(), s = Pt(r), o = s.x - (t.captureOffsetX ?? 0), a = s.y - (t.captureOffsetY ?? 0), l = Dt(r);
649
+ const n = r.getBoundingClientRect(), s = Pt(r), o = s.x - (t.captureOffsetX ?? 0), a = s.y - (t.captureOffsetY ?? 0), c = Dt(r);
650
650
  return {
651
651
  ...t,
652
- targetSelector: l.selector,
653
- targetText: l.text,
654
- targetName: l.name,
652
+ targetSelector: c.selector,
653
+ targetText: c.text,
654
+ targetName: c.name,
655
655
  targetRect: {
656
656
  top: n.top + a,
657
657
  left: n.left + o,
@@ -793,10 +793,10 @@ const ni = [
793
793
  function ie(i) {
794
794
  const t = document.activeElement instanceof HTMLElement ? document.activeElement : null, e = (r) => {
795
795
  if (r.key !== "Tab") return;
796
- const n = Array.from(i.querySelectorAll(ni)).filter((c) => !c.hidden);
796
+ const n = Array.from(i.querySelectorAll(ni)).filter((l) => !l.hidden);
797
797
  if (n.length === 0) return;
798
- const s = n[0], o = n[n.length - 1], l = i.getRootNode().activeElement ?? document.activeElement;
799
- r.shiftKey ? (l === s || !i.contains(l)) && (r.preventDefault(), o.focus({ preventScroll: !0 })) : (l === o || !i.contains(l)) && (r.preventDefault(), s.focus({ preventScroll: !0 }));
798
+ const s = n[0], o = n[n.length - 1], c = i.getRootNode().activeElement ?? document.activeElement;
799
+ r.shiftKey ? (c === s || !i.contains(c)) && (r.preventDefault(), o.focus({ preventScroll: !0 })) : (c === o || !i.contains(c)) && (r.preventDefault(), s.focus({ preventScroll: !0 }));
800
800
  };
801
801
  return i.addEventListener("keydown", e), {
802
802
  release() {
@@ -995,10 +995,10 @@ class ct {
995
995
  o.className = "mtb-chat-email-input", o.type = "email", o.placeholder = e.email_cta, s.appendChild(o);
996
996
  const a = document.createElement("button");
997
997
  a.className = "mtb-chat-email-submit", a.type = "button", a.textContent = e.notify, a.disabled = !0;
998
- const l = async () => {
999
- const c = o.value.trim();
1000
- if (!c) return;
1001
- if (a.disabled = !0, o.disabled = !0, await t.onSubmit(c)) {
998
+ const c = async () => {
999
+ const l = o.value.trim();
1000
+ if (!l) return;
1001
+ if (a.disabled = !0, o.disabled = !0, await t.onSubmit(l)) {
1002
1002
  const b = document.createElement("div");
1003
1003
  b.className = "mtb-chat-email-note", b.textContent = e.email_saved, r.replaceChildren(b), this.autoCloseTimer = setTimeout(() => this.destroy(), Mt);
1004
1004
  return;
@@ -1009,9 +1009,9 @@ class ct {
1009
1009
  };
1010
1010
  return o.addEventListener("input", () => {
1011
1011
  a.disabled = !o.value.trim();
1012
- }), o.addEventListener("keydown", (c) => {
1013
- c.key === "Enter" && o.value.trim() && l();
1014
- }), a.addEventListener("click", () => void l()), n.appendChild(s), n.appendChild(a), r.appendChild(n), r;
1012
+ }), o.addEventListener("keydown", (l) => {
1013
+ l.key === "Enter" && o.value.trim() && c();
1014
+ }), a.addEventListener("click", () => void c()), n.appendChild(s), n.appendChild(a), r.appendChild(n), r;
1015
1015
  }
1016
1016
  appendUserBubble(t) {
1017
1017
  const e = document.createElement("div");
@@ -1084,10 +1084,10 @@ class ct {
1084
1084
  this.inputEl.disabled = t, this.sendBtn.disabled = t, this.composerEl.classList.toggle("mtb-chat-composer-disabled", t);
1085
1085
  }
1086
1086
  positionCard(t, e, r, n) {
1087
- const s = ii(n), { vw: o, vh: a, minLeft: l, maxRight: c } = s, h = J, u = 8, b = ri(si, s), g = (this.el.offsetHeight || 280) + 80;
1087
+ const s = ii(n), { vw: o, vh: a, minLeft: c, maxRight: l } = s, h = J, u = 8, b = ri(si, s), g = (this.el.offsetHeight || 280) + 80;
1088
1088
  let f, m;
1089
1089
  const at = r && r.width < o * 0.6 && r.height < a * 0.6;
1090
- r && at ? (f = r.left, m = r.bottom + u, m + g > a - h && (m = r.top - g - u), m < h && (m = Math.min(r.bottom + u, a - g - h))) : (f = t + 12, m = e + 12), f + b > c && (f = c - b), f < l && (f = l), m < h && (m = h), m + g > a - h && (m = a - g - h), m < h && (m = h), this.el.style.left = `${f}px`, this.el.style.top = `${m}px`, this.el.style.maxHeight = `${a - m - h}px`;
1090
+ r && at ? (f = r.left, m = r.bottom + u, m + g > a - h && (m = r.top - g - u), m < h && (m = Math.min(r.bottom + u, a - g - h))) : (f = t + 12, m = e + 12), f + b > l && (f = l - b), f < c && (f = c), m < h && (m = h), m + g > a - h && (m = a - g - h), m < h && (m = h), this.el.style.left = `${f}px`, this.el.style.top = `${m}px`, this.el.style.maxHeight = `${a - m - h}px`;
1091
1091
  }
1092
1092
  submit(t) {
1093
1093
  this.sendMessage(t);
@@ -1107,10 +1107,10 @@ class mi {
1107
1107
  this.el = t.el("div", "mtb-chat mtb-chat-receipt"), this.el.setAttribute("role", "dialog"), this.el.setAttribute("aria-modal", "true"), this.el.setAttribute("aria-label", o);
1108
1108
  const a = document.createElement("div");
1109
1109
  a.className = "mtb-chat-success mtb-chat-success-simple";
1110
- const l = document.createElement("div");
1111
- l.className = "mtb-chat-success-icon", l.innerHTML = ui, a.appendChild(l);
1112
1110
  const c = document.createElement("div");
1113
- if (c.className = "mtb-chat-success-title", c.textContent = o, a.appendChild(c), n?.onViewFeedback) {
1111
+ c.className = "mtb-chat-success-icon", c.innerHTML = ui, a.appendChild(c);
1112
+ const l = document.createElement("div");
1113
+ if (l.className = "mtb-chat-success-title", l.textContent = o, a.appendChild(l), n?.onViewFeedback) {
1114
1114
  const h = document.createElement("a");
1115
1115
  h.className = "mtb-chat-success-link", h.href = "#", h.textContent = s.track_feedback, h.addEventListener("click", (u) => {
1116
1116
  u.preventDefault(), n.onViewFeedback();
@@ -1264,7 +1264,9 @@ const Ai = 200, Li = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAA
1264
1264
  async function Pi(i, t) {
1265
1265
  try {
1266
1266
  if (t?.aborted) return null;
1267
- const [{ toJpeg: e }, r] = await Promise.all([he(), St()]), n = document.body.getBoundingClientRect(), s = Oe(), o = { x: window.scrollX, y: window.scrollY }, a = Ni(document.body), l = await e(document.body, {
1267
+ const [{ toJpeg: e }, r] = await Promise.all([he(), St()]);
1268
+ if (await new Promise((l) => setTimeout(l, 0)), t?.aborted) return null;
1269
+ const n = document.body.getBoundingClientRect(), s = Oe(), o = { x: window.scrollX, y: window.scrollY }, a = Ni(document.body), c = await e(document.body, {
1268
1270
  quality: 0.85,
1269
1271
  imagePlaceholder: Li,
1270
1272
  resourceUrlResolver: i,
@@ -1283,14 +1285,14 @@ async function Pi(i, t) {
1283
1285
  transform: `translate(${n.left}px, ${n.top}px)`,
1284
1286
  transformOrigin: "top left"
1285
1287
  },
1286
- filter: (c) => {
1287
- if (c instanceof HTMLElement && c.id === w) return !1;
1288
- if (!(c instanceof Element)) return !0;
1289
- const h = c.getBoundingClientRect();
1288
+ filter: (l) => {
1289
+ if (l instanceof HTMLElement && l.id === w) return !1;
1290
+ if (!(l instanceof Element)) return !0;
1291
+ const h = l.getBoundingClientRect();
1290
1292
  return h.width === 0 && h.height === 0 ? !0 : h.top + window.scrollY - o.y <= s.height + Ai;
1291
1293
  }
1292
1294
  });
1293
- return t?.aborted ? null : { dataUrl: l, metrics: s, redactions: a, pageScroll: o };
1295
+ return t?.aborted ? null : { dataUrl: c, metrics: s, redactions: a, pageScroll: o };
1294
1296
  } catch {
1295
1297
  return null;
1296
1298
  }
@@ -1341,17 +1343,17 @@ async function Hi(i, t, e, r, n) {
1341
1343
  const a = await Ci(i);
1342
1344
  if (!a) return null;
1343
1345
  s.width = a.naturalWidth || window.innerWidth, s.height = a.naturalHeight || window.innerHeight, o.drawImage(a, 0, 0);
1344
- const l = Be(e, s.width, s.height);
1346
+ const c = Be(e, s.width, s.height);
1345
1347
  o.fillStyle = "#e5e7eb";
1346
- for (const c of r) {
1347
- const h = ze(l, c);
1348
+ for (const l of r) {
1349
+ const h = ze(c, l);
1348
1350
  o.fillRect(h.left, h.top, h.width, h.height);
1349
1351
  }
1350
- for (const c of t)
1351
- c.type === "draw" && c.drawPath ? Bi(o, c.drawPath, l, n?.primary) : c.type === "pin" && Oi(
1352
+ for (const l of t)
1353
+ l.type === "draw" && l.drawPath ? Bi(o, l.drawPath, c, n?.primary) : l.type === "pin" && Oi(
1352
1354
  o,
1353
- G(l, c.x),
1354
- Z(l, c.y),
1355
+ G(c, l.x),
1356
+ Z(c, l.y),
1355
1357
  n
1356
1358
  );
1357
1359
  return Ui(s);
@@ -1362,18 +1364,18 @@ function Ni(i) {
1362
1364
  ut(t, s.getBoundingClientRect(), Rt(s));
1363
1365
  for (const s of i.querySelectorAll("input, textarea, select")) {
1364
1366
  if (It(s)) continue;
1365
- const o = s instanceof HTMLInputElement || s instanceof HTMLTextAreaElement || s instanceof HTMLSelectElement ? s.value : "", a = s.closest(`.${O}`) !== null, l = se(s) || tt(o, s) !== o;
1366
- !a && !l || ut(t, s.getBoundingClientRect(), Rt(s), Nt);
1367
+ const o = s instanceof HTMLInputElement || s instanceof HTMLTextAreaElement || s instanceof HTMLSelectElement ? s.value : "", a = s.closest(`.${O}`) !== null, c = se(s) || tt(o, s) !== o;
1368
+ !a && !c || ut(t, s.getBoundingClientRect(), Rt(s), Nt);
1367
1369
  }
1368
1370
  const e = document.createTreeWalker(i, NodeFilter.SHOW_TEXT), r = oe();
1369
1371
  let n = e.nextNode();
1370
1372
  for (; n; ) {
1371
- const s = n.parentElement, o = n.textContent ?? "", a = s?.closest(`.${O}`) !== null, l = C(o) !== o || ae(n, r);
1372
- if (s && !It(s) && (a || l)) {
1373
- const c = $(s), h = document.createRange();
1373
+ const s = n.parentElement, o = n.textContent ?? "", a = s?.closest(`.${O}`) !== null, c = C(o) !== o || ae(n, r);
1374
+ if (s && !It(s) && (a || c)) {
1375
+ const l = $(s), h = document.createRange();
1374
1376
  h.selectNodeContents(n);
1375
1377
  for (const u of Array.from(h.getClientRects()))
1376
- ut(t, u, c, Nt);
1378
+ ut(t, u, l, Nt);
1377
1379
  }
1378
1380
  n = e.nextNode();
1379
1381
  }
@@ -1914,7 +1916,7 @@ class yr {
1914
1916
  try {
1915
1917
  const o = new URL(r, window.location.href);
1916
1918
  if (!["http:", "https:"].includes(o.protocol) || o.origin === window.location.origin) return;
1917
- const a = await this.submissionHeaders(e, "application/json"), c = await (await this.fetchWithRetry(
1919
+ const a = await this.submissionHeaders(e, "application/json"), l = await (await this.fetchWithRetry(
1918
1920
  `${this.apiUrl}/widget/feedback_submission_sessions/${t}/image_proxy_url`,
1919
1921
  {
1920
1922
  method: "POST",
@@ -1923,7 +1925,7 @@ class yr {
1923
1925
  signal: s
1924
1926
  }
1925
1927
  )).json();
1926
- return typeof c.url == "string" ? c.url : void 0;
1928
+ return typeof l.url == "string" ? l.url : void 0;
1927
1929
  } catch {
1928
1930
  return;
1929
1931
  }
@@ -1939,12 +1941,12 @@ class yr {
1939
1941
  async createSubmissionSession(t, e) {
1940
1942
  const r = Er(), n = new FormData();
1941
1943
  if (n.append("feedback[description]", t.description), n.append("feedback[page_url]", t.page_url), n.append("feedback[user_agent]", t.user_agent), n.append("feedback[browser]", t.browser), n.append("feedback[os]", t.os), n.append("feedback[screen_width]", String(t.screen_width)), n.append("feedback[screen_height]", String(t.screen_height)), n.append("feedback[console_errors]", JSON.stringify(t.console_errors)), n.append("feedback[annotations]", JSON.stringify(t.annotations)), t.target_element && n.append("feedback[target_element]", JSON.stringify(t.target_element)), t.user_id && n.append("feedback[user_id]", t.user_id), t.reporter_external_id && n.append("feedback[reporter_external_id]", t.reporter_external_id), t.reporter_email && n.append("feedback[reporter_email]", t.reporter_email), t.user_email && n.append("feedback[user_email]", t.user_email), t.user_name && n.append("feedback[user_name]", t.user_name), t.breadcrumbs && t.breadcrumbs.length > 0 && n.append("feedback[breadcrumbs]", JSON.stringify(t.breadcrumbs)), t.recording_events && t.recording_events.length > 0) {
1942
- const l = JSON.stringify(t.recording_events), c = new Blob([l], { type: "application/json" });
1943
- n.append("feedback[recording]", c, "interaction-replay.json"), n.append("feedback[recording_duration]", String(t.recording_duration ?? 0));
1944
+ const c = JSON.stringify(t.recording_events), l = new Blob([c], { type: "application/json" });
1945
+ n.append("feedback[recording]", l, "interaction-replay.json"), n.append("feedback[recording_duration]", String(t.recording_duration ?? 0));
1944
1946
  }
1945
1947
  if (e) {
1946
- const l = e.type === "image/jpeg" ? "jpg" : "png";
1947
- n.append("feedback[screenshot]", e, `screenshot.${l}`);
1948
+ const c = e.type === "image/jpeg" ? "jpg" : "png";
1949
+ n.append("feedback[screenshot]", e, `screenshot.${c}`);
1948
1950
  }
1949
1951
  const s = await this.authHeaders();
1950
1952
  return s["X-Submission-Token"] = r, s["X-MTB-Capture-Policy"] = wr, s["X-Idempotency-Key"] = kr(), { ...(await (await this.fetchWithRetry(`${this.apiUrl}/widget/feedback_submission_sessions`, {
@@ -2063,11 +2065,11 @@ async function xr(i, t) {
2063
2065
  const e = i.getReader(), r = new TextDecoder();
2064
2066
  let n = "", s = null;
2065
2067
  const o = (a) => {
2066
- const l = a.split(`
2067
- `).find((b) => b.startsWith("event:")), c = a.split(`
2068
+ const c = a.split(`
2069
+ `).find((b) => b.startsWith("event:")), l = a.split(`
2068
2070
  `).find((b) => b.startsWith("data:"));
2069
- if (!c) return;
2070
- const h = l?.slice(6).trim(), u = JSON.parse(c.slice(5).trim());
2071
+ if (!l) return;
2072
+ const h = c?.slice(6).trim(), u = JSON.parse(l.slice(5).trim());
2071
2073
  h === "delta" && typeof u.text == "string" ? t(u.text) : h === "done" && (s = {
2072
2074
  messages: Array.isArray(u.messages) ? u.messages : [],
2073
2075
  suggestions: Array.isArray(u.suggestions) ? u.suggestions.filter((b) => typeof b == "string") : [],
@@ -2076,15 +2078,15 @@ async function xr(i, t) {
2076
2078
  });
2077
2079
  };
2078
2080
  for (; ; ) {
2079
- const { done: a, value: l } = await e.read();
2081
+ const { done: a, value: c } = await e.read();
2080
2082
  if (a) break;
2081
- n += r.decode(l, { stream: !0 });
2082
- let c;
2083
- for (; (c = n.indexOf(`
2083
+ n += r.decode(c, { stream: !0 });
2084
+ let l;
2085
+ for (; (l = n.indexOf(`
2084
2086
 
2085
2087
  `)) !== -1; ) {
2086
- const h = n.slice(0, c);
2087
- n = n.slice(c + 2);
2088
+ const h = n.slice(0, l);
2089
+ n = n.slice(l + 2);
2088
2090
  try {
2089
2091
  o(h);
2090
2092
  } catch {
@@ -2827,8 +2829,8 @@ function yt(i, t, e) {
2827
2829
  if (o instanceof Element) {
2828
2830
  if (typeof i.text == "string" && (i.text = tt(i.text, o)), r)
2829
2831
  for (const a of jt) {
2830
- const l = r[a];
2831
- typeof l == "string" && (r[a] = tt(l, o));
2832
+ const c = r[a];
2833
+ typeof c == "string" && (r[a] = tt(c, o));
2832
2834
  }
2833
2835
  } else o?.nodeType === Node.TEXT_NODE && ae(o, e) && (typeof i.textContent == "string" && (i.textContent = p), typeof i.value == "string" && (i.value = p));
2834
2836
  Object.values(i).forEach((a) => yt(a, t, e));
@@ -2973,7 +2975,7 @@ function Yr() {
2973
2975
  return /Windows NT 10/.test(i) ? "Windows 10/11" : /Windows NT/.test(i) ? "Windows" : /Mac OS X 10_15|macOS 1[56789]/.test(i) || /Mac OS X/.test(i) ? "macOS" : /Android/.test(i) ? `Android ${i.match(/Android (\d+)/)?.[1] ?? ""}` : /iPhone|iPad|iPod/.test(i) ? "iOS" : /Linux/.test(i) ? "Linux" : "Unknown";
2974
2976
  }
2975
2977
  function Vr(i) {
2976
- const { description: t, pageContext: e, consoleErrors: r, annotation: n, user: s, recording: o, anonId: a, anonEmail: l, breadcrumbs: c } = i;
2978
+ const { description: t, pageContext: e, consoleErrors: r, annotation: n, user: s, recording: o, anonId: a, anonEmail: c, breadcrumbs: l } = i;
2977
2979
  return {
2978
2980
  ...Q({
2979
2981
  description: t,
@@ -2988,7 +2990,7 @@ function Vr(i) {
2988
2990
  } : void 0,
2989
2991
  recording_events: o?.events,
2990
2992
  recording_duration: o?.duration,
2991
- breadcrumbs: c
2993
+ breadcrumbs: l
2992
2994
  }),
2993
2995
  user_id: s?.id,
2994
2996
  user_email: s?.email,
@@ -2997,7 +2999,7 @@ function Vr(i) {
2997
2999
  // for who the reporter is, so attaching the stored anon id/email would tie
2998
3000
  // that account to a stranger's earlier anonymous submissions.
2999
3001
  reporter_external_id: s ? void 0 : a,
3000
- reporter_email: s ? void 0 : l
3002
+ reporter_email: s ? void 0 : c
3001
3003
  };
3002
3004
  }
3003
3005
  const Xr = 300, Kr = 5e3;
@@ -3065,10 +3067,10 @@ class Gr {
3065
3067
  } catch {
3066
3068
  return null;
3067
3069
  }
3068
- let l = null;
3070
+ let c = null;
3069
3071
  if (this.screenshotEnabled) {
3070
3072
  const h = new AbortController();
3071
- l = h, this.screenshotAbortController?.abort(), this.screenshotAbortController = h;
3073
+ c = h, this.screenshotAbortController?.abort(), this.screenshotAbortController = h;
3072
3074
  const b = (async () => {
3073
3075
  try {
3074
3076
  const g = await Pi(async (at, ke) => {
@@ -3095,16 +3097,16 @@ class Gr {
3095
3097
  });
3096
3098
  this.pendingScreenshotTask = b;
3097
3099
  }
3098
- let c;
3100
+ let l;
3099
3101
  try {
3100
- if (c = await a, n !== this.submissionAttempt)
3101
- return l?.abort(), await this.deps.apiClient.abandonSubmissionSession(c.id, c.token).catch(() => {
3102
+ if (l = await a, n !== this.submissionAttempt)
3103
+ return c?.abort(), await this.deps.apiClient.abandonSubmissionSession(l.id, l.token).catch(() => {
3102
3104
  }), null;
3103
- this.activeSubmission = c;
3105
+ this.activeSubmission = l;
3104
3106
  } catch {
3105
- return l?.abort(), null;
3107
+ return c?.abort(), null;
3106
3108
  }
3107
- return c;
3109
+ return l;
3108
3110
  }
3109
3111
  async finalize() {
3110
3112
  const t = this.submissionAttempt;
@@ -3571,13 +3573,13 @@ class tn {
3571
3573
  targetRect: n,
3572
3574
  messages: this.messages,
3573
3575
  position: this.config.position ?? "right",
3574
- onSubmit: async (l) => {
3576
+ onSubmit: async (c) => {
3575
3577
  this.currentAnnotation = o ?? this.currentAnnotation;
3576
- const c = await this.lifecycle.start(l, this.currentAnnotation, a);
3577
- return c?.board_url && L(c.board_url), c;
3578
+ const l = await this.lifecycle.start(c, this.currentAnnotation, a);
3579
+ return l?.board_url && L(l.board_url), l;
3578
3580
  },
3579
- onClarify: async (l, c, h, u) => this.apiClient.streamClarification(l, c, h, u),
3580
- onAnswer: (l, c, h) => this.apiClient.answerClarification(l, c, h),
3581
+ onClarify: async (c, l, h, u) => this.apiClient.streamClarification(c, l, h, u),
3582
+ onAnswer: (c, l, h) => this.apiClient.answerClarification(c, l, h),
3581
3583
  // The chat card turns into a receipt at this point: the pin, the scrim
3582
3584
  // and the scroll lock have nothing left to hold. A finalization failure
3583
3585
  // remains in this card as a retryable receipt state.
@@ -3588,7 +3590,7 @@ class tn {
3588
3590
  resolveBoardLink: () => this.buildViewFeedbackHandler() ?? this.buildMyFeedbackHandler(),
3589
3591
  resolveEmailCapture: () => this.buildEmailCapture(),
3590
3592
  ...s ? { recordingSeconds: s.duration } : {
3591
- onScreenshotToggle: (l) => this.lifecycle.setScreenshotEnabled(l),
3593
+ onScreenshotToggle: (c) => this.lifecycle.setScreenshotEnabled(c),
3592
3594
  screenshotEnabled: this.lifecycle.isScreenshotEnabled()
3593
3595
  }
3594
3596
  }), this.engageScrollLock(), this.lifecycle.warmScreenshotDeps();