@_solaris/messenger-widget 0.5.60 → 0.5.62

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/messenger.js CHANGED
@@ -1,4 +1,4 @@
1
- import { reactive as Ve, openBlock as c, createElementBlock as d, normalizeStyle as z, normalizeClass as R, toDisplayString as v, resolveComponent as E, createVNode as V, Transition as Ue, withCtx as je, Fragment as L, renderList as j, withKeys as ge, withModifiers as J, createElementVNode as o, createCommentVNode as b, createBlock as P, resolveDynamicComponent as Ae, mergeProps as Fe, withDirectives as G, vModelText as te, createTextVNode as Se, renderSlot as Ke, vModelCheckbox as We, vModelSelect as Ge, markRaw as Re } from "vue";
1
+ import { reactive as Ve, openBlock as c, createElementBlock as d, normalizeStyle as z, normalizeClass as R, toDisplayString as v, resolveComponent as B, createVNode as V, Transition as Ne, withCtx as je, Fragment as I, renderList as j, withKeys as ge, withModifiers as J, createElementVNode as o, createCommentVNode as b, createBlock as U, resolveDynamicComponent as Ae, mergeProps as Fe, withDirectives as G, vModelText as te, createTextVNode as Se, renderSlot as Ke, vModelCheckbox as We, vModelSelect as Ge, markRaw as Re } from "vue";
2
2
  const Ye = [
3
3
  "connected",
4
4
  "message",
@@ -141,7 +141,7 @@ function Ze(e) {
141
141
  }
142
142
  async function k() {
143
143
  try {
144
- const u = await I();
144
+ const u = await E();
145
145
  t.lastActivityAt = u.reduce((_, p) => {
146
146
  const S = p == null ? void 0 : p.last_message_at;
147
147
  return S && (!_ || S > _) ? S : _;
@@ -158,7 +158,7 @@ function Ze(e) {
158
158
  const _ = await i("PATCH", "/customers/me", u);
159
159
  return (_ == null ? void 0 : _.customer) ?? null;
160
160
  }
161
- async function I() {
161
+ async function E() {
162
162
  const u = await i("GET", "/conversations");
163
163
  return (u == null ? void 0 : u.conversations) ?? [];
164
164
  }
@@ -178,14 +178,14 @@ function Ze(e) {
178
178
  _
179
179
  )).conversation;
180
180
  }
181
- async function N(u, _) {
181
+ async function D(u, _) {
182
182
  return i(
183
183
  "PATCH",
184
184
  `/conversations/${encodeURIComponent(u)}/read`,
185
185
  { message_id: _ }
186
186
  );
187
187
  }
188
- async function U(u, _ = {}) {
188
+ async function N(u, _ = {}) {
189
189
  const p = new URLSearchParams();
190
190
  _.before && p.set("before", _.before), _.since && p.set("since", _.since), _.limit && p.set("limit", String(_.limit));
191
191
  const S = p.toString() ? `?${p.toString()}` : "";
@@ -194,7 +194,7 @@ function Ze(e) {
194
194
  `/conversations/${encodeURIComponent(u)}/messages${S}`
195
195
  );
196
196
  }
197
- async function D(u, _) {
197
+ async function L(u, _) {
198
198
  ae();
199
199
  const p = {
200
200
  client_msg_id: _.client_msg_id,
@@ -280,7 +280,7 @@ function Ze(e) {
280
280
  }
281
281
  async function ye() {
282
282
  try {
283
- const u = await I(), _ = u.reduce((S, O) => {
283
+ const u = await E(), _ = u.reduce((S, O) => {
284
284
  const x = O == null ? void 0 : O.last_message_at;
285
285
  return x && (!S || x > S) ? x : S;
286
286
  }, null);
@@ -337,13 +337,13 @@ function Ze(e) {
337
337
  // REST
338
338
  getCustomer: w,
339
339
  patchCustomer: T,
340
- listConversations: I,
340
+ listConversations: E,
341
341
  createConversation: A,
342
342
  getConversation: q,
343
343
  patchConversation: M,
344
- markConversationRead: N,
345
- listMessages: U,
346
- postMessage: D,
344
+ markConversationRead: D,
345
+ listMessages: N,
346
+ postMessage: L,
347
347
  postCallback: K,
348
348
  uploadAttachment: Q,
349
349
  signAttachment: se,
@@ -549,7 +549,7 @@ function st(e) {
549
549
  const f = await e.patchConversation(h, m), y = t.conversations.findIndex((C) => C.id === h);
550
550
  y !== -1 && (t.conversations[y] = f);
551
551
  }
552
- async function I(h) {
552
+ async function E(h) {
553
553
  if (!h) return [];
554
554
  const m = t.messagesByConv[h] || [];
555
555
  let f = "";
@@ -630,10 +630,10 @@ function st(e) {
630
630
  console.error("[store] callback failed", y), h != null && delete t.awaitingCallback[h];
631
631
  }
632
632
  }
633
- const N = /* @__PURE__ */ new Map();
634
- async function U(h) {
633
+ const D = /* @__PURE__ */ new Map();
634
+ async function N(h) {
635
635
  if (!h) return null;
636
- const m = N.get(h);
636
+ const m = D.get(h);
637
637
  if (m != null && m.url) {
638
638
  const f = m.expires_at ? Date.parse(m.expires_at) : 0;
639
639
  if (!f || f - Date.now() > 6e4) return m.url;
@@ -641,7 +641,7 @@ function st(e) {
641
641
  try {
642
642
  const f = await e.signAttachment(h);
643
643
  if (f != null && f.signed_url)
644
- return N.set(h, {
644
+ return D.set(h, {
645
645
  url: f.signed_url,
646
646
  expires_at: f.expires_at
647
647
  }), f.signed_url;
@@ -650,7 +650,7 @@ function st(e) {
650
650
  }
651
651
  return null;
652
652
  }
653
- async function D(h, { rating: m, comment: f } = {}) {
653
+ async function L(h, { rating: m, comment: f } = {}) {
654
654
  const y = t.conversations.find((_) => _.id === h), u = {
655
655
  ...(y == null ? void 0 : y.metadata) || {},
656
656
  feedback: {
@@ -781,13 +781,13 @@ function st(e) {
781
781
  createConversation: i,
782
782
  openConversation: g,
783
783
  loadMore: k,
784
- fetchSinceLast: I,
784
+ fetchSinceLast: E,
785
785
  patchConversation: T,
786
786
  markConversationRead: A,
787
787
  send: q,
788
788
  clickCallback: M,
789
- signAttachment: U,
790
- submitFeedback: D,
789
+ signAttachment: N,
790
+ submitFeedback: L,
791
791
  getPendingApproval: K,
792
792
  getActionInFlight: se,
793
793
  getLatestSuggestions: re,
@@ -1264,10 +1264,10 @@ function ft(e) {
1264
1264
  if (!A) break;
1265
1265
  w.push(A[1]), r++;
1266
1266
  }
1267
- const T = w.map((A) => `<li>${de(A)}</li>`).join(""), I = k !== 1 ? ` start="${k}"` : "";
1267
+ const T = w.map((A) => `<li>${de(A)}</li>`).join(""), E = k !== 1 ? ` start="${k}"` : "";
1268
1268
  n.push({
1269
1269
  type: "block",
1270
- html: `<ol class="wm-md-ol"${I}>${T}</ol>`
1270
+ html: `<ol class="wm-md-ol"${E}>${T}</ol>`
1271
1271
  });
1272
1272
  continue;
1273
1273
  }
@@ -1805,7 +1805,7 @@ function At(e) {
1805
1805
  }
1806
1806
  return null;
1807
1807
  }
1808
- const B = (e, t) => {
1808
+ const P = (e, t) => {
1809
1809
  const n = e.__vccOpts || e;
1810
1810
  for (const [r, a] of t)
1811
1811
  n[r] = a;
@@ -1851,7 +1851,7 @@ function Tt(e, t, n, r, a, s) {
1851
1851
  }, v(s.initials), 5))
1852
1852
  ], 6);
1853
1853
  }
1854
- const ve = /* @__PURE__ */ B(St, [["render", Tt], ["__scopeId", "data-v-14e10c0d"]]), xt = 3, Ot = {
1854
+ const ve = /* @__PURE__ */ P(St, [["render", Tt], ["__scopeId", "data-v-14e10c0d"]]), xt = 3, Ot = {
1855
1855
  name: "WmLauncher",
1856
1856
  components: { HumanAvatar: ve },
1857
1857
  inject: {
@@ -1877,9 +1877,9 @@ const ve = /* @__PURE__ */ B(St, [["render", Tt], ["__scopeId", "data-v-14e10c0d
1877
1877
  return this.peeks.slice(0, xt).reverse();
1878
1878
  }
1879
1879
  }
1880
- }, Rt = ["aria-label", "onClick", "onKeydown"], Lt = ["aria-label", "onClick"], It = { class: "wm-peek__avatar" }, Et = ["aria-label"], Bt = { class: "wm-peek__body" }, Pt = { class: "wm-peek__head" }, Dt = { class: "wm-peek__name" }, Nt = { class: "wm-peek__action" }, Ut = { class: "wm-peek__text" }, jt = ["onClick"], Ft = ["aria-label"], Ht = ["aria-label"];
1880
+ }, Rt = ["aria-label", "onClick", "onKeydown"], Lt = ["aria-label", "onClick"], It = { class: "wm-peek__avatar" }, Et = ["aria-label"], Bt = { class: "wm-peek__body" }, Pt = { class: "wm-peek__head" }, Ut = { class: "wm-peek__name" }, Dt = { class: "wm-peek__action" }, Nt = { class: "wm-peek__text" }, jt = ["onClick"], Ft = ["aria-label"], Ht = ["aria-label"];
1881
1881
  function zt(e, t, n, r, a, s) {
1882
- const i = E("HumanAvatar");
1882
+ const i = B("HumanAvatar");
1883
1883
  return c(), d("div", {
1884
1884
  class: "wm-launcherWrap",
1885
1885
  onMouseenter: t[1] || (t[1] = (l) => e.$emit("hover", !0)),
@@ -1887,13 +1887,13 @@ function zt(e, t, n, r, a, s) {
1887
1887
  onFocusin: t[3] || (t[3] = (l) => e.$emit("hover", !0)),
1888
1888
  onFocusout: t[4] || (t[4] = (l) => e.$emit("hover", !1))
1889
1889
  }, [
1890
- V(Ue, { name: "wm-peek" }, {
1890
+ V(Ne, { name: "wm-peek" }, {
1891
1891
  default: je(() => [
1892
1892
  s.visiblePeeks.length ? (c(), d("div", {
1893
1893
  key: 0,
1894
1894
  class: R(["wm-peekStack", { "wm-peekStack--multi": s.visiblePeeks.length > 1 }])
1895
1895
  }, [
1896
- (c(!0), d(L, null, j(s.visiblePeeks, (l, g) => (c(), d("div", {
1896
+ (c(!0), d(I, null, j(s.visiblePeeks, (l, g) => (c(), d("div", {
1897
1897
  key: l.convId,
1898
1898
  class: "wm-peek",
1899
1899
  style: z({
@@ -1945,10 +1945,10 @@ function zt(e, t, n, r, a, s) {
1945
1945
  ]),
1946
1946
  o("div", Bt, [
1947
1947
  o("div", Pt, [
1948
- o("span", Dt, v(l.senderName || s.t("common.agent")), 1),
1949
- o("span", Nt, v(s.t("launcher.repliedToYou")), 1)
1948
+ o("span", Ut, v(l.senderName || s.t("common.agent")), 1),
1949
+ o("span", Dt, v(s.t("launcher.repliedToYou")), 1)
1950
1950
  ]),
1951
- o("p", Ut, v(l.preview), 1)
1951
+ o("p", Nt, v(l.preview), 1)
1952
1952
  ]),
1953
1953
  o("button", {
1954
1954
  type: "button",
@@ -1991,7 +1991,7 @@ function zt(e, t, n, r, a, s) {
1991
1991
  ], 8, Ft)
1992
1992
  ], 32);
1993
1993
  }
1994
- const qt = /* @__PURE__ */ B(Ot, [["render", zt], ["__scopeId", "data-v-44ddf1a1"]]), $t = {
1994
+ const qt = /* @__PURE__ */ P(Ot, [["render", zt], ["__scopeId", "data-v-44ddf1a1"]]), $t = {
1995
1995
  name: "WmAIAvatar",
1996
1996
  props: {
1997
1997
  size: { type: Number, default: 26 },
@@ -2082,7 +2082,7 @@ function Gt(e, t, n, r, a, s) {
2082
2082
  ], 6)
2083
2083
  ], 6);
2084
2084
  }
2085
- const oe = /* @__PURE__ */ B($t, [["render", Gt], ["__scopeId", "data-v-6f7f685d"]]), Yt = {
2085
+ const oe = /* @__PURE__ */ P($t, [["render", Gt], ["__scopeId", "data-v-6f7f685d"]]), Yt = {
2086
2086
  name: "WmTeamAvatars",
2087
2087
  props: {
2088
2088
  members: { type: Array, default: () => [] },
@@ -2117,7 +2117,7 @@ function en(e, t, n, r, a, s) {
2117
2117
  class: "wm-team__stack",
2118
2118
  style: z({ width: s.stackWidth + "px" })
2119
2119
  }, [
2120
- (c(!0), d(L, null, j(n.members.slice(0, 3), (i, l) => (c(), d("div", {
2120
+ (c(!0), d(I, null, j(n.members.slice(0, 3), (i, l) => (c(), d("div", {
2121
2121
  key: l,
2122
2122
  class: "wm-team__pill",
2123
2123
  style: z({
@@ -2136,7 +2136,7 @@ function en(e, t, n, r, a, s) {
2136
2136
  n.responseLabel ? (c(), d("span", Zt, v(n.responseLabel), 1)) : b("", !0)
2137
2137
  ])) : b("", !0);
2138
2138
  }
2139
- const tn = /* @__PURE__ */ B(Yt, [["render", en], ["__scopeId", "data-v-e49a9063"]]), nn = {
2139
+ const tn = /* @__PURE__ */ P(Yt, [["render", en], ["__scopeId", "data-v-e49a9063"]]), nn = {
2140
2140
  name: "WmHeader",
2141
2141
  components: { AIAvatar: oe, TeamAvatars: tn },
2142
2142
  inject: {
@@ -2183,7 +2183,7 @@ const tn = /* @__PURE__ */ B(Yt, [["render", en], ["__scopeId", "data-v-e49a9063
2183
2183
  class: "wm-header__fill"
2184
2184
  }, un = { class: "wm-header__actions" }, hn = ["aria-label", "title"], mn = ["aria-label", "title"];
2185
2185
  function fn(e, t, n, r, a, s) {
2186
- const i = E("AIAvatar"), l = E("TeamAvatars");
2186
+ const i = B("AIAvatar"), l = B("TeamAvatars");
2187
2187
  return c(), d("div", sn, [
2188
2188
  n.showBack ? (c(), d("button", {
2189
2189
  key: 0,
@@ -2206,7 +2206,7 @@ function fn(e, t, n, r, a, s) {
2206
2206
  o("path", { d: "M19 12H5M12 5l-7 7 7 7" })
2207
2207
  ], -1)
2208
2208
  ])], 8, rn)) : (c(), d("div", an)),
2209
- n.showIdentity ? (c(), d(L, { key: 2 }, [
2209
+ n.showIdentity ? (c(), d(I, { key: 2 }, [
2210
2210
  o("div", on, [
2211
2211
  V(i, {
2212
2212
  size: 30,
@@ -2217,7 +2217,7 @@ function fn(e, t, n, r, a, s) {
2217
2217
  o("div", ln, [
2218
2218
  o("div", cn, v(n.title), 1)
2219
2219
  ]),
2220
- s.hasTeam ? (c(), P(l, {
2220
+ s.hasTeam ? (c(), U(l, {
2221
2221
  key: 0,
2222
2222
  members: s.displayedTeamMembers,
2223
2223
  "response-label": ""
@@ -2281,7 +2281,7 @@ function fn(e, t, n, r, a, s) {
2281
2281
  ])
2282
2282
  ]);
2283
2283
  }
2284
- const _n = /* @__PURE__ */ B(nn, [["render", fn], ["__scopeId", "data-v-7af4c118"]]), Pe = {
2284
+ const _n = /* @__PURE__ */ P(nn, [["render", fn], ["__scopeId", "data-v-7af4c118"]]), Pe = {
2285
2285
  book: "M12 6.253v13m0-13C10.832 5.477 9.246 5 7.5 5S4.168 5.477 3 6.253v13C4.168 18.477 5.754 18 7.5 18s3.332.477 4.5 1.253m0-13C13.168 5.477 14.754 5 16.5 5c1.747 0 3.332.477 4.5 1.253v13C19.832 18.477 18.247 18 16.5 18c-1.746 0-3.332.477-4.5 1.253",
2286
2286
  changelog: "M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2",
2287
2287
  status: "M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z",
@@ -2415,7 +2415,7 @@ const _n = /* @__PURE__ */ B(nn, [["render", fn], ["__scopeId", "data-v-7af4c118
2415
2415
  }, Rn = ["innerHTML"], Ln = { class: "wm-onb__alert-meta" }, In = {
2416
2416
  key: 0,
2417
2417
  class: "wm-onb__alert-time"
2418
- }, En = { class: "wm-onb__alert-resume" }, Bn = { class: "wm-onb__actions" }, Pn = ["disabled"], Dn = { class: "wm-onb__btn-label" }, Nn = ["onClick"], Un = { class: "wm-onb__btn-icon" }, jn = ["aria-label"], Fn = {
2418
+ }, En = { class: "wm-onb__alert-resume" }, Bn = { class: "wm-onb__actions" }, Pn = ["disabled"], Un = { class: "wm-onb__btn-label" }, Dn = ["onClick"], Nn = { class: "wm-onb__btn-icon" }, jn = ["aria-label"], Fn = {
2419
2419
  key: 1,
2420
2420
  width: "18",
2421
2421
  height: "18",
@@ -2450,7 +2450,7 @@ const _n = /* @__PURE__ */ B(nn, [["render", fn], ["__scopeId", "data-v-7af4c118
2450
2450
  "aria-hidden": "true"
2451
2451
  }, Kn = ["d"], Wn = { class: "wm-onb__btn-label" }, Gn = { class: "wm-onb__btn-count" };
2452
2452
  function Yn(e, t, n, r, a, s) {
2453
- const i = E("AIAvatar");
2453
+ const i = B("AIAvatar");
2454
2454
  return c(), d("div", pn, [
2455
2455
  o("div", vn, [
2456
2456
  t[2] || (t[2] = o("svg", {
@@ -2497,7 +2497,7 @@ function Yn(e, t, n, r, a, s) {
2497
2497
  ])
2498
2498
  ]),
2499
2499
  s.unreadThreads.length ? (c(), d("div", kn, [
2500
- (c(!0), d(L, null, j(s.unreadThreads, (l) => (c(), d("button", {
2500
+ (c(!0), d(I, null, j(s.unreadThreads, (l) => (c(), d("button", {
2501
2501
  key: l.id,
2502
2502
  type: "button",
2503
2503
  class: "wm-onb__alert",
@@ -2520,7 +2520,7 @@ function Yn(e, t, n, r, a, s) {
2520
2520
  }, [
2521
2521
  o("path", { d: "M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z" })
2522
2522
  ], -1)
2523
- ])])) : (c(), P(Ae(s.avatarComponent(l)), Fe({
2523
+ ])])) : (c(), U(Ae(s.avatarComponent(l)), Fe({
2524
2524
  key: 1,
2525
2525
  ref_for: !0
2526
2526
  }, s.avatarProps(l)), null, 16)),
@@ -2566,15 +2566,15 @@ function Yn(e, t, n, r, a, s) {
2566
2566
  o("path", { d: "M12 5v14M5 12h14" })
2567
2567
  ])
2568
2568
  ], -1)),
2569
- o("span", Dn, v(n.busy ? "…" : s.t("onboarding.start")), 1)
2569
+ o("span", Un, v(n.busy ? "…" : s.t("onboarding.start")), 1)
2570
2570
  ], 8, Pn),
2571
- (c(!0), d(L, null, j(n.quickLinks, (l, g) => (c(), d("button", {
2571
+ (c(!0), d(I, null, j(n.quickLinks, (l, g) => (c(), d("button", {
2572
2572
  key: "ql-" + g,
2573
2573
  type: "button",
2574
2574
  class: "wm-onb__btn",
2575
2575
  onClick: (k) => e.$emit("select", l)
2576
2576
  }, [
2577
- o("span", Un, [
2577
+ o("span", Nn, [
2578
2578
  s.safeIconUrl(l) ? (c(), d("span", {
2579
2579
  key: 0,
2580
2580
  class: "wm-onb__btn-iconImg",
@@ -2591,7 +2591,7 @@ function Yn(e, t, n, r, a, s) {
2591
2591
  s.isExternalLink(l) ? (c(), d("svg", qn, [...t[5] || (t[5] = [
2592
2592
  o("path", { d: "M7 17L17 7M9 7h8v8" }, null, -1)
2593
2593
  ])])) : b("", !0)
2594
- ], 8, Nn))), 128)),
2594
+ ], 8, Dn))), 128)),
2595
2595
  n.openThreads.length ? (c(), d("button", {
2596
2596
  key: 0,
2597
2597
  type: "button",
@@ -2625,7 +2625,7 @@ function Yn(e, t, n, r, a, s) {
2625
2625
  ])
2626
2626
  ]);
2627
2627
  }
2628
- const Jn = /* @__PURE__ */ B(gn, [["render", Yn], ["__scopeId", "data-v-136c3afe"]]), Xn = {
2628
+ const Jn = /* @__PURE__ */ P(gn, [["render", Yn], ["__scopeId", "data-v-136c3afe"]]), Xn = {
2629
2629
  name: "WmHistory",
2630
2630
  components: { AIAvatar: oe, HumanAvatar: ve },
2631
2631
  inject: {
@@ -2732,7 +2732,7 @@ function us(e, t, n, r, a, s) {
2732
2732
  ])
2733
2733
  ]),
2734
2734
  o("div", ts, [
2735
- (c(!0), d(L, null, j(s.filteredThreads, (i) => (c(), d("button", {
2735
+ (c(!0), d(I, null, j(s.filteredThreads, (i) => (c(), d("button", {
2736
2736
  key: i.id,
2737
2737
  type: "button",
2738
2738
  class: R(["wm-hist__thread", { "wm-hist__thread--unread": i.unread }]),
@@ -2755,7 +2755,7 @@ function us(e, t, n, r, a, s) {
2755
2755
  }, [
2756
2756
  o("path", { d: "M21 11.5a8.38 8.38 0 0 1-.9 3.8 8.5 8.5 0 0 1-7.6 4.7 8.38 8.38 0 0 1-3.8-.9L3 21l1.9-5.7a8.38 8.38 0 0 1-.9-3.8 8.5 8.5 0 0 1 4.7-7.6 8.38 8.38 0 0 1 3.8-.9h.5a8.48 8.48 0 0 1 8 8v.5z" })
2757
2757
  ], -1)
2758
- ])])) : (c(), P(Ae(s.avatarComponent(i)), Fe({
2758
+ ])])) : (c(), U(Ae(s.avatarComponent(i)), Fe({
2759
2759
  key: 1,
2760
2760
  ref_for: !0
2761
2761
  }, s.avatarProps(i)), null, 16)),
@@ -2794,7 +2794,7 @@ function us(e, t, n, r, a, s) {
2794
2794
  ])
2795
2795
  ]);
2796
2796
  }
2797
- const hs = /* @__PURE__ */ B(Xn, [["render", us], ["__scopeId", "data-v-6bf35ef1"]]);
2797
+ const hs = /* @__PURE__ */ P(Xn, [["render", us], ["__scopeId", "data-v-6bf35ef1"]]);
2798
2798
  function ms(e) {
2799
2799
  return typeof e != "string" ? "" : e.replace(/`([^`]+)`/g, "$1").replace(/\*\*([^*]+)\*\*/g, "$1").replace(new RegExp("(?<!\\*)\\*([^*]+)\\*(?!\\*)", "g"), "$1").replace(/__([^_]+)__/g, "$1").replace(/\[([^\]]+)\]\([^)]+\)/g, "$1").replace(/\s+/g, " ").trim();
2800
2800
  }
@@ -2889,7 +2889,7 @@ function Cs(e, t, n, r, a, s) {
2889
2889
  ]),
2890
2890
  o("span", ws, [
2891
2891
  o("span", bs, v(n.label), 1),
2892
- s.detailText ? (c(), d(L, { key: 0 }, [
2892
+ s.detailText ? (c(), d(I, { key: 0 }, [
2893
2893
  t[4] || (t[4] = o("span", {
2894
2894
  class: "wm-result__sep",
2895
2895
  "aria-hidden": "true"
@@ -2899,7 +2899,7 @@ function Cs(e, t, n, r, a, s) {
2899
2899
  ])
2900
2900
  ], 2);
2901
2901
  }
2902
- const As = /* @__PURE__ */ B(fs, [["render", Cs], ["__scopeId", "data-v-7284acd0"]]), Ss = {
2902
+ const As = /* @__PURE__ */ P(fs, [["render", Cs], ["__scopeId", "data-v-7284acd0"]]), Ss = {
2903
2903
  name: "WmArtifactFormResponse",
2904
2904
  inject: {
2905
2905
  // Translator shared by the Messenger shell; French fallback when
@@ -2938,7 +2938,7 @@ function Is(e, t, n, r, a, s) {
2938
2938
  ])
2939
2939
  ]),
2940
2940
  o("div", Rs, [
2941
- (c(!0), d(L, null, j(s.fields, (i, l) => (c(), d("div", {
2941
+ (c(!0), d(I, null, j(s.fields, (i, l) => (c(), d("div", {
2942
2942
  key: l,
2943
2943
  class: "wm-art__field"
2944
2944
  }, [
@@ -2953,7 +2953,7 @@ function Is(e, t, n, r, a, s) {
2953
2953
  ])
2954
2954
  ]);
2955
2955
  }
2956
- const Es = /* @__PURE__ */ B(Ss, [["render", Is], ["__scopeId", "data-v-713aecf1"]]), Bs = {
2956
+ const Es = /* @__PURE__ */ P(Ss, [["render", Is], ["__scopeId", "data-v-713aecf1"]]), Bs = {
2957
2957
  name: "WmArtifactInfoCard",
2958
2958
  props: {
2959
2959
  data: { type: Object, required: !0 }
@@ -2968,10 +2968,10 @@ const Es = /* @__PURE__ */ B(Ss, [["render", Is], ["__scopeId", "data-v-713aecf1
2968
2968
  return !!((e = this.data) != null && e.body) || this.fields.length > 0;
2969
2969
  }
2970
2970
  }
2971
- }, Ps = { class: "wm-art wm-art--infoCard" }, Ds = {
2971
+ }, Ps = { class: "wm-art wm-art--infoCard" }, Us = {
2972
2972
  key: 0,
2973
2973
  class: "wm-art__image"
2974
- }, Ns = ["src", "alt"], Us = { class: "wm-art__head" }, js = { class: "wm-art__headMain" }, Fs = { class: "wm-art__title" }, Hs = {
2974
+ }, Ds = ["src", "alt"], Ns = { class: "wm-art__head" }, js = { class: "wm-art__headMain" }, Fs = { class: "wm-art__title" }, Hs = {
2975
2975
  key: 0,
2976
2976
  class: "wm-art__subtitle"
2977
2977
  }, zs = {
@@ -2983,14 +2983,14 @@ const Es = /* @__PURE__ */ B(Ss, [["render", Is], ["__scopeId", "data-v-713aecf1
2983
2983
  }, $s = { class: "wm-art__fieldLabel" };
2984
2984
  function Vs(e, t, n, r, a, s) {
2985
2985
  return c(), d("div", Ps, [
2986
- n.data.image_url ? (c(), d("figure", Ds, [
2986
+ n.data.image_url ? (c(), d("figure", Us, [
2987
2987
  o("img", {
2988
2988
  src: n.data.image_url,
2989
2989
  alt: n.data.title || "",
2990
2990
  loading: "lazy"
2991
- }, null, 8, Ns)
2991
+ }, null, 8, Ds)
2992
2992
  ])) : b("", !0),
2993
- o("div", Us, [
2993
+ o("div", Ns, [
2994
2994
  o("div", js, [
2995
2995
  o("div", Fs, v(n.data.title), 1),
2996
2996
  n.data.subtitle ? (c(), d("div", Hs, v(n.data.subtitle), 1)) : b("", !0)
@@ -3005,7 +3005,7 @@ function Vs(e, t, n, r, a, s) {
3005
3005
  ]),
3006
3006
  s.hasBody ? (c(), d("div", zs, [
3007
3007
  n.data.body ? (c(), d("div", qs, v(n.data.body), 1)) : b("", !0),
3008
- s.fields.length ? (c(!0), d(L, { key: 1 }, j(s.fields, (i, l) => (c(), d("div", {
3008
+ s.fields.length ? (c(!0), d(I, { key: 1 }, j(s.fields, (i, l) => (c(), d("div", {
3009
3009
  key: l,
3010
3010
  class: "wm-art__field"
3011
3011
  }, [
@@ -3020,7 +3020,7 @@ function Vs(e, t, n, r, a, s) {
3020
3020
  ])) : b("", !0)
3021
3021
  ]);
3022
3022
  }
3023
- const Ks = /* @__PURE__ */ B(Bs, [["render", Vs], ["__scopeId", "data-v-7eae0e4a"]]);
3023
+ const Ks = /* @__PURE__ */ P(Bs, [["render", Vs], ["__scopeId", "data-v-7eae0e4a"]]);
3024
3024
  function Ws(e, t, n) {
3025
3025
  if (!e) return "";
3026
3026
  const r = new Date(e);
@@ -3142,7 +3142,7 @@ function ar(e, t, n, r, a, s) {
3142
3142
  n.data.body ? (c(), d("div", er, v(n.data.body), 1)) : b("", !0)
3143
3143
  ]),
3144
3144
  s.fields.length ? (c(), d("div", tr, [
3145
- (c(!0), d(L, null, j(s.fields, (i, l) => (c(), d("div", {
3145
+ (c(!0), d(I, null, j(s.fields, (i, l) => (c(), d("div", {
3146
3146
  key: l,
3147
3147
  class: "wm-art__field"
3148
3148
  }, [
@@ -3222,7 +3222,7 @@ function ar(e, t, n, r, a, s) {
3222
3222
  ])) : b("", !0)
3223
3223
  ]);
3224
3224
  }
3225
- const or = /* @__PURE__ */ B(Gs, [["render", ar], ["__scopeId", "data-v-5f30c914"]]), lr = {
3225
+ const or = /* @__PURE__ */ P(Gs, [["render", ar], ["__scopeId", "data-v-5f30c914"]]), lr = {
3226
3226
  form_response: Es,
3227
3227
  info_card: Ks,
3228
3228
  ticket: or
@@ -3242,12 +3242,12 @@ const or = /* @__PURE__ */ B(Gs, [["render", ar], ["__scopeId", "data-v-5f30c914
3242
3242
  }
3243
3243
  };
3244
3244
  function dr(e, t, n, r, a, s) {
3245
- return s.component ? (c(), P(Ae(s.component), {
3245
+ return s.component ? (c(), U(Ae(s.component), {
3246
3246
  key: 0,
3247
3247
  data: n.artifact.data
3248
3248
  }, null, 8, ["data"])) : b("", !0);
3249
3249
  }
3250
- const ur = /* @__PURE__ */ B(cr, [["render", dr]]), hr = {
3250
+ const ur = /* @__PURE__ */ P(cr, [["render", dr]]), hr = {
3251
3251
  name: "WmAttachmentPreview",
3252
3252
  inject: {
3253
3253
  signAttachmentFn: { default: null },
@@ -3382,7 +3382,7 @@ function kr(e, t, n, r, a, s) {
3382
3382
  ], 8, pr))
3383
3383
  ], 2);
3384
3384
  }
3385
- const Cr = /* @__PURE__ */ B(hr, [["render", kr], ["__scopeId", "data-v-0c877a62"]]), Ar = {
3385
+ const Cr = /* @__PURE__ */ P(hr, [["render", kr], ["__scopeId", "data-v-0c877a62"]]), Ar = {
3386
3386
  name: "WmBubble",
3387
3387
  props: {
3388
3388
  role: { type: String, default: "ai" },
@@ -3404,7 +3404,7 @@ function Mr(e, t, n, r, a, s) {
3404
3404
  ], !0)
3405
3405
  ], 2);
3406
3406
  }
3407
- const Tr = /* @__PURE__ */ B(Ar, [["render", Mr], ["__scopeId", "data-v-7ab13147"]]), xr = { name: "WmTyping" }, Or = { class: "wm-typing" };
3407
+ const Tr = /* @__PURE__ */ P(Ar, [["render", Mr], ["__scopeId", "data-v-7ab13147"]]), xr = { name: "WmTyping" }, Or = { class: "wm-typing" };
3408
3408
  function Rr(e, t, n, r, a, s) {
3409
3409
  return c(), d("div", Or, [...t[0] || (t[0] = [
3410
3410
  o("span", { style: { "animation-delay": "0s" } }, null, -1),
@@ -3412,7 +3412,7 @@ function Rr(e, t, n, r, a, s) {
3412
3412
  o("span", { style: { "animation-delay": "0.4s" } }, null, -1)
3413
3413
  ])]);
3414
3414
  }
3415
- const Lr = /* @__PURE__ */ B(xr, [["render", Rr], ["__scopeId", "data-v-df2447fd"]]);
3415
+ const Lr = /* @__PURE__ */ P(xr, [["render", Rr], ["__scopeId", "data-v-df2447fd"]]);
3416
3416
  function ee(e) {
3417
3417
  return e ? e.client_msg_id || e.id : "";
3418
3418
  }
@@ -3827,9 +3827,9 @@ const Ir = {
3827
3827
  // doit garder son arrondi.
3828
3828
  cornersFor(e, t) {
3829
3829
  var Q, se, re;
3830
- const n = e.items, r = (Q = n[t]) == null ? void 0 : Q.kind, a = (se = n[t - 1]) == null ? void 0 : se.kind, s = (re = n[t + 1]) == null ? void 0 : re.kind, i = e.role === "user", l = 14, g = 4, k = a == null ? void 0 : a.bottom, w = s == null ? void 0 : s.top, T = this.widthByKey[this.rowKeyOf(e, t)], I = this.widthByKey[this.rowKeyOf(e, t - 1)], A = this.widthByKey[this.rowKeyOf(e, t + 1)], q = 0.5, M = (W, ie, X) => W != null && T != null ? W + q >= T : ie === X || ie === "card" && X === "bubble";
3831
- let N = l, U = l, D = l, K = l;
3832
- return i ? (k && (U = g), (w || !s) && (D = g), k && M(I, k, r == null ? void 0 : r.top) && (N = g), w && M(A, w, r == null ? void 0 : r.bottom) && (K = g)) : (k && (N = g), (w || !s) && (K = g), k && M(I, k, r == null ? void 0 : r.top) && (U = g), w && M(A, w, r == null ? void 0 : r.bottom) && (D = g)), { tl: N, tr: U, br: D, bl: K };
3830
+ const n = e.items, r = (Q = n[t]) == null ? void 0 : Q.kind, a = (se = n[t - 1]) == null ? void 0 : se.kind, s = (re = n[t + 1]) == null ? void 0 : re.kind, i = e.role === "user", l = 14, g = 4, k = a == null ? void 0 : a.bottom, w = s == null ? void 0 : s.top, T = this.widthByKey[this.rowKeyOf(e, t)], E = this.widthByKey[this.rowKeyOf(e, t - 1)], A = this.widthByKey[this.rowKeyOf(e, t + 1)], q = 0.5, M = (W, ie, X) => W != null && T != null ? W + q >= T : ie === X || ie === "card" && X === "bubble";
3831
+ let D = l, N = l, L = l, K = l;
3832
+ return i ? (k && (N = g), (w || !s) && (L = g), k && M(E, k, r == null ? void 0 : r.top) && (D = g), w && M(A, w, r == null ? void 0 : r.bottom) && (K = g)) : (k && (D = g), (w || !s) && (K = g), k && M(E, k, r == null ? void 0 : r.top) && (N = g), w && M(A, w, r == null ? void 0 : r.bottom) && (L = g)), { tl: D, tr: N, br: L, bl: K };
3833
3833
  },
3834
3834
  // Inline style emitting the four corner CSS variables. Set on
3835
3835
  // `.wm-list__row` so they cascade to Bubble/ActionResult/
@@ -3979,12 +3979,12 @@ const Ir = {
3979
3979
  e && (typeof e.scrollTo == "function" ? e.scrollTo({ top: e.scrollHeight, behavior: "smooth" }) : e.scrollTop = e.scrollHeight, this.showScrollDown = !1);
3980
3980
  }
3981
3981
  }
3982
- }, Dr = { class: "wm-list__wrap" }, Nr = {
3982
+ }, Ur = { class: "wm-list__wrap" }, Dr = {
3983
3983
  key: 0,
3984
3984
  class: "wm-list__loadMore",
3985
3985
  role: "status",
3986
3986
  "aria-live": "polite"
3987
- }, Ur = { class: "wm-list__loadMore-lbl" }, jr = {
3987
+ }, Nr = { class: "wm-list__loadMore-lbl" }, jr = {
3988
3988
  key: 1,
3989
3989
  class: "wm-list__historyEnd"
3990
3990
  }, Fr = {
@@ -4013,26 +4013,26 @@ const Ir = {
4013
4013
  class: "wm-list__row wm-list__row--ai fade-up"
4014
4014
  }, ni = { class: "wm-list__avatarSlot" }, si = ["aria-label", "title"];
4015
4015
  function ri(e, t, n, r, a, s) {
4016
- const i = E("AIAvatar"), l = E("HumanAvatar"), g = E("ActionResult"), k = E("ArtifactRenderer"), w = E("Bubble"), T = E("AttachmentPreview"), I = E("Typing");
4017
- return c(), d("div", Dr, [
4016
+ const i = B("AIAvatar"), l = B("HumanAvatar"), g = B("ActionResult"), k = B("ArtifactRenderer"), w = B("Bubble"), T = B("AttachmentPreview"), E = B("Typing");
4017
+ return c(), d("div", Ur, [
4018
4018
  o("div", {
4019
4019
  ref: "scrollEl",
4020
4020
  class: R(["wm-list", { "wm-list--silent": a.silentFades }]),
4021
4021
  onScrollPassive: t[4] || (t[4] = (...A) => s.onScroll && s.onScroll(...A))
4022
4022
  }, [
4023
- n.loadingMore ? (c(), d("div", Nr, [
4023
+ n.loadingMore ? (c(), d("div", Dr, [
4024
4024
  t[6] || (t[6] = o("span", {
4025
4025
  class: "wm-list__loadMore-spinner",
4026
4026
  "aria-hidden": "true"
4027
4027
  }, null, -1)),
4028
- o("span", Ur, v(s.t("messageList.loadingHistory")), 1)
4028
+ o("span", Nr, v(s.t("messageList.loadingHistory")), 1)
4029
4029
  ])) : s.historyExhausted ? (c(), d("div", jr, v(s.t("messageList.conversationStart")), 1)) : b("", !0),
4030
4030
  n.dateLabel ? (c(), d("div", Fr, [
4031
4031
  t[7] || (t[7] = o("div", { class: "wm-list__line" }, null, -1)),
4032
4032
  o("span", Hr, v(n.dateLabel), 1),
4033
4033
  t[8] || (t[8] = o("div", { class: "wm-list__line" }, null, -1))
4034
4034
  ])) : b("", !0),
4035
- (c(!0), d(L, null, j(s.groups, (A, q) => (c(), d(L, {
4035
+ (c(!0), d(I, null, j(s.groups, (A, q) => (c(), d(I, {
4036
4036
  key: A.key
4037
4037
  }, [
4038
4038
  A.key === s.unreadGroupKey ? (c(), d("div", zr, [
@@ -4048,8 +4048,8 @@ function ri(e, t, n, r, a, s) {
4048
4048
  t[11] || (t[11] = o("div", { class: "wm-list__line wm-list__line--strong" }, null, -1)),
4049
4049
  o("span", Vr, v(A.systemLabel), 1),
4050
4050
  t[12] || (t[12] = o("div", { class: "wm-list__line wm-list__line--strong" }, null, -1))
4051
- ])) : (c(), d(L, { key: 1 }, [
4052
- (c(!0), d(L, null, j(A.items, (M, N) => (c(), d(L, {
4051
+ ])) : (c(), d(I, { key: 1 }, [
4052
+ (c(!0), d(I, null, j(A.items, (M, D) => (c(), d(I, {
4053
4053
  key: `${s.messageKey(M.message)}-${M.partKey}`
4054
4054
  }, [
4055
4055
  o("div", {
@@ -4061,23 +4061,23 @@ function ri(e, t, n, r, a, s) {
4061
4061
  "is-failed": M.message._failed
4062
4062
  }
4063
4063
  ]]),
4064
- style: z(s.cornersStyle(A, N)),
4065
- onPointerdown: (U) => s.onPressStart(`${s.messageKey(M.message)}-${M.partKey}`),
4066
- onPointerup: t[0] || (t[0] = (U) => s.onPressEnd()),
4067
- onPointercancel: t[1] || (t[1] = (U) => s.onPressEnd()),
4068
- onPointerleave: t[2] || (t[2] = (U) => s.onPressEnd()),
4064
+ style: z(s.cornersStyle(A, D)),
4065
+ onPointerdown: (N) => s.onPressStart(`${s.messageKey(M.message)}-${M.partKey}`),
4066
+ onPointerup: t[0] || (t[0] = (N) => s.onPressEnd()),
4067
+ onPointercancel: t[1] || (t[1] = (N) => s.onPressEnd()),
4068
+ onPointerleave: t[2] || (t[2] = (N) => s.onPressEnd()),
4069
4069
  onContextmenu: t[3] || (t[3] = J(() => {
4070
4070
  }, ["prevent"]))
4071
4071
  }, [
4072
4072
  A.role !== "user" ? (c(), d("div", Wr, [
4073
- N === A.items.length - 1 ? (c(), d(L, { key: 0 }, [
4074
- A.role === "ai" ? (c(), P(i, {
4073
+ D === A.items.length - 1 ? (c(), d(I, { key: 0 }, [
4074
+ A.role === "ai" ? (c(), U(i, {
4075
4075
  key: 0,
4076
4076
  size: 26,
4077
4077
  tail: !0,
4078
4078
  name: n.aiAgentName,
4079
4079
  "image-url": n.aiAgentAvatarUrl
4080
- }, null, 8, ["name", "image-url"])) : (c(), P(l, {
4080
+ }, null, 8, ["name", "image-url"])) : (c(), U(l, {
4081
4081
  key: 1,
4082
4082
  name: A.agentName,
4083
4083
  "avatar-url": A.agentAvatarUrl,
@@ -4086,24 +4086,24 @@ function ri(e, t, n, r, a, s) {
4086
4086
  }, null, 8, ["name", "avatar-url"]))
4087
4087
  ], 64)) : b("", !0)
4088
4088
  ])) : b("", !0),
4089
- M.renderAs === "action" ? (c(), P(g, {
4089
+ M.renderAs === "action" ? (c(), U(g, {
4090
4090
  key: 1,
4091
4091
  state: M.message.payload.state,
4092
4092
  label: s.actionLabel(M.message),
4093
4093
  detail: s.actionDetail(M.message)
4094
- }, null, 8, ["state", "label", "detail"])) : M.renderAs === "admin-pending" ? (c(), P(g, {
4094
+ }, null, 8, ["state", "label", "detail"])) : M.renderAs === "admin-pending" ? (c(), U(g, {
4095
4095
  key: 2,
4096
4096
  state: "awaiting",
4097
4097
  label: s.t("messageList.approvalRequestSent"),
4098
4098
  detail: M.message.text_md || ""
4099
- }, null, 8, ["label", "detail"])) : M.renderAs === "artifact-of-action" ? (c(), P(k, {
4099
+ }, null, 8, ["label", "detail"])) : M.renderAs === "artifact-of-action" ? (c(), U(k, {
4100
4100
  key: 3,
4101
4101
  artifact: s.actionArtifact(M.message)
4102
- }, null, 8, ["artifact"])) : M.renderAs === "artifact" ? (c(), P(k, {
4102
+ }, null, 8, ["artifact"])) : M.renderAs === "artifact" ? (c(), U(k, {
4103
4103
  key: 4,
4104
4104
  artifact: s.artifactOf(M.message)
4105
4105
  }, null, 8, ["artifact"])) : (c(), d("div", Gr, [
4106
- M.message.text_md ? (c(), P(w, {
4106
+ M.message.text_md ? (c(), U(w, {
4107
4107
  key: 0,
4108
4108
  role: A.role,
4109
4109
  text: M.message.text_md
@@ -4114,16 +4114,16 @@ function ri(e, t, n, r, a, s) {
4114
4114
  "wm-list__atts--align-end": A.role === "user"
4115
4115
  }])
4116
4116
  }, [
4117
- (c(!0), d(L, null, j(s.attachmentsOf(
4117
+ (c(!0), d(I, null, j(s.attachmentsOf(
4118
4118
  M.message
4119
- ), (U, D) => (c(), P(T, {
4120
- key: `${s.messageKey(M.message)}-att-${D}`,
4121
- attachment: U
4119
+ ), (N, L) => (c(), U(T, {
4120
+ key: `${s.messageKey(M.message)}-att-${L}`,
4121
+ attachment: N
4122
4122
  }, null, 8, ["attachment"]))), 128))
4123
4123
  ], 2)) : b("", !0)
4124
4124
  ]))
4125
4125
  ], 46, Kr),
4126
- N < A.items.length - 1 && a.pressedItemKey === `${s.messageKey(M.message)}-${M.partKey}` && (A.role !== "user" || s.timeOf(M.message)) ? (c(), d("div", {
4126
+ D < A.items.length - 1 && a.pressedItemKey === `${s.messageKey(M.message)}-${M.partKey}` && (A.role !== "user" || s.timeOf(M.message)) ? (c(), d("div", {
4127
4127
  key: 0,
4128
4128
  class: R(["wm-list__meta wm-list__meta--press", { "wm-list__meta--right": A.role === "user" }])
4129
4129
  }, [
@@ -4152,10 +4152,10 @@ function ri(e, t, n, r, a, s) {
4152
4152
  "image-url": n.aiAgentAvatarUrl
4153
4153
  }, null, 8, ["name", "image-url"])
4154
4154
  ]),
4155
- V(I)
4155
+ V(E)
4156
4156
  ])) : b("", !0)
4157
4157
  ], 34),
4158
- V(Ue, { name: "wm-scrollDown" }, {
4158
+ V(Ne, { name: "wm-scrollDown" }, {
4159
4159
  default: je(() => [
4160
4160
  a.showScrollDown ? (c(), d("button", {
4161
4161
  key: 0,
@@ -4184,7 +4184,7 @@ function ri(e, t, n, r, a, s) {
4184
4184
  })
4185
4185
  ]);
4186
4186
  }
4187
- const ii = /* @__PURE__ */ B(Pr, [["render", ri], ["__scopeId", "data-v-cf20685c"]]), pe = typeof navigator < "u" && !!navigator.mediaDevices && typeof navigator.mediaDevices.getDisplayMedia == "function", Oe = typeof window < "u" && typeof window.MediaRecorder < "u";
4187
+ const ii = /* @__PURE__ */ P(Pr, [["render", ri], ["__scopeId", "data-v-cf20685c"]]), pe = typeof navigator < "u" && !!navigator.mediaDevices && typeof navigator.mediaDevices.getDisplayMedia == "function", Oe = typeof window < "u" && typeof window.MediaRecorder < "u";
4188
4188
  function ai() {
4189
4189
  return Oe && [
4190
4190
  "video/webm;codecs=vp9,opus",
@@ -4205,7 +4205,7 @@ function $e({ audio: e }) {
4205
4205
  systemAudio: e ? "include" : "exclude"
4206
4206
  };
4207
4207
  }
4208
- function fo(e) {
4208
+ function yo(e) {
4209
4209
  return e ? e.startsWith("image/") ? "image" : e.startsWith("video/") ? "video" : "file" : "file";
4210
4210
  }
4211
4211
  async function oi() {
@@ -4267,13 +4267,13 @@ async function ci(e = {}) {
4267
4267
  w.data && w.data.size > 0 && a.push(w.data);
4268
4268
  }), r.addEventListener("stop", () => {
4269
4269
  var w, T;
4270
- if (s && clearInterval(s), t.getTracks().forEach((I) => {
4271
- I.stop();
4270
+ if (s && clearInterval(s), t.getTracks().forEach((E) => {
4271
+ E.stop();
4272
4272
  }), a.length) {
4273
- const I = r.mimeType || n || "video/webm", A = new Blob(a, { type: I }), q = /mp4/.test(I) ? "mp4" : "webm", M = (/* @__PURE__ */ new Date()).toISOString().replace(/[:.]/g, "-").slice(0, 19), N = new File([A], `ecran-${M}.${q}`, {
4274
- type: I
4273
+ const E = r.mimeType || n || "video/webm", A = new Blob(a, { type: E }), q = /mp4/.test(E) ? "mp4" : "webm", M = (/* @__PURE__ */ new Date()).toISOString().replace(/[:.]/g, "-").slice(0, 19), D = new File([A], `ecran-${M}.${q}`, {
4274
+ type: E
4275
4275
  });
4276
- (w = e.onfinalize) == null || w.call(e, N);
4276
+ (w = e.onfinalize) == null || w.call(e, D);
4277
4277
  } else
4278
4278
  (T = e.oncancel) == null || T.call(e);
4279
4279
  }), t.getVideoTracks().forEach((w) => {
@@ -4525,7 +4525,7 @@ function Ci(e, t, n, r, a, s) {
4525
4525
  onClick: t[2] || (t[2] = (i) => a.attachOpen = !1)
4526
4526
  })) : b("", !0),
4527
4527
  a.attachOpen ? (c(), d("div", fi, [
4528
- (c(!0), d(L, null, j(s.attachItems, (i) => (c(), d("button", {
4528
+ (c(!0), d(I, null, j(s.attachItems, (i) => (c(), d("button", {
4529
4529
  key: i.action,
4530
4530
  type: "button",
4531
4531
  class: "wm-compose__menuItem",
@@ -4606,7 +4606,7 @@ function Ci(e, t, n, r, a, s) {
4606
4606
  ], 34)
4607
4607
  ], 6);
4608
4608
  }
4609
- const Ai = /* @__PURE__ */ B(ui, [["render", Ci], ["__scopeId", "data-v-01e81a27"]]), Si = {
4609
+ const Ai = /* @__PURE__ */ P(ui, [["render", Ci], ["__scopeId", "data-v-01e81a27"]]), Si = {
4610
4610
  name: "WmSuggestionChips",
4611
4611
  props: {
4612
4612
  items: { type: Array, default: () => [] },
@@ -4629,7 +4629,7 @@ function Ti(e, t, n, r, a, s) {
4629
4629
  key: s.batchKey,
4630
4630
  class: "wm-chips"
4631
4631
  }, [
4632
- (c(!0), d(L, null, j(n.items, (i, l) => (c(), d("button", {
4632
+ (c(!0), d(I, null, j(n.items, (i, l) => (c(), d("button", {
4633
4633
  key: l,
4634
4634
  type: "button",
4635
4635
  class: "wm-chip",
@@ -4638,7 +4638,7 @@ function Ti(e, t, n, r, a, s) {
4638
4638
  }, v(i.label), 13, Mi))), 128))
4639
4639
  ])) : b("", !0);
4640
4640
  }
4641
- const xi = /* @__PURE__ */ B(Si, [["render", Ti], ["__scopeId", "data-v-47ad8085"]]), Oi = {
4641
+ const xi = /* @__PURE__ */ P(Si, [["render", Ti], ["__scopeId", "data-v-47ad8085"]]), Oi = {
4642
4642
  name: "WmApprovalCard",
4643
4643
  components: { AIAvatar: oe },
4644
4644
  inject: {
@@ -4685,9 +4685,9 @@ const xi = /* @__PURE__ */ B(Si, [["render", Ti], ["__scopeId", "data-v-47ad8085
4685
4685
  }, Ri = { class: "wm-approval" }, Li = { class: "wm-approval__head" }, Ii = { class: "wm-approval__icon" }, Ei = { class: "wm-approval__main" }, Bi = { class: "wm-approval__title" }, Pi = {
4686
4686
  key: 0,
4687
4687
  class: "wm-approval__detail"
4688
- }, Di = { class: "wm-approval__actions" };
4689
- function Ni(e, t, n, r, a, s) {
4690
- const i = E("AIAvatar");
4688
+ }, Ui = { class: "wm-approval__actions" };
4689
+ function Di(e, t, n, r, a, s) {
4690
+ const i = B("AIAvatar");
4691
4691
  return c(), d("div", Ri, [
4692
4692
  o("div", Li, [
4693
4693
  o("div", Ii, [
@@ -4702,7 +4702,7 @@ function Ni(e, t, n, r, a, s) {
4702
4702
  n.detail ? (c(), d("div", Pi, v(n.detail), 1)) : b("", !0)
4703
4703
  ])
4704
4704
  ]),
4705
- o("div", Di, [
4705
+ o("div", Ui, [
4706
4706
  s.rejectId ? (c(), d("button", {
4707
4707
  key: 0,
4708
4708
  type: "button",
@@ -4718,8 +4718,8 @@ function Ni(e, t, n, r, a, s) {
4718
4718
  ])
4719
4719
  ]);
4720
4720
  }
4721
- const Ui = /* @__PURE__ */ B(Oi, [["render", Ni], ["__scopeId", "data-v-a2bed37e"]]);
4722
- let De = 0;
4721
+ const Ni = /* @__PURE__ */ P(Oi, [["render", Di], ["__scopeId", "data-v-a2bed37e"]]);
4722
+ let Ue = 0;
4723
4723
  const ji = /* @__PURE__ */ new Set([
4724
4724
  "text",
4725
4725
  "textarea",
@@ -4745,8 +4745,8 @@ const ji = /* @__PURE__ */ new Set([
4745
4745
  },
4746
4746
  emits: ["submit"],
4747
4747
  data() {
4748
- return De += 1, {
4749
- _uid: De,
4748
+ return Ue += 1, {
4749
+ _uid: Ue,
4750
4750
  values: {},
4751
4751
  busy: !1,
4752
4752
  error: ""
@@ -4839,7 +4839,7 @@ const ji = /* @__PURE__ */ new Set([
4839
4839
  class: "wm-form__doneLbl"
4840
4840
  };
4841
4841
  function da(e, t, n, r, a, s) {
4842
- const i = E("AIAvatar");
4842
+ const i = B("AIAvatar");
4843
4843
  return c(), d("div", Hi, [
4844
4844
  o("div", zi, [
4845
4845
  o("div", qi, [
@@ -4858,7 +4858,7 @@ function da(e, t, n, r, a, s) {
4858
4858
  class: "wm-form__body",
4859
4859
  onSubmit: t[0] || (t[0] = J((...l) => s.onSubmit && s.onSubmit(...l), ["prevent"]))
4860
4860
  }, [
4861
- (c(!0), d(L, null, j(s.normalizedFields, (l) => (c(), d("div", {
4861
+ (c(!0), d(I, null, j(s.normalizedFields, (l) => (c(), d("div", {
4862
4862
  key: l.key,
4863
4863
  class: "wm-form__field"
4864
4864
  }, [
@@ -4936,14 +4936,14 @@ function da(e, t, n, r, a, s) {
4936
4936
  disabled: n.readOnly || a.busy
4937
4937
  }, [
4938
4938
  o("option", na, v(l.placeholder || s.t("form.choose")), 1),
4939
- (c(!0), d(L, null, j(l.options, (g) => (c(), d("option", {
4939
+ (c(!0), d(I, null, j(l.options, (g) => (c(), d("option", {
4940
4940
  key: g.value,
4941
4941
  value: g.value
4942
4942
  }, v(g.label), 9, sa))), 128))
4943
4943
  ], 8, ta)), [
4944
4944
  [Ge, a.values[l.key]]
4945
4945
  ]) : l.type === "multiselect" ? (c(), d("div", ra, [
4946
- (c(!0), d(L, null, j(l.options, (g) => (c(), d("label", {
4946
+ (c(!0), d(I, null, j(l.options, (g) => (c(), d("label", {
4947
4947
  key: g.value,
4948
4948
  class: "wm-form__multiItem"
4949
4949
  }, [
@@ -4975,7 +4975,7 @@ function da(e, t, n, r, a, s) {
4975
4975
  ], 32)
4976
4976
  ]);
4977
4977
  }
4978
- const ua = /* @__PURE__ */ B(Fi, [["render", da], ["__scopeId", "data-v-fe65cc56"]]), ha = {
4978
+ const ua = /* @__PURE__ */ P(Fi, [["render", da], ["__scopeId", "data-v-fe65cc56"]]), ha = {
4979
4979
  name: "WmFeedback",
4980
4980
  inject: {
4981
4981
  // Translator shared by the Messenger shell; French fallback when
@@ -5033,11 +5033,11 @@ function Aa(e, t, n, r, a, s) {
5033
5033
  ], -1)),
5034
5034
  o("div", ka, v(s.t("feedback.doneTitle")), 1),
5035
5035
  o("div", Ca, v(s.t("feedback.doneSubtitle")), 1)
5036
- ])) : (c(), d(L, { key: 0 }, [
5036
+ ])) : (c(), d(I, { key: 0 }, [
5037
5037
  o("div", fa, v(s.t("feedback.question")), 1),
5038
5038
  o("div", _a, v(s.t("feedback.subtitle")), 1),
5039
5039
  o("div", ga, [
5040
- (c(!0), d(L, null, j(s.options, (i) => (c(), d("button", {
5040
+ (c(!0), d(I, null, j(s.options, (i) => (c(), d("button", {
5041
5041
  key: i.v,
5042
5042
  type: "button",
5043
5043
  class: R(["wm-fb__opt", { "is-selected": a.sel === i.v }]),
@@ -5056,7 +5056,7 @@ function Aa(e, t, n, r, a, s) {
5056
5056
  ], 64))
5057
5057
  ]);
5058
5058
  }
5059
- const Sa = /* @__PURE__ */ B(ha, [["render", Aa], ["__scopeId", "data-v-9b630564"]]), Ma = {
5059
+ const Sa = /* @__PURE__ */ P(ha, [["render", Aa], ["__scopeId", "data-v-9b630564"]]), Ma = {
5060
5060
  name: "WmMoreMenu",
5061
5061
  inject: {
5062
5062
  // Translator shared by the Messenger shell; French fallback when
@@ -5100,8 +5100,8 @@ const Sa = /* @__PURE__ */ B(ha, [["render", Aa], ["__scopeId", "data-v-9b630564
5100
5100
  }, Ra = { class: "wm-mm__label" }, La = { class: "wm-mm__label" }, Ia = {
5101
5101
  key: 1,
5102
5102
  class: "wm-mm__sep"
5103
- }, Ea = { class: "wm-mm__section" }, Ba = { class: "wm-mm__label" }, Pa = { class: "wm-mm__section" }, Da = { class: "wm-mm__label" }, Na = { class: "wm-mm__label" };
5104
- function Ua(e, t, n, r, a, s) {
5103
+ }, Ea = { class: "wm-mm__section" }, Ba = { class: "wm-mm__label" }, Pa = { class: "wm-mm__section" }, Ua = { class: "wm-mm__label" }, Da = { class: "wm-mm__label" };
5104
+ function Na(e, t, n, r, a, s) {
5105
5105
  return c(), d("div", Ta, [
5106
5106
  o("div", {
5107
5107
  class: "wm-mm__scrim",
@@ -5212,7 +5212,7 @@ function Ua(e, t, n, r, a, s) {
5212
5212
  o("path", { d: "M18 10a8 8 0 11-16 0 8 8 0 0116 0zM10 6v4l3 2" })
5213
5213
  ])
5214
5214
  ], -1)),
5215
- o("span", Da, v(s.t("moreMenu.serviceStatus")), 1)
5215
+ o("span", Ua, v(s.t("moreMenu.serviceStatus")), 1)
5216
5216
  ])) : b("", !0),
5217
5217
  n.helpUrl ? (c(), d("button", {
5218
5218
  key: 1,
@@ -5235,13 +5235,13 @@ function Ua(e, t, n, r, a, s) {
5235
5235
  o("path", { d: "M9 11a3 3 0 116 0c0 2-3 2-3 5M12 19h.01M12 22a10 10 0 110-20 10 10 0 010 20z" })
5236
5236
  ])
5237
5237
  ], -1)),
5238
- o("span", Na, v(s.t("moreMenu.helpCenter")), 1)
5238
+ o("span", Da, v(s.t("moreMenu.helpCenter")), 1)
5239
5239
  ])) : b("", !0)
5240
5240
  ])
5241
5241
  ])
5242
5242
  ]);
5243
5243
  }
5244
- const ja = /* @__PURE__ */ B(Ma, [["render", Ua], ["__scopeId", "data-v-4cf6d578"]]), Fa = {
5244
+ const ja = /* @__PURE__ */ P(Ma, [["render", Na], ["__scopeId", "data-v-4cf6d578"]]), Fa = {
5245
5245
  name: "WmRenameDialog",
5246
5246
  inject: {
5247
5247
  // Translator shared by the Messenger shell; French fallback when
@@ -5350,7 +5350,7 @@ function Ja(e, t, n, r, a, s) {
5350
5350
  ])
5351
5351
  ]);
5352
5352
  }
5353
- const Xa = /* @__PURE__ */ B(Fa, [["render", Ja], ["__scopeId", "data-v-6d5f94a8"]]), Ne = "ww-messenger-tokens", Qa = {
5353
+ const Xa = /* @__PURE__ */ P(Fa, [["render", Ja], ["__scopeId", "data-v-6d5f94a8"]]), De = "ww-messenger-tokens", Qa = {
5354
5354
  name: "Messenger",
5355
5355
  components: {
5356
5356
  Launcher: qt,
@@ -5360,7 +5360,7 @@ const Xa = /* @__PURE__ */ B(Fa, [["render", Ja], ["__scopeId", "data-v-6d5f94a8
5360
5360
  MessageList: ii,
5361
5361
  Composer: Ai,
5362
5362
  SuggestionChips: xi,
5363
- ApprovalCard: Ui,
5363
+ ApprovalCard: Ni,
5364
5364
  FormCard: ua,
5365
5365
  Feedback: Sa,
5366
5366
  MoreMenu: ja,
@@ -5579,9 +5579,9 @@ const Xa = /* @__PURE__ */ B(Fa, [["render", Ja], ["__scopeId", "data-v-6d5f94a8
5579
5579
  const T = a[w];
5580
5580
  if (!T) continue;
5581
5581
  if (((k = T.author) == null ? void 0 : k.type) === "user") break;
5582
- const I = Y(T.id);
5583
- if (I != null) {
5584
- if (s != null && I <= s) break;
5582
+ const E = Y(T.id);
5583
+ if (E != null) {
5584
+ if (s != null && E <= s) break;
5585
5585
  t[T.id] !== 0 && (!l && T.author && (l = T.author), i++);
5586
5586
  }
5587
5587
  }
@@ -6024,9 +6024,9 @@ const Xa = /* @__PURE__ */ B(Fa, [["render", Ja], ["__scopeId", "data-v-6d5f94a8
6024
6024
  }
6025
6025
  },
6026
6026
  async mounted() {
6027
- if (typeof document < "u" && !document.getElementById(Ne)) {
6027
+ if (typeof document < "u" && !document.getElementById(De)) {
6028
6028
  const e = document.createElement("style");
6029
- e.id = Ne, e.textContent = rt, document.head.appendChild(e);
6029
+ e.id = De, e.textContent = rt, document.head.appendChild(e);
6030
6030
  }
6031
6031
  this._parentMessageHandler = this.onParentMessage.bind(this), window.addEventListener("message", this._parentMessageHandler), window.parent && window.parent !== window && window.parent.postMessage({ type: "READY" }, "*"), this.isEmbedded ? (await this.boot(), this.store && await this.open()) : (await this.$nextTick(), this.sendCurrentLauncherSize(), this.observeLauncherSize());
6032
6032
  },
@@ -6116,7 +6116,14 @@ const Xa = /* @__PURE__ */ B(Fa, [["render", Ja], ["__scopeId", "data-v-6d5f94a8
6116
6116
  }
6117
6117
  },
6118
6118
  async refresh() {
6119
- this.store && this.store.destroy(), this.cancelReveals(), this.cancelWelcomeTimers(), this.welcomeRevealedAt = {}, this.teardownLiveReveal(), this.teardownNotifications(), this.convOpenedAt = 0, this.transport = null, this.store = null, this.isOpen = !1, this.draft = "", this.busy = !1, this.bootError = null, this.pendingAttachments = [], this.feedbackBusy = !1, this.feedbackDone = !1, this.moreOpen = !1, this.renameDialogOpen = !1, this.draftConv = null, this.activeConvId = null, this.showOnboarding = !1, this.showHistory = !1, this.backToHistory = !1, await this.boot(), this.isEmbedded && this.store && await this.open();
6119
+ this.store && this.store.destroy(), this.cancelReveals(), this.cancelWelcomeTimers(), this.welcomeRevealedAt = {}, this.teardownLiveReveal(), this.teardownNotifications(), this.convOpenedAt = 0, this.transport = null, this.store = null, this.isOpen = !1, this.draft = "", this.busy = !1, this.bootError = null;
6120
+ for (const e of this.pendingAttachments)
6121
+ if (e != null && e._previewUrl)
6122
+ try {
6123
+ URL.revokeObjectURL(e._previewUrl);
6124
+ } catch {
6125
+ }
6126
+ this.pendingAttachments = [], this.feedbackBusy = !1, this.feedbackDone = !1, this.moreOpen = !1, this.renameDialogOpen = !1, this.draftConv = null, this.activeConvId = null, this.showOnboarding = !1, this.showHistory = !1, this.backToHistory = !1, await this.boot(), this.isEmbedded && this.store && await this.open();
6120
6127
  },
6121
6128
  // ── Float overlay measurement ────────────────────────────────────
6122
6129
  syncFloatObserver(e) {
@@ -6192,21 +6199,21 @@ const Xa = /* @__PURE__ */ B(Fa, [["render", Ja], ["__scopeId", "data-v-6d5f94a8
6192
6199
  this.launcherHovered = e, this.sendCurrentLauncherSize();
6193
6200
  },
6194
6201
  sendCurrentLauncherSize() {
6195
- var w, T, I, A, q, M, N;
6202
+ var w, T, E, A, q, M, D;
6196
6203
  if (this.isOpen) return;
6197
6204
  const e = (T = (w = this.$el) == null ? void 0 : w.querySelector) == null ? void 0 : T.call(w, ".wm-launcherWrap");
6198
6205
  if (!e) return;
6199
6206
  const t = e.getBoundingClientRect();
6200
6207
  if (!t.width || !t.height) return;
6201
- const n = (((I = this.launcherPeeks) == null ? void 0 : I.length) ?? 0) > 0, r = 16, a = Math.ceil(t.width), s = Math.ceil(t.height), i = (q = (A = this.$el) == null ? void 0 : A.querySelector) == null ? void 0 : q.call(A, ".wm-launcher"), l = (N = (M = this.$el) == null ? void 0 : M.querySelectorAll) == null ? void 0 : N.call(M, ".wm-peek"), g = l && l.length ? l[l.length - 1] : null;
6208
+ const n = (((E = this.launcherPeeks) == null ? void 0 : E.length) ?? 0) > 0, r = 16, a = Math.ceil(t.width), s = Math.ceil(t.height), i = (q = (A = this.$el) == null ? void 0 : A.querySelector) == null ? void 0 : q.call(A, ".wm-launcher"), l = (D = (M = this.$el) == null ? void 0 : M.querySelectorAll) == null ? void 0 : D.call(M, ".wm-peek"), g = l && l.length ? l[l.length - 1] : null;
6202
6209
  let k = null;
6203
6210
  if (g) {
6204
- const U = g.getBoundingClientRect();
6211
+ const N = g.getBoundingClientRect();
6205
6212
  k = {
6206
- width: Math.ceil(U.width),
6207
- height: Math.ceil(U.height),
6208
- rightOffset: Math.max(0, Math.ceil(t.right - U.right)),
6209
- bottomOffset: Math.max(0, Math.ceil(t.bottom - U.bottom))
6213
+ width: Math.ceil(N.width),
6214
+ height: Math.ceil(N.height),
6215
+ rightOffset: Math.max(0, Math.ceil(t.right - N.right)),
6216
+ bottomOffset: Math.max(0, Math.ceil(t.bottom - N.bottom))
6210
6217
  };
6211
6218
  }
6212
6219
  this.notifyParentResize("closed", {
@@ -6269,7 +6276,7 @@ const Xa = /* @__PURE__ */ B(Fa, [["render", Ja], ["__scopeId", "data-v-6d5f94a8
6269
6276
  const t = await this.store.createConversation({}), n = this.welcomeRevealedAt.__draft__;
6270
6277
  return n !== void 0 && (this.welcomeRevealedAt = {
6271
6278
  ...this.welcomeRevealedAt,
6272
- [t.id]: n
6279
+ [t.id]: n > 0 ? n : Date.now()
6273
6280
  }), this.draftConv = null, this.activeConvId = t.id, await this.store.openConversation(t.id), this.markConvRead(t), t;
6274
6281
  } catch (t) {
6275
6282
  return console.error("[ww-messenger] create conv failed", t), this.bootError = (t == null ? void 0 : t.message) || String(t), null;
@@ -6323,24 +6330,32 @@ const Xa = /* @__PURE__ */ B(Fa, [["render", Ja], ["__scopeId", "data-v-6d5f94a8
6323
6330
  if (!e) return;
6324
6331
  const t = this.widgetWelcomeMessage;
6325
6332
  if (!t || typeof t != "string" || !t.trim() || this.welcomeRevealedAt[e] !== void 0) return;
6333
+ const n = this.currentConv;
6334
+ if (!((n == null ? void 0 : n._draft) || !(n != null && n.last_message_id))) {
6335
+ this.welcomeRevealedAt = {
6336
+ ...this.welcomeRevealedAt,
6337
+ [e]: Date.now()
6338
+ };
6339
+ return;
6340
+ }
6326
6341
  this.welcomeRevealedAt = {
6327
6342
  ...this.welcomeRevealedAt,
6328
6343
  [e]: 0
6329
6344
  };
6330
- const n = this.revealPacing, r = t.trim().length, a = Math.min(
6331
- n.maxTypingMs,
6332
- Math.max(n.minTypingMs, r * n.msPerChar)
6333
- ), s = n.firstRevealDelayMs + a, i = setTimeout(() => {
6345
+ const a = this.revealPacing, s = t.trim().length, i = Math.min(
6346
+ a.maxTypingMs,
6347
+ Math.max(a.minTypingMs, s * a.msPerChar)
6348
+ ), l = a.firstRevealDelayMs + i, g = setTimeout(() => {
6334
6349
  this.welcomeRevealedAt = {
6335
6350
  ...this.welcomeRevealedAt,
6336
6351
  [e]: Date.now()
6337
6352
  };
6338
- const l = { ...this.welcomeRevealTimers };
6339
- delete l[e], this.welcomeRevealTimers = l;
6340
- }, s);
6353
+ const k = { ...this.welcomeRevealTimers };
6354
+ delete k[e], this.welcomeRevealTimers = k;
6355
+ }, l);
6341
6356
  this.welcomeRevealTimers = {
6342
6357
  ...this.welcomeRevealTimers,
6343
- [e]: i
6358
+ [e]: g
6344
6359
  };
6345
6360
  },
6346
6361
  // Clear pending welcome timers (panel unmount, refresh). Doesn't
@@ -6424,8 +6439,18 @@ const Xa = /* @__PURE__ */ B(Fa, [["render", Ja], ["__scopeId", "data-v-6d5f94a8
6424
6439
  if (!t && (this.startConv(), t = this.currentConv, !t) || t._draft && (t = await this.ensureRealConv(), !t))
6425
6440
  return;
6426
6441
  const n = t.id, r = this.pendingAttachments.slice();
6427
- this.pendingAttachments = [], this.unreadAnchorId = null, this.unreadBoundaryTs = "", await this.store.send(n, e, {
6428
- attachments: r.length ? r : void 0
6442
+ this.pendingAttachments = [], this.unreadAnchorId = null, this.unreadBoundaryTs = "";
6443
+ const a = r.map((s) => {
6444
+ const { _previewUrl: i, ...l } = s;
6445
+ if (i)
6446
+ try {
6447
+ URL.revokeObjectURL(i);
6448
+ } catch {
6449
+ }
6450
+ return l;
6451
+ });
6452
+ await this.store.send(n, e, {
6453
+ attachments: a.length ? a : void 0
6429
6454
  });
6430
6455
  },
6431
6456
  async onSuggestion(e) {
@@ -6457,20 +6482,55 @@ const Xa = /* @__PURE__ */ B(Fa, [["render", Ja], ["__scopeId", "data-v-6d5f94a8
6457
6482
  }
6458
6483
  }));
6459
6484
  },
6460
- async onAttach(e) {
6461
- if (!(!e || !this.transport))
6485
+ // True for attachments whose mime type makes them eligible for a
6486
+ // local-blob thumbnail in the pending strip.
6487
+ isPendingImage(e) {
6488
+ return ((e == null ? void 0 : e.mime_type) || "").toLowerCase().startsWith("image/");
6489
+ },
6490
+ // Human-readable size label (bytes / KB / MB) for the pending
6491
+ // file-card footer. Returns an empty string when the size is
6492
+ // unknown so the row keeps a single-line layout.
6493
+ formatAttachmentSize(e) {
6494
+ return e ? e < 1024 ? this.t("attachment.bytes", { size: e }) : e < 1024 * 1024 ? this.t("attachment.kilobytes", {
6495
+ size: (e / 1024).toFixed(0)
6496
+ }) : this.t("attachment.megabytes", {
6497
+ size: (e / (1024 * 1024)).toFixed(1)
6498
+ }) : "";
6499
+ },
6500
+ // Drop a pending attachment from the strip, revoking the blob URL
6501
+ // we created at attach time so the browser releases the underlying
6502
+ // memory. Safe to call on non-image attachments (the field is
6503
+ // simply absent).
6504
+ removePendingAttachment(e) {
6505
+ const t = this.pendingAttachments[e];
6506
+ if (t != null && t._previewUrl)
6462
6507
  try {
6463
- const t = await this.transport.uploadAttachment(e);
6464
- this.pendingAttachments.push({
6465
- type: t.type || "file",
6466
- path: t.path,
6467
- name: e.name || this.t("attachment.fileFallbackName"),
6468
- mime_type: e.type,
6469
- size_bytes: e.size
6470
- });
6471
- } catch (t) {
6472
- console.error("[ww-messenger] attachment upload failed", t);
6508
+ URL.revokeObjectURL(t._previewUrl);
6509
+ } catch {
6473
6510
  }
6511
+ this.pendingAttachments.splice(e, 1);
6512
+ },
6513
+ async onAttach(e) {
6514
+ if (!e || !this.transport) return;
6515
+ const n = (e.type || "").toLowerCase().startsWith("image/") ? URL.createObjectURL(e) : null;
6516
+ try {
6517
+ const r = await this.transport.uploadAttachment(e);
6518
+ this.pendingAttachments.push({
6519
+ type: r.type || "file",
6520
+ path: r.path,
6521
+ name: e.name || this.t("attachment.fileFallbackName"),
6522
+ mime_type: e.type,
6523
+ size_bytes: e.size,
6524
+ _previewUrl: n
6525
+ });
6526
+ } catch (r) {
6527
+ if (n)
6528
+ try {
6529
+ URL.revokeObjectURL(n);
6530
+ } catch {
6531
+ }
6532
+ console.error("[ww-messenger] attachment upload failed", r);
6533
+ }
6474
6534
  },
6475
6535
  // Délégation des clics sur les liens `<a href="#...">` rendus dans le
6476
6536
  // panel (typiquement par le markdown des messages agent). On capture
@@ -6552,14 +6612,20 @@ const Xa = /* @__PURE__ */ B(Fa, [["render", Ja], ["__scopeId", "data-v-6d5f94a8
6552
6612
  }, lo = { class: "wm-actionWait__lbl" }, co = {
6553
6613
  key: 2,
6554
6614
  class: "wm-attached"
6555
- }, uo = ["aria-label", "onClick"];
6556
- function ho(e, t, n, r, a, s) {
6557
- const i = E("Launcher"), l = E("Header"), g = E("History"), k = E("Onboarding"), w = E("MessageList"), T = E("ApprovalCard"), I = E("FormCard"), A = E("Feedback"), q = E("SuggestionChips"), M = E("Composer"), N = E("MoreMenu"), U = E("RenameDialog");
6615
+ }, uo = ["src", "alt"], ho = {
6616
+ key: 1,
6617
+ class: "wm-attached__file"
6618
+ }, mo = { class: "wm-attached__fileMeta" }, fo = { class: "wm-attached__fileName" }, _o = {
6619
+ key: 0,
6620
+ class: "wm-attached__fileSize"
6621
+ }, go = ["aria-label", "onClick"];
6622
+ function po(e, t, n, r, a, s) {
6623
+ const i = B("Launcher"), l = B("Header"), g = B("History"), k = B("Onboarding"), w = B("MessageList"), T = B("ApprovalCard"), E = B("FormCard"), A = B("Feedback"), q = B("SuggestionChips"), M = B("Composer"), D = B("MoreMenu"), N = B("RenameDialog");
6558
6624
  return c(), d("div", {
6559
6625
  class: R(["wm-root", `wm-root--${n.displayMode}`]),
6560
6626
  style: z(s.rootStyle)
6561
6627
  }, [
6562
- !a.isOpen && !s.isEmbedded ? (c(), P(i, {
6628
+ !a.isOpen && !s.isEmbedded ? (c(), U(i, {
6563
6629
  key: 0,
6564
6630
  "unread-count": s.unreadCount,
6565
6631
  peeks: s.launcherPeeks,
@@ -6577,7 +6643,7 @@ function ho(e, t, n, r, a, s) {
6577
6643
  style: z(a.floatHeight ? { "--wm-float-h": a.floatHeight + "px" } : null),
6578
6644
  role: "dialog",
6579
6645
  "aria-label": "Messenger",
6580
- onClick: t[6] || (t[6] = (...D) => s.onPanelClick && s.onPanelClick(...D))
6646
+ onClick: t[6] || (t[6] = (...L) => s.onPanelClick && s.onPanelClick(...L))
6581
6647
  }, [
6582
6648
  !s.ready && !s.error ? (c(), d("div", Za, [
6583
6649
  s.isEmbedded ? b("", !0) : (c(), d("button", {
@@ -6585,7 +6651,7 @@ function ho(e, t, n, r, a, s) {
6585
6651
  type: "button",
6586
6652
  class: "wm-loading__close",
6587
6653
  "aria-label": s.t("loading.minimize"),
6588
- onClick: t[0] || (t[0] = (...D) => s.close && s.close(...D))
6654
+ onClick: t[0] || (t[0] = (...L) => s.close && s.close(...L))
6589
6655
  }, [...t[7] || (t[7] = [
6590
6656
  o("svg", {
6591
6657
  width: "13",
@@ -6605,7 +6671,7 @@ function ho(e, t, n, r, a, s) {
6605
6671
  class: "wm-loading__spinner",
6606
6672
  "aria-hidden": "true"
6607
6673
  }, null, -1))
6608
- ])) : (c(), d(L, { key: 1 }, [
6674
+ ])) : (c(), d(I, { key: 1 }, [
6609
6675
  V(l, {
6610
6676
  title: s.headerTitle,
6611
6677
  "team-members": s.teamMembers,
@@ -6642,11 +6708,11 @@ function ho(e, t, n, r, a, s) {
6642
6708
  o("div", ro, v(s.error), 1)
6643
6709
  ])
6644
6710
  ])
6645
- ])) : !s.currentConv && a.showHistory ? (c(), P(g, {
6711
+ ])) : !s.currentConv && a.showHistory ? (c(), U(g, {
6646
6712
  key: 1,
6647
6713
  threads: s.openThreads,
6648
6714
  onResume: s.onDrawerPick
6649
- }, null, 8, ["threads", "onResume"])) : s.currentConv ? (c(), d(L, { key: 3 }, [
6715
+ }, null, 8, ["threads", "onResume"])) : s.currentConv ? (c(), d(I, { key: 3 }, [
6650
6716
  V(w, {
6651
6717
  ref: "messageList",
6652
6718
  messages: s.displayedMessages,
@@ -6663,7 +6729,7 @@ function ho(e, t, n, r, a, s) {
6663
6729
  }, null, 8, ["messages", "streaming-active", "date-label", "conversation-id", "loading-more", "has-more", "unread-anchor-id", "unread-boundary-ts", "ai-agent-name", "ai-agent-avatar-url", "onLoadMore"]),
6664
6730
  o("div", io, [
6665
6731
  s.floatVisible ? (c(), d("div", ao, [
6666
- s.approvalReady ? (c(), P(T, {
6732
+ s.approvalReady ? (c(), U(T, {
6667
6733
  key: 0,
6668
6734
  action: s.approvalTitle,
6669
6735
  detail: s.approvalDetail,
@@ -6671,18 +6737,18 @@ function ho(e, t, n, r, a, s) {
6671
6737
  "agent-name": s.agentName,
6672
6738
  "agent-avatar-url": s.agentAvatarUrl,
6673
6739
  onCallback: s.onApprovalCallback
6674
- }, null, 8, ["action", "detail", "callbacks", "agent-name", "agent-avatar-url", "onCallback"])) : s.pendingForm ? (c(), P(I, {
6740
+ }, null, 8, ["action", "detail", "callbacks", "agent-name", "agent-avatar-url", "onCallback"])) : s.pendingForm ? (c(), U(E, {
6675
6741
  key: s.pendingForm.message && s.pendingForm.message.id,
6676
6742
  form: s.pendingForm.form,
6677
6743
  "agent-name": s.agentName,
6678
6744
  "agent-avatar-url": s.agentAvatarUrl,
6679
6745
  onSubmit: s.onFormSubmit
6680
- }, null, 8, ["form", "agent-name", "agent-avatar-url", "onSubmit"])) : s.showFeedback ? (c(), P(A, {
6746
+ }, null, 8, ["form", "agent-name", "agent-avatar-url", "onSubmit"])) : s.showFeedback ? (c(), U(A, {
6681
6747
  key: 2,
6682
6748
  busy: a.feedbackBusy,
6683
6749
  done: a.feedbackDone,
6684
6750
  onSubmit: s.onFeedback
6685
- }, null, 8, ["busy", "done", "onSubmit"])) : (c(), P(q, {
6751
+ }, null, 8, ["busy", "done", "onSubmit"])) : (c(), U(q, {
6686
6752
  key: 3,
6687
6753
  items: s.suggestions,
6688
6754
  onSelect: s.onSuggestion
@@ -6696,11 +6762,11 @@ function ho(e, t, n, r, a, s) {
6696
6762
  o("span", lo, v(s.t("action.inProgress", {
6697
6763
  name: s.actionInFlightName
6698
6764
  })), 1)
6699
- ])) : (c(), P(M, {
6765
+ ])) : (c(), U(M, {
6700
6766
  key: 2,
6701
6767
  ref: "composer",
6702
6768
  modelValue: a.draft,
6703
- "onUpdate:modelValue": t[2] || (t[2] = (D) => a.draft = D),
6769
+ "onUpdate:modelValue": t[2] || (t[2] = (L) => a.draft = L),
6704
6770
  placeholder: s.composerPlaceholder,
6705
6771
  disabled: !!s.pendingApproval,
6706
6772
  "attach-label": s.t("composer.attachFile"),
@@ -6709,65 +6775,79 @@ function ho(e, t, n, r, a, s) {
6709
6775
  onAttach: s.onAttach
6710
6776
  }, null, 8, ["modelValue", "placeholder", "disabled", "attach-label", "display-mode", "onSend", "onAttach"]))
6711
6777
  ]),
6712
- a.moreOpen ? (c(), P(N, {
6778
+ a.moreOpen ? (c(), U(D, {
6713
6779
  key: 0,
6714
6780
  "can-rename": !!s.currentConv && !s.currentConv._draft,
6715
6781
  "can-export": !!s.currentConv && !s.currentConv._draft,
6716
6782
  "sound-enabled": e.soundEnabled,
6717
6783
  "status-url": s.statusUrl,
6718
6784
  "help-url": s.helpUrl,
6719
- onClose: t[3] || (t[3] = (D) => a.moreOpen = !1),
6785
+ onClose: t[3] || (t[3] = (L) => a.moreOpen = !1),
6720
6786
  onSoundToggle: e.onSoundToggle,
6721
6787
  onAction: s.onMoreAction
6722
6788
  }, null, 8, ["can-rename", "can-export", "sound-enabled", "status-url", "help-url", "onSoundToggle", "onAction"])) : b("", !0),
6723
- a.renameDialogOpen && s.currentConv && !s.currentConv._draft ? (c(), P(U, {
6789
+ a.renameDialogOpen && s.currentConv && !s.currentConv._draft ? (c(), U(N, {
6724
6790
  key: 1,
6725
6791
  "initial-value": s.currentConv.name || "",
6726
6792
  title: s.t("rename.dialogTitle"),
6727
- onClose: t[4] || (t[4] = (D) => a.renameDialogOpen = !1),
6793
+ onClose: t[4] || (t[4] = (L) => a.renameDialogOpen = !1),
6728
6794
  onSubmit: s.onRenameSubmit
6729
6795
  }, null, 8, ["initial-value", "title", "onSubmit"])) : b("", !0),
6730
6796
  a.pendingAttachments.length ? (c(), d("div", co, [
6731
- (c(!0), d(L, null, j(a.pendingAttachments, (D, K) => (c(), d("div", {
6797
+ (c(!0), d(I, null, j(a.pendingAttachments, (L, K) => (c(), d("div", {
6732
6798
  key: K,
6733
- class: "wm-attached__chip"
6799
+ class: "wm-attached__item"
6734
6800
  }, [
6735
- t[12] || (t[12] = o("svg", {
6736
- width: "11",
6737
- height: "11",
6738
- viewBox: "0 0 24 24",
6739
- fill: "none",
6740
- stroke: "currentColor",
6741
- "stroke-width": "1.8",
6742
- "stroke-linecap": "round",
6743
- "stroke-linejoin": "round",
6744
- "aria-hidden": "true"
6745
- }, [
6746
- o("path", { d: "M21.44 11.05l-9.19 9.19a6 6 0 01-8.49-8.49l9.19-9.19a4 4 0 015.66 5.66l-9.2 9.19a2 2 0 01-2.83-2.83l8.49-8.48" })
6747
- ], -1)),
6748
- o("span", null, v(D.name), 1),
6801
+ s.isPendingImage(L) && L._previewUrl ? (c(), d("img", {
6802
+ key: 0,
6803
+ class: "wm-attached__thumb",
6804
+ src: L._previewUrl,
6805
+ alt: L.name
6806
+ }, null, 8, uo)) : (c(), d("div", ho, [
6807
+ t[11] || (t[11] = o("span", { class: "wm-attached__fileIcon" }, [
6808
+ o("svg", {
6809
+ width: "16",
6810
+ height: "16",
6811
+ viewBox: "0 0 24 24",
6812
+ fill: "none",
6813
+ stroke: "currentColor",
6814
+ "stroke-width": "1.7",
6815
+ "stroke-linecap": "round",
6816
+ "stroke-linejoin": "round",
6817
+ "aria-hidden": "true"
6818
+ }, [
6819
+ o("path", { d: "M14 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8z" }),
6820
+ o("path", { d: "M14 2v6h6" })
6821
+ ])
6822
+ ], -1)),
6823
+ o("span", mo, [
6824
+ o("span", fo, v(L.name), 1),
6825
+ s.formatAttachmentSize(L.size_bytes) ? (c(), d("span", _o, v(s.formatAttachmentSize(L.size_bytes)), 1)) : b("", !0)
6826
+ ])
6827
+ ])),
6749
6828
  o("button", {
6750
6829
  type: "button",
6830
+ class: "wm-attached__remove",
6751
6831
  "aria-label": s.t("attachment.remove"),
6752
- onClick: (Q) => a.pendingAttachments.splice(K, 1)
6753
- }, [...t[11] || (t[11] = [
6832
+ onClick: (Q) => s.removePendingAttachment(K)
6833
+ }, [...t[12] || (t[12] = [
6754
6834
  o("svg", {
6755
6835
  width: "10",
6756
6836
  height: "10",
6757
6837
  viewBox: "0 0 24 24",
6758
6838
  fill: "none",
6759
6839
  stroke: "currentColor",
6760
- "stroke-width": "2",
6840
+ "stroke-width": "2.4",
6761
6841
  "stroke-linecap": "round",
6762
6842
  "stroke-linejoin": "round",
6763
6843
  "aria-hidden": "true"
6764
6844
  }, [
6765
6845
  o("path", { d: "M18 6L6 18M6 6l12 12" })
6766
6846
  ], -1)
6767
- ])], 8, uo)
6847
+ ])], 8, go)
6768
6848
  ]))), 128))
6769
6849
  ])) : b("", !0)
6770
- ], 64)) : (c(), P(k, {
6850
+ ], 64)) : (c(), U(k, {
6771
6851
  key: 2,
6772
6852
  title: s.widgetTitle,
6773
6853
  subtitle: s.widgetSubtitle,
@@ -6779,16 +6859,16 @@ function ho(e, t, n, r, a, s) {
6779
6859
  onStart: s.startConv,
6780
6860
  onSelect: s.onQuickLink,
6781
6861
  onResume: s.onDrawerPick,
6782
- onViewHistory: t[1] || (t[1] = (D) => a.showHistory = !0)
6862
+ onViewHistory: t[1] || (t[1] = (L) => a.showHistory = !0)
6783
6863
  }, null, 8, ["title", "subtitle", "agent-name", "default-icon-url", "quick-links", "open-threads", "busy", "onStart", "onSelect", "onResume"])),
6784
- a.moreOpen && !s.currentConv ? (c(), P(N, {
6864
+ a.moreOpen && !s.currentConv ? (c(), U(D, {
6785
6865
  key: 4,
6786
6866
  "can-rename": !1,
6787
6867
  "can-export": !1,
6788
6868
  "sound-enabled": e.soundEnabled,
6789
6869
  "status-url": s.statusUrl,
6790
6870
  "help-url": s.helpUrl,
6791
- onClose: t[5] || (t[5] = (D) => a.moreOpen = !1),
6871
+ onClose: t[5] || (t[5] = (L) => a.moreOpen = !1),
6792
6872
  onSoundToggle: e.onSoundToggle,
6793
6873
  onAction: s.onMoreAction
6794
6874
  }, null, 8, ["sound-enabled", "status-url", "help-url", "onSoundToggle", "onAction"])) : b("", !0)
@@ -6796,12 +6876,12 @@ function ho(e, t, n, r, a, s) {
6796
6876
  ], 6)) : b("", !0)
6797
6877
  ], 6);
6798
6878
  }
6799
- const _o = /* @__PURE__ */ B(Qa, [["render", ho], ["__scopeId", "data-v-79d619be"]]), go = "0.5.60";
6879
+ const wo = /* @__PURE__ */ P(Qa, [["render", po], ["__scopeId", "data-v-ad854886"]]), bo = "0.5.62";
6800
6880
  export {
6801
6881
  oe as AIAvatar,
6802
6882
  be as AVATAR_COLORS,
6803
6883
  As as ActionResult,
6804
- Ui as ApprovalCard,
6884
+ Ni as ApprovalCard,
6805
6885
  Es as ArtifactFormResponse,
6806
6886
  Ks as ArtifactInfoCard,
6807
6887
  ur as ArtifactRenderer,
@@ -6818,7 +6898,7 @@ export {
6818
6898
  qt as Launcher,
6819
6899
  Oe as MEDIA_RECORDER_SUPPORTED,
6820
6900
  ii as MessageList,
6821
- _o as Messenger,
6901
+ wo as Messenger,
6822
6902
  ja as MoreMenu,
6823
6903
  Jn as Onboarding,
6824
6904
  pe as SCREEN_CAPTURE_SUPPORTED,
@@ -6826,7 +6906,7 @@ export {
6826
6906
  xi as SuggestionChips,
6827
6907
  tn as TeamAvatars,
6828
6908
  Lr as Typing,
6829
- go as VERSION,
6909
+ bo as VERSION,
6830
6910
  Me as avatarColor,
6831
6911
  Te as avatarInitials,
6832
6912
  oi as captureScreenshotFile,
@@ -6835,9 +6915,9 @@ export {
6835
6915
  F as createTranslator,
6836
6916
  Ze as createTransport,
6837
6917
  ne as dateLocale,
6838
- _o as default,
6918
+ wo as default,
6839
6919
  Ce as formatTime,
6840
- fo as guessAttachmentKind,
6920
+ yo as guessAttachmentKind,
6841
6921
  ai as pickRecorderMime,
6842
6922
  qe as renderInlineMarkdown,
6843
6923
  ft as renderMarkdown,