@_solaris/messenger-widget 0.3.0 → 0.3.1

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,15 +1,15 @@
1
- import { reactive as Ae, openBlock as l, createElementBlock as c, createVNode as K, Transition as Se, withCtx as xe, withKeys as ae, withModifiers as X, createElementVNode as i, toDisplayString as b, createCommentVNode as y, normalizeStyle as G, normalizeClass as B, Fragment as T, renderList as D, resolveComponent as I, createBlock as $, createTextVNode as de, resolveDynamicComponent as Te, renderSlot as Me, withDirectives as q, vModelText as J, vModelCheckbox as Oe, vModelSelect as Ie, createStaticVNode as he, markRaw as fe } from "vue";
2
- const Be = [
1
+ import { reactive as Se, openBlock as l, createElementBlock as c, createVNode as K, Transition as xe, withCtx as Te, withKeys as ae, withModifiers as X, createElementVNode as i, toDisplayString as b, createCommentVNode as g, normalizeStyle as G, normalizeClass as B, Fragment as T, renderList as D, resolveComponent as I, createBlock as $, createTextVNode as de, resolveDynamicComponent as Me, renderSlot as Oe, withDirectives as q, vModelText as J, vModelCheckbox as Ie, vModelSelect as Be, createStaticVNode as he, markRaw as fe } from "vue";
2
+ const Ee = [
3
3
  "connected",
4
4
  "message",
5
5
  "message_stream",
6
6
  "conversation_updated",
7
7
  "config_updated",
8
8
  "action_status"
9
- ], Ee = 5 * 60 * 1e3, $e = 10 * 60 * 1e3, Le = 5 * 60 * 1e3;
10
- function Re(t) {
9
+ ], _e = "/client", $e = 5 * 60 * 1e3, Le = 10 * 60 * 1e3, Re = 5 * 60 * 1e3;
10
+ function Fe(t) {
11
11
  const e = {
12
- baseUrl: Fe(t.baseUrl || ""),
12
+ baseUrl: De(t.baseUrl || ""),
13
13
  widgetId: t.widgetId || "",
14
14
  userId: t.userId || "",
15
15
  userHash: t.userHash || "",
@@ -55,7 +55,7 @@ function Re(t) {
55
55
  };
56
56
  }
57
57
  async function o(h, f, p) {
58
- const C = await fetch(`${e.baseUrl}${f}`, {
58
+ const C = await fetch(`${e.baseUrl}${_e}${f}`, {
59
59
  method: h,
60
60
  headers: { "Content-Type": "application/json", ...s() },
61
61
  body: p !== void 0 ? JSON.stringify(p) : void 0
@@ -167,7 +167,7 @@ function Re(t) {
167
167
  if (!M.ok)
168
168
  throw new Error(`HTTP ${M.status} PUT signed upload`);
169
169
  return {
170
- type: De(p),
170
+ type: Ne(p),
171
171
  path: O.path,
172
172
  mime_type: p,
173
173
  size_bytes: C
@@ -185,13 +185,13 @@ function Re(t) {
185
185
  userHash: e.userHash,
186
186
  widgetId: e.widgetId
187
187
  }).toString();
188
- return `${e.baseUrl}/stream?${h}`;
188
+ return `${e.baseUrl}${_e}/stream?${h}`;
189
189
  }
190
190
  function z() {
191
191
  if (!e.eventSource && !(typeof document < "u" && document.hidden))
192
192
  try {
193
193
  const h = new EventSource(Y());
194
- for (const f of Be)
194
+ for (const f of Ee)
195
195
  h.addEventListener(f, (p) => Q(f, p.data));
196
196
  h.addEventListener("error", () => a("error", new Error("SSE error"))), e.eventSource = h, r("open");
197
197
  } catch (h) {
@@ -212,7 +212,7 @@ function Re(t) {
212
212
  function V() {
213
213
  clearTimeout(e.burstTimer), z(), e.panelOpen || (e.burstTimer = setTimeout(() => {
214
214
  e.panelOpen || W();
215
- }, $e));
215
+ }, Le));
216
216
  }
217
217
  function Z(h) {
218
218
  e.panelOpen = !!h, e.panelOpen ? (clearTimeout(e.burstTimer), z()) : V();
@@ -229,7 +229,7 @@ function Re(t) {
229
229
  }
230
230
  }
231
231
  function ne() {
232
- u(), !(typeof document < "u" && document.hidden) && (e.pollTimer = setInterval(ce, Ee));
232
+ u(), !(typeof document < "u" && document.hidden) && (e.pollTimer = setInterval(ce, $e));
233
233
  }
234
234
  function u() {
235
235
  e.pollTimer && (clearInterval(e.pollTimer), e.pollTimer = null);
@@ -238,7 +238,7 @@ function Re(t) {
238
238
  if (document.hidden)
239
239
  clearTimeout(e.hiddenGraceTimer), e.hiddenGraceTimer = setTimeout(() => {
240
240
  e.hiddenGraceTimer = null, document.hidden && (u(), W(), r("paused"));
241
- }, Le);
241
+ }, Re);
242
242
  else {
243
243
  if (e.hiddenGraceTimer) {
244
244
  clearTimeout(e.hiddenGraceTimer), e.hiddenGraceTimer = null;
@@ -263,13 +263,13 @@ function Re(t) {
263
263
  }
264
264
  return typeof document < "u" && (e.visibilityHandler = m, document.addEventListener("visibilitychange", e.visibilityHandler)), ne(), h;
265
265
  }
266
- function g() {
266
+ function y() {
267
267
  u(), clearTimeout(e.burstTimer), clearTimeout(e.hiddenGraceTimer), e.hiddenGraceTimer = null, W(), e.visibilityHandler && (document.removeEventListener("visibilitychange", e.visibilityHandler), e.visibilityHandler = null), e.started = !1;
268
268
  }
269
269
  return {
270
270
  on: n,
271
271
  start: _,
272
- stop: g,
272
+ stop: y,
273
273
  setPanelOpen: Z,
274
274
  // REST
275
275
  bootstrap: v,
@@ -290,13 +290,13 @@ function Re(t) {
290
290
  }
291
291
  };
292
292
  }
293
- function Fe(t) {
293
+ function De(t) {
294
294
  return t.endsWith("/") ? t.slice(0, -1) : t;
295
295
  }
296
- function De(t) {
296
+ function Ne(t) {
297
297
  return t.startsWith("image/") ? "image" : t.startsWith("video/") ? "video" : t.startsWith("audio/") ? "audio" : "file";
298
298
  }
299
- function Ne() {
299
+ function je() {
300
300
  if (typeof crypto < "u" && typeof crypto.randomUUID == "function")
301
301
  return crypto.randomUUID();
302
302
  const t = new Uint8Array(16);
@@ -308,8 +308,8 @@ function Ne() {
308
308
  const e = [...t].map((n) => n.toString(16).padStart(2, "0"));
309
309
  return e.slice(0, 4).join("") + "-" + e.slice(4, 6).join("") + "-" + e.slice(6, 8).join("") + "-" + e.slice(8, 10).join("") + "-" + e.slice(10, 16).join("");
310
310
  }
311
- function je(t) {
312
- const e = Ae({
311
+ function Ue(t) {
312
+ const e = Se({
313
313
  ready: !1,
314
314
  error: null,
315
315
  config: null,
@@ -351,22 +351,22 @@ function je(t) {
351
351
  })), n.push(t.on("conversation_updated", (u) => {
352
352
  const m = u == null ? void 0 : u.conversation_id, _ = u == null ? void 0 : u.changes;
353
353
  if (!m || !_) return;
354
- const g = e.conversations.findIndex((h) => h.id === m);
355
- g !== -1 && (e.conversations[g] = { ...e.conversations[g], ..._ });
354
+ const y = e.conversations.findIndex((h) => h.id === m);
355
+ y !== -1 && (e.conversations[y] = { ...e.conversations[y], ..._ });
356
356
  })), n.push(t.on("config_updated", (u) => {
357
357
  u != null && u.config && (e.config = u.config);
358
358
  })), n.push(t.on("action_status", (u) => {
359
- const m = u == null ? void 0 : u.conversation_id, _ = u == null ? void 0 : u.action_id, g = u == null ? void 0 : u.action_name;
359
+ const m = u == null ? void 0 : u.conversation_id, _ = u == null ? void 0 : u.action_id, y = u == null ? void 0 : u.action_name;
360
360
  if (!m || !_) return;
361
361
  const h = e.runningActionsByConv[m] || {};
362
- u.state === "running" ? (h[_] = g || _, e.runningActionsByConv[m] = { ...h }) : u.state === "done" && (delete h[_], e.runningActionsByConv[m] = { ...h });
362
+ u.state === "running" ? (h[_] = y || _, e.runningActionsByConv[m] = { ...h }) : u.state === "done" && (delete h[_], e.runningActionsByConv[m] = { ...h });
363
363
  })), n.push(t.on("activity", (u) => {
364
364
  Array.isArray(u == null ? void 0 : u.conversations) && (e.conversations = u.conversations);
365
365
  }));
366
366
  async function a() {
367
367
  try {
368
368
  const u = new Promise(
369
- (_, g) => setTimeout(() => g(new Error("bootstrap timeout (15s) — check baseUrl, CORS, and network")), 15e3)
369
+ (_, y) => setTimeout(() => y(new Error("bootstrap timeout (15s) — check baseUrl, CORS, and network")), 15e3)
370
370
  ), m = await Promise.race([t.start(), u]);
371
371
  e.config = m.config, e.customer = m.customer, e.conversations = await Promise.race([t.listConversations(), u]), e.ready = !0;
372
372
  } catch (u) {
@@ -393,7 +393,7 @@ function je(t) {
393
393
  return e.customer;
394
394
  }
395
395
  async function o(u = {}) {
396
- const m = await t.createConversation(u), _ = e.conversations.findIndex((g) => g.id === m.id);
396
+ const m = await t.createConversation(u), _ = e.conversations.findIndex((y) => y.id === m.id);
397
397
  return _ === -1 ? e.conversations = [m, ...e.conversations] : e.conversations[_] = m, m;
398
398
  }
399
399
  const d = 50;
@@ -434,14 +434,14 @@ function je(t) {
434
434
  e.paginationByConv = { ...e.paginationByConv, [u]: m };
435
435
  }
436
436
  async function S(u, m) {
437
- const _ = await t.patchConversation(u, m), g = e.conversations.findIndex((h) => h.id === u);
438
- g !== -1 && (e.conversations[g] = _);
437
+ const _ = await t.patchConversation(u, m), y = e.conversations.findIndex((h) => h.id === u);
438
+ y !== -1 && (e.conversations[y] = _);
439
439
  }
440
- async function R(u, m, { attachments: _, metadata: g } = {}) {
440
+ async function R(u, m, { attachments: _, metadata: y } = {}) {
441
441
  var M;
442
442
  const h = (m || "").trim(), f = Array.isArray(_) && _.length > 0;
443
443
  if (!u || !h && !f) return;
444
- const p = Ne(), C = ne(u), O = {
444
+ const p = je(), C = ne(u), O = {
445
445
  id: p,
446
446
  client_msg_id: p,
447
447
  conversation_id: u,
@@ -455,7 +455,7 @@ function je(t) {
455
455
  // Local-only flag — UI may render dimmed until the SSE echo lands.
456
456
  _pending: !0,
457
457
  ...f ? { payload: { type: "content", attachments: _ } } : {},
458
- ...g && typeof g == "object" ? { metadata: g } : {}
458
+ ...y && typeof y == "object" ? { metadata: y } : {}
459
459
  };
460
460
  z(u, O);
461
461
  try {
@@ -464,7 +464,7 @@ function je(t) {
464
464
  text_md: h,
465
465
  created_at: C,
466
466
  ...f ? { attachments: _ } : {},
467
- ...g && typeof g == "object" ? { metadata: g } : {}
467
+ ...y && typeof y == "object" ? { metadata: y } : {}
468
468
  });
469
469
  } catch (L) {
470
470
  console.error("[store] send failed", L), W(u, p, { _failed: !0, _pending: !1 });
@@ -474,8 +474,8 @@ function je(t) {
474
474
  u != null && (e.awaitingCallback[u] = !0);
475
475
  try {
476
476
  await t.postCallback(u, m, _);
477
- } catch (g) {
478
- console.error("[store] callback failed", g), u != null && delete e.awaitingCallback[u];
477
+ } catch (y) {
478
+ console.error("[store] callback failed", y), u != null && delete e.awaitingCallback[u];
479
479
  }
480
480
  }
481
481
  const U = /* @__PURE__ */ new Map();
@@ -496,8 +496,8 @@ function je(t) {
496
496
  return null;
497
497
  }
498
498
  async function j(u, { rating: m, comment: _ } = {}) {
499
- const g = e.conversations.find((p) => p.id === u), f = {
500
- ...(g == null ? void 0 : g.metadata) || {},
499
+ const y = e.conversations.find((p) => p.id === u), f = {
500
+ ...(y == null ? void 0 : y.metadata) || {},
501
501
  feedback: {
502
502
  rating: m,
503
503
  comment: _ || null,
@@ -507,21 +507,21 @@ function je(t) {
507
507
  await S(u, { metadata: f });
508
508
  }
509
509
  function P(u) {
510
- var _, g;
510
+ var _, y;
511
511
  const m = e.messagesByConv[u] || [];
512
512
  for (let h = m.length - 1; h >= 0; h--) {
513
513
  const f = m[h];
514
- if ((f == null ? void 0 : f.type) === "action" && ((_ = f == null ? void 0 : f.payload) == null ? void 0 : _.type) === "action" && ((g = f == null ? void 0 : f.payload) == null ? void 0 : g.state) === "pending" && Array.isArray(f == null ? void 0 : f.callbacks) && f.callbacks.length > 0 && !e.awaitingCallback[f.id])
514
+ if ((f == null ? void 0 : f.type) === "action" && ((_ = f == null ? void 0 : f.payload) == null ? void 0 : _.type) === "action" && ((y = f == null ? void 0 : f.payload) == null ? void 0 : y.state) === "pending" && Array.isArray(f == null ? void 0 : f.callbacks) && f.callbacks.length > 0 && !e.awaitingCallback[f.id])
515
515
  return f;
516
516
  }
517
517
  return null;
518
518
  }
519
519
  function F(u) {
520
- var _, g, h;
520
+ var _, y, h;
521
521
  const m = e.messagesByConv[u] || [];
522
522
  for (let f = m.length - 1; f >= 0; f--) {
523
523
  const p = m[f];
524
- if (((_ = p == null ? void 0 : p.author) == null ? void 0 : _.type) === "user" || (p == null ? void 0 : p.type) === "action" && ((g = p == null ? void 0 : p.payload) == null ? void 0 : g.state) === "pending") return null;
524
+ if (((_ = p == null ? void 0 : p.author) == null ? void 0 : _.type) === "user" || (p == null ? void 0 : p.type) === "action" && ((y = p == null ? void 0 : p.payload) == null ? void 0 : y.state) === "pending") return null;
525
525
  const C = (h = p == null ? void 0 : p.metadata) == null ? void 0 : h.form;
526
526
  if (C && Array.isArray(C.fields) && C.fields.length > 0)
527
527
  return { message: p, form: C };
@@ -533,16 +533,16 @@ function je(t) {
533
533
  if (!m) return null;
534
534
  const _ = Object.keys(m);
535
535
  if (_.length === 0) return null;
536
- const g = _[0];
537
- return { id: g, payload: { name: m[g] } };
536
+ const y = _[0];
537
+ return { id: y, payload: { name: m[y] } };
538
538
  }
539
539
  function Y(u) {
540
- var _, g, h, f;
540
+ var _, y, h, f;
541
541
  const m = e.messagesByConv[u] || [];
542
542
  for (let p = m.length - 1; p >= 0; p--) {
543
543
  const C = m[p];
544
544
  if (((_ = C == null ? void 0 : C.author) == null ? void 0 : _.type) === "user") return [];
545
- if ((C == null ? void 0 : C.type) === "action" && ((g = C == null ? void 0 : C.payload) == null ? void 0 : g.state) === "pending") return [];
545
+ if ((C == null ? void 0 : C.type) === "action" && ((y = C == null ? void 0 : C.payload) == null ? void 0 : y.state) === "pending") return [];
546
546
  if (((h = C == null ? void 0 : C.author) == null ? void 0 : h.type) !== "agent_ia") continue;
547
547
  const O = (f = C == null ? void 0 : C.metadata) == null ? void 0 : f.suggested_replies;
548
548
  return Array.isArray(O) && O.length ? O.map((M) => {
@@ -564,31 +564,31 @@ function je(t) {
564
564
  function z(u, m) {
565
565
  var f;
566
566
  const _ = e.messagesByConv[u] || [];
567
- let g = -1;
568
- m != null && m.client_msg_id && (g = _.findIndex(
567
+ let y = -1;
568
+ m != null && m.client_msg_id && (y = _.findIndex(
569
569
  (p) => (p == null ? void 0 : p.client_msg_id) && p.client_msg_id === m.client_msg_id
570
- )), g === -1 && (m == null ? void 0 : m.id) !== void 0 && (m == null ? void 0 : m.id) !== null && (g = _.findIndex((p) => Q(p == null ? void 0 : p.id, m.id)));
570
+ )), y === -1 && (m == null ? void 0 : m.id) !== void 0 && (m == null ? void 0 : m.id) !== null && (y = _.findIndex((p) => Q(p == null ? void 0 : p.id, m.id)));
571
571
  let h;
572
- g === -1 ? h = [..._, m].sort(Z) : (h = _.slice(), h[g] = { ..._[g], ...m, _pending: !1, _failed: !1 }), e.messagesByConv[u] = h, (m == null ? void 0 : m.type) === "action" && ((f = m == null ? void 0 : m.payload) != null && f.state) && m.payload.state !== "pending" && (m == null ? void 0 : m.id) != null && e.awaitingCallback[m.id] && delete e.awaitingCallback[m.id];
572
+ y === -1 ? h = [..._, m].sort(Z) : (h = _.slice(), h[y] = { ..._[y], ...m, _pending: !1, _failed: !1 }), e.messagesByConv[u] = h, (m == null ? void 0 : m.type) === "action" && ((f = m == null ? void 0 : m.payload) != null && f.state) && m.payload.state !== "pending" && (m == null ? void 0 : m.id) != null && e.awaitingCallback[m.id] && delete e.awaitingCallback[m.id];
573
573
  }
574
574
  function Q(u, m) {
575
575
  return u === m ? !0 : u == null || m == null ? !1 : String(u) === String(m);
576
576
  }
577
577
  function W(u, m, _) {
578
- const g = e.messagesByConv[u];
579
- if (!g) return;
580
- const h = g.findIndex((p) => p.id === m);
578
+ const y = e.messagesByConv[u];
579
+ if (!y) return;
580
+ const h = y.findIndex((p) => p.id === m);
581
581
  if (h === -1) return;
582
- const f = g.slice();
583
- f[h] = { ...g[h], ..._ }, e.messagesByConv[u] = f;
582
+ const f = y.slice();
583
+ f[h] = { ...y[h], ..._ }, e.messagesByConv[u] = f;
584
584
  }
585
585
  function V(u, m) {
586
586
  const _ = e.conversations.findIndex((h) => h.id === u);
587
587
  if (_ === -1) return;
588
- const g = e.conversations[_];
589
- if (m && (!g.last_message_at || m > g.last_message_at)) {
588
+ const y = e.conversations[_];
589
+ if (m && (!y.last_message_at || m > y.last_message_at)) {
590
590
  const h = e.conversations.slice();
591
- h[_] = { ...g, last_message_at: m }, h.sort(
591
+ h[_] = { ...y, last_message_at: m }, h.sort(
592
592
  (f, p) => (p.last_message_at || "").localeCompare(f.last_message_at || "")
593
593
  ), e.conversations = h;
594
594
  }
@@ -599,8 +599,8 @@ function je(t) {
599
599
  function ce(u) {
600
600
  if (!u || typeof u != "object") return null;
601
601
  const m = {}, _ = {};
602
- for (const [g, h] of Object.entries(u))
603
- h !== void 0 && (g === "name" || g === "email" ? h != null && String(h).trim() !== "" && (m[g] = h) : (g === "values" || g === "metadata") && h && typeof h == "object" ? Object.assign(_, h) : _[g] = h);
602
+ for (const [y, h] of Object.entries(u))
603
+ h !== void 0 && (y === "name" || y === "email" ? h != null && String(h).trim() !== "" && (m[y] = h) : (y === "values" || y === "metadata") && h && typeof h == "object" ? Object.assign(_, h) : _[y] = h);
604
604
  return Object.keys(_).length && (m.values = _), Object.keys(m).length ? m : null;
605
605
  }
606
606
  function ne(u) {
@@ -608,8 +608,8 @@ function je(t) {
608
608
  let _ = "";
609
609
  for (const f of m)
610
610
  f != null && f.created_at && f.created_at > _ && (_ = f.created_at);
611
- const g = (/* @__PURE__ */ new Date()).toISOString();
612
- return !_ || g > _ ? g : new Date(Date.parse(_) + 1).toISOString();
611
+ const y = (/* @__PURE__ */ new Date()).toISOString();
612
+ return !_ || y > _ ? y : new Date(Date.parse(_) + 1).toISOString();
613
613
  }
614
614
  return {
615
615
  state: e,
@@ -649,16 +649,16 @@ const N = {
649
649
  red: "#B91C1C",
650
650
  redBg: "#FDECEC"
651
651
  }, ue = ["#5B5FEF", "#7C3AED", "#DB2777", "#0891B2", "#D97706", "#059669"];
652
- function ye(t = "") {
652
+ function we(t = "") {
653
653
  return t ? ue[t.charCodeAt(0) % ue.length] : ue[0];
654
654
  }
655
- function we(t = "") {
655
+ function be(t = "") {
656
656
  return t.split(" ").map((e) => e[0] || "").join("").toUpperCase().slice(0, 2);
657
657
  }
658
- function be(t = /* @__PURE__ */ new Date()) {
658
+ function ke(t = /* @__PURE__ */ new Date()) {
659
659
  return t.toLocaleTimeString("fr-FR", { hour: "2-digit", minute: "2-digit" });
660
660
  }
661
- const Ue = `
661
+ const Pe = `
662
662
  @import url('https://fonts.googleapis.com/css2?family=Geist:wght@300;400;500;600;700&family=Geist+Mono:wght@400;500&display=swap');
663
663
 
664
664
  .wm-root {
@@ -704,12 +704,12 @@ const Ue = `
704
704
  0% { transform: translateX(110%); opacity: 0; }
705
705
  100% { transform: translateX(0); opacity: 1; }
706
706
  }
707
- `, Pe = "https://api.messenger.victorc.fr", E = (t, e) => {
707
+ `, He = "https://api.messenger.victorc.fr", E = (t, e) => {
708
708
  const n = t.__vccOpts || t;
709
709
  for (const [a, r] of e)
710
710
  n[a] = r;
711
711
  return n;
712
- }, He = {
712
+ }, ze = {
713
713
  name: "WmLauncher",
714
714
  props: {
715
715
  // Nombre de conversations non lues — pilote la pastille.
@@ -719,11 +719,11 @@ const Ue = `
719
719
  peek: { type: String, default: "" }
720
720
  },
721
721
  emits: ["open", "dismiss"]
722
- }, ze = { class: "wm-launcherWrap" }, Ve = { class: "wm-peek__text" }, qe = ["aria-label"];
723
- function We(t, e, n, a, r, s) {
724
- return l(), c("div", ze, [
725
- K(Se, { name: "wm-peek" }, {
726
- default: xe(() => [
722
+ }, Ve = { class: "wm-launcherWrap" }, qe = { class: "wm-peek__text" }, We = ["aria-label"];
723
+ function Ke(t, e, n, a, r, s) {
724
+ return l(), c("div", Ve, [
725
+ K(xe, { name: "wm-peek" }, {
726
+ default: Te(() => [
727
727
  n.peek ? (l(), c("div", {
728
728
  key: 0,
729
729
  class: "wm-peek",
@@ -736,7 +736,7 @@ function We(t, e, n, a, r, s) {
736
736
  e[3] || (e[3] = ae(X((o) => t.$emit("open"), ["prevent"]), ["space"]))
737
737
  ]
738
738
  }, [
739
- i("p", Ve, b(n.peek), 1),
739
+ i("p", qe, b(n.peek), 1),
740
740
  i("button", {
741
741
  type: "button",
742
742
  class: "wm-peek__close",
@@ -757,7 +757,7 @@ function We(t, e, n, a, r, s) {
757
757
  i("path", { d: "M18 6L6 18M6 6l12 12" })
758
758
  ], -1)
759
759
  ])])
760
- ], 32)) : y("", !0)
760
+ ], 32)) : g("", !0)
761
761
  ]),
762
762
  _: 1
763
763
  }),
@@ -784,11 +784,11 @@ function We(t, e, n, a, r, s) {
784
784
  key: 0,
785
785
  class: "wm-launcher__badge",
786
786
  "aria-label": `${n.unreadCount} conversation${n.unreadCount > 1 ? "s" : ""} non lue${n.unreadCount > 1 ? "s" : ""}`
787
- }, b(n.unreadCount > 9 ? "9+" : n.unreadCount), 9, qe)) : y("", !0)
787
+ }, b(n.unreadCount > 9 ? "9+" : n.unreadCount), 9, We)) : g("", !0)
788
788
  ])
789
789
  ]);
790
790
  }
791
- const Ke = /* @__PURE__ */ E(He, [["render", We], ["__scopeId", "data-v-fabef371"]]), Ge = {
791
+ const Ge = /* @__PURE__ */ E(ze, [["render", Ke], ["__scopeId", "data-v-fabef371"]]), Ye = {
792
792
  name: "WmAIAvatar",
793
793
  props: {
794
794
  size: { type: Number, default: 26 },
@@ -800,16 +800,16 @@ const Ke = /* @__PURE__ */ E(He, [["render", We], ["__scopeId", "data-v-fabef371
800
800
  // pour garder l'avatar pleinement arrondi.
801
801
  tail: { type: Boolean, default: !1 }
802
802
  }
803
- }, Ye = {
803
+ }, Je = {
804
804
  key: 0,
805
805
  class: "wm-aiav__pulse"
806
- }, Je = ["width", "height"];
807
- function Xe(t, e, n, a, r, s) {
806
+ }, Xe = ["width", "height"];
807
+ function Qe(t, e, n, a, r, s) {
808
808
  return l(), c("div", {
809
809
  class: B(["wm-aiav", { "wm-aiav--tail": n.tail }]),
810
810
  style: G({ width: n.size + "px", height: n.size + "px", "--wm-avr": n.size * 0.32 + "px" })
811
811
  }, [
812
- n.pulse ? (l(), c("div", Ye)) : y("", !0),
812
+ n.pulse ? (l(), c("div", Je)) : g("", !0),
813
813
  i("div", {
814
814
  class: B(["wm-aiav__inner", { "wm-aiav__inner--glow": n.pulse }])
815
815
  }, [
@@ -839,11 +839,11 @@ function Xe(t, e, n, a, r, s) {
839
839
  fill: "white",
840
840
  opacity: "0.38"
841
841
  }, null, -1)
842
- ])], 8, Je))
842
+ ])], 8, Xe))
843
843
  ], 2)
844
844
  ], 6);
845
845
  }
846
- const te = /* @__PURE__ */ E(Ge, [["render", Xe], ["__scopeId", "data-v-8c924688"]]), Qe = {
846
+ const te = /* @__PURE__ */ E(Ye, [["render", Qe], ["__scopeId", "data-v-8c924688"]]), Ze = {
847
847
  name: "WmHumanAvatar",
848
848
  props: {
849
849
  name: { type: String, default: "" },
@@ -852,14 +852,14 @@ const te = /* @__PURE__ */ E(Ge, [["render", Xe], ["__scopeId", "data-v-8c924688
852
852
  },
853
853
  computed: {
854
854
  bg() {
855
- return this.avatarUrl ? "transparent" : ye(this.name);
855
+ return this.avatarUrl ? "transparent" : we(this.name);
856
856
  },
857
857
  initials() {
858
- return we(this.name);
858
+ return be(this.name);
859
859
  }
860
860
  }
861
- }, Ze = ["src", "alt"];
862
- function et(t, e, n, a, r, s) {
861
+ }, et = ["src", "alt"];
862
+ function tt(t, e, n, a, r, s) {
863
863
  return l(), c("div", {
864
864
  class: "wm-huav",
865
865
  style: G({
@@ -873,13 +873,13 @@ function et(t, e, n, a, r, s) {
873
873
  key: 0,
874
874
  src: n.avatarUrl,
875
875
  alt: n.name || ""
876
- }, null, 8, Ze)) : (l(), c("span", {
876
+ }, null, 8, et)) : (l(), c("span", {
877
877
  key: 1,
878
878
  style: G({ fontSize: n.size * 0.36 + "px" })
879
879
  }, b(s.initials), 5))
880
880
  ], 4);
881
881
  }
882
- const ke = /* @__PURE__ */ E(Qe, [["render", et], ["__scopeId", "data-v-a772b179"]]), tt = {
882
+ const Ce = /* @__PURE__ */ E(Ze, [["render", tt], ["__scopeId", "data-v-a772b179"]]), nt = {
883
883
  name: "WmTeamAvatars",
884
884
  props: {
885
885
  members: { type: Array, default: () => [] },
@@ -895,21 +895,21 @@ const ke = /* @__PURE__ */ E(Qe, [["render", et], ["__scopeId", "data-v-a772b179
895
895
  },
896
896
  methods: {
897
897
  colorFor(t) {
898
- return t.avatar_url ? "transparent" : ye(t.name || "");
898
+ return t.avatar_url ? "transparent" : we(t.name || "");
899
899
  },
900
900
  initialsFor(t) {
901
- return we(t.name || "");
901
+ return be(t.name || "");
902
902
  }
903
903
  }
904
- }, nt = {
904
+ }, st = {
905
905
  key: 0,
906
906
  class: "wm-team"
907
- }, st = ["src", "alt"], rt = { key: 1 }, it = {
907
+ }, rt = ["src", "alt"], it = { key: 1 }, at = {
908
908
  key: 0,
909
909
  class: "wm-team__label"
910
910
  };
911
- function at(t, e, n, a, r, s) {
912
- return s.visible ? (l(), c("div", nt, [
911
+ function ot(t, e, n, a, r, s) {
912
+ return s.visible ? (l(), c("div", st, [
913
913
  i("div", {
914
914
  class: "wm-team__stack",
915
915
  style: G({ width: s.stackWidth + "px" })
@@ -923,15 +923,15 @@ function at(t, e, n, a, r, s) {
923
923
  key: 0,
924
924
  src: o.avatar_url,
925
925
  alt: o.name || ""
926
- }, null, 8, st)) : (l(), c("span", rt, b(s.initialsFor(o)), 1))
926
+ }, null, 8, rt)) : (l(), c("span", it, b(s.initialsFor(o)), 1))
927
927
  ], 4))), 128))
928
928
  ], 4),
929
- n.responseLabel ? (l(), c("span", it, b(n.responseLabel), 1)) : y("", !0)
930
- ])) : y("", !0);
929
+ n.responseLabel ? (l(), c("span", at, b(n.responseLabel), 1)) : g("", !0)
930
+ ])) : g("", !0);
931
931
  }
932
- const ot = /* @__PURE__ */ E(tt, [["render", at], ["__scopeId", "data-v-3659b9c1"]]), lt = {
932
+ const lt = /* @__PURE__ */ E(nt, [["render", ot], ["__scopeId", "data-v-3659b9c1"]]), dt = {
933
933
  name: "WmHeader",
934
- components: { AIAvatar: te, HumanAvatar: ke, TeamAvatars: ot },
934
+ components: { AIAvatar: te, HumanAvatar: Ce, TeamAvatars: lt },
935
935
  props: {
936
936
  title: { type: String, default: "Nouvelle conversation" },
937
937
  escalated: { type: Boolean, default: !1 },
@@ -962,19 +962,19 @@ const ot = /* @__PURE__ */ E(tt, [["render", at], ["__scopeId", "data-v-3659b9c1
962
962
  return this.escalated && this.agentName ? this.agentName : "En ligne";
963
963
  }
964
964
  }
965
- }, dt = { class: "wm-header" }, ct = {
965
+ }, ct = { class: "wm-header" }, ut = {
966
966
  key: 1,
967
967
  style: { width: "30px", height: "30px", "flex-shrink": "0" }
968
- }, ut = { class: "wm-header__avatar" }, ht = { class: "wm-header__main" }, mt = { class: "wm-header__title" }, ft = {
968
+ }, ht = { class: "wm-header__avatar" }, mt = { class: "wm-header__main" }, ft = { class: "wm-header__title" }, _t = {
969
969
  key: 0,
970
970
  class: "wm-header__sub"
971
- }, _t = { class: "wm-header__status" }, pt = {
971
+ }, pt = { class: "wm-header__status" }, vt = {
972
972
  key: 3,
973
973
  class: "wm-header__fill"
974
- }, vt = { class: "wm-header__actions" };
975
- function gt(t, e, n, a, r, s) {
974
+ }, gt = { class: "wm-header__actions" };
975
+ function yt(t, e, n, a, r, s) {
976
976
  const o = I("HumanAvatar"), d = I("AIAvatar"), v = I("TeamAvatars");
977
- return l(), c("div", dt, [
977
+ return l(), c("div", ct, [
978
978
  n.showBack ? (l(), c("button", {
979
979
  key: 0,
980
980
  type: "button",
@@ -995,9 +995,9 @@ function gt(t, e, n, a, r, s) {
995
995
  }, [
996
996
  i("path", { d: "M19 12H5M12 5l-7 7 7 7" })
997
997
  ], -1)
998
- ])])) : (l(), c("div", ct)),
998
+ ])])) : (l(), c("div", ut)),
999
999
  n.showIdentity ? (l(), c(T, { key: 2 }, [
1000
- i("div", ut, [
1000
+ i("div", ht, [
1001
1001
  n.escalated ? (l(), $(o, {
1002
1002
  key: 0,
1003
1003
  name: n.agentName,
@@ -1008,22 +1008,22 @@ function gt(t, e, n, a, r, s) {
1008
1008
  size: 34
1009
1009
  }))
1010
1010
  ]),
1011
- i("div", ht, [
1012
- i("div", mt, b(n.title), 1),
1013
- s.showPresence ? (l(), c("div", ft, [
1011
+ i("div", mt, [
1012
+ i("div", ft, b(n.title), 1),
1013
+ s.showPresence ? (l(), c("div", _t, [
1014
1014
  s.hasTeam ? (l(), $(v, {
1015
1015
  key: 0,
1016
1016
  members: n.teamMembers,
1017
1017
  "response-label": n.responseLabel
1018
- }, null, 8, ["members", "response-label"])) : y("", !0),
1019
- i("span", _t, [
1018
+ }, null, 8, ["members", "response-label"])) : g("", !0),
1019
+ i("span", pt, [
1020
1020
  e[4] || (e[4] = i("span", { class: "wm-header__dot" }, null, -1)),
1021
1021
  de(" " + b(s.statusText), 1)
1022
1022
  ])
1023
- ])) : y("", !0)
1023
+ ])) : g("", !0)
1024
1024
  ])
1025
- ], 64)) : (l(), c("div", pt)),
1026
- i("div", vt, [
1025
+ ], 64)) : (l(), c("div", vt)),
1026
+ i("div", gt, [
1027
1027
  n.showMore ? (l(), c("button", {
1028
1028
  key: 0,
1029
1029
  type: "button",
@@ -1055,7 +1055,7 @@ function gt(t, e, n, a, r, s) {
1055
1055
  r: "1.6"
1056
1056
  })
1057
1057
  ], -1)
1058
- ])], 2)) : y("", !0),
1058
+ ])], 2)) : g("", !0),
1059
1059
  n.showClose ? (l(), c("button", {
1060
1060
  key: 1,
1061
1061
  type: "button",
@@ -1077,24 +1077,24 @@ function gt(t, e, n, a, r, s) {
1077
1077
  }, [
1078
1078
  i("path", { d: "M18 6L6 18M6 6l12 12" })
1079
1079
  ], -1)
1080
- ])])) : y("", !0)
1080
+ ])])) : g("", !0)
1081
1081
  ])
1082
1082
  ]);
1083
1083
  }
1084
- const yt = /* @__PURE__ */ E(lt, [["render", gt], ["__scopeId", "data-v-b5f5f6a9"]]), _e = {
1084
+ const wt = /* @__PURE__ */ E(dt, [["render", yt], ["__scopeId", "data-v-b5f5f6a9"]]), pe = {
1085
1085
  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",
1086
1086
  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",
1087
1087
  status: "M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z",
1088
1088
  chat: "M8 12h.01M12 12h.01M16 12h.01M21 12c0 4.418-4.03 8-9 8a9.863 9.863 0 01-4.255-.949L3 20l1.395-3.72C3.512 15.042 3 13.574 3 12c0-4.418 4.03-8 9-8s9 3.582 9 8z",
1089
1089
  link: "M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"
1090
- }, wt = {
1090
+ }, bt = {
1091
1091
  name: "WmOnboarding",
1092
1092
  components: { AIAvatar: te },
1093
1093
  props: {
1094
1094
  welcomeMessage: { type: String, default: "" },
1095
1095
  agentName: { type: String, default: "" },
1096
1096
  quickLinks: { type: Array, default: () => [] },
1097
- unreadThreads: { type: Array, default: () => [] },
1097
+ openThreads: { type: Array, default: () => [] },
1098
1098
  busy: { type: Boolean, default: !1 }
1099
1099
  },
1100
1100
  emits: ["start", "select", "resume"],
@@ -1109,16 +1109,20 @@ Je réponds en quelques secondes.`;
1109
1109
  },
1110
1110
  methods: {
1111
1111
  iconPath(t) {
1112
- return _e[t] || _e.link;
1112
+ return pe[t] || pe.link;
1113
1113
  }
1114
1114
  }
1115
- }, bt = { class: "wm-onb" }, kt = { class: "wm-onb__hero" }, Ct = { class: "wm-onb__title" }, At = { class: "wm-onb__sub" }, St = {
1115
+ }, kt = { class: "wm-onb" }, Ct = { class: "wm-onb__hero" }, At = { class: "wm-onb__title" }, St = { class: "wm-onb__sub" }, xt = {
1116
1116
  key: 0,
1117
1117
  class: "wm-onb__section"
1118
- }, xt = { class: "wm-onb__links" }, Tt = ["onClick"], Mt = { class: "wm-onb__resume-body" }, Ot = { class: "wm-onb__resume-title" }, It = { class: "wm-onb__resume-preview" }, Bt = {
1118
+ }, Tt = { class: "wm-onb__links" }, Mt = ["onClick"], Ot = {
1119
+ key: 0,
1120
+ class: "wm-onb__resume-dot",
1121
+ "aria-label": "Non lu"
1122
+ }, It = { class: "wm-onb__resume-body" }, Bt = { class: "wm-onb__resume-title" }, Et = { class: "wm-onb__resume-preview" }, $t = {
1119
1123
  key: 1,
1120
1124
  class: "wm-onb__section"
1121
- }, Et = { class: "wm-onb__links" }, $t = ["onClick"], Lt = { class: "wm-onb__link-icon" }, Rt = {
1125
+ }, Lt = { class: "wm-onb__links" }, Rt = ["onClick"], Ft = { class: "wm-onb__link-icon" }, Dt = {
1122
1126
  width: "14",
1123
1127
  height: "14",
1124
1128
  viewBox: "0 0 24 24",
@@ -1128,29 +1132,31 @@ Je réponds en quelques secondes.`;
1128
1132
  "stroke-linecap": "round",
1129
1133
  "stroke-linejoin": "round",
1130
1134
  "aria-hidden": "true"
1131
- }, Ft = ["d"], Dt = { class: "wm-onb__link-label" }, Nt = { class: "wm-onb__cta" }, jt = ["disabled"];
1132
- function Ut(t, e, n, a, r, s) {
1135
+ }, Nt = ["d"], jt = { class: "wm-onb__link-label" }, Ut = { class: "wm-onb__cta" }, Pt = ["disabled"];
1136
+ function Ht(t, e, n, a, r, s) {
1133
1137
  const o = I("AIAvatar");
1134
- return l(), c("div", bt, [
1135
- i("div", kt, [
1138
+ return l(), c("div", kt, [
1139
+ i("div", Ct, [
1136
1140
  K(o, {
1137
1141
  size: 56,
1138
1142
  pulse: !0
1139
1143
  }),
1140
- i("div", Ct, b(s.heroTitle), 1),
1141
- i("div", At, b(s.heroSub), 1)
1144
+ i("div", At, b(s.heroTitle), 1),
1145
+ i("div", St, b(s.heroSub), 1)
1142
1146
  ]),
1143
- n.unreadThreads.length ? (l(), c("div", St, [
1144
- e[3] || (e[3] = i("div", { class: "wm-onb__section-title" }, "Messages non lus", -1)),
1145
- i("div", xt, [
1146
- (l(!0), c(T, null, D(n.unreadThreads, (d) => (l(), c("button", {
1147
+ n.openThreads.length ? (l(), c("div", xt, [
1148
+ e[3] || (e[3] = i("div", { class: "wm-onb__section-title" }, "Vos conversations", -1)),
1149
+ i("div", Tt, [
1150
+ (l(!0), c(T, null, D(n.openThreads, (d) => (l(), c("button", {
1147
1151
  key: d.id,
1148
1152
  type: "button",
1149
1153
  class: "wm-onb__link wm-onb__resume",
1150
1154
  onClick: (v) => t.$emit("resume", d)
1151
1155
  }, [
1152
- e[1] || (e[1] = i("span", { class: "wm-onb__link-icon wm-onb__resume-icon" }, [
1153
- i("svg", {
1156
+ i("span", {
1157
+ class: B(["wm-onb__link-icon", { "wm-onb__resume-icon": d.unread }])
1158
+ }, [
1159
+ e[1] || (e[1] = i("svg", {
1154
1160
  width: "14",
1155
1161
  height: "14",
1156
1162
  viewBox: "0 0 24 24",
@@ -1162,15 +1168,12 @@ function Ut(t, e, n, a, r, s) {
1162
1168
  "aria-hidden": "true"
1163
1169
  }, [
1164
1170
  i("path", { d: "M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z" })
1165
- ]),
1166
- i("span", {
1167
- class: "wm-onb__resume-dot",
1168
- "aria-label": "Non lu"
1169
- })
1170
- ], -1)),
1171
- i("span", Mt, [
1172
- i("span", Ot, b(d.title), 1),
1173
- i("span", It, b(d.preview), 1)
1171
+ ], -1)),
1172
+ d.unread ? (l(), c("span", Ot)) : g("", !0)
1173
+ ], 2),
1174
+ i("span", It, [
1175
+ i("span", Bt, b(d.title), 1),
1176
+ i("span", Et, b(d.preview), 1)
1174
1177
  ]),
1175
1178
  e[2] || (e[2] = i("svg", {
1176
1179
  width: "13",
@@ -1186,26 +1189,26 @@ function Ut(t, e, n, a, r, s) {
1186
1189
  }, [
1187
1190
  i("path", { d: "M9 18l6-6-6-6" })
1188
1191
  ], -1))
1189
- ], 8, Tt))), 128))
1192
+ ], 8, Mt))), 128))
1190
1193
  ])
1191
- ])) : y("", !0),
1192
- n.quickLinks.length ? (l(), c("div", Bt, [
1194
+ ])) : g("", !0),
1195
+ n.quickLinks.length ? (l(), c("div", $t, [
1193
1196
  e[5] || (e[5] = i("div", { class: "wm-onb__section-title" }, "Accès rapide", -1)),
1194
- i("div", Et, [
1197
+ i("div", Lt, [
1195
1198
  (l(!0), c(T, null, D(n.quickLinks, (d, v) => (l(), c("button", {
1196
1199
  key: v,
1197
1200
  type: "button",
1198
1201
  class: "wm-onb__link",
1199
1202
  onClick: (k) => t.$emit("select", d)
1200
1203
  }, [
1201
- i("span", Lt, [
1202
- (l(), c("svg", Rt, [
1204
+ i("span", Ft, [
1205
+ (l(), c("svg", Dt, [
1203
1206
  i("path", {
1204
1207
  d: s.iconPath(d.icon)
1205
- }, null, 8, Ft)
1208
+ }, null, 8, Nt)
1206
1209
  ]))
1207
1210
  ]),
1208
- i("span", Dt, b(d.label), 1),
1211
+ i("span", jt, b(d.label), 1),
1209
1212
  e[4] || (e[4] = i("svg", {
1210
1213
  width: "13",
1211
1214
  height: "13",
@@ -1220,24 +1223,24 @@ function Ut(t, e, n, a, r, s) {
1220
1223
  }, [
1221
1224
  i("path", { d: "M9 18l6-6-6-6" })
1222
1225
  ], -1))
1223
- ], 8, $t))), 128))
1226
+ ], 8, Rt))), 128))
1224
1227
  ])
1225
- ])) : y("", !0),
1226
- i("div", Nt, [
1228
+ ])) : g("", !0),
1229
+ i("div", Ut, [
1227
1230
  i("button", {
1228
1231
  type: "button",
1229
1232
  class: "wm-onb__startBtn",
1230
1233
  disabled: n.busy,
1231
1234
  onClick: e[0] || (e[0] = (d) => t.$emit("start"))
1232
- }, b(n.busy ? "…" : "Commencer une conversation"), 9, jt)
1235
+ }, b(n.busy ? "…" : "Commencer une conversation"), 9, Pt)
1233
1236
  ])
1234
1237
  ]);
1235
1238
  }
1236
- const Pt = /* @__PURE__ */ E(wt, [["render", Ut], ["__scopeId", "data-v-bd89bc8f"]]);
1237
- function Ht(t) {
1239
+ const zt = /* @__PURE__ */ E(bt, [["render", Ht], ["__scopeId", "data-v-7ce03b72"]]);
1240
+ function Vt(t) {
1238
1241
  return typeof t != "string" ? "" : t.replace(/`([^`]+)`/g, "$1").replace(/\*\*([^*]+)\*\*/g, "$1").replace(new RegExp("(?<!\\*)\\*([^*]+)\\*(?!\\*)", "g"), "$1").replace(/__([^_]+)__/g, "$1").replace(/\[([^\]]+)\]\([^)]+\)/g, "$1").replace(/\s+/g, " ").trim();
1239
1242
  }
1240
- const zt = {
1243
+ const qt = {
1241
1244
  name: "WmActionResult",
1242
1245
  props: {
1243
1246
  state: { type: String, default: "success" },
@@ -1247,13 +1250,13 @@ const zt = {
1247
1250
  },
1248
1251
  computed: {
1249
1252
  detailText() {
1250
- return Ht(this.detail);
1253
+ return Vt(this.detail);
1251
1254
  }
1252
1255
  }
1253
- }, Vt = {
1256
+ }, Wt = {
1254
1257
  class: "wm-result__icon",
1255
1258
  "aria-hidden": "true"
1256
- }, qt = {
1259
+ }, Kt = {
1257
1260
  key: 0,
1258
1261
  width: "11",
1259
1262
  height: "11",
@@ -1263,7 +1266,7 @@ const zt = {
1263
1266
  "stroke-width": "2.8",
1264
1267
  "stroke-linecap": "round",
1265
1268
  "stroke-linejoin": "round"
1266
- }, Wt = {
1269
+ }, Gt = {
1267
1270
  key: 1,
1268
1271
  width: "11",
1269
1272
  height: "11",
@@ -1273,7 +1276,7 @@ const zt = {
1273
1276
  "stroke-width": "2.6",
1274
1277
  "stroke-linecap": "round",
1275
1278
  "stroke-linejoin": "round"
1276
- }, Kt = {
1279
+ }, Yt = {
1277
1280
  key: 2,
1278
1281
  width: "11",
1279
1282
  height: "11",
@@ -1283,7 +1286,7 @@ const zt = {
1283
1286
  "stroke-width": "2.4",
1284
1287
  "stroke-linecap": "round",
1285
1288
  "stroke-linejoin": "round"
1286
- }, Gt = {
1289
+ }, Jt = {
1287
1290
  key: 3,
1288
1291
  width: "12",
1289
1292
  height: "12",
@@ -1293,24 +1296,24 @@ const zt = {
1293
1296
  "stroke-width": "2.2",
1294
1297
  "stroke-linecap": "round",
1295
1298
  "stroke-linejoin": "round"
1296
- }, Yt = { class: "wm-result__body" }, Jt = { class: "wm-result__label" }, Xt = { class: "wm-result__detail" };
1297
- function Qt(t, e, n, a, r, s) {
1299
+ }, Xt = { class: "wm-result__body" }, Qt = { class: "wm-result__label" }, Zt = { class: "wm-result__detail" };
1300
+ function en(t, e, n, a, r, s) {
1298
1301
  return l(), c("div", {
1299
1302
  class: B(["wm-result", `wm-result--${n.state}`])
1300
1303
  }, [
1301
- i("span", Vt, [
1302
- n.state === "success" ? (l(), c("svg", qt, [...e[0] || (e[0] = [
1304
+ i("span", Wt, [
1305
+ n.state === "success" ? (l(), c("svg", Kt, [...e[0] || (e[0] = [
1303
1306
  i("path", { d: "M20 6L9 17l-5-5" }, null, -1)
1304
- ])])) : n.state === "rejected" ? (l(), c("svg", Wt, [...e[1] || (e[1] = [
1307
+ ])])) : n.state === "rejected" ? (l(), c("svg", Gt, [...e[1] || (e[1] = [
1305
1308
  i("path", { d: "M18 6L6 18M6 6l12 12" }, null, -1)
1306
- ])])) : n.state === "awaiting" ? (l(), c("svg", Kt, [...e[2] || (e[2] = [
1309
+ ])])) : n.state === "awaiting" ? (l(), c("svg", Yt, [...e[2] || (e[2] = [
1307
1310
  i("circle", {
1308
1311
  cx: "12",
1309
1312
  cy: "12",
1310
1313
  r: "10"
1311
1314
  }, null, -1),
1312
1315
  i("polyline", { points: "12 7 12 12 15 14" }, null, -1)
1313
- ])])) : (l(), c("svg", Gt, [...e[3] || (e[3] = [
1316
+ ])])) : (l(), c("svg", Jt, [...e[3] || (e[3] = [
1314
1317
  i("path", { d: "M10.29 3.86L1.82 18a2 2 0 001.71 3h16.94a2 2 0 001.71-3L13.71 3.86a2 2 0 00-3.42 0z" }, null, -1),
1315
1318
  i("line", {
1316
1319
  x1: "12",
@@ -1326,19 +1329,19 @@ function Qt(t, e, n, a, r, s) {
1326
1329
  }, null, -1)
1327
1330
  ])]))
1328
1331
  ]),
1329
- i("span", Yt, [
1330
- i("span", Jt, b(n.label), 1),
1332
+ i("span", Xt, [
1333
+ i("span", Qt, b(n.label), 1),
1331
1334
  s.detailText ? (l(), c(T, { key: 0 }, [
1332
1335
  e[4] || (e[4] = i("span", {
1333
1336
  class: "wm-result__sep",
1334
1337
  "aria-hidden": "true"
1335
1338
  }, " · ", -1)),
1336
- i("span", Xt, b(s.detailText), 1)
1337
- ], 64)) : y("", !0)
1339
+ i("span", Zt, b(s.detailText), 1)
1340
+ ], 64)) : g("", !0)
1338
1341
  ])
1339
1342
  ], 2);
1340
1343
  }
1341
- const Zt = /* @__PURE__ */ E(zt, [["render", Qt], ["__scopeId", "data-v-64a83fb8"]]), en = {
1344
+ const tn = /* @__PURE__ */ E(qt, [["render", en], ["__scopeId", "data-v-64a83fb8"]]), nn = {
1342
1345
  name: "WmArtifactFormResponse",
1343
1346
  props: {
1344
1347
  data: { type: Object, required: !0 }
@@ -1349,11 +1352,11 @@ const Zt = /* @__PURE__ */ E(zt, [["render", Qt], ["__scopeId", "data-v-64a83fb8
1349
1352
  return Array.isArray((t = this.data) == null ? void 0 : t.fields) ? this.data.fields : [];
1350
1353
  }
1351
1354
  }
1352
- }, tn = { class: "wm-art wm-art--formResponse" }, nn = { class: "wm-art__head" }, sn = { class: "wm-art__title" }, rn = { class: "wm-art__body" }, an = { class: "wm-art__fieldLabel" };
1353
- function on(t, e, n, a, r, s) {
1354
- return l(), c("div", tn, [
1355
- i("div", nn, [
1356
- i("div", sn, b(n.data.title || "Formulaire"), 1),
1355
+ }, sn = { class: "wm-art wm-art--formResponse" }, rn = { class: "wm-art__head" }, an = { class: "wm-art__title" }, on = { class: "wm-art__body" }, ln = { class: "wm-art__fieldLabel" };
1356
+ function dn(t, e, n, a, r, s) {
1357
+ return l(), c("div", sn, [
1358
+ i("div", rn, [
1359
+ i("div", an, b(n.data.title || "Formulaire"), 1),
1357
1360
  e[0] || (e[0] = i("span", { class: "wm-art__badge wm-art__badge--success" }, [
1358
1361
  i("svg", {
1359
1362
  width: "11",
@@ -1371,12 +1374,12 @@ function on(t, e, n, a, r, s) {
1371
1374
  de(" Envoyé ")
1372
1375
  ], -1))
1373
1376
  ]),
1374
- i("div", rn, [
1377
+ i("div", on, [
1375
1378
  (l(!0), c(T, null, D(s.fields, (o, d) => (l(), c("div", {
1376
1379
  key: d,
1377
1380
  class: "wm-art__field"
1378
1381
  }, [
1379
- i("div", an, b(o.label), 1),
1382
+ i("div", ln, b(o.label), 1),
1380
1383
  i("div", {
1381
1384
  class: B(["wm-art__fieldValue", { "wm-art__fieldValue--multi": o.multiline }])
1382
1385
  }, b(o.value), 3)
@@ -1384,7 +1387,7 @@ function on(t, e, n, a, r, s) {
1384
1387
  ])
1385
1388
  ]);
1386
1389
  }
1387
- const ln = /* @__PURE__ */ E(en, [["render", on], ["__scopeId", "data-v-ca24a9c9"]]), dn = {
1390
+ const cn = /* @__PURE__ */ E(nn, [["render", dn], ["__scopeId", "data-v-ca24a9c9"]]), un = {
1388
1391
  name: "WmArtifactInfoCard",
1389
1392
  props: {
1390
1393
  data: { type: Object, required: !0 }
@@ -1399,61 +1402,61 @@ const ln = /* @__PURE__ */ E(en, [["render", on], ["__scopeId", "data-v-ca24a9c9
1399
1402
  return !!((t = this.data) != null && t.body) || this.fields.length > 0;
1400
1403
  }
1401
1404
  }
1402
- }, cn = { class: "wm-art wm-art--infoCard" }, un = {
1405
+ }, hn = { class: "wm-art wm-art--infoCard" }, mn = {
1403
1406
  key: 0,
1404
1407
  class: "wm-art__image"
1405
- }, hn = ["src", "alt"], mn = { class: "wm-art__head" }, fn = { class: "wm-art__headMain" }, _n = { class: "wm-art__title" }, pn = {
1408
+ }, fn = ["src", "alt"], _n = { class: "wm-art__head" }, pn = { class: "wm-art__headMain" }, vn = { class: "wm-art__title" }, gn = {
1406
1409
  key: 0,
1407
1410
  class: "wm-art__subtitle"
1408
- }, vn = {
1411
+ }, yn = {
1409
1412
  key: 1,
1410
1413
  class: "wm-art__body"
1411
- }, gn = {
1414
+ }, wn = {
1412
1415
  key: 0,
1413
1416
  class: "wm-art__text"
1414
- }, yn = { class: "wm-art__fieldLabel" };
1415
- function wn(t, e, n, a, r, s) {
1416
- return l(), c("div", cn, [
1417
- n.data.image_url ? (l(), c("figure", un, [
1417
+ }, bn = { class: "wm-art__fieldLabel" };
1418
+ function kn(t, e, n, a, r, s) {
1419
+ return l(), c("div", hn, [
1420
+ n.data.image_url ? (l(), c("figure", mn, [
1418
1421
  i("img", {
1419
1422
  src: n.data.image_url,
1420
1423
  alt: n.data.title || "",
1421
1424
  loading: "lazy"
1422
- }, null, 8, hn)
1423
- ])) : y("", !0),
1424
- i("div", mn, [
1425
- i("div", fn, [
1426
- i("div", _n, b(n.data.title), 1),
1427
- n.data.subtitle ? (l(), c("div", pn, b(n.data.subtitle), 1)) : y("", !0)
1425
+ }, null, 8, fn)
1426
+ ])) : g("", !0),
1427
+ i("div", _n, [
1428
+ i("div", pn, [
1429
+ i("div", vn, b(n.data.title), 1),
1430
+ n.data.subtitle ? (l(), c("div", gn, b(n.data.subtitle), 1)) : g("", !0)
1428
1431
  ]),
1429
1432
  n.data.badge && n.data.badge.label ? (l(), c("span", {
1430
1433
  key: 0,
1431
1434
  class: B(["wm-art__badge", `wm-art__badge--${n.data.badge.tone || "neutral"}`])
1432
- }, b(n.data.badge.label), 3)) : y("", !0)
1435
+ }, b(n.data.badge.label), 3)) : g("", !0)
1433
1436
  ]),
1434
- s.hasBody ? (l(), c("div", vn, [
1435
- n.data.body ? (l(), c("div", gn, b(n.data.body), 1)) : y("", !0),
1437
+ s.hasBody ? (l(), c("div", yn, [
1438
+ n.data.body ? (l(), c("div", wn, b(n.data.body), 1)) : g("", !0),
1436
1439
  s.fields.length ? (l(!0), c(T, { key: 1 }, D(s.fields, (o, d) => (l(), c("div", {
1437
1440
  key: d,
1438
1441
  class: "wm-art__field"
1439
1442
  }, [
1440
- i("div", yn, b(o.label), 1),
1443
+ i("div", bn, b(o.label), 1),
1441
1444
  i("div", {
1442
1445
  class: B(["wm-art__fieldValue", { "wm-art__fieldValue--multi": o.multiline }])
1443
1446
  }, b(o.value), 3)
1444
- ]))), 128)) : y("", !0)
1445
- ])) : y("", !0)
1447
+ ]))), 128)) : g("", !0)
1448
+ ])) : g("", !0)
1446
1449
  ]);
1447
1450
  }
1448
- const bn = /* @__PURE__ */ E(dn, [["render", wn], ["__scopeId", "data-v-d7369333"]]);
1449
- function kn(t) {
1451
+ const Cn = /* @__PURE__ */ E(un, [["render", kn], ["__scopeId", "data-v-d7369333"]]);
1452
+ function An(t) {
1450
1453
  if (!t) return "";
1451
1454
  const e = new Date(t);
1452
1455
  if (Number.isNaN(e.getTime())) return t;
1453
1456
  const n = e.toLocaleDateString("fr-FR", { day: "numeric", month: "long", year: "numeric" }), a = e.toLocaleTimeString("fr-FR", { hour: "2-digit", minute: "2-digit" });
1454
1457
  return `${n} à ${a}`;
1455
1458
  }
1456
- const Cn = {
1459
+ const Sn = {
1457
1460
  name: "WmArtifactTicket",
1458
1461
  props: {
1459
1462
  data: { type: Object, required: !0 }
@@ -1465,7 +1468,7 @@ const Cn = {
1465
1468
  },
1466
1469
  formattedDate() {
1467
1470
  var t;
1468
- return kn((t = this.data) == null ? void 0 : t.created_at);
1471
+ return An((t = this.data) == null ? void 0 : t.created_at);
1469
1472
  }
1470
1473
  },
1471
1474
  methods: {
@@ -1487,13 +1490,13 @@ const Cn = {
1487
1490
  return /high|haute|élev|elev|critic|critiq|urgent/.test(e) ? 3 : /low|basse|faible|minor/.test(e) ? 1 : 2;
1488
1491
  }
1489
1492
  }
1490
- }, An = { class: "wm-art wm-art--ticket" }, Sn = { class: "wm-art__head wm-tk__head" }, xn = { class: "wm-art__title wm-tk__title" }, Tn = { class: "wm-tk__sub" }, Mn = { class: "wm-tk__ref" }, On = {
1493
+ }, xn = { class: "wm-art wm-art--ticket" }, Tn = { class: "wm-art__head wm-tk__head" }, Mn = { class: "wm-art__title wm-tk__title" }, On = { class: "wm-tk__sub" }, In = { class: "wm-tk__ref" }, Bn = {
1491
1494
  key: 0,
1492
1495
  class: "wm-tk__text"
1493
- }, In = {
1496
+ }, En = {
1494
1497
  key: 0,
1495
1498
  class: "wm-art__body"
1496
- }, Bn = { class: "wm-art__fieldLabel" }, En = ["data-level"], $n = {
1499
+ }, $n = { class: "wm-art__fieldLabel" }, Ln = ["data-level"], Rn = {
1497
1500
  key: 1,
1498
1501
  class: "wm-tk__date",
1499
1502
  width: "12",
@@ -1505,16 +1508,16 @@ const Cn = {
1505
1508
  "stroke-linecap": "round",
1506
1509
  "stroke-linejoin": "round",
1507
1510
  "aria-hidden": "true"
1508
- }, Ln = {
1511
+ }, Fn = {
1509
1512
  key: 1,
1510
1513
  class: "wm-art__footer wm-tk__footer"
1511
1514
  };
1512
- function Rn(t, e, n, a, r, s) {
1513
- return l(), c("div", An, [
1514
- i("div", Sn, [
1515
- i("div", xn, b(n.data.title), 1),
1516
- i("div", Tn, [
1517
- i("div", Mn, [
1515
+ function Dn(t, e, n, a, r, s) {
1516
+ return l(), c("div", xn, [
1517
+ i("div", Tn, [
1518
+ i("div", Mn, b(n.data.title), 1),
1519
+ i("div", On, [
1520
+ i("div", In, [
1518
1521
  e[0] || (e[0] = i("svg", {
1519
1522
  width: "11",
1520
1523
  height: "11",
@@ -1541,14 +1544,14 @@ function Rn(t, e, n, a, r, s) {
1541
1544
  de(" " + b(n.data.status.label), 1)
1542
1545
  ], 2)
1543
1546
  ]),
1544
- n.data.body ? (l(), c("div", On, b(n.data.body), 1)) : y("", !0)
1547
+ n.data.body ? (l(), c("div", Bn, b(n.data.body), 1)) : g("", !0)
1545
1548
  ]),
1546
- s.fields.length ? (l(), c("div", In, [
1549
+ s.fields.length ? (l(), c("div", En, [
1547
1550
  (l(!0), c(T, null, D(s.fields, (o, d) => (l(), c("div", {
1548
1551
  key: d,
1549
1552
  class: "wm-art__field"
1550
1553
  }, [
1551
- i("div", Bn, b(o.label), 1),
1554
+ i("div", $n, b(o.label), 1),
1552
1555
  i("div", {
1553
1556
  class: B(["wm-art__fieldValue", { "wm-art__fieldValue--multi": o.multiline }])
1554
1557
  }, [
@@ -1582,7 +1585,7 @@ function Rn(t, e, n, a, r, s) {
1582
1585
  height: "9",
1583
1586
  rx: "0.5"
1584
1587
  }, null, -1)
1585
- ])], 8, En)) : s.isDate(o.label) ? (l(), c("svg", $n, [...e[3] || (e[3] = [
1588
+ ])], 8, Ln)) : s.isDate(o.label) ? (l(), c("svg", Rn, [...e[3] || (e[3] = [
1586
1589
  i("rect", {
1587
1590
  x: "3",
1588
1591
  y: "4",
@@ -1591,12 +1594,12 @@ function Rn(t, e, n, a, r, s) {
1591
1594
  rx: "2"
1592
1595
  }, null, -1),
1593
1596
  i("path", { d: "M16 2v4M8 2v4M3 10h18" }, null, -1)
1594
- ])])) : y("", !0),
1597
+ ])])) : g("", !0),
1595
1598
  i("span", null, b(o.value), 1)
1596
1599
  ], 2)
1597
1600
  ]))), 128))
1598
- ])) : y("", !0),
1599
- n.data.created_at ? (l(), c("div", Ln, [
1601
+ ])) : g("", !0),
1602
+ n.data.created_at ? (l(), c("div", Fn, [
1600
1603
  e[4] || (e[4] = i("svg", {
1601
1604
  width: "11",
1602
1605
  height: "11",
@@ -1618,14 +1621,14 @@ function Rn(t, e, n, a, r, s) {
1618
1621
  i("path", { d: "M16 2v4M8 2v4M3 10h18" })
1619
1622
  ], -1)),
1620
1623
  i("span", null, b(s.formattedDate), 1)
1621
- ])) : y("", !0)
1624
+ ])) : g("", !0)
1622
1625
  ]);
1623
1626
  }
1624
- const Fn = /* @__PURE__ */ E(Cn, [["render", Rn], ["__scopeId", "data-v-8b274eb7"]]), Dn = {
1625
- form_response: ln,
1626
- info_card: bn,
1627
- ticket: Fn
1628
- }, Nn = {
1627
+ const Nn = /* @__PURE__ */ E(Sn, [["render", Dn], ["__scopeId", "data-v-8b274eb7"]]), jn = {
1628
+ form_response: cn,
1629
+ info_card: Cn,
1630
+ ticket: Nn
1631
+ }, Un = {
1629
1632
  name: "WmArtifactRenderer",
1630
1633
  props: {
1631
1634
  // Forme : { kind: string, data: any } (le `data` est validé
@@ -1636,17 +1639,17 @@ const Fn = /* @__PURE__ */ E(Cn, [["render", Rn], ["__scopeId", "data-v-8b274eb7
1636
1639
  component() {
1637
1640
  var e;
1638
1641
  const t = (e = this.artifact) == null ? void 0 : e.kind;
1639
- return t && Dn[t] || null;
1642
+ return t && jn[t] || null;
1640
1643
  }
1641
1644
  }
1642
1645
  };
1643
- function jn(t, e, n, a, r, s) {
1644
- return s.component ? (l(), $(Te(s.component), {
1646
+ function Pn(t, e, n, a, r, s) {
1647
+ return s.component ? (l(), $(Me(s.component), {
1645
1648
  key: 0,
1646
1649
  data: n.artifact.data
1647
- }, null, 8, ["data"])) : y("", !0);
1650
+ }, null, 8, ["data"])) : g("", !0);
1648
1651
  }
1649
- const Un = /* @__PURE__ */ E(Nn, [["render", jn]]), Pn = {
1652
+ const Hn = /* @__PURE__ */ E(Un, [["render", Pn]]), zn = {
1650
1653
  name: "WmAttachmentPreview",
1651
1654
  inject: {
1652
1655
  signAttachmentFn: { default: null }
@@ -1700,15 +1703,15 @@ const Un = /* @__PURE__ */ E(Nn, [["render", jn]]), Pn = {
1700
1703
  this.url || t.preventDefault();
1701
1704
  }
1702
1705
  }
1703
- }, Hn = ["href"], zn = ["src", "alt"], Vn = ["src"], qn = ["src"], Wn = ["href", "download"], Kn = { class: "wm-att__main" }, Gn = { class: "wm-att__name" }, Yn = {
1706
+ }, Vn = ["href"], qn = ["src", "alt"], Wn = ["src"], Kn = ["src"], Gn = ["href", "download"], Yn = { class: "wm-att__main" }, Jn = { class: "wm-att__name" }, Xn = {
1704
1707
  key: 0,
1705
1708
  class: "wm-att__meta"
1706
- }, Jn = {
1709
+ }, Qn = {
1707
1710
  key: 0,
1708
1711
  class: "wm-att__spin",
1709
1712
  "aria-hidden": "true"
1710
1713
  };
1711
- function Xn(t, e, n, a, r, s) {
1714
+ function Zn(t, e, n, a, r, s) {
1712
1715
  return l(), c("div", {
1713
1716
  class: B(["wm-att", ["wm-att--" + (s.kind || "file")]])
1714
1717
  }, [
@@ -1723,18 +1726,18 @@ function Xn(t, e, n, a, r, s) {
1723
1726
  src: r.url,
1724
1727
  alt: s.displayName,
1725
1728
  loading: "lazy"
1726
- }, null, 8, zn)
1727
- ], 8, Hn)) : s.kind === "audio" && r.url ? (l(), c("audio", {
1729
+ }, null, 8, qn)
1730
+ ], 8, Vn)) : s.kind === "audio" && r.url ? (l(), c("audio", {
1728
1731
  key: 1,
1729
1732
  src: r.url,
1730
1733
  controls: "",
1731
1734
  preload: "metadata"
1732
- }, null, 8, Vn)) : s.kind === "video" && r.url ? (l(), c("video", {
1735
+ }, null, 8, Wn)) : s.kind === "video" && r.url ? (l(), c("video", {
1733
1736
  key: 2,
1734
1737
  src: r.url,
1735
1738
  controls: "",
1736
1739
  preload: "metadata"
1737
- }, null, 8, qn)) : (l(), c("a", {
1740
+ }, null, 8, Kn)) : (l(), c("a", {
1738
1741
  key: 3,
1739
1742
  class: "wm-att__file",
1740
1743
  href: r.url || "#",
@@ -1759,33 +1762,33 @@ function Xn(t, e, n, a, r, s) {
1759
1762
  i("path", { d: "M14 2v6h6" })
1760
1763
  ])
1761
1764
  ], -1)),
1762
- i("span", Kn, [
1763
- i("span", Gn, b(s.displayName), 1),
1764
- s.sizeLabel ? (l(), c("span", Yn, b(s.sizeLabel), 1)) : y("", !0)
1765
+ i("span", Yn, [
1766
+ i("span", Jn, b(s.displayName), 1),
1767
+ s.sizeLabel ? (l(), c("span", Xn, b(s.sizeLabel), 1)) : g("", !0)
1765
1768
  ]),
1766
- r.loading ? (l(), c("span", Jn)) : y("", !0)
1767
- ], 8, Wn))
1769
+ r.loading ? (l(), c("span", Qn)) : g("", !0)
1770
+ ], 8, Gn))
1768
1771
  ], 2);
1769
1772
  }
1770
- const Qn = /* @__PURE__ */ E(Pn, [["render", Xn], ["__scopeId", "data-v-1cd1267b"]]);
1771
- function Zn(t) {
1773
+ const es = /* @__PURE__ */ E(zn, [["render", Zn], ["__scopeId", "data-v-1cd1267b"]]);
1774
+ function ts(t) {
1772
1775
  return String(t).replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&#39;");
1773
1776
  }
1774
- function es(t) {
1777
+ function ns(t) {
1775
1778
  return /^(https?:\/\/|mailto:|tel:)/i.test(String(t).trim());
1776
1779
  }
1777
- const pe = "";
1780
+ const ve = "";
1778
1781
  function re(t) {
1779
1782
  let e = t;
1780
1783
  const n = [];
1781
1784
  return e = e.replace(/`([^`\n]+)`/g, (a, r) => {
1782
1785
  const s = n.length;
1783
- return n.push(r), `${pe}CODE${s}${pe}`;
1784
- }), e = e.replace(/\[([^\]\n]+)\]\(([^)\s]+)\)/g, (a, r, s) => es(s) ? `<a href="${s}" target="_blank" rel="noopener noreferrer">${r}</a>` : r), e = e.replace(/\*\*([^\n*][^\n]*?)\*\*/g, "<strong>$1</strong>"), e = e.replace(/__([^\n_][^\n]*?)__/g, "<u>$1</u>"), e = e.replace(/~~([^\n~][^\n]*?)~~/g, "<s>$1</s>"), e = e.replace(/(^|[^\w*])\*([^\n*]+?)\*(?!\w)/g, "$1<em>$2</em>"), e = e.replace(/(^|[^\w_])_([^\n_]+?)_(?!\w)/g, "$1<em>$2</em>"), e = e.replace(/CODE(\d+)/g, (a, r) => `<code class="wm-md-code">${n[+r]}</code>`), e;
1786
+ return n.push(r), `${ve}CODE${s}${ve}`;
1787
+ }), e = e.replace(/\[([^\]\n]+)\]\(([^)\s]+)\)/g, (a, r, s) => ns(s) ? `<a href="${s}" target="_blank" rel="noopener noreferrer">${r}</a>` : r), e = e.replace(/\*\*([^\n*][^\n]*?)\*\*/g, "<strong>$1</strong>"), e = e.replace(/__([^\n_][^\n]*?)__/g, "<u>$1</u>"), e = e.replace(/~~([^\n~][^\n]*?)~~/g, "<s>$1</s>"), e = e.replace(/(^|[^\w*])\*([^\n*]+?)\*(?!\w)/g, "$1<em>$2</em>"), e = e.replace(/(^|[^\w_])_([^\n_]+?)_(?!\w)/g, "$1<em>$2</em>"), e = e.replace(/CODE(\d+)/g, (a, r) => `<code class="wm-md-code">${n[+r]}</code>`), e;
1785
1788
  }
1786
- function ts(t) {
1789
+ function ss(t) {
1787
1790
  if (!t) return "";
1788
- const e = Zn(t).split(`
1791
+ const e = ts(t).split(`
1789
1792
  `), n = [];
1790
1793
  let a = 0;
1791
1794
  for (; a < e.length; ) {
@@ -1846,7 +1849,7 @@ function ts(t) {
1846
1849
  }
1847
1850
  return r;
1848
1851
  }
1849
- const ns = {
1852
+ const rs = {
1850
1853
  name: "WmBubble",
1851
1854
  props: {
1852
1855
  role: { type: String, default: "ai" },
@@ -1855,41 +1858,41 @@ const ns = {
1855
1858
  },
1856
1859
  computed: {
1857
1860
  rendered() {
1858
- return ts(this.text);
1861
+ return ss(this.text);
1859
1862
  }
1860
1863
  }
1861
- }, ss = ["innerHTML"];
1862
- function rs(t, e, n, a, r, s) {
1864
+ }, is = ["innerHTML"];
1865
+ function as(t, e, n, a, r, s) {
1863
1866
  return l(), c("div", {
1864
1867
  class: B(["wm-bubble", "wm-bubble--" + n.role])
1865
1868
  }, [
1866
- Me(t.$slots, "default", {}, () => [
1867
- i("span", { innerHTML: s.rendered }, null, 8, ss)
1869
+ Oe(t.$slots, "default", {}, () => [
1870
+ i("span", { innerHTML: s.rendered }, null, 8, is)
1868
1871
  ], !0)
1869
1872
  ], 2);
1870
1873
  }
1871
- const is = /* @__PURE__ */ E(ns, [["render", rs], ["__scopeId", "data-v-5c9e9f2b"]]), as = { name: "WmTyping" }, os = { class: "wm-typing" };
1872
- function ls(t, e, n, a, r, s) {
1873
- return l(), c("div", os, [...e[0] || (e[0] = [
1874
+ const os = /* @__PURE__ */ E(rs, [["render", as], ["__scopeId", "data-v-5c9e9f2b"]]), ls = { name: "WmTyping" }, ds = { class: "wm-typing" };
1875
+ function cs(t, e, n, a, r, s) {
1876
+ return l(), c("div", ds, [...e[0] || (e[0] = [
1874
1877
  i("span", { style: { "animation-delay": "0s" } }, null, -1),
1875
1878
  i("span", { style: { "animation-delay": "0.2s" } }, null, -1),
1876
1879
  i("span", { style: { "animation-delay": "0.4s" } }, null, -1)
1877
1880
  ])]);
1878
1881
  }
1879
- const ds = /* @__PURE__ */ E(as, [["render", ls], ["__scopeId", "data-v-df2447fd"]]);
1882
+ const us = /* @__PURE__ */ E(ls, [["render", cs], ["__scopeId", "data-v-df2447fd"]]);
1880
1883
  function ee(t) {
1881
1884
  return t ? t.client_msg_id || t.id : "";
1882
1885
  }
1883
- const cs = {
1886
+ const hs = {
1884
1887
  transferred_to_human: "Conversation transférée à un humain",
1885
1888
  assigned: "{name} a rejoint la conversation",
1886
1889
  unassigned: "L'agent a quitté la conversation",
1887
1890
  resolved: "Conversation résolue",
1888
1891
  reopened: "Conversation rouverte",
1889
1892
  idle: "Conversation en pause"
1890
- }, us = 80, hs = 200, ms = {
1893
+ }, ms = 80, fs = 200, _s = {
1891
1894
  name: "WmMessageList",
1892
- components: { AIAvatar: te, HumanAvatar: ke, Bubble: is, Typing: ds, ActionResult: Zt, AttachmentPreview: Qn, ArtifactRenderer: Un },
1895
+ components: { AIAvatar: te, HumanAvatar: Ce, Bubble: os, Typing: us, ActionResult: tn, AttachmentPreview: es, ArtifactRenderer: Hn },
1893
1896
  props: {
1894
1897
  messages: { type: Array, default: () => [] },
1895
1898
  streamingActive: { type: Boolean, default: !1 },
@@ -2015,11 +2018,11 @@ const cs = {
2015
2018
  methods: {
2016
2019
  messageKey: ee,
2017
2020
  isAtBottom(t) {
2018
- return t.scrollHeight - t.scrollTop - t.clientHeight <= us;
2021
+ return t.scrollHeight - t.scrollTop - t.clientHeight <= ms;
2019
2022
  },
2020
2023
  onScroll() {
2021
2024
  const t = this.$refs.scrollEl;
2022
- t && (this.loadingMore || !this.hasMore || this._pendingLoadMore || t.scrollTop <= hs && (this._pendingLoadMore = !0, this.$emit("load-more")));
2025
+ t && (this.loadingMore || !this.hasMore || this._pendingLoadMore || t.scrollTop <= fs && (this._pendingLoadMore = !0, this.$emit("load-more")));
2023
2026
  },
2024
2027
  // Capture pre-patch scroll state and restore it on the next tick.
2025
2028
  //
@@ -2259,7 +2262,7 @@ const cs = {
2259
2262
  const e = t.items[t.items.length - 1], n = (e == null ? void 0 : e.message) || t.messages[t.messages.length - 1];
2260
2263
  if (!(n != null && n.created_at)) return "";
2261
2264
  try {
2262
- return be(new Date(n.created_at));
2265
+ return ke(new Date(n.created_at));
2263
2266
  } catch {
2264
2267
  return "";
2265
2268
  }
@@ -2303,7 +2306,7 @@ const cs = {
2303
2306
  },
2304
2307
  systemLabel(t) {
2305
2308
  var r, s, o;
2306
- const e = (r = t == null ? void 0 : t.payload) == null ? void 0 : r.event, n = cs[e] || (t == null ? void 0 : t.text_md) || "Mise à jour de la conversation", a = ((s = t == null ? void 0 : t.metadata) == null ? void 0 : s.agent_name) || ((o = t == null ? void 0 : t.author) == null ? void 0 : o.name) || "";
2309
+ const e = (r = t == null ? void 0 : t.payload) == null ? void 0 : r.event, n = hs[e] || (t == null ? void 0 : t.text_md) || "Mise à jour de la conversation", a = ((s = t == null ? void 0 : t.metadata) == null ? void 0 : s.agent_name) || ((o = t == null ? void 0 : t.author) == null ? void 0 : o.name) || "";
2307
2310
  return n.replace("{name}", a || "Un agent");
2308
2311
  },
2309
2312
  scrollToBottom() {
@@ -2311,70 +2314,70 @@ const cs = {
2311
2314
  t && (t.scrollTop = t.scrollHeight);
2312
2315
  }
2313
2316
  }
2314
- }, fs = {
2317
+ }, ps = {
2315
2318
  key: 0,
2316
2319
  class: "wm-list__loadMore",
2317
2320
  role: "status",
2318
2321
  "aria-live": "polite"
2319
- }, _s = {
2322
+ }, vs = {
2320
2323
  key: 1,
2321
2324
  class: "wm-list__historyEnd"
2322
- }, ps = {
2325
+ }, gs = {
2323
2326
  key: 2,
2324
2327
  class: "wm-list__sep"
2325
- }, vs = { class: "wm-list__sep-label" }, gs = {
2328
+ }, ys = { class: "wm-list__sep-label" }, ws = {
2326
2329
  key: 0,
2327
2330
  class: "wm-list__sep wm-list__sep--unread"
2328
- }, ys = {
2331
+ }, bs = {
2329
2332
  key: 0,
2330
2333
  class: "wm-list__sysep"
2331
- }, ws = { class: "wm-list__sysep-label" }, bs = ["data-row-key"], ks = {
2334
+ }, ks = { class: "wm-list__sysep-label" }, Cs = ["data-row-key"], As = {
2332
2335
  key: 0,
2333
2336
  class: "wm-list__avatarSlot"
2334
- }, Cs = {
2337
+ }, Ss = {
2335
2338
  key: 5,
2336
2339
  class: "wm-list__body"
2337
- }, As = { key: 0 }, Ss = {
2340
+ }, xs = { key: 0 }, Ts = {
2338
2341
  key: 1,
2339
2342
  "aria-hidden": "true"
2340
- }, xs = { key: 2 }, Ts = {
2343
+ }, Ms = { key: 2 }, Os = {
2341
2344
  key: 3,
2342
2345
  class: "wm-list__row wm-list__row--ai fade-up"
2343
- }, Ms = { class: "wm-list__avatarSlot" };
2344
- function Os(t, e, n, a, r, s) {
2346
+ }, Is = { class: "wm-list__avatarSlot" };
2347
+ function Bs(t, e, n, a, r, s) {
2345
2348
  const o = I("AIAvatar"), d = I("HumanAvatar"), v = I("ActionResult"), k = I("ArtifactRenderer"), w = I("Bubble"), S = I("AttachmentPreview"), R = I("Typing");
2346
2349
  return l(), c("div", {
2347
2350
  ref: "scrollEl",
2348
2351
  class: B(["wm-list", { "wm-list--silent": r.silentFades }]),
2349
2352
  onScrollPassive: e[0] || (e[0] = (...A) => s.onScroll && s.onScroll(...A))
2350
2353
  }, [
2351
- n.loadingMore ? (l(), c("div", fs, [...e[1] || (e[1] = [
2354
+ n.loadingMore ? (l(), c("div", ps, [...e[1] || (e[1] = [
2352
2355
  i("span", {
2353
2356
  class: "wm-list__loadMore-spinner",
2354
2357
  "aria-hidden": "true"
2355
2358
  }, null, -1),
2356
2359
  i("span", { class: "wm-list__loadMore-lbl" }, "Chargement de l'historique…", -1)
2357
- ])])) : s.historyExhausted ? (l(), c("div", _s, "Début de la conversation")) : y("", !0),
2358
- n.dateLabel ? (l(), c("div", ps, [
2360
+ ])])) : s.historyExhausted ? (l(), c("div", vs, "Début de la conversation")) : g("", !0),
2361
+ n.dateLabel ? (l(), c("div", gs, [
2359
2362
  e[2] || (e[2] = i("div", { class: "wm-list__line" }, null, -1)),
2360
- i("span", vs, b(n.dateLabel), 1),
2363
+ i("span", ys, b(n.dateLabel), 1),
2361
2364
  e[3] || (e[3] = i("div", { class: "wm-list__line" }, null, -1))
2362
- ])) : y("", !0),
2365
+ ])) : g("", !0),
2363
2366
  (l(!0), c(T, null, D(s.groups, (A, U) => (l(), c(T, {
2364
2367
  key: A.key
2365
2368
  }, [
2366
- A.key === s.unreadGroupKey ? (l(), c("div", gs, [...e[4] || (e[4] = [
2369
+ A.key === s.unreadGroupKey ? (l(), c("div", ws, [...e[4] || (e[4] = [
2367
2370
  i("div", { class: "wm-list__line wm-list__line--unread" }, null, -1),
2368
2371
  i("span", { class: "wm-list__sep-label wm-list__sep-label--unread" }, "Non lus", -1),
2369
2372
  i("div", { class: "wm-list__line wm-list__line--unread" }, null, -1)
2370
- ])])) : y("", !0),
2373
+ ])])) : g("", !0),
2371
2374
  A.role === "system" || A.items.length ? (l(), c("div", {
2372
2375
  key: 1,
2373
2376
  class: B(["wm-list__group", "wm-list__group--" + A.role])
2374
2377
  }, [
2375
- A.role === "system" ? (l(), c("div", ys, [
2378
+ A.role === "system" ? (l(), c("div", bs, [
2376
2379
  e[5] || (e[5] = i("div", { class: "wm-list__line wm-list__line--strong" }, null, -1)),
2377
- i("span", ws, b(A.systemLabel), 1),
2380
+ i("span", ks, b(A.systemLabel), 1),
2378
2381
  e[6] || (e[6] = i("div", { class: "wm-list__line wm-list__line--strong" }, null, -1))
2379
2382
  ])) : (l(), c(T, { key: 1 }, [
2380
2383
  (l(!0), c(T, null, D(A.items, (x, j) => (l(), c("div", {
@@ -2383,7 +2386,7 @@ function Os(t, e, n, a, r, s) {
2383
2386
  class: B(["wm-list__row fade-up", ["wm-list__row--" + A.role, { "is-pending": x.message._pending, "is-failed": x.message._failed }]]),
2384
2387
  style: G(s.cornersStyle(A, j))
2385
2388
  }, [
2386
- A.role !== "user" ? (l(), c("div", ks, [
2389
+ A.role !== "user" ? (l(), c("div", As, [
2387
2390
  j === A.items.length - 1 ? (l(), c(T, { key: 0 }, [
2388
2391
  A.role === "ai" ? (l(), $(o, {
2389
2392
  key: 0,
@@ -2395,8 +2398,8 @@ function Os(t, e, n, a, r, s) {
2395
2398
  "avatar-url": A.agentAvatarUrl,
2396
2399
  size: 26
2397
2400
  }, null, 8, ["name", "avatar-url"]))
2398
- ], 64)) : y("", !0)
2399
- ])) : y("", !0),
2401
+ ], 64)) : g("", !0)
2402
+ ])) : g("", !0),
2400
2403
  x.renderAs === "action" ? (l(), $(v, {
2401
2404
  key: 1,
2402
2405
  state: x.message.payload.state,
@@ -2413,12 +2416,12 @@ function Os(t, e, n, a, r, s) {
2413
2416
  }, null, 8, ["artifact"])) : x.renderAs === "artifact" ? (l(), $(k, {
2414
2417
  key: 4,
2415
2418
  artifact: s.artifactOf(x.message)
2416
- }, null, 8, ["artifact"])) : (l(), c("div", Cs, [
2419
+ }, null, 8, ["artifact"])) : (l(), c("div", Ss, [
2417
2420
  x.message.text_md ? (l(), $(w, {
2418
2421
  key: 0,
2419
2422
  role: A.role,
2420
2423
  text: x.message.text_md
2421
- }, null, 8, ["role", "text"])) : y("", !0),
2424
+ }, null, 8, ["role", "text"])) : g("", !0),
2422
2425
  s.attachmentsOf(x.message).length ? (l(), c("div", {
2423
2426
  key: 1,
2424
2427
  class: B(["wm-list__atts", { "wm-list__atts--align-end": A.role === "user" }])
@@ -2427,33 +2430,33 @@ function Os(t, e, n, a, r, s) {
2427
2430
  key: `${s.messageKey(x.message)}-att-${F}`,
2428
2431
  attachment: P
2429
2432
  }, null, 8, ["attachment"]))), 128))
2430
- ], 2)) : y("", !0)
2433
+ ], 2)) : g("", !0)
2431
2434
  ]))
2432
- ], 14, bs))), 128)),
2435
+ ], 14, Cs))), 128)),
2433
2436
  (A.role !== "user" || s.lastTimeOf(A)) && !s.hasTrailingOverlay(A) ? (l(), c("div", {
2434
2437
  key: 0,
2435
2438
  class: B(["wm-list__meta", { "wm-list__meta--right": A.role === "user" }])
2436
2439
  }, [
2437
- A.role !== "user" ? (l(), c("span", As, b(s.roleLabel(A)), 1)) : y("", !0),
2438
- A.role !== "user" && s.lastTimeOf(A) ? (l(), c("span", Ss, "·")) : y("", !0),
2439
- s.lastTimeOf(A) ? (l(), c("span", xs, b(s.lastTimeOf(A)), 1)) : y("", !0)
2440
- ], 2)) : y("", !0)
2440
+ A.role !== "user" ? (l(), c("span", xs, b(s.roleLabel(A)), 1)) : g("", !0),
2441
+ A.role !== "user" && s.lastTimeOf(A) ? (l(), c("span", Ts, "·")) : g("", !0),
2442
+ s.lastTimeOf(A) ? (l(), c("span", Ms, b(s.lastTimeOf(A)), 1)) : g("", !0)
2443
+ ], 2)) : g("", !0)
2441
2444
  ], 64))
2442
- ], 2)) : y("", !0)
2445
+ ], 2)) : g("", !0)
2443
2446
  ], 64))), 128)),
2444
- n.streamingActive ? (l(), c("div", Ts, [
2445
- i("div", Ms, [
2447
+ n.streamingActive ? (l(), c("div", Os, [
2448
+ i("div", Is, [
2446
2449
  K(o, {
2447
2450
  size: 26,
2448
2451
  tail: !0
2449
2452
  })
2450
2453
  ]),
2451
2454
  K(R)
2452
- ])) : y("", !0)
2455
+ ])) : g("", !0)
2453
2456
  ], 34);
2454
2457
  }
2455
- const Is = /* @__PURE__ */ E(ms, [["render", Os], ["__scopeId", "data-v-6bd35fa5"]]), oe = typeof navigator < "u" && !!navigator.mediaDevices && typeof navigator.mediaDevices.getDisplayMedia == "function", me = typeof window < "u" && typeof window.MediaRecorder < "u";
2456
- function Bs() {
2458
+ const Es = /* @__PURE__ */ E(_s, [["render", Bs], ["__scopeId", "data-v-6bd35fa5"]]), oe = typeof navigator < "u" && !!navigator.mediaDevices && typeof navigator.mediaDevices.getDisplayMedia == "function", me = typeof window < "u" && typeof window.MediaRecorder < "u";
2459
+ function $s() {
2457
2460
  return me && [
2458
2461
  "video/webm;codecs=vp9,opus",
2459
2462
  "video/webm;codecs=vp8,opus",
@@ -2464,7 +2467,7 @@ function Bs() {
2464
2467
  return (a = (n = window.MediaRecorder).isTypeSupported) == null ? void 0 : a.call(n, e);
2465
2468
  }) || "";
2466
2469
  }
2467
- function Ce({ audio: t }) {
2470
+ function Ae({ audio: t }) {
2468
2471
  return {
2469
2472
  video: !0,
2470
2473
  audio: !!t,
@@ -2473,19 +2476,19 @@ function Ce({ audio: t }) {
2473
2476
  systemAudio: t ? "include" : "exclude"
2474
2477
  };
2475
2478
  }
2476
- function ea(t) {
2479
+ function na(t) {
2477
2480
  return t ? t.startsWith("image/") ? "image" : t.startsWith("video/") ? "video" : "file" : "file";
2478
2481
  }
2479
- async function Es() {
2482
+ async function Ls() {
2480
2483
  if (!oe) return null;
2481
2484
  let t;
2482
2485
  try {
2483
- t = await navigator.mediaDevices.getDisplayMedia(Ce({ audio: !1 }));
2486
+ t = await navigator.mediaDevices.getDisplayMedia(Ae({ audio: !1 }));
2484
2487
  } catch (e) {
2485
2488
  return (e == null ? void 0 : e.name) !== "NotAllowedError" && console.error("[media] screenshot picker", e), null;
2486
2489
  }
2487
2490
  try {
2488
- return await $s(t);
2491
+ return await Rs(t);
2489
2492
  } catch (e) {
2490
2493
  return console.error("[media] screenshot capture", e), null;
2491
2494
  } finally {
@@ -2494,7 +2497,7 @@ async function Es() {
2494
2497
  });
2495
2498
  }
2496
2499
  }
2497
- async function $s(t) {
2500
+ async function Rs(t) {
2498
2501
  const e = document.createElement("video");
2499
2502
  e.muted = !0, e.playsInline = !0, e.srcObject = t, await e.play(), await new Promise((d) => requestAnimationFrame(d));
2500
2503
  const n = e.videoWidth || 1280, a = e.videoHeight || 720, r = document.createElement("canvas");
@@ -2504,16 +2507,16 @@ async function $s(t) {
2504
2507
  }), o = (/* @__PURE__ */ new Date()).toISOString().replace(/[:.]/g, "-").slice(0, 19);
2505
2508
  return new File([s], `capture-${o}.png`, { type: "image/png" });
2506
2509
  }
2507
- async function Ls(t = {}) {
2510
+ async function Fs(t = {}) {
2508
2511
  var k;
2509
2512
  if (!oe || !me) return null;
2510
2513
  let e;
2511
2514
  try {
2512
- e = await navigator.mediaDevices.getDisplayMedia(Ce({ audio: !0 }));
2515
+ e = await navigator.mediaDevices.getDisplayMedia(Ae({ audio: !0 }));
2513
2516
  } catch (w) {
2514
2517
  return (w == null ? void 0 : w.name) !== "NotAllowedError" && console.error("[media] record picker", w), null;
2515
2518
  }
2516
- const n = Bs();
2519
+ const n = $s();
2517
2520
  let a;
2518
2521
  try {
2519
2522
  a = n ? new window.MediaRecorder(e, { mimeType: n }) : new window.MediaRecorder(e);
@@ -2565,7 +2568,7 @@ async function Ls(t = {}) {
2565
2568
  }
2566
2569
  };
2567
2570
  }
2568
- const Rs = [
2571
+ const Ds = [
2569
2572
  {
2570
2573
  action: "file",
2571
2574
  label: "Joindre un fichier",
@@ -2581,7 +2584,7 @@ const Rs = [
2581
2584
  label: "Enregistrer l'écran",
2582
2585
  path: "M23 7l-7 5 7 5V7z M1 5a2 2 0 012-2h12a2 2 0 012 2v14a2 2 0 01-2 2H3a2 2 0 01-2-2V5z"
2583
2586
  }
2584
- ], Fs = {
2587
+ ], Ns = {
2585
2588
  name: "WmComposer",
2586
2589
  props: {
2587
2590
  modelValue: { type: String, default: "" },
@@ -2604,7 +2607,7 @@ const Rs = [
2604
2607
  return !this.disabled && !!this.local.trim();
2605
2608
  },
2606
2609
  attachItems() {
2607
- return Rs.map((t) => ({
2610
+ return Ds.map((t) => ({
2608
2611
  ...t,
2609
2612
  disabled: t.action === "screenshot" && !oe || t.action === "record" && (!oe || !me)
2610
2613
  }));
@@ -2676,13 +2679,13 @@ const Rs = [
2676
2679
  },
2677
2680
  async captureScreenshot() {
2678
2681
  if (this.disabled) return;
2679
- const t = await Es();
2682
+ const t = await Ls();
2680
2683
  t && this.$emit("attach", t);
2681
2684
  },
2682
2685
  async startRecording() {
2683
2686
  if (this.recording || this.disabled) return;
2684
2687
  this.recordingElapsed = 0;
2685
- const t = await Ls({
2688
+ const t = await Fs({
2686
2689
  onstart: () => {
2687
2690
  this.recording = !0;
2688
2691
  },
@@ -2707,33 +2710,33 @@ const Rs = [
2707
2710
  }
2708
2711
  }
2709
2712
  }
2710
- }, Ds = { class: "wm-compose-wrap" }, Ns = {
2713
+ }, js = { class: "wm-compose-wrap" }, Us = {
2711
2714
  key: 0,
2712
2715
  class: "wm-rec"
2713
- }, js = { class: "wm-rec__lbl" }, Us = {
2716
+ }, Ps = { class: "wm-rec__lbl" }, Hs = {
2714
2717
  key: 1,
2715
2718
  class: "wm-compose__menu",
2716
2719
  role: "menu"
2717
- }, Ps = ["disabled", "onClick"], Hs = { class: "wm-compose__menuIcon" }, zs = {
2720
+ }, zs = ["disabled", "onClick"], Vs = { class: "wm-compose__menuIcon" }, qs = {
2718
2721
  viewBox: "0 0 24 24",
2719
2722
  width: "14",
2720
2723
  height: "14",
2721
2724
  "aria-hidden": "true"
2722
- }, Vs = ["d"], qs = ["placeholder", "disabled"], Ws = { class: "wm-compose__actions" }, Ks = ["title", "aria-label", "disabled"], Gs = ["disabled"];
2723
- function Ys(t, e, n, a, r, s) {
2724
- return l(), c("div", Ds, [
2725
- r.recording ? (l(), c("div", Ns, [
2725
+ }, Ws = ["d"], Ks = ["placeholder", "disabled"], Gs = { class: "wm-compose__actions" }, Ys = ["title", "aria-label", "disabled"], Js = ["disabled"];
2726
+ function Xs(t, e, n, a, r, s) {
2727
+ return l(), c("div", js, [
2728
+ r.recording ? (l(), c("div", Us, [
2726
2729
  e[8] || (e[8] = i("span", {
2727
2730
  class: "wm-rec__dot",
2728
2731
  "aria-hidden": "true"
2729
2732
  }, null, -1)),
2730
- i("span", js, "Enregistrement · " + b(s.recordingElapsedLabel), 1),
2733
+ i("span", Ps, "Enregistrement · " + b(s.recordingElapsedLabel), 1),
2731
2734
  i("button", {
2732
2735
  type: "button",
2733
2736
  class: "wm-rec__stop",
2734
2737
  onClick: e[0] || (e[0] = (...o) => s.stopRecording && s.stopRecording(...o))
2735
2738
  }, "Arrêter")
2736
- ])) : y("", !0),
2739
+ ])) : g("", !0),
2737
2740
  i("form", {
2738
2741
  class: B(["wm-compose", { "has-attach": r.attachOpen }]),
2739
2742
  onSubmit: e[7] || (e[7] = X((...o) => s.onSubmit && s.onSubmit(...o), ["prevent"]))
@@ -2749,8 +2752,8 @@ function Ys(t, e, n, a, r, s) {
2749
2752
  key: 0,
2750
2753
  class: "wm-compose__overlay",
2751
2754
  onClick: e[2] || (e[2] = (o) => r.attachOpen = !1)
2752
- })) : y("", !0),
2753
- r.attachOpen ? (l(), c("div", Us, [
2755
+ })) : g("", !0),
2756
+ r.attachOpen ? (l(), c("div", Hs, [
2754
2757
  (l(!0), c(T, null, D(s.attachItems, (o) => (l(), c("button", {
2755
2758
  key: o.action,
2756
2759
  type: "button",
@@ -2758,8 +2761,8 @@ function Ys(t, e, n, a, r, s) {
2758
2761
  disabled: o.disabled,
2759
2762
  onClick: (d) => s.onAttachAction(o.action)
2760
2763
  }, [
2761
- i("span", Hs, [
2762
- (l(), c("svg", zs, [
2764
+ i("span", Vs, [
2765
+ (l(), c("svg", qs, [
2763
2766
  i("path", {
2764
2767
  d: o.path,
2765
2768
  stroke: "currentColor",
@@ -2767,12 +2770,12 @@ function Ys(t, e, n, a, r, s) {
2767
2770
  "stroke-linecap": "round",
2768
2771
  "stroke-linejoin": "round",
2769
2772
  fill: "none"
2770
- }, null, 8, Vs)
2773
+ }, null, 8, Ws)
2771
2774
  ]))
2772
2775
  ]),
2773
2776
  i("span", null, b(o.label), 1)
2774
- ], 8, Ps))), 128))
2775
- ])) : y("", !0),
2777
+ ], 8, zs))), 128))
2778
+ ])) : g("", !0),
2776
2779
  q(i("textarea", {
2777
2780
  ref: "inputEl",
2778
2781
  "onUpdate:modelValue": e[3] || (e[3] = (o) => r.local = o),
@@ -2782,10 +2785,10 @@ function Ys(t, e, n, a, r, s) {
2782
2785
  disabled: n.disabled,
2783
2786
  onKeydown: e[4] || (e[4] = (...o) => s.onKeydown && s.onKeydown(...o)),
2784
2787
  onInput: e[5] || (e[5] = (...o) => s.autosize && s.autosize(...o))
2785
- }, null, 40, qs), [
2788
+ }, null, 40, Ks), [
2786
2789
  [J, r.local]
2787
2790
  ]),
2788
- i("div", Ws, [
2791
+ i("div", Gs, [
2789
2792
  i("button", {
2790
2793
  type: "button",
2791
2794
  class: B(["wm-compose__icon", { "is-open": r.attachOpen }]),
@@ -2807,7 +2810,7 @@ function Ys(t, e, n, a, r, s) {
2807
2810
  }, [
2808
2811
  i("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" })
2809
2812
  ], -1)
2810
- ])], 10, Ks),
2813
+ ])], 10, Ys),
2811
2814
  i("button", {
2812
2815
  type: "submit",
2813
2816
  class: B(["wm-compose__send", { "is-empty": !s.canSend }]),
@@ -2827,12 +2830,12 @@ function Ys(t, e, n, a, r, s) {
2827
2830
  }, [
2828
2831
  i("path", { d: "M22 2L11 13M22 2l-7 20-4-9-9-4 20-7z" })
2829
2832
  ], -1)
2830
- ])], 10, Gs)
2833
+ ])], 10, Js)
2831
2834
  ])
2832
2835
  ], 34)
2833
2836
  ]);
2834
2837
  }
2835
- const Js = /* @__PURE__ */ E(Fs, [["render", Ys], ["__scopeId", "data-v-14fa9ec0"]]), Xs = {
2838
+ const Qs = /* @__PURE__ */ E(Ns, [["render", Xs], ["__scopeId", "data-v-14fa9ec0"]]), Zs = {
2836
2839
  name: "WmSuggestionChips",
2837
2840
  props: {
2838
2841
  items: { type: Array, default: () => [] },
@@ -2849,8 +2852,8 @@ const Js = /* @__PURE__ */ E(Fs, [["render", Ys], ["__scopeId", "data-v-14fa9ec0
2849
2852
  return this.items.map((t) => (t == null ? void 0 : t.label) || (t == null ? void 0 : t.text) || "").join("§");
2850
2853
  }
2851
2854
  }
2852
- }, Qs = ["onClick"];
2853
- function Zs(t, e, n, a, r, s) {
2855
+ }, er = ["onClick"];
2856
+ function tr(t, e, n, a, r, s) {
2854
2857
  return n.items.length ? (l(), c("div", {
2855
2858
  key: s.batchKey,
2856
2859
  class: "wm-chips"
@@ -2861,10 +2864,10 @@ function Zs(t, e, n, a, r, s) {
2861
2864
  class: "wm-chip",
2862
2865
  style: G({ animationDelay: n.baseDelay + d * n.stepDelay + "ms" }),
2863
2866
  onClick: (v) => t.$emit("select", o)
2864
- }, b(o.label), 13, Qs))), 128))
2865
- ])) : y("", !0);
2867
+ }, b(o.label), 13, er))), 128))
2868
+ ])) : g("", !0);
2866
2869
  }
2867
- const er = /* @__PURE__ */ E(Xs, [["render", Zs], ["__scopeId", "data-v-55aa529d"]]), tr = {
2870
+ const nr = /* @__PURE__ */ E(Zs, [["render", tr], ["__scopeId", "data-v-55aa529d"]]), sr = {
2868
2871
  name: "WmApprovalCard",
2869
2872
  components: { AIAvatar: te },
2870
2873
  props: {
@@ -2897,41 +2900,41 @@ const er = /* @__PURE__ */ E(Xs, [["render", Zs], ["__scopeId", "data-v-55aa529d
2897
2900
  return ((t = this.rejectCallback) == null ? void 0 : t.label) || "Refuser";
2898
2901
  }
2899
2902
  }
2900
- }, nr = { class: "wm-approval" }, sr = { class: "wm-approval__head" }, rr = { class: "wm-approval__icon" }, ir = { class: "wm-approval__main" }, ar = { class: "wm-approval__title" }, or = {
2903
+ }, rr = { class: "wm-approval" }, ir = { class: "wm-approval__head" }, ar = { class: "wm-approval__icon" }, or = { class: "wm-approval__main" }, lr = { class: "wm-approval__title" }, dr = {
2901
2904
  key: 0,
2902
2905
  class: "wm-approval__detail"
2903
- }, lr = { class: "wm-approval__actions" };
2904
- function dr(t, e, n, a, r, s) {
2906
+ }, cr = { class: "wm-approval__actions" };
2907
+ function ur(t, e, n, a, r, s) {
2905
2908
  const o = I("AIAvatar");
2906
- return l(), c("div", nr, [
2907
- i("div", sr, [
2908
- i("div", rr, [
2909
+ return l(), c("div", rr, [
2910
+ i("div", ir, [
2911
+ i("div", ar, [
2909
2912
  K(o, { size: 24 })
2910
2913
  ]),
2911
- i("div", ir, [
2912
- i("div", ar, b(n.action), 1),
2913
- n.detail ? (l(), c("div", or, b(n.detail), 1)) : y("", !0)
2914
+ i("div", or, [
2915
+ i("div", lr, b(n.action), 1),
2916
+ n.detail ? (l(), c("div", dr, b(n.detail), 1)) : g("", !0)
2914
2917
  ])
2915
2918
  ]),
2916
- i("div", lr, [
2919
+ i("div", cr, [
2917
2920
  s.rejectId ? (l(), c("button", {
2918
2921
  key: 0,
2919
2922
  type: "button",
2920
2923
  class: "wm-approval__btn wm-approval__btn--neutral",
2921
2924
  onClick: e[0] || (e[0] = (d) => t.$emit("callback", s.rejectId))
2922
- }, b(s.rejectLabel), 1)) : y("", !0),
2925
+ }, b(s.rejectLabel), 1)) : g("", !0),
2923
2926
  s.approveId ? (l(), c("button", {
2924
2927
  key: 1,
2925
2928
  type: "button",
2926
2929
  class: "wm-approval__btn wm-approval__btn--primary",
2927
2930
  onClick: e[1] || (e[1] = (d) => t.$emit("callback", s.approveId))
2928
- }, b(s.approveLabel), 1)) : y("", !0)
2931
+ }, b(s.approveLabel), 1)) : g("", !0)
2929
2932
  ])
2930
2933
  ]);
2931
2934
  }
2932
- const cr = /* @__PURE__ */ E(tr, [["render", dr], ["__scopeId", "data-v-b1be139c"]]);
2933
- let ve = 0;
2934
- const ur = /* @__PURE__ */ new Set([
2935
+ const hr = /* @__PURE__ */ E(sr, [["render", ur], ["__scopeId", "data-v-b1be139c"]]);
2936
+ let ge = 0;
2937
+ const mr = /* @__PURE__ */ new Set([
2935
2938
  "text",
2936
2939
  "textarea",
2937
2940
  "number",
@@ -2939,7 +2942,7 @@ const ur = /* @__PURE__ */ new Set([
2939
2942
  "select",
2940
2943
  "multiselect",
2941
2944
  "date"
2942
- ]), hr = {
2945
+ ]), fr = {
2943
2946
  name: "WmFormCard",
2944
2947
  components: { AIAvatar: te },
2945
2948
  props: {
@@ -2949,8 +2952,8 @@ const ur = /* @__PURE__ */ new Set([
2949
2952
  },
2950
2953
  emits: ["submit"],
2951
2954
  data() {
2952
- return ve += 1, {
2953
- _uid: ve,
2955
+ return ge += 1, {
2956
+ _uid: ge,
2954
2957
  values: {},
2955
2958
  busy: !1,
2956
2959
  error: ""
@@ -2962,7 +2965,7 @@ const ur = /* @__PURE__ */ new Set([
2962
2965
  // douteux.
2963
2966
  normalizedFields() {
2964
2967
  var e;
2965
- return (Array.isArray((e = this.form) == null ? void 0 : e.fields) ? this.form.fields : []).filter((n) => !(!(n != null && n.key) || !(n != null && n.label) || !ur.has(n == null ? void 0 : n.type) || (n.type === "select" || n.type === "multiselect") && (!Array.isArray(n.options) || n.options.length === 0)));
2968
+ return (Array.isArray((e = this.form) == null ? void 0 : e.fields) ? this.form.fields : []).filter((n) => !(!(n != null && n.key) || !(n != null && n.label) || !mr.has(n == null ? void 0 : n.type) || (n.type === "select" || n.type === "multiselect") && (!Array.isArray(n.options) || n.options.length === 0)));
2966
2969
  }
2967
2970
  },
2968
2971
  created() {
@@ -3013,43 +3016,43 @@ const ur = /* @__PURE__ */ new Set([
3013
3016
  }
3014
3017
  }
3015
3018
  }
3016
- }, mr = { class: "wm-form" }, fr = { class: "wm-form__head" }, _r = { class: "wm-form__icon" }, pr = { class: "wm-form__main" }, vr = { class: "wm-form__title" }, gr = {
3019
+ }, _r = { class: "wm-form" }, pr = { class: "wm-form__head" }, vr = { class: "wm-form__icon" }, gr = { class: "wm-form__main" }, yr = { class: "wm-form__title" }, wr = {
3017
3020
  key: 0,
3018
3021
  class: "wm-form__detail"
3019
- }, yr = ["for"], wr = {
3022
+ }, br = ["for"], kr = {
3020
3023
  key: 0,
3021
3024
  class: "wm-form__req",
3022
3025
  "aria-hidden": "true"
3023
- }, br = ["id", "onUpdate:modelValue", "placeholder", "required", "disabled"], kr = ["id", "onUpdate:modelValue", "placeholder", "required", "disabled"], Cr = ["id", "onUpdate:modelValue", "placeholder", "required", "disabled"], Ar = ["id", "onUpdate:modelValue", "required", "disabled"], Sr = {
3026
+ }, Cr = ["id", "onUpdate:modelValue", "placeholder", "required", "disabled"], Ar = ["id", "onUpdate:modelValue", "placeholder", "required", "disabled"], Sr = ["id", "onUpdate:modelValue", "placeholder", "required", "disabled"], xr = ["id", "onUpdate:modelValue", "required", "disabled"], Tr = {
3024
3027
  key: 4,
3025
3028
  class: "wm-form__bool"
3026
- }, xr = ["id", "onUpdate:modelValue", "disabled"], Tr = ["id", "onUpdate:modelValue", "required", "disabled"], Mr = {
3029
+ }, Mr = ["id", "onUpdate:modelValue", "disabled"], Or = ["id", "onUpdate:modelValue", "required", "disabled"], Ir = {
3027
3030
  value: "",
3028
3031
  disabled: ""
3029
- }, Or = ["value"], Ir = {
3032
+ }, Br = ["value"], Er = {
3030
3033
  key: 6,
3031
3034
  class: "wm-form__multi"
3032
- }, Br = ["value", "checked", "disabled", "onChange"], Er = {
3035
+ }, $r = ["value", "checked", "disabled", "onChange"], Lr = {
3033
3036
  key: 0,
3034
3037
  class: "wm-form__err"
3035
- }, $r = ["disabled"], Lr = {
3038
+ }, Rr = ["disabled"], Fr = {
3036
3039
  key: 0,
3037
3040
  class: "wm-form__spinner",
3038
3041
  "aria-hidden": "true"
3039
- }, Rr = {
3042
+ }, Dr = {
3040
3043
  key: 2,
3041
3044
  class: "wm-form__doneLbl"
3042
3045
  };
3043
- function Fr(t, e, n, a, r, s) {
3046
+ function Nr(t, e, n, a, r, s) {
3044
3047
  const o = I("AIAvatar");
3045
- return l(), c("div", mr, [
3046
- i("div", fr, [
3047
- i("div", _r, [
3048
+ return l(), c("div", _r, [
3049
+ i("div", pr, [
3050
+ i("div", vr, [
3048
3051
  K(o, { size: 24 })
3049
3052
  ]),
3050
- i("div", pr, [
3051
- i("div", vr, b(n.form.title || "Formulaire"), 1),
3052
- n.form.description ? (l(), c("div", gr, b(n.form.description), 1)) : y("", !0)
3053
+ i("div", gr, [
3054
+ i("div", yr, b(n.form.title || "Formulaire"), 1),
3055
+ n.form.description ? (l(), c("div", wr, b(n.form.description), 1)) : g("", !0)
3053
3056
  ])
3054
3057
  ]),
3055
3058
  i("form", {
@@ -3065,8 +3068,8 @@ function Fr(t, e, n, a, r, s) {
3065
3068
  class: "wm-form__label"
3066
3069
  }, [
3067
3070
  de(b(d.label), 1),
3068
- d.required ? (l(), c("span", wr, "*")) : y("", !0)
3069
- ], 8, yr),
3071
+ d.required ? (l(), c("span", kr, "*")) : g("", !0)
3072
+ ], 8, br),
3070
3073
  d.type === "text" ? q((l(), c("input", {
3071
3074
  key: 0,
3072
3075
  id: `wm-f-${r._uid}-${d.key}`,
@@ -3076,7 +3079,7 @@ function Fr(t, e, n, a, r, s) {
3076
3079
  placeholder: d.placeholder || "",
3077
3080
  required: d.required,
3078
3081
  disabled: n.readOnly || r.busy
3079
- }, null, 8, br)), [
3082
+ }, null, 8, Cr)), [
3080
3083
  [J, r.values[d.key]]
3081
3084
  ]) : d.type === "textarea" ? q((l(), c("textarea", {
3082
3085
  key: 1,
@@ -3087,7 +3090,7 @@ function Fr(t, e, n, a, r, s) {
3087
3090
  placeholder: d.placeholder || "",
3088
3091
  required: d.required,
3089
3092
  disabled: n.readOnly || r.busy
3090
- }, null, 8, kr)), [
3093
+ }, null, 8, Ar)), [
3091
3094
  [J, r.values[d.key]]
3092
3095
  ]) : d.type === "number" ? q((l(), c("input", {
3093
3096
  key: 2,
@@ -3098,7 +3101,7 @@ function Fr(t, e, n, a, r, s) {
3098
3101
  placeholder: d.placeholder || "",
3099
3102
  required: d.required,
3100
3103
  disabled: n.readOnly || r.busy
3101
- }, null, 8, Cr)), [
3104
+ }, null, 8, Sr)), [
3102
3105
  [
3103
3106
  J,
3104
3107
  r.values[d.key],
@@ -3113,16 +3116,16 @@ function Fr(t, e, n, a, r, s) {
3113
3116
  class: "wm-form__input",
3114
3117
  required: d.required,
3115
3118
  disabled: n.readOnly || r.busy
3116
- }, null, 8, Ar)), [
3119
+ }, null, 8, xr)), [
3117
3120
  [J, r.values[d.key]]
3118
- ]) : d.type === "boolean" ? (l(), c("label", Sr, [
3121
+ ]) : d.type === "boolean" ? (l(), c("label", Tr, [
3119
3122
  q(i("input", {
3120
3123
  id: `wm-f-${r._uid}-${d.key}`,
3121
3124
  "onUpdate:modelValue": (v) => r.values[d.key] = v,
3122
3125
  type: "checkbox",
3123
3126
  disabled: n.readOnly || r.busy
3124
- }, null, 8, xr), [
3125
- [Oe, r.values[d.key]]
3127
+ }, null, 8, Mr), [
3128
+ [Ie, r.values[d.key]]
3126
3129
  ]),
3127
3130
  i("span", null, b(d.placeholder || "Oui"), 1)
3128
3131
  ])) : d.type === "select" ? q((l(), c("select", {
@@ -3133,14 +3136,14 @@ function Fr(t, e, n, a, r, s) {
3133
3136
  required: d.required,
3134
3137
  disabled: n.readOnly || r.busy
3135
3138
  }, [
3136
- i("option", Mr, b(d.placeholder || "Choisir…"), 1),
3139
+ i("option", Ir, b(d.placeholder || "Choisir…"), 1),
3137
3140
  (l(!0), c(T, null, D(d.options, (v) => (l(), c("option", {
3138
3141
  key: v.value,
3139
3142
  value: v.value
3140
- }, b(v.label), 9, Or))), 128))
3141
- ], 8, Tr)), [
3142
- [Ie, r.values[d.key]]
3143
- ]) : d.type === "multiselect" ? (l(), c("div", Ir, [
3143
+ }, b(v.label), 9, Br))), 128))
3144
+ ], 8, Or)), [
3145
+ [Be, r.values[d.key]]
3146
+ ]) : d.type === "multiselect" ? (l(), c("div", Er, [
3144
3147
  (l(!0), c(T, null, D(d.options, (v) => (l(), c("label", {
3145
3148
  key: v.value,
3146
3149
  class: "wm-form__multiItem"
@@ -3151,25 +3154,25 @@ function Fr(t, e, n, a, r, s) {
3151
3154
  checked: Array.isArray(r.values[d.key]) && r.values[d.key].includes(v.value),
3152
3155
  disabled: n.readOnly || r.busy,
3153
3156
  onChange: (k) => s.toggleMulti(d.key, v.value, k.target.checked)
3154
- }, null, 40, Br),
3157
+ }, null, 40, $r),
3155
3158
  i("span", null, b(v.label), 1)
3156
3159
  ]))), 128))
3157
- ])) : y("", !0)
3160
+ ])) : g("", !0)
3158
3161
  ]))), 128)),
3159
- r.error ? (l(), c("div", Er, b(r.error), 1)) : y("", !0),
3160
- n.readOnly ? (l(), c("div", Rr, "Réponse envoyée")) : (l(), c("button", {
3162
+ r.error ? (l(), c("div", Lr, b(r.error), 1)) : g("", !0),
3163
+ n.readOnly ? (l(), c("div", Dr, "Réponse envoyée")) : (l(), c("button", {
3161
3164
  key: 1,
3162
3165
  type: "submit",
3163
3166
  class: "wm-form__submit",
3164
3167
  disabled: r.busy
3165
3168
  }, [
3166
- r.busy ? (l(), c("span", Lr)) : y("", !0),
3169
+ r.busy ? (l(), c("span", Fr)) : g("", !0),
3167
3170
  i("span", null, b(r.busy ? "Envoi…" : n.form.submit_label || "Envoyer"), 1)
3168
- ], 8, $r))
3171
+ ], 8, Rr))
3169
3172
  ], 32)
3170
3173
  ]);
3171
3174
  }
3172
- const Dr = /* @__PURE__ */ E(hr, [["render", Fr], ["__scopeId", "data-v-64b40f76"]]), Nr = {
3175
+ const jr = /* @__PURE__ */ E(fr, [["render", Nr], ["__scopeId", "data-v-64b40f76"]]), Ur = {
3173
3176
  name: "WmFeedback",
3174
3177
  props: {
3175
3178
  busy: { type: Boolean, default: !1 },
@@ -3193,43 +3196,43 @@ const Dr = /* @__PURE__ */ E(hr, [["render", Fr], ["__scopeId", "data-v-64b40f76
3193
3196
  !this.sel || this.busy || this.$emit("submit", { rating: this.sel });
3194
3197
  }
3195
3198
  }
3196
- }, jr = { class: "wm-fb" }, Ur = { class: "wm-fb__row" }, Pr = ["onClick"], Hr = { class: "wm-fb__emoji" }, zr = { class: "wm-fb__label" }, Vr = ["disabled"], qr = {
3199
+ }, Pr = { class: "wm-fb" }, Hr = { class: "wm-fb__row" }, zr = ["onClick"], Vr = { class: "wm-fb__emoji" }, qr = { class: "wm-fb__label" }, Wr = ["disabled"], Kr = {
3197
3200
  key: 1,
3198
3201
  class: "wm-fb__done"
3199
3202
  };
3200
- function Wr(t, e, n, a, r, s) {
3201
- return l(), c("div", jr, [
3202
- n.done ? (l(), c("div", qr, [...e[3] || (e[3] = [
3203
+ function Gr(t, e, n, a, r, s) {
3204
+ return l(), c("div", Pr, [
3205
+ n.done ? (l(), c("div", Kr, [...e[3] || (e[3] = [
3203
3206
  he('<div class="wm-fb__check" data-v-6f45ff3b><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="#fff" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" data-v-6f45ff3b><path d="M20 6L9 17l-5-5" data-v-6f45ff3b></path></svg></div><div class="wm-fb__doneTitle" data-v-6f45ff3b>Merci pour votre retour !</div><div class="wm-fb__doneSub" data-v-6f45ff3b>Votre avis a bien été pris en compte.</div>', 3)
3204
3207
  ])])) : (l(), c(T, { key: 0 }, [
3205
3208
  e[1] || (e[1] = i("div", { class: "wm-fb__title" }, "Comment s'est passée cette conversation ?", -1)),
3206
3209
  e[2] || (e[2] = i("div", { class: "wm-fb__sub" }, "Votre avis nous aide à améliorer l'assistant.", -1)),
3207
- i("div", Ur, [
3210
+ i("div", Hr, [
3208
3211
  (l(!0), c(T, null, D(r.options, (o) => (l(), c("button", {
3209
3212
  key: o.v,
3210
3213
  type: "button",
3211
3214
  class: B(["wm-fb__opt", { "is-selected": r.sel === o.v }]),
3212
3215
  onClick: (d) => r.sel = o.v
3213
3216
  }, [
3214
- i("span", Hr, b(o.e), 1),
3215
- i("span", zr, b(o.l), 1)
3216
- ], 10, Pr))), 128))
3217
+ i("span", Vr, b(o.e), 1),
3218
+ i("span", qr, b(o.l), 1)
3219
+ ], 10, zr))), 128))
3217
3220
  ]),
3218
3221
  i("button", {
3219
3222
  type: "button",
3220
3223
  class: "wm-fb__send",
3221
3224
  disabled: !r.sel || n.busy,
3222
3225
  onClick: e[0] || (e[0] = (...o) => s.onSend && s.onSend(...o))
3223
- }, b(n.busy ? "Envoi…" : "Envoyer mon avis"), 9, Vr)
3226
+ }, b(n.busy ? "Envoi…" : "Envoyer mon avis"), 9, Wr)
3224
3227
  ], 64))
3225
3228
  ]);
3226
3229
  }
3227
- const Kr = /* @__PURE__ */ E(Nr, [["render", Wr], ["__scopeId", "data-v-6f45ff3b"]]);
3228
- function Gr(t) {
3230
+ const Yr = /* @__PURE__ */ E(Ur, [["render", Gr], ["__scopeId", "data-v-6f45ff3b"]]);
3231
+ function Jr(t) {
3229
3232
  const e = new Date(t);
3230
3233
  return e.setHours(0, 0, 0, 0), e;
3231
3234
  }
3232
- const Yr = {
3235
+ const Xr = {
3233
3236
  name: "WmHistoryDrawer",
3234
3237
  props: {
3235
3238
  conversations: { type: Array, default: () => [] },
@@ -3263,7 +3266,7 @@ const Yr = {
3263
3266
  ) : this.normalized;
3264
3267
  },
3265
3268
  groups() {
3266
- const e = Gr(/* @__PURE__ */ new Date()).getTime(), n = e - 6 * 864e5, a = [], r = [], s = [];
3269
+ const e = Jr(/* @__PURE__ */ new Date()).getTime(), n = e - 6 * 864e5, a = [], r = [], s = [];
3267
3270
  for (const o of this.filtered) {
3268
3271
  if (!o.stamp) {
3269
3272
  s.push(o);
@@ -3281,29 +3284,29 @@ const Yr = {
3281
3284
  return this.filtered.length > 0;
3282
3285
  }
3283
3286
  }
3284
- }, Jr = { class: "wm-hd" }, Xr = {
3287
+ }, Qr = { class: "wm-hd" }, Zr = {
3285
3288
  class: "wm-hd__panel",
3286
3289
  role: "dialog",
3287
3290
  "aria-label": "Vos discussions"
3288
- }, Qr = { class: "wm-hd__head" }, Zr = { class: "wm-hd__top" }, ei = { class: "wm-hd__search" }, ti = { class: "wm-hd__list" }, ni = {
3291
+ }, ei = { class: "wm-hd__head" }, ti = { class: "wm-hd__top" }, ni = { class: "wm-hd__search" }, si = { class: "wm-hd__list" }, ri = {
3289
3292
  key: 0,
3290
3293
  class: "wm-hd__group"
3291
- }, si = { class: "wm-hd__groupLabel" }, ri = { class: "wm-hd__rows" }, ii = ["onClick"], ai = { class: "wm-hd__rowIcon" }, oi = {
3294
+ }, ii = { class: "wm-hd__groupLabel" }, ai = { class: "wm-hd__rows" }, oi = ["onClick"], li = { class: "wm-hd__rowIcon" }, di = {
3292
3295
  key: 0,
3293
3296
  class: "wm-hd__rowDot",
3294
3297
  "aria-label": "Message non lu"
3295
- }, li = { class: "wm-hd__rowBody" }, di = { class: "wm-hd__rowTop" }, ci = { class: "wm-hd__rowTitle" }, ui = { class: "wm-hd__rowPreview" }, hi = {
3298
+ }, ci = { class: "wm-hd__rowBody" }, ui = { class: "wm-hd__rowTop" }, hi = { class: "wm-hd__rowTitle" }, mi = { class: "wm-hd__rowPreview" }, fi = {
3296
3299
  key: 0,
3297
3300
  class: "wm-hd__empty"
3298
3301
  };
3299
- function mi(t, e, n, a, r, s) {
3300
- return l(), c("div", Jr, [
3302
+ function _i(t, e, n, a, r, s) {
3303
+ return l(), c("div", Qr, [
3301
3304
  i("div", {
3302
3305
  class: "wm-hd__scrim",
3303
3306
  onClick: e[0] || (e[0] = (o) => t.$emit("close"))
3304
3307
  }),
3305
- i("aside", Xr, [
3306
- i("div", Qr, [
3308
+ i("aside", Zr, [
3309
+ i("div", ei, [
3307
3310
  e[5] || (e[5] = i("div", { class: "wm-hd__heading" }, [
3308
3311
  i("div", { class: "wm-hd__title" }, "Vos discussions"),
3309
3312
  i("div", { class: "wm-hd__sub" }, "Reprenez là où vous en étiez.")
@@ -3329,7 +3332,7 @@ function mi(t, e, n, a, r, s) {
3329
3332
  ], -1)
3330
3333
  ])])
3331
3334
  ]),
3332
- i("div", Zr, [
3335
+ i("div", ti, [
3333
3336
  i("button", {
3334
3337
  type: "button",
3335
3338
  class: "wm-hd__new",
@@ -3352,7 +3355,7 @@ function mi(t, e, n, a, r, s) {
3352
3355
  ], -1),
3353
3356
  i("span", null, "Démarrer un nouveau fil", -1)
3354
3357
  ])]),
3355
- i("div", ei, [
3358
+ i("div", ni, [
3356
3359
  e[7] || (e[7] = i("span", { class: "wm-hd__searchIcon" }, [
3357
3360
  i("svg", {
3358
3361
  width: "12",
@@ -3378,13 +3381,13 @@ function mi(t, e, n, a, r, s) {
3378
3381
  ])
3379
3382
  ])
3380
3383
  ]),
3381
- i("div", ti, [
3384
+ i("div", si, [
3382
3385
  (l(!0), c(T, null, D(s.groups, (o) => (l(), c(T, {
3383
3386
  key: o.key
3384
3387
  }, [
3385
- o.items.length ? (l(), c("div", ni, [
3386
- i("div", si, b(o.label), 1),
3387
- i("div", ri, [
3388
+ o.items.length ? (l(), c("div", ri, [
3389
+ i("div", ii, b(o.label), 1),
3390
+ i("div", ai, [
3388
3391
  (l(!0), c(T, null, D(o.items, (d) => (l(), c("button", {
3389
3392
  key: d.id,
3390
3393
  type: "button",
@@ -3394,7 +3397,7 @@ function mi(t, e, n, a, r, s) {
3394
3397
  }]),
3395
3398
  onClick: (v) => t.$emit("pick", d)
3396
3399
  }, [
3397
- i("div", ai, [
3400
+ i("div", li, [
3398
3401
  e[8] || (e[8] = i("svg", {
3399
3402
  width: "11",
3400
3403
  height: "11",
@@ -3408,24 +3411,24 @@ function mi(t, e, n, a, r, s) {
3408
3411
  opacity: "0.92"
3409
3412
  })
3410
3413
  ], -1)),
3411
- d.unread ? (l(), c("span", oi)) : y("", !0)
3414
+ d.unread ? (l(), c("span", di)) : g("", !0)
3412
3415
  ]),
3413
- i("div", li, [
3414
- i("div", di, [
3415
- i("span", ci, b(d.title), 1)
3416
+ i("div", ci, [
3417
+ i("div", ui, [
3418
+ i("span", hi, b(d.title), 1)
3416
3419
  ]),
3417
- i("div", ui, b(d.preview || "Aucun message"), 1)
3420
+ i("div", mi, b(d.preview || "Aucun message"), 1)
3418
3421
  ])
3419
- ], 10, ii))), 128))
3422
+ ], 10, oi))), 128))
3420
3423
  ])
3421
- ])) : y("", !0)
3424
+ ])) : g("", !0)
3422
3425
  ], 64))), 128)),
3423
- s.hasAny ? y("", !0) : (l(), c("div", hi, " Aucun fil pour le moment. "))
3426
+ s.hasAny ? g("", !0) : (l(), c("div", fi, " Aucun fil pour le moment. "))
3424
3427
  ])
3425
3428
  ])
3426
3429
  ]);
3427
3430
  }
3428
- const fi = /* @__PURE__ */ E(Yr, [["render", mi], ["__scopeId", "data-v-1259e822"]]), _i = {
3431
+ const pi = /* @__PURE__ */ E(Xr, [["render", _i], ["__scopeId", "data-v-1259e822"]]), vi = {
3429
3432
  name: "WmMoreMenu",
3430
3433
  props: {
3431
3434
  canRename: { type: Boolean, default: !0 },
@@ -3451,18 +3454,18 @@ const fi = /* @__PURE__ */ E(Yr, [["render", mi], ["__scopeId", "data-v-1259e822
3451
3454
  this.notifOn = !this.notifOn, this.$emit("notif-toggle", this.notifOn);
3452
3455
  }
3453
3456
  }
3454
- }, pi = { class: "wm-mm" }, vi = {
3457
+ }, gi = { class: "wm-mm" }, yi = {
3455
3458
  class: "wm-mm__pop",
3456
3459
  role: "menu"
3457
- }, gi = { class: "wm-mm__section" }, yi = { class: "wm-mm__section" }, wi = { class: "wm-mm__section" };
3458
- function bi(t, e, n, a, r, s) {
3459
- return l(), c("div", pi, [
3460
+ }, wi = { class: "wm-mm__section" }, bi = { class: "wm-mm__section" }, ki = { class: "wm-mm__section" };
3461
+ function Ci(t, e, n, a, r, s) {
3462
+ return l(), c("div", gi, [
3460
3463
  i("div", {
3461
3464
  class: "wm-mm__scrim",
3462
3465
  onClick: e[0] || (e[0] = (o) => t.$emit("close"))
3463
3466
  }),
3464
- i("div", vi, [
3465
- i("div", gi, [
3467
+ i("div", yi, [
3468
+ i("div", wi, [
3466
3469
  i("button", {
3467
3470
  type: "button",
3468
3471
  class: "wm-mm__item",
@@ -3492,7 +3495,7 @@ function bi(t, e, n, a, r, s) {
3492
3495
  onClick: e[2] || (e[2] = (o) => s.emit("rename"))
3493
3496
  }, [...e[8] || (e[8] = [
3494
3497
  he('<span class="wm-mm__icon" data-v-3181ad1b><svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" data-v-3181ad1b><path d="M12 20h9" data-v-3181ad1b></path><path d="M16.5 3.5a2.121 2.121 0 0 1 3 3L7 19l-4 1 1-4 12.5-12.5z" data-v-3181ad1b></path></svg></span><span class="wm-mm__label" data-v-3181ad1b>Modifier le titre</span>', 2)
3495
- ])])) : y("", !0),
3498
+ ])])) : g("", !0),
3496
3499
  n.canExport ? (l(), c("button", {
3497
3500
  key: 1,
3498
3501
  type: "button",
@@ -3500,10 +3503,10 @@ function bi(t, e, n, a, r, s) {
3500
3503
  onClick: e[3] || (e[3] = (o) => s.emit("export"))
3501
3504
  }, [...e[9] || (e[9] = [
3502
3505
  he('<span class="wm-mm__icon" data-v-3181ad1b><svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" data-v-3181ad1b><path d="M4 12v8a2 2 0 002 2h12a2 2 0 002-2v-8M16 6l-4-4-4 4M12 2v13" data-v-3181ad1b></path></svg></span><span class="wm-mm__label" data-v-3181ad1b>Exporter la transcription</span><span class="wm-mm__hint" data-v-3181ad1b>.txt</span>', 3)
3503
- ])])) : y("", !0)
3506
+ ])])) : g("", !0)
3504
3507
  ]),
3505
3508
  e[15] || (e[15] = i("div", { class: "wm-mm__sep" }, null, -1)),
3506
- i("div", yi, [
3509
+ i("div", bi, [
3507
3510
  i("button", {
3508
3511
  type: "button",
3509
3512
  class: "wm-mm__item",
@@ -3533,7 +3536,7 @@ function bi(t, e, n, a, r, s) {
3533
3536
  ])
3534
3537
  ]),
3535
3538
  e[16] || (e[16] = i("div", { class: "wm-mm__sep" }, null, -1)),
3536
- i("div", wi, [
3539
+ i("div", ki, [
3537
3540
  n.statusUrl ? (l(), c("button", {
3538
3541
  key: 0,
3539
3542
  type: "button",
@@ -3556,7 +3559,7 @@ function bi(t, e, n, a, r, s) {
3556
3559
  ])
3557
3560
  ], -1),
3558
3561
  i("span", { class: "wm-mm__label" }, "Statut des services", -1)
3559
- ])])) : y("", !0),
3562
+ ])])) : g("", !0),
3560
3563
  n.helpUrl ? (l(), c("button", {
3561
3564
  key: 1,
3562
3565
  type: "button",
@@ -3579,12 +3582,12 @@ function bi(t, e, n, a, r, s) {
3579
3582
  ])
3580
3583
  ], -1),
3581
3584
  i("span", { class: "wm-mm__label" }, "Centre d'aide", -1)
3582
- ])])) : y("", !0)
3585
+ ])])) : g("", !0)
3583
3586
  ])
3584
3587
  ])
3585
3588
  ]);
3586
3589
  }
3587
- const ki = /* @__PURE__ */ E(_i, [["render", bi], ["__scopeId", "data-v-3181ad1b"]]), Ci = {
3590
+ const Ai = /* @__PURE__ */ E(vi, [["render", Ci], ["__scopeId", "data-v-3181ad1b"]]), Si = {
3588
3591
  name: "WmRenameDialog",
3589
3592
  props: {
3590
3593
  title: { type: String, default: "Modifier le titre" },
@@ -3618,20 +3621,20 @@ const ki = /* @__PURE__ */ E(_i, [["render", bi], ["__scopeId", "data-v-3181ad1b
3618
3621
  this.canSubmit && this.$emit("submit", this.value.trim());
3619
3622
  }
3620
3623
  }
3621
- }, Ai = { class: "wm-dialog" }, Si = {
3624
+ }, xi = { class: "wm-dialog" }, Ti = {
3622
3625
  class: "wm-dialog__card",
3623
3626
  role: "dialog",
3624
3627
  "aria-modal": "true"
3625
- }, xi = { class: "wm-dialog__head" }, Ti = { class: "wm-dialog__title" }, Mi = { class: "wm-dialog__body" }, Oi = ["placeholder"], Ii = { class: "wm-dialog__actions" }, Bi = ["disabled"];
3626
- function Ei(t, e, n, a, r, s) {
3627
- return l(), c("div", Ai, [
3628
+ }, Mi = { class: "wm-dialog__head" }, Oi = { class: "wm-dialog__title" }, Ii = { class: "wm-dialog__body" }, Bi = ["placeholder"], Ei = { class: "wm-dialog__actions" }, $i = ["disabled"];
3629
+ function Li(t, e, n, a, r, s) {
3630
+ return l(), c("div", xi, [
3628
3631
  i("div", {
3629
3632
  class: "wm-dialog__scrim",
3630
3633
  onClick: e[0] || (e[0] = (o) => t.$emit("close"))
3631
3634
  }),
3632
- i("div", Si, [
3633
- i("div", xi, [
3634
- i("div", Ti, b(n.title), 1),
3635
+ i("div", Ti, [
3636
+ i("div", Mi, [
3637
+ i("div", Oi, b(n.title), 1),
3635
3638
  i("button", {
3636
3639
  type: "button",
3637
3640
  class: "wm-dialog__close",
@@ -3653,7 +3656,7 @@ function Ei(t, e, n, a, r, s) {
3653
3656
  ], -1)
3654
3657
  ])])
3655
3658
  ]),
3656
- i("div", Mi, [
3659
+ i("div", Ii, [
3657
3660
  q(i("input", {
3658
3661
  ref: "input",
3659
3662
  "onUpdate:modelValue": e[2] || (e[2] = (o) => r.value = o),
@@ -3665,11 +3668,11 @@ function Ei(t, e, n, a, r, s) {
3665
3668
  e[3] || (e[3] = ae(X((...o) => s.onSubmit && s.onSubmit(...o), ["prevent"]), ["enter"])),
3666
3669
  e[4] || (e[4] = ae(X((o) => t.$emit("close"), ["prevent"]), ["esc"]))
3667
3670
  ]
3668
- }, null, 40, Oi), [
3671
+ }, null, 40, Bi), [
3669
3672
  [J, r.value]
3670
3673
  ])
3671
3674
  ]),
3672
- i("div", Ii, [
3675
+ i("div", Ei, [
3673
3676
  i("button", {
3674
3677
  type: "button",
3675
3678
  class: "wm-dialog__btn",
@@ -3680,18 +3683,18 @@ function Ei(t, e, n, a, r, s) {
3680
3683
  class: "wm-dialog__btn wm-dialog__btn--primary",
3681
3684
  disabled: !s.canSubmit,
3682
3685
  onClick: e[6] || (e[6] = (...o) => s.onSubmit && s.onSubmit(...o))
3683
- }, "Enregistrer", 8, Bi)
3686
+ }, "Enregistrer", 8, $i)
3684
3687
  ])
3685
3688
  ])
3686
3689
  ]);
3687
3690
  }
3688
- const $i = /* @__PURE__ */ E(Ci, [["render", Ei], ["__scopeId", "data-v-4f4b37c9"]]), ge = "ww-messenger-tokens";
3691
+ const Ri = /* @__PURE__ */ E(Si, [["render", Li], ["__scopeId", "data-v-4f4b37c9"]]), ye = "ww-messenger-tokens";
3689
3692
  function ie(t) {
3690
3693
  var n;
3691
3694
  const e = (n = t == null ? void 0 : t.author) == null ? void 0 : n.type;
3692
3695
  return e === "agent_ia" || e === "agent_human";
3693
3696
  }
3694
- function Li(t, e) {
3697
+ function Fi(t, e) {
3695
3698
  if (!t || !e) return "";
3696
3699
  const n = Array.isArray(t.fields) ? t.fields : [], a = [];
3697
3700
  for (const r of n) {
@@ -3714,7 +3717,7 @@ function le(t, e) {
3714
3717
  const n = t.options.find((a) => (a == null ? void 0 : a.value) === e);
3715
3718
  return (n == null ? void 0 : n.label) || e;
3716
3719
  }
3717
- function Ri(t, e) {
3720
+ function Di(t, e) {
3718
3721
  const n = [], a = Array.isArray(t == null ? void 0 : t.fields) ? t.fields : [];
3719
3722
  for (const r of a) {
3720
3723
  if (!(r != null && r.key) || !(r != null && r.label)) continue;
@@ -3736,21 +3739,21 @@ function Ri(t, e) {
3736
3739
  }
3737
3740
  };
3738
3741
  }
3739
- const Fi = 450, Di = 50, Ni = 900, ji = 12e3, Ui = 300, Pi = {
3742
+ const Ni = 450, ji = 50, Ui = 900, Pi = 12e3, Hi = 300, zi = {
3740
3743
  name: "Messenger",
3741
3744
  components: {
3742
- Launcher: Ke,
3743
- Header: yt,
3744
- Onboarding: Pt,
3745
- MessageList: Is,
3746
- Composer: Js,
3747
- SuggestionChips: er,
3748
- ApprovalCard: cr,
3749
- FormCard: Dr,
3750
- Feedback: Kr,
3751
- HistoryDrawer: fi,
3752
- MoreMenu: ki,
3753
- RenameDialog: $i
3745
+ Launcher: Ge,
3746
+ Header: wt,
3747
+ Onboarding: zt,
3748
+ MessageList: Es,
3749
+ Composer: Qs,
3750
+ SuggestionChips: nr,
3751
+ ApprovalCard: hr,
3752
+ FormCard: jr,
3753
+ Feedback: Yr,
3754
+ HistoryDrawer: pi,
3755
+ MoreMenu: Ai,
3756
+ RenameDialog: Ri
3754
3757
  },
3755
3758
  // Make signAttachment available to deep children (AttachmentPreview)
3756
3759
  // without prop drilling. The store may not exist yet at provide-time
@@ -3766,7 +3769,7 @@ const Fi = 450, Di = 50, Ni = 900, ji = 12e3, Ui = 300, Pi = {
3766
3769
  },
3767
3770
  props: {
3768
3771
  // Hardcoded server default (overridable for staging/dev).
3769
- baseUrl: { type: String, default: Pe },
3772
+ baseUrl: { type: String, default: He },
3770
3773
  widgetId: { type: String, default: "" },
3771
3774
  userId: { type: String, default: "" },
3772
3775
  userHash: { type: String, default: "" },
@@ -3940,17 +3943,20 @@ const Fi = 450, Di = 50, Ni = 900, ji = 12e3, Ui = 300, Pi = {
3940
3943
  unreadCount() {
3941
3944
  return this.drawerConversations.filter((t) => t._unread).length;
3942
3945
  },
3943
- // Unread threads, freshest first, trimmed to a handful — surfaced on
3944
- // the onboarding/home screen so the user can jump straight back in.
3945
- unreadThreads() {
3946
+ // Open (non-resolved) threads, freshest first, trimmed to a handful —
3947
+ // surfaced on the onboarding/home screen so the user can jump straight
3948
+ // back into anything in flight. The `unread` flag lets the home screen
3949
+ // badge the ones with unseen agent/human activity.
3950
+ openThreads() {
3946
3951
  var e;
3947
3952
  const t = ((e = this.s) == null ? void 0 : e.messagesByConv) || {};
3948
- return this.drawerConversations.filter((n) => n._unread).map((n) => ({
3953
+ return this.drawerConversations.filter((n) => n.status !== "resolved").map((n) => ({
3949
3954
  id: n.id,
3950
3955
  title: n.name || "Nouvelle conversation",
3951
3956
  preview: n._preview || "Nouveau message",
3957
+ unread: !!n._unread,
3952
3958
  _ts: this.convLastActivity(n, t[n.id] || [])
3953
- })).sort((n, a) => n._ts < a._ts ? 1 : n._ts > a._ts ? -1 : 0).slice(0, 3);
3959
+ })).sort((n, a) => n._ts < a._ts ? 1 : n._ts > a._ts ? -1 : 0).slice(0, 5);
3954
3960
  },
3955
3961
  // The unread thread with the freshest activity — what the étiquette
3956
3962
  // previews. `{ convId, preview, ts }` or null when nothing's unread.
@@ -4172,7 +4178,7 @@ const Fi = 450, Di = 50, Ni = 900, ji = 12e3, Ui = 300, Pi = {
4172
4178
  Number.isNaN(d.getTime()) || (e = d);
4173
4179
  }
4174
4180
  }
4175
- return `Aujourd'hui · ${be(e)}`;
4181
+ return `Aujourd'hui · ${ke(e)}`;
4176
4182
  },
4177
4183
  // Pagination state for the active conversation. Drives the
4178
4184
  // MessageList's scroll-up history loader. Defaults are safe (no
@@ -4300,9 +4306,9 @@ const Fi = 450, Di = 50, Ni = 900, ji = 12e3, Ui = 300, Pi = {
4300
4306
  hasWidgetId: !!this.widgetId,
4301
4307
  hasUserId: !!this.userId,
4302
4308
  hasUserHash: !!this.userHash
4303
- }), typeof document < "u" && !document.getElementById(ge)) {
4309
+ }), typeof document < "u" && !document.getElementById(ye)) {
4304
4310
  const t = document.createElement("style");
4305
- t.id = ge, t.textContent = Ue, document.head.appendChild(t);
4311
+ t.id = ye, t.textContent = Pe, document.head.appendChild(t);
4306
4312
  }
4307
4313
  this.hydrateReadState(), await this.boot(), this.isEmbedded && this.store && await this.open();
4308
4314
  },
@@ -4453,11 +4459,11 @@ const Fi = 450, Di = 50, Ni = 900, ji = 12e3, Ui = 300, Pi = {
4453
4459
  // bounded by MIN/MAX_BETWEEN_MS.
4454
4460
  scheduleReveal(t) {
4455
4461
  const e = Date.now(), n = ((t == null ? void 0 : t.text_md) || "").length, a = Math.min(
4456
- ji,
4457
- Math.max(Ni, n * Di)
4462
+ Pi,
4463
+ Math.max(Ui, n * ji)
4458
4464
  ), s = Math.max(
4459
- e + Fi,
4460
- this.nextRevealAt + Ui
4465
+ e + Ni,
4466
+ this.nextRevealAt + Hi
4461
4467
  ) + a;
4462
4468
  this.nextRevealAt = s;
4463
4469
  const o = Math.max(0, s - e), d = t.id, v = setTimeout(() => {
@@ -4484,12 +4490,12 @@ const Fi = 450, Di = 50, Ni = 900, ji = 12e3, Ui = 300, Pi = {
4484
4490
  baseUrl: this.baseUrl,
4485
4491
  widgetId: this.widgetId,
4486
4492
  userId: this.userId
4487
- }), this.transport = fe(Re({
4493
+ }), this.transport = fe(Fe({
4488
4494
  baseUrl: this.baseUrl,
4489
4495
  widgetId: this.widgetId,
4490
4496
  userId: this.userId,
4491
4497
  userHash: this.userHash
4492
- })), this.store = fe(je(this.transport)), this.hydrateNotifPref(), this.setupNotifications(), await this.store.start(), this.customer && typeof this.customer == "object" && await this.store.applyCustomer(this.customer), console.log("[ww-messenger] boot done", {
4498
+ })), this.store = fe(Ue(this.transport)), this.hydrateNotifPref(), this.setupNotifications(), await this.store.start(), this.customer && typeof this.customer == "object" && await this.store.applyCustomer(this.customer), console.log("[ww-messenger] boot done", {
4493
4499
  ready: this.store.state.ready,
4494
4500
  error: this.store.state.error
4495
4501
  });
@@ -4772,12 +4778,12 @@ const Fi = 450, Di = 50, Ni = 900, ji = 12e3, Ui = 300, Pi = {
4772
4778
  async onFormSubmit({ values: t }) {
4773
4779
  const e = this.pendingForm;
4774
4780
  if (!(e != null && e.form)) return;
4775
- const n = Li(e.form, t);
4781
+ const n = Fi(e.form, t);
4776
4782
  if (!n) return;
4777
4783
  let a = this.currentConv;
4778
4784
  a && (a._draft && (a = await this.ensureRealConv(), !a) || await this.store.send(a.id, n, {
4779
4785
  metadata: {
4780
- artifact: Ri(e.form, t)
4786
+ artifact: Di(e.form, t)
4781
4787
  }
4782
4788
  }));
4783
4789
  },
@@ -4821,28 +4827,28 @@ const Fi = 450, Di = 50, Ni = 900, ji = 12e3, Ui = 300, Pi = {
4821
4827
  }
4822
4828
  }
4823
4829
  }
4824
- }, Hi = {
4830
+ }, Vi = {
4825
4831
  key: 0,
4826
4832
  class: "wm-loading",
4827
4833
  "aria-busy": "true",
4828
4834
  "aria-live": "polite"
4829
- }, zi = {
4835
+ }, qi = {
4830
4836
  key: 0,
4831
4837
  class: "wm-state"
4832
- }, Vi = { class: "wm-state__err" }, qi = { class: "wm-state__errSub" }, Wi = { class: "wm-bottom" }, Ki = {
4838
+ }, Wi = { class: "wm-state__err" }, Ki = { class: "wm-state__errSub" }, Gi = { class: "wm-bottom" }, Yi = {
4833
4839
  key: 0,
4834
4840
  ref: "floatEl",
4835
4841
  class: "wm-float"
4836
- }, Gi = {
4842
+ }, Ji = {
4837
4843
  key: 1,
4838
4844
  class: "wm-actionWait",
4839
4845
  role: "status",
4840
4846
  "aria-live": "polite"
4841
- }, Yi = { class: "wm-actionWait__lbl" }, Ji = {
4847
+ }, Xi = { class: "wm-actionWait__lbl" }, Qi = {
4842
4848
  key: 2,
4843
4849
  class: "wm-attached"
4844
- }, Xi = ["onClick"];
4845
- function Qi(t, e, n, a, r, s) {
4850
+ }, Zi = ["onClick"];
4851
+ function ea(t, e, n, a, r, s) {
4846
4852
  const o = I("Launcher"), d = I("Header"), v = I("Onboarding"), k = I("MessageList"), w = I("ApprovalCard"), S = I("FormCard"), R = I("Feedback"), A = I("SuggestionChips"), U = I("Composer"), x = I("MoreMenu"), j = I("RenameDialog"), P = I("HistoryDrawer");
4847
4853
  return l(), c("div", {
4848
4854
  class: B(["wm-root", `wm-root--${n.displayMode}`])
@@ -4853,7 +4859,7 @@ function Qi(t, e, n, a, r, s) {
4853
4859
  peek: s.launcherPeek,
4854
4860
  onOpen: s.openFromPeek,
4855
4861
  onDismiss: e[0] || (e[0] = (F) => r.labelDismissed = !0)
4856
- }, null, 8, ["unread-count", "peek", "onOpen"])) : y("", !0),
4862
+ }, null, 8, ["unread-count", "peek", "onOpen"])) : g("", !0),
4857
4863
  r.isOpen || s.isEmbedded ? (l(), c("section", {
4858
4864
  key: 1,
4859
4865
  class: B(["wm-panel", `wm-panel--${n.displayMode}`]),
@@ -4861,8 +4867,8 @@ function Qi(t, e, n, a, r, s) {
4861
4867
  role: "dialog",
4862
4868
  "aria-label": "Messenger"
4863
4869
  }, [
4864
- !s.ready && !s.error ? (l(), c("div", Hi, [
4865
- s.isEmbedded ? y("", !0) : (l(), c("button", {
4870
+ !s.ready && !s.error ? (l(), c("div", Vi, [
4871
+ s.isEmbedded ? g("", !0) : (l(), c("button", {
4866
4872
  key: 0,
4867
4873
  type: "button",
4868
4874
  class: "wm-loading__close",
@@ -4903,8 +4909,8 @@ function Qi(t, e, n, a, r, s) {
4903
4909
  onMore: s.toggleMore,
4904
4910
  onClose: s.close
4905
4911
  }, null, 8, ["title", "escalated", "agent-name", "agent-avatar-url", "team-members", "response-label", "show-identity", "show-back", "show-close", "more-active", "onBack", "onMore", "onClose"]),
4906
- s.error ? (l(), c("div", zi, [
4907
- i("div", Vi, [
4912
+ s.error ? (l(), c("div", qi, [
4913
+ i("div", Wi, [
4908
4914
  e[10] || (e[10] = i("div", { class: "wm-state__errIcon" }, [
4909
4915
  i("svg", {
4910
4916
  width: "14",
@@ -4922,7 +4928,7 @@ function Qi(t, e, n, a, r, s) {
4922
4928
  ], -1)),
4923
4929
  i("div", null, [
4924
4930
  e[9] || (e[9] = i("div", { class: "wm-state__errTitle" }, "Connexion impossible", -1)),
4925
- i("div", qi, b(s.error), 1)
4931
+ i("div", Ki, b(s.error), 1)
4926
4932
  ])
4927
4933
  ])
4928
4934
  ])) : s.currentConv ? (l(), c(T, { key: 2 }, [
@@ -4938,8 +4944,8 @@ function Qi(t, e, n, a, r, s) {
4938
4944
  "unread-boundary-ts": r.unreadBoundaryTs,
4939
4945
  onLoadMore: s.onLoadMore
4940
4946
  }, null, 8, ["messages", "streaming-active", "date-label", "conversation-id", "loading-more", "has-more", "unread-anchor-ts", "unread-boundary-ts", "onLoadMore"]),
4941
- i("div", Wi, [
4942
- s.floatVisible ? (l(), c("div", Ki, [
4947
+ i("div", Gi, [
4948
+ s.floatVisible ? (l(), c("div", Yi, [
4943
4949
  s.approvalReady ? (l(), $(w, {
4944
4950
  key: 0,
4945
4951
  action: s.approvalTitle,
@@ -4960,13 +4966,13 @@ function Qi(t, e, n, a, r, s) {
4960
4966
  items: s.suggestions,
4961
4967
  onSelect: s.onSuggestion
4962
4968
  }, null, 8, ["items", "onSelect"]))
4963
- ], 512)) : y("", !0),
4964
- s.actionInFlight ? (l(), c("div", Gi, [
4969
+ ], 512)) : g("", !0),
4970
+ s.actionInFlight ? (l(), c("div", Ji, [
4965
4971
  e[11] || (e[11] = i("span", {
4966
4972
  class: "wm-actionWait__spinner",
4967
4973
  "aria-hidden": "true"
4968
4974
  }, null, -1)),
4969
- i("span", Yi, b(s.actionInFlightName) + " en cours, veuillez patienter…", 1)
4975
+ i("span", Xi, b(s.actionInFlightName) + " en cours, veuillez patienter…", 1)
4970
4976
  ])) : (l(), $(U, {
4971
4977
  key: 2,
4972
4978
  ref: "composer",
@@ -4989,15 +4995,15 @@ function Qi(t, e, n, a, r, s) {
4989
4995
  onClose: e[3] || (e[3] = (F) => r.moreOpen = !1),
4990
4996
  onNotifToggle: s.onNotifToggle,
4991
4997
  onAction: s.onMoreAction
4992
- }, null, 8, ["can-rename", "can-export", "notif-enabled", "status-url", "help-url", "onNotifToggle", "onAction"])) : y("", !0),
4998
+ }, null, 8, ["can-rename", "can-export", "notif-enabled", "status-url", "help-url", "onNotifToggle", "onAction"])) : g("", !0),
4993
4999
  r.renameDialogOpen && s.currentConv && !s.currentConv._draft ? (l(), $(j, {
4994
5000
  key: 1,
4995
5001
  "initial-value": s.currentConv.name || "",
4996
5002
  title: "Modifier le titre de la conversation",
4997
5003
  onClose: e[4] || (e[4] = (F) => r.renameDialogOpen = !1),
4998
5004
  onSubmit: s.onRenameSubmit
4999
- }, null, 8, ["initial-value", "onSubmit"])) : y("", !0),
5000
- r.pendingAttachments.length ? (l(), c("div", Ji, [
5005
+ }, null, 8, ["initial-value", "onSubmit"])) : g("", !0),
5006
+ r.pendingAttachments.length ? (l(), c("div", Qi, [
5001
5007
  (l(!0), c(T, null, D(r.pendingAttachments, (F, H) => (l(), c("div", {
5002
5008
  key: H,
5003
5009
  class: "wm-attached__chip"
@@ -5034,20 +5040,20 @@ function Qi(t, e, n, a, r, s) {
5034
5040
  }, [
5035
5041
  i("path", { d: "M18 6L6 18M6 6l12 12" })
5036
5042
  ], -1)
5037
- ])], 8, Xi)
5043
+ ])], 8, Zi)
5038
5044
  ]))), 128))
5039
- ])) : y("", !0)
5045
+ ])) : g("", !0)
5040
5046
  ], 64)) : (l(), $(v, {
5041
5047
  key: 1,
5042
5048
  "welcome-message": s.widgetWelcomeMessage,
5043
5049
  "agent-name": s.agentName,
5044
5050
  "quick-links": s.quickLinks,
5045
- "unread-threads": s.unreadThreads,
5051
+ "open-threads": s.openThreads,
5046
5052
  busy: r.busy,
5047
5053
  onStart: s.startConv,
5048
5054
  onSelect: s.onQuickLink,
5049
5055
  onResume: s.onDrawerPick
5050
- }, null, 8, ["welcome-message", "agent-name", "quick-links", "unread-threads", "busy", "onStart", "onSelect", "onResume"])),
5056
+ }, null, 8, ["welcome-message", "agent-name", "quick-links", "open-threads", "busy", "onStart", "onSelect", "onResume"])),
5051
5057
  r.historyOpen ? (l(), $(P, {
5052
5058
  key: 3,
5053
5059
  conversations: s.drawerConversations,
@@ -5055,7 +5061,7 @@ function Qi(t, e, n, a, r, s) {
5055
5061
  onClose: e[5] || (e[5] = (F) => r.historyOpen = !1),
5056
5062
  onNew: s.onDrawerNew,
5057
5063
  onPick: s.onDrawerPick
5058
- }, null, 8, ["conversations", "active-id", "onNew", "onPick"])) : y("", !0),
5064
+ }, null, 8, ["conversations", "active-id", "onNew", "onPick"])) : g("", !0),
5059
5065
  r.moreOpen && !s.currentConv ? (l(), $(x, {
5060
5066
  key: 4,
5061
5067
  "can-rename": !1,
@@ -5066,54 +5072,54 @@ function Qi(t, e, n, a, r, s) {
5066
5072
  onClose: e[6] || (e[6] = (F) => r.moreOpen = !1),
5067
5073
  onNotifToggle: s.onNotifToggle,
5068
5074
  onAction: s.onMoreAction
5069
- }, null, 8, ["notif-enabled", "status-url", "help-url", "onNotifToggle", "onAction"])) : y("", !0)
5075
+ }, null, 8, ["notif-enabled", "status-url", "help-url", "onNotifToggle", "onAction"])) : g("", !0)
5070
5076
  ], 64))
5071
- ], 6)) : y("", !0)
5077
+ ], 6)) : g("", !0)
5072
5078
  ], 2);
5073
5079
  }
5074
- const ta = /* @__PURE__ */ E(Pi, [["render", Qi], ["__scopeId", "data-v-1d79cc79"]]), na = "0.3.0";
5080
+ const sa = /* @__PURE__ */ E(zi, [["render", ea], ["__scopeId", "data-v-a988e756"]]), ra = "0.3.1";
5075
5081
  export {
5076
5082
  te as AIAvatar,
5077
5083
  ue as AVATAR_COLORS,
5078
- Zt as ActionResult,
5079
- cr as ApprovalCard,
5080
- ln as ArtifactFormResponse,
5081
- bn as ArtifactInfoCard,
5082
- Un as ArtifactRenderer,
5083
- Fn as ArtifactTicket,
5084
- Qn as AttachmentPreview,
5085
- is as Bubble,
5086
- Js as Composer,
5087
- Pe as DEFAULT_BASE_URL,
5088
- Kr as Feedback,
5089
- Dr as FormCard,
5090
- yt as Header,
5091
- fi as HistoryDrawer,
5092
- ke as HumanAvatar,
5093
- Ke as Launcher,
5084
+ tn as ActionResult,
5085
+ hr as ApprovalCard,
5086
+ cn as ArtifactFormResponse,
5087
+ Cn as ArtifactInfoCard,
5088
+ Hn as ArtifactRenderer,
5089
+ Nn as ArtifactTicket,
5090
+ es as AttachmentPreview,
5091
+ os as Bubble,
5092
+ Qs as Composer,
5093
+ He as DEFAULT_BASE_URL,
5094
+ Yr as Feedback,
5095
+ jr as FormCard,
5096
+ wt as Header,
5097
+ pi as HistoryDrawer,
5098
+ Ce as HumanAvatar,
5099
+ Ge as Launcher,
5094
5100
  me as MEDIA_RECORDER_SUPPORTED,
5095
- Is as MessageList,
5096
- ta as Messenger,
5097
- ki as MoreMenu,
5098
- Pt as Onboarding,
5101
+ Es as MessageList,
5102
+ sa as Messenger,
5103
+ Ai as MoreMenu,
5104
+ zt as Onboarding,
5099
5105
  oe as SCREEN_CAPTURE_SUPPORTED,
5100
- er as SuggestionChips,
5101
- ot as TeamAvatars,
5102
- ds as Typing,
5103
- na as VERSION,
5104
- ye as avatarColor,
5105
- we as avatarInitials,
5106
- Es as captureScreenshotFile,
5106
+ nr as SuggestionChips,
5107
+ lt as TeamAvatars,
5108
+ us as Typing,
5109
+ ra as VERSION,
5110
+ we as avatarColor,
5111
+ be as avatarInitials,
5112
+ Ls as captureScreenshotFile,
5107
5113
  N as colors,
5108
- je as createStore,
5109
- Re as createTransport,
5110
- ta as default,
5111
- be as formatTime,
5112
- ea as guessAttachmentKind,
5113
- Bs as pickRecorderMime,
5114
- ts as renderMarkdown,
5115
- Ls as startScreenRecording,
5116
- Ue as tokensCss,
5117
- Ne as uuid,
5118
- Ne as v4
5114
+ Ue as createStore,
5115
+ Fe as createTransport,
5116
+ sa as default,
5117
+ ke as formatTime,
5118
+ na as guessAttachmentKind,
5119
+ $s as pickRecorderMime,
5120
+ ss as renderMarkdown,
5121
+ Fs as startScreenRecording,
5122
+ Pe as tokensCss,
5123
+ je as uuid,
5124
+ je as v4
5119
5125
  };