@pluno/product-agent-web 0.1.25 → 0.1.26

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.
@@ -1,7 +1,7 @@
1
- import { PlunoProductAgent as zt } from "./product-agent-sdk.js";
2
- const Gt = "#7c3aed";
3
- function Ut(e) {
4
- const t = qt(e);
1
+ import { PlunoProductAgent as jt } from "./product-agent-sdk.js";
2
+ const qt = "#7c3aed";
3
+ function Kt(e) {
4
+ const t = Qt(e);
5
5
  return `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1254 1254" role="img" aria-label="Pluno">
6
6
  <defs>
7
7
  <linearGradient id="boltFill" x1="420" y1="180" x2="790" y2="1040" gradientUnits="userSpaceOnUse">
@@ -75,23 +75,23 @@ function Ut(e) {
75
75
  </g>
76
76
  </svg>`;
77
77
  }
78
- function $t(e) {
79
- return `data:image/svg+xml,${encodeURIComponent(Ut(e))}`;
78
+ function Yt(e) {
79
+ return `data:image/svg+xml,${encodeURIComponent(Kt(e))}`;
80
80
  }
81
- const j = "#2c2a1e", $e = [253, 250, 241], We = 3.5;
82
- function dt(e) {
83
- const t = ct(e);
84
- if (He(te(t), $e) >= We)
81
+ const X = "#2c2a1e", je = [253, 250, 241], qe = 3.5;
82
+ function ft(e) {
83
+ const t = bt(e);
84
+ if (Ke(ae(t), je) >= qe)
85
85
  return t;
86
- let o = te(t);
87
- const a = te(j);
86
+ let o = ae(t);
87
+ const a = ae(X);
88
88
  for (let i = 0; i < 6; i += 1)
89
- if (o = jt(o, a, 0.22), He(o, $e) >= We)
90
- return Ce(o);
91
- return Ce(o);
89
+ if (o = en(o, a, 0.22), Ke(o, je) >= qe)
90
+ return Le(o);
91
+ return Le(o);
92
92
  }
93
- function Wt(e) {
94
- const t = dt(e), n = "M547 151 C516 151 493 169 485 199 L382 606 C373 641 396 666 431 666 L523 666 C552 666 568 684 563 713 L491 1028 C486 1054 510 1067 527 1044 L894 487 C915 455 894 432 856 432 L815 432 C784 432 773 411 789 382 L904 205 C922 171 901 145 859 145 Z";
93
+ function Xt(e) {
94
+ const t = ft(e), n = "M547 151 C516 151 493 169 485 199 L382 606 C373 641 396 666 431 666 L523 666 C552 666 568 684 563 713 L491 1028 C486 1054 510 1067 527 1044 L894 487 C915 455 894 432 856 432 L815 432 C784 432 773 411 789 382 L904 205 C922 171 901 145 859 145 Z";
95
95
  return `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1254 1254" role="img" aria-label="Pluno">
96
96
  <defs>
97
97
  <clipPath id="scribbleBoltClip">
@@ -104,26 +104,26 @@ function Wt(e) {
104
104
  </defs>
105
105
  <g filter="url(#scribbleBoltWobble)">
106
106
  <g clip-path="url(#scribbleBoltClip)">
107
- <path d="${Vt()}" fill="none" stroke="${t}" stroke-width="56" stroke-linecap="round" stroke-linejoin="round" opacity="0.9" transform="rotate(-14 627 600)"/>
107
+ <path d="${Jt()}" fill="none" stroke="${t}" stroke-width="56" stroke-linecap="round" stroke-linejoin="round" opacity="0.9" transform="rotate(-14 627 600)"/>
108
108
  </g>
109
- <path d="${n}" fill="none" stroke="${j}" stroke-width="18" stroke-linejoin="round"/>
109
+ <path d="${n}" fill="none" stroke="${X}" stroke-width="18" stroke-linejoin="round"/>
110
110
  <g transform="rotate(-2 528 463)">
111
- <ellipse cx="528" cy="463" rx="73" ry="80" fill="#ffffff" stroke="${j}" stroke-width="13"/>
112
- <ellipse cx="533" cy="473" rx="45" ry="53" fill="${j}"/>
111
+ <ellipse cx="528" cy="463" rx="73" ry="80" fill="#ffffff" stroke="${X}" stroke-width="13"/>
112
+ <ellipse cx="533" cy="473" rx="45" ry="53" fill="${X}"/>
113
113
  <circle cx="557" cy="447" r="16" fill="#ffffff"/>
114
114
  </g>
115
115
  <g transform="rotate(2 717 462)">
116
- <ellipse cx="717" cy="462" rx="73" ry="80" fill="#ffffff" stroke="${j}" stroke-width="13"/>
117
- <ellipse cx="712" cy="473" rx="45" ry="53" fill="${j}"/>
116
+ <ellipse cx="717" cy="462" rx="73" ry="80" fill="#ffffff" stroke="${X}" stroke-width="13"/>
117
+ <ellipse cx="712" cy="473" rx="45" ry="53" fill="${X}"/>
118
118
  <circle cx="728" cy="447" r="16" fill="#ffffff"/>
119
119
  </g>
120
120
  </g>
121
121
  </svg>`;
122
122
  }
123
- function Ht(e) {
124
- return `data:image/svg+xml,${encodeURIComponent(Wt(e))}`;
123
+ function Zt(e) {
124
+ return `data:image/svg+xml,${encodeURIComponent(Xt(e))}`;
125
125
  }
126
- function Vt() {
126
+ function Jt() {
127
127
  let n = "M 280 120", o = !1, a = 0;
128
128
  for (let i = 150; i <= 1170; i += 62) {
129
129
  const l = (a % 3 - 1) * 18, p = o ? 280 - l : 1020 + l;
@@ -131,8 +131,8 @@ function Vt() {
131
131
  }
132
132
  return n;
133
133
  }
134
- function qt(e) {
135
- const t = ct(e), n = Ee(te(t));
134
+ function Qt(e) {
135
+ const t = bt(e), n = Pe(ae(t));
136
136
  return n > 0.86 ? {
137
137
  top: "#ffffff",
138
138
  middle: "#f6f6f6",
@@ -156,90 +156,90 @@ function qt(e) {
156
156
  inner: "#4b4b4b",
157
157
  shadow: "#000000"
158
158
  } : {
159
- top: I(t, 0.28, -0.03),
160
- middle: I(t, 0.08, 0.04),
161
- bottom: I(t, -0.1, 0.02),
162
- edgeStart: I(t, 0.08, 0.08),
163
- edgeMiddle: I(t, -0.08, 0.08),
164
- edgeEnd: I(t, -0.18, 0.05),
165
- glow: I(t, 0.32, -0.12),
166
- highlight: I(t, 0.38, -0.18),
167
- inner: I(t, 0.24, -0.1),
168
- shadow: I(t, -0.25, -0.08)
159
+ top: R(t, 0.28, -0.03),
160
+ middle: R(t, 0.08, 0.04),
161
+ bottom: R(t, -0.1, 0.02),
162
+ edgeStart: R(t, 0.08, 0.08),
163
+ edgeMiddle: R(t, -0.08, 0.08),
164
+ edgeEnd: R(t, -0.18, 0.05),
165
+ glow: R(t, 0.32, -0.12),
166
+ highlight: R(t, 0.38, -0.18),
167
+ inner: R(t, 0.24, -0.1),
168
+ shadow: R(t, -0.25, -0.08)
169
169
  };
170
170
  }
171
- function ct(e) {
171
+ function bt(e) {
172
172
  const t = e.trim();
173
- return /^#[0-9a-f]{6}$/i.test(t) ? t.toLowerCase() : /^#[0-9a-f]{3}$/i.test(t) ? `#${t.slice(1).split("").map((n) => n + n).join("").toLowerCase()}` : Gt;
173
+ return /^#[0-9a-f]{6}$/i.test(t) ? t.toLowerCase() : /^#[0-9a-f]{3}$/i.test(t) ? `#${t.slice(1).split("").map((n) => n + n).join("").toLowerCase()}` : qt;
174
174
  }
175
- function te(e) {
175
+ function ae(e) {
176
176
  return [
177
177
  Number.parseInt(e.slice(1, 3), 16),
178
178
  Number.parseInt(e.slice(3, 5), 16),
179
179
  Number.parseInt(e.slice(5, 7), 16)
180
180
  ];
181
181
  }
182
- function Ce([e, t, n]) {
182
+ function Le([e, t, n]) {
183
183
  const o = (a) => Math.max(0, Math.min(255, Math.round(a))).toString(16).padStart(2, "0");
184
184
  return `#${o(e)}${o(t)}${o(n)}`;
185
185
  }
186
- function Ee([e, t, n]) {
186
+ function Pe([e, t, n]) {
187
187
  const o = (a) => {
188
188
  const i = a / 255;
189
189
  return i <= 0.04045 ? i / 12.92 : ((i + 0.055) / 1.055) ** 2.4;
190
190
  };
191
191
  return 0.2126 * o(e) + 0.7152 * o(t) + 0.0722 * o(n);
192
192
  }
193
- function He(e, t) {
194
- const n = Ee(e), o = Ee(t), [a, i] = n > o ? [n, o] : [o, n];
193
+ function Ke(e, t) {
194
+ const n = Pe(e), o = Pe(t), [a, i] = n > o ? [n, o] : [o, n];
195
195
  return (a + 0.05) / (i + 0.05);
196
196
  }
197
- function jt(e, t, n) {
198
- const o = ke(n);
197
+ function en(e, t, n) {
198
+ const o = Ae(n);
199
199
  return [
200
200
  e[0] + (t[0] - e[0]) * o,
201
201
  e[1] + (t[1] - e[1]) * o,
202
202
  e[2] + (t[2] - e[2]) * o
203
203
  ];
204
204
  }
205
- function I(e, t, n) {
206
- const [o, a, i] = Yt(te(e));
207
- return Ce(Kt(o, ke(a + n), ke(i + t)));
205
+ function R(e, t, n) {
206
+ const [o, a, i] = tn(ae(e));
207
+ return Le(nn(o, Ae(a + n), Ae(i + t)));
208
208
  }
209
- function Yt([e, t, n]) {
210
- const o = e / 255, a = t / 255, i = n / 255, l = Math.max(o, a, i), p = Math.min(o, a, i), s = (l + p) / 2;
209
+ function tn([e, t, n]) {
210
+ const o = e / 255, a = t / 255, i = n / 255, l = Math.max(o, a, i), p = Math.min(o, a, i), g = (l + p) / 2;
211
211
  if (l === p)
212
- return [0, 0, s];
213
- const g = l - p, u = s > 0.5 ? g / (2 - l - p) : g / (l + p);
214
- return [(l === o ? (a - i) / g + (a < i ? 6 : 0) : l === a ? (i - o) / g + 2 : (o - a) / g + 4) / 6, u, s];
212
+ return [0, 0, g];
213
+ const c = l - p, d = g > 0.5 ? c / (2 - l - p) : c / (l + p);
214
+ return [(l === o ? (a - i) / c + (a < i ? 6 : 0) : l === a ? (i - o) / c + 2 : (o - a) / c + 4) / 6, d, g];
215
215
  }
216
- function Kt(e, t, n) {
216
+ function nn(e, t, n) {
217
217
  if (t === 0)
218
218
  return [n * 255, n * 255, n * 255];
219
219
  const o = n < 0.5 ? n * (1 + t) : n + t - n * t, a = 2 * n - o;
220
220
  return [
221
- we(a, o, e + 1 / 3) * 255,
222
- we(a, o, e) * 255,
223
- we(a, o, e - 1 / 3) * 255
221
+ ye(a, o, e + 1 / 3) * 255,
222
+ ye(a, o, e) * 255,
223
+ ye(a, o, e - 1 / 3) * 255
224
224
  ];
225
225
  }
226
- function we(e, t, n) {
226
+ function ye(e, t, n) {
227
227
  let o = n;
228
228
  return o < 0 && (o += 1), o > 1 && (o -= 1), o < 1 / 6 ? e + (t - e) * 6 * o : o < 1 / 2 ? t : o < 2 / 3 ? e + (t - e) * (2 / 3 - o) * 6 : e;
229
229
  }
230
- function ke(e) {
230
+ function Ae(e) {
231
231
  return Math.max(0, Math.min(1, e));
232
232
  }
233
- const ut = "suggest_share_on_socials";
234
- function Xt(e) {
233
+ const wt = "suggest_share_on_socials";
234
+ function on(e) {
235
235
  for (let t = e.length - 1; t >= 0; t -= 1) {
236
236
  const n = e[t];
237
- if (n.role !== "tool" || n.toolName !== ut)
237
+ if (n.role !== "tool" || n.toolName !== wt)
238
238
  continue;
239
- const o = Ve(e, t, "assistant");
239
+ const o = Ye(e, t, "assistant");
240
240
  if (!o)
241
241
  return null;
242
- const a = Ve(e, o.index, "user");
242
+ const a = Ye(e, o.index, "user");
243
243
  return a ? {
244
244
  id: `share:${n.callId ?? n.id}`,
245
245
  userPrompt: a.content,
@@ -248,13 +248,13 @@ function Xt(e) {
248
248
  }
249
249
  return null;
250
250
  }
251
- async function Zt(e) {
252
- const t = await Jt(e);
251
+ async function an(e) {
252
+ const t = await rn(e);
253
253
  if (!navigator.clipboard || typeof ClipboardItem > "u")
254
254
  throw new Error("Image copy is not supported in this browser. Download the screenshot instead.");
255
255
  await navigator.clipboard.write([new ClipboardItem({ [t.type || "image/png"]: t })]);
256
256
  }
257
- function Ve(e, t, n) {
257
+ function Ye(e, t, n) {
258
258
  for (let o = t - 1; o >= 0; o -= 1) {
259
259
  const a = e[o];
260
260
  if (a.role === n && a.content.trim())
@@ -262,10 +262,73 @@ function Ve(e, t, n) {
262
262
  }
263
263
  return null;
264
264
  }
265
- async function Jt(e) {
265
+ async function rn(e) {
266
266
  return await (await fetch(e)).blob();
267
267
  }
268
- const gt = 100, Qt = "product-agent:sdk-preview-socket-connect", en = "product-agent:sdk-preview-socket-send", tn = "product-agent:sdk-preview-socket-close", nn = "product-agent:sdk-preview-socket-open", on = "product-agent:sdk-preview-socket-message", an = "product-agent:sdk-preview-socket-error", rn = "product-agent:sdk-preview-socket-closed", qe = "product-agent:sdk-preview-socket-id", ln = "product-agent:preview-diagnostic", ht = "pluno.productAgent.sharePromptsDisabled", de = 10, pn = 10 * 1024 * 1024, sn = /* @__PURE__ */ new Set(["image/png", "image/jpeg", "image/webp", "image/gif", "application/pdf"]), R = {
268
+ const ln = "https://app.pluno.ai", pn = "/api/product-agent/embed/active-users", sn = 1800, dn = 15e3, cn = 250, un = 1e3, gn = 3e4;
269
+ function hn(e, t = {}) {
270
+ let n = !1, o = null, a = null, i = null;
271
+ const l = () => {
272
+ i !== null && (window.clearInterval(i), i = null);
273
+ }, p = (d) => {
274
+ n || (a !== null && window.clearTimeout(a), a = window.setTimeout(() => {
275
+ c();
276
+ }, bn(d)));
277
+ }, g = (d) => {
278
+ if (l(), o === null) {
279
+ o = d, e(d);
280
+ return;
281
+ }
282
+ const f = o, y = performance.now();
283
+ i = window.setInterval(() => {
284
+ if (n) {
285
+ l();
286
+ return;
287
+ }
288
+ const x = Math.min(1, (performance.now() - y) / sn);
289
+ o = Math.round(f + (d - f) * wn(x)), e(o), x >= 1 && (o = d, e(d), l());
290
+ }, cn);
291
+ }, c = async () => {
292
+ try {
293
+ const d = await mn(t);
294
+ if (n)
295
+ return;
296
+ g(d.count), p(d.refreshAfterMs);
297
+ } catch {
298
+ p(dn);
299
+ }
300
+ };
301
+ return c(), () => {
302
+ n = !0, a !== null && window.clearTimeout(a), l();
303
+ };
304
+ }
305
+ async function mn(e) {
306
+ if (e.loader)
307
+ return e.loader();
308
+ const n = await (e.fetcher ?? fetch)(new URL(pn, fn(e.backendUrl ?? ln)).toString(), {
309
+ cache: "no-store",
310
+ credentials: "omit"
311
+ });
312
+ if (!n.ok)
313
+ throw new Error("Failed to load active users");
314
+ const o = await n.json(), a = Xe(o.count), i = Xe(o.refreshAfterMs ?? o.refresh_after_ms);
315
+ if (a === null || i === null)
316
+ throw new Error("Invalid active users response");
317
+ return { count: a, refreshAfterMs: i };
318
+ }
319
+ function Xe(e) {
320
+ return typeof e != "number" || !Number.isFinite(e) || e < 0 ? null : Math.round(e);
321
+ }
322
+ function fn(e) {
323
+ return e.endsWith("/") ? e : `${e}/`;
324
+ }
325
+ function bn(e) {
326
+ return Math.min(gn, Math.max(un, e));
327
+ }
328
+ function wn(e) {
329
+ return e < 0.5 ? 4 * e * e * e : 1 - Math.pow(-2 * e + 2, 3) / 2;
330
+ }
331
+ const _t = 100, _n = "product-agent:sdk-preview-socket-connect", xn = "product-agent:sdk-preview-socket-send", vn = "product-agent:sdk-preview-socket-close", yn = "product-agent:sdk-preview-socket-open", Cn = "product-agent:sdk-preview-socket-message", En = "product-agent:sdk-preview-socket-error", Sn = "product-agent:sdk-preview-socket-closed", Ze = "product-agent:sdk-preview-socket-id", kn = "product-agent:preview-diagnostic", xt = "pluno.productAgent.sharePromptsDisabled", ue = 10, Ln = 10 * 1024 * 1024, Pn = /* @__PURE__ */ new Set(["image/png", "image/jpeg", "image/webp", "image/gif", "application/pdf"]), B = {
269
332
  launcherLabel: "Ask for anything...",
270
333
  accentColor: "#7c3aed",
271
334
  colorScheme: "light",
@@ -273,19 +336,19 @@ const gt = 100, Qt = "product-agent:sdk-preview-socket-connect", en = "product-a
273
336
  scribbleStyle: !1,
274
337
  position: "bottom-right",
275
338
  movableLauncher: !1
276
- }, je = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 104 36"><g><ellipse cx="17.5" cy="24.5" rx="2.4" ry="3" fill="none" stroke="%232c2a1e" stroke-width="1.6" opacity="0.8"/><path d="M18.5 27 C20.5 12, 7.5 2.5, 6 18.5" fill="none" stroke="%232c2a1e" stroke-width="2.5" stroke-linecap="round"/></g><g transform="translate(26 0)"><ellipse cx="17.9" cy="24.1" rx="2.5" ry="2.8" fill="none" stroke="%232c2a1e" stroke-width="1.5" opacity="0.8"/><path d="M18.9 26.4 C21.2 13, 8.6 3.6, 6.9 17.4" fill="none" stroke="%232c2a1e" stroke-width="2.35" stroke-linecap="round"/></g><g transform="translate(52 0)"><ellipse cx="17.1" cy="24.9" rx="2.2" ry="3.1" fill="none" stroke="%232c2a1e" stroke-width="1.7" opacity="0.8"/><path d="M18.1 27.5 C19.9 10.4, 6.4 2, 5.6 19.2" fill="none" stroke="%232c2a1e" stroke-width="2.6" stroke-linecap="round"/></g><g transform="translate(78 0)"><ellipse cx="17.6" cy="24.4" rx="2.4" ry="2.9" fill="none" stroke="%232c2a1e" stroke-width="1.6" opacity="0.8"/><path d="M18.7 26.8 C21 11.2, 7.1 1.6, 6.3 18.1" fill="none" stroke="%232c2a1e" stroke-width="2.45" stroke-linecap="round"/></g></svg>', dn = '"Architects Daughter", "Bradley Hand", "Chalkboard SE", "Comic Sans MS", "Comic Sans", "Segoe Print", cursive', Ye = "pluno-pa-scribble-font", mt = 190, ft = 41, cn = 48, un = 420, gn = 520, hn = 0.24, mn = 680, fn = 800, bn = 0.76, A = 8, Se = 50, wn = "http://www.w3.org/2000/svg", _n = 11, xn = 13, yn = 4, vn = 10, Cn = 40, En = "movable-launcher-position-v2", bt = "pluno-pa-widget-styles", wt = "data-pluno-pa-widget-styles";
277
- function kn(e) {
278
- return (t) => new O(t, e);
339
+ }, Je = 'data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 104 36"><g><ellipse cx="17.5" cy="24.5" rx="2.4" ry="3" fill="none" stroke="%232c2a1e" stroke-width="1.6" opacity="0.8"/><path d="M18.5 27 C20.5 12, 7.5 2.5, 6 18.5" fill="none" stroke="%232c2a1e" stroke-width="2.5" stroke-linecap="round"/></g><g transform="translate(26 0)"><ellipse cx="17.9" cy="24.1" rx="2.5" ry="2.8" fill="none" stroke="%232c2a1e" stroke-width="1.5" opacity="0.8"/><path d="M18.9 26.4 C21.2 13, 8.6 3.6, 6.9 17.4" fill="none" stroke="%232c2a1e" stroke-width="2.35" stroke-linecap="round"/></g><g transform="translate(52 0)"><ellipse cx="17.1" cy="24.9" rx="2.2" ry="3.1" fill="none" stroke="%232c2a1e" stroke-width="1.7" opacity="0.8"/><path d="M18.1 27.5 C19.9 10.4, 6.4 2, 5.6 19.2" fill="none" stroke="%232c2a1e" stroke-width="2.6" stroke-linecap="round"/></g><g transform="translate(78 0)"><ellipse cx="17.6" cy="24.4" rx="2.4" ry="2.9" fill="none" stroke="%232c2a1e" stroke-width="1.6" opacity="0.8"/><path d="M18.7 26.8 C21 11.2, 7.1 1.6, 6.3 18.1" fill="none" stroke="%232c2a1e" stroke-width="2.45" stroke-linecap="round"/></g></svg>', An = '"Architects Daughter", "Bradley Hand", "Chalkboard SE", "Comic Sans MS", "Comic Sans", "Segoe Print", cursive', Qe = "pluno-pa-scribble-font", vt = 190, yt = 41, Nn = 48, Tn = 420, In = 520, Dn = 0.24, Mn = 680, Rn = 800, On = 0.76, N = 8, Ne = 50, Bn = "http://www.w3.org/2000/svg", Fn = 11, Un = 13, zn = 4, Gn = 10, $n = 40, Hn = "movable-launcher-position-v2", Ct = "pluno-pa-widget-styles", Et = "data-pluno-pa-widget-styles";
340
+ function Wn(e) {
341
+ return (t) => new F(t, e);
279
342
  }
280
- async function Sn(e = {}) {
343
+ async function Vn(e = {}) {
281
344
  const t = {
282
- launcherLabel: e.launcherLabel ?? R.launcherLabel,
283
- accentColor: e.accentColor ?? R.accentColor,
284
- colorScheme: e.colorScheme ?? R.colorScheme,
285
- fontFamily: e.fontFamily ?? R.fontFamily,
286
- scribbleStyle: e.scribbleStyle ?? R.scribbleStyle,
287
- position: e.position ?? R.position,
288
- movableLauncher: e.movableLauncher ?? R.movableLauncher,
345
+ launcherLabel: e.launcherLabel ?? B.launcherLabel,
346
+ accentColor: e.accentColor ?? B.accentColor,
347
+ colorScheme: e.colorScheme ?? B.colorScheme,
348
+ fontFamily: e.fontFamily ?? B.fontFamily,
349
+ scribbleStyle: e.scribbleStyle ?? B.scribbleStyle,
350
+ position: e.position ?? B.position,
351
+ movableLauncher: e.movableLauncher ?? B.movableLauncher,
289
352
  token: e.token,
290
353
  tokenProvider: e.tokenProvider,
291
354
  tokenEndpoint: e.tokenEndpoint,
@@ -302,11 +365,12 @@ async function Sn(e = {}) {
302
365
  socialPostDraftHandler: e.socialPostDraftHandler,
303
366
  billingStatus: e.billingStatus ?? null,
304
367
  billingStatusLoader: e.billingStatusLoader,
368
+ activeUsersLoader: e.activeUsersLoader,
305
369
  socialPostRewardsUrl: e.socialPostRewardsUrl,
306
370
  loadSharePromptsDisabled: e.loadSharePromptsDisabled,
307
371
  persistSharePromptsDisabled: e.persistSharePromptsDisabled
308
372
  };
309
- U("web-sdk.widget", "Mounting widget with merged options", {
373
+ V("web-sdk.widget", "Mounting widget with merged options", {
310
374
  accentColor: t.accentColor,
311
375
  colorScheme: t.colorScheme,
312
376
  fontFamily: t.fontFamily,
@@ -321,32 +385,32 @@ async function Sn(e = {}) {
321
385
  n.className = "pluno-pa-widget-host", n.setAttribute("data-pluno-product-agent-ui", "widget");
322
386
  const o = n.attachShadow({ mode: "open" }), a = document.createElement("div");
323
387
  a.className = `pluno-pa-widget pluno-pa-widget--${t.position}`, a.setAttribute("data-pluno-product-agent-ui-root", "widget");
324
- let i = Ke(t.accentColor, t.scribbleStyle);
325
- Rn(a, t.launcherLabel, i, t.movableLauncher), o.appendChild(a);
326
- const l = await ko(), p = l.ownerDocument;
327
- l.appendChild(n), a.classList.add(`pluno-pa-widget--${t.colorScheme}`), rt(o, t.accentColor), Xe(a, i, {
388
+ let i = et(t.accentColor, t.scribbleStyle);
389
+ eo(a, t.launcherLabel, i, t.movableLauncher), o.appendChild(a);
390
+ const l = await Wo(), p = l.ownerDocument;
391
+ l.appendChild(n), a.classList.add(`pluno-pa-widget--${t.colorScheme}`), ut(o, t.accentColor), tt(a, i, {
328
392
  accentColor: t.accentColor,
329
393
  colorScheme: t.colorScheme,
330
394
  fontFamily: t.fontFamily,
331
395
  scribbleStyle: t.scribbleStyle
332
- }), U("web-sdk.widget", "Applied initial widget appearance", {
396
+ }), V("web-sdk.widget", "Applied initial widget appearance", {
333
397
  accentColor: t.accentColor,
334
398
  colorScheme: t.colorScheme,
335
399
  fontFamily: t.fontFamily,
336
400
  cssAccent: a.style.getPropertyValue("--pluno-pa-accent")
337
401
  });
338
- const s = a.querySelector(".pluno-pa-widget__launcher"), g = a.querySelector(".pluno-pa-widget__launcher-drag-handle"), u = a.querySelector(".pluno-pa-widget__launcher-input"), b = a.querySelector(".pluno-pa-widget__panel"), w = a.querySelector(".pluno-pa-widget__close"), x = a.querySelector(".pluno-pa-widget__composer"), C = a.querySelector(".pluno-pa-widget__attachment-error"), m = a.querySelector(".pluno-pa-widget__billing-status"), f = a.querySelector(".pluno-pa-widget__attachments"), d = a.querySelector(".pluno-pa-widget__input"), h = a.querySelector(".pluno-pa-widget__send"), _ = a.querySelector(".pluno-pa-widget__new-chat"), k = a.querySelector(".pluno-pa-widget__timeline");
339
- if (!s || !u || !b || !w || !x || !C || !m || !f || !d || !h || !_ || !k)
402
+ const g = a.querySelector(".pluno-pa-widget__launcher"), c = a.querySelector(".pluno-pa-widget__launcher-drag-handle"), d = a.querySelector(".pluno-pa-widget__launcher-input"), f = a.querySelector(".pluno-pa-widget__panel"), y = a.querySelector(".pluno-pa-widget__close"), x = a.querySelector(".pluno-pa-widget__composer"), E = a.querySelector(".pluno-pa-widget__attachment-error"), h = a.querySelector(".pluno-pa-widget__billing-status"), b = a.querySelector(".pluno-pa-widget__attachments"), s = a.querySelector(".pluno-pa-widget__input"), v = a.querySelector(".pluno-pa-widget__send"), $ = a.querySelector(".pluno-pa-widget__new-chat"), U = a.querySelector(".pluno-pa-widget__active-users-counter"), m = a.querySelector(".pluno-pa-widget__timeline");
403
+ if (!g || !d || !f || !y || !x || !E || !h || !b || !s || !v || !$ || !U || !m)
340
404
  throw new Error("Failed to mount Pluno widget");
341
- if (t.movableLauncher && !g)
405
+ if (t.movableLauncher && !c)
342
406
  throw new Error("Failed to mount Pluno widget drag handle");
343
- Qe(u), Qe(d);
344
- let y = [], v = null;
345
- const D = () => {
346
- qn(f, y, (r) => {
347
- y = y.filter((c, L) => L !== r), D(), T();
407
+ at(d), at(s);
408
+ let w = [], C = null;
409
+ const S = () => {
410
+ go(b, w, (r) => {
411
+ w = w.filter((u, L) => L !== r), S(), A(_.getState()), M();
348
412
  });
349
- }, ne = t.loginRequired || t.token || t.webSocketFactory ? void 0 : t.tokenProvider ?? (async () => {
413
+ }, T = t.loginRequired || t.token || t.webSocketFactory ? void 0 : t.tokenProvider ?? (async () => {
350
414
  if (!t.tokenEndpoint)
351
415
  throw new Error("Pluno widget requires token or tokenEndpoint");
352
416
  const r = await fetch(t.tokenEndpoint, {
@@ -357,19 +421,19 @@ async function Sn(e = {}) {
357
421
  });
358
422
  if (!r.ok)
359
423
  throw new Error("Failed to load Pluno token");
360
- const c = await r.json();
361
- if (!c.token)
424
+ const u = await r.json();
425
+ if (!u.token)
362
426
  throw new Error("Pluno token endpoint did not return a token");
363
- return c.token;
364
- });
365
- let E;
366
- E = await zt.init({
427
+ return u.token;
428
+ }), D = window.fetch.bind(window);
429
+ let _;
430
+ _ = await jt.init({
367
431
  token: t.token,
368
- tokenProvider: ne,
432
+ tokenProvider: T,
369
433
  backendUrl: t.backendUrl,
370
434
  metadata: () => ({
371
435
  ...t.metadata ?? {},
372
- ...!E.getState().sessionId && t.scribbleStyle ? { scribbleStyleStarted: !0 } : {}
436
+ ...!_.getState().sessionId && t.scribbleStyle ? { scribbleStyleStarted: !0 } : {}
373
437
  }),
374
438
  initialStarterPrompts: t.initialStarterPrompts,
375
439
  clientId: t.clientId,
@@ -378,32 +442,32 @@ async function Sn(e = {}) {
378
442
  webSocketFactory: t.webSocketFactory,
379
443
  autoConnect: t.loginRequired ? !1 : void 0
380
444
  });
381
- const z = So(t), ce = new Set(z.openToolGroupKeys), $ = new Set(z.seenShareCandidateIds), oe = new Set($);
382
- let ue = z.sharePromptsDisabled || await Lo(t), M = t.movableLauncher ? z.launcherPosition : null, De = M !== null, B = null, Ie = !1;
383
- const Tt = () => {
384
- Ie || typeof document > "u" || (rt(o, t.accentColor), n.isConnected || p.body?.appendChild(n));
385
- }, Me = new MutationObserver(Tt);
386
- Me.observe(p.documentElement, { childList: !0, subtree: !0 });
387
- const ge = (r = !0) => {
388
- const c = Le(a, r);
389
- return Ze(
445
+ const H = Vo(t), ge = new Set(H.openToolGroupKeys), j = new Set(H.seenShareCandidateIds), ie = new Set(j);
446
+ let he = H.sharePromptsDisabled || await jo(t), O = t.movableLauncher ? H.launcherPosition : null, Oe = O !== null, z = null, me = !1;
447
+ const Ft = () => {
448
+ me || typeof document > "u" || (ut(o, t.accentColor), n.isConnected || p.body?.appendChild(n));
449
+ }, Be = new MutationObserver(Ft);
450
+ Be.observe(p.documentElement, { childList: !0, subtree: !0 });
451
+ const fe = (r = !0) => {
452
+ const u = Te(a, r);
453
+ return nt(
390
454
  a,
391
- M ?? An(a, t.position, c),
392
- c
455
+ O ?? Kn(a, t.position, u),
456
+ u
393
457
  );
394
- }, N = () => {
395
- Ao(t, {
458
+ }, I = () => {
459
+ Ko(t, {
396
460
  isOpen: a.classList.contains("pluno-pa-widget--open"),
397
- composerValue: d.value,
398
- openToolGroupKeys: [...ce],
399
- launcherPosition: De ? M : null,
400
- seenShareCandidateIds: [...$].slice(-gt),
401
- sharePromptsDisabled: ue
461
+ composerValue: s.value,
462
+ openToolGroupKeys: [...ge],
463
+ launcherPosition: Oe ? O : null,
464
+ seenShareCandidateIds: [...j].slice(-_t),
465
+ sharePromptsDisabled: he
402
466
  });
403
- }, G = (r, c = {}) => {
404
- Mn(r, {
405
- debugVersion: En,
406
- launcherPosition: M,
467
+ }, W = (r, u = {}) => {
468
+ Qn(r, {
469
+ debugVersion: Hn,
470
+ launcherPosition: O,
407
471
  rootClasses: a.className,
408
472
  rootStyle: {
409
473
  left: a.style.left,
@@ -411,279 +475,285 @@ async function Sn(e = {}) {
411
475
  right: a.style.right,
412
476
  bottom: a.style.bottom
413
477
  },
414
- rootRect: _e(a),
415
- launcherRect: _e(s),
416
- panelRect: _e(b),
417
- viewport: K(),
418
- panelHidden: b.hidden,
419
- closeHidden: w.hidden,
420
- ...c
478
+ rootRect: Ce(a),
479
+ launcherRect: Ce(g),
480
+ panelRect: Ce(f),
481
+ viewport: J(),
482
+ panelHidden: f.hidden,
483
+ closeHidden: y.hidden,
484
+ ...u
421
485
  });
422
- }, ae = (r = !0) => {
423
- if (!M)
424
- return re(a, null), ge(r);
425
- const c = ge(r);
426
- return re(a, c), G("Applied stored closed launcher position", { visibleLauncherPosition: c }), c;
427
- }, Re = (r, c) => {
428
- if (!r || !c) {
429
- In(a);
486
+ }, re = (r = !0) => {
487
+ if (!O)
488
+ return pe(a, null), fe(r);
489
+ const u = fe(r);
490
+ return pe(a, u), W("Applied stored closed launcher position", { visibleLauncherPosition: u }), u;
491
+ }, Fe = (r, u) => {
492
+ if (!r || !u) {
493
+ Jn(a);
430
494
  return;
431
495
  }
432
- Dn(a, {
433
- x: r.x - c.x,
434
- y: r.y - c.y
496
+ Zn(a, {
497
+ x: r.x - u.x,
498
+ y: r.y - u.y
435
499
  });
436
- }, Oe = () => {
437
- const r = ae();
500
+ }, Ue = () => {
501
+ const r = re();
438
502
  if (a.classList.contains("pluno-pa-widget--open") || a.classList.contains("pluno-pa-widget--closing")) {
439
- const c = Je(a, r, t.position);
440
- Re(c, r), G("Applied open panel position after viewport resize", { openPanelPosition: c });
441
- } else M && G("Applied visible launcher position after viewport resize", { visibleLauncherPosition: r });
503
+ const u = ot(a, r, t.position);
504
+ Fe(u, r), W("Applied open panel position after viewport resize", { openPanelPosition: u });
505
+ } else O && W("Applied visible launcher position after viewport resize", { visibleLauncherPosition: r });
442
506
  };
443
- let Be = () => {
507
+ let ze = () => {
444
508
  };
445
- window.addEventListener("resize", Oe), t.movableLauncher && g ? (ae(), Be = Pn({
509
+ window.addEventListener("resize", Ue), t.movableLauncher && c ? (re(), ze = qn({
446
510
  root: a,
447
- launcherDragHandle: g,
448
- getPosition: () => ge(),
511
+ launcherDragHandle: c,
512
+ getPosition: () => fe(),
449
513
  setPosition: (r) => {
450
- const c = r;
451
- M = Ze(a, r, Le(a)), re(a, M), G("Dragging closed launcher", { requestedPosition: c });
514
+ const u = r;
515
+ O = nt(a, r, Te(a)), pe(a, O), W("Dragging closed launcher", { requestedPosition: u });
452
516
  },
453
517
  persist: () => {
454
- De = !0, N(), G("Persisted closed launcher drag position");
518
+ Oe = !0, I(), W("Persisted closed launcher drag position");
455
519
  }
456
- })) : re(a, null);
457
- let he = !1;
458
- const Fe = async () => {
459
- if (!(!t.billingStatusLoader || he)) {
460
- he = !0;
520
+ })) : pe(a, null);
521
+ let be = !1;
522
+ const Ge = async () => {
523
+ if (!(!t.billingStatusLoader || be)) {
524
+ be = !0;
461
525
  try {
462
526
  const r = await t.billingStatusLoader();
463
- tt(t.billingStatus, r, E.getState().lastErrorCode) && (t.billingStatus = r, ve(m, t.billingStatus, E.getState().lastErrorCode), T());
527
+ rt(t.billingStatus, r, _.getState().lastErrorCode) && (t.billingStatus = r, ke(h, t.billingStatus, _.getState().lastErrorCode), M());
464
528
  } finally {
465
- he = !1;
529
+ be = !1;
466
530
  }
467
531
  }
468
- }, W = (r = "", c = !0) => {
469
- Fe(), B !== null && (window.clearTimeout(B), B = null), b.hidden = !1, w.hidden = !1, a.classList.remove("pluno-pa-widget--closing");
470
- const L = ae(), Q = Je(a, L, t.position);
471
- if (Re(Q, L), G("Opening launcher at clamped open panel position", { openPanelPosition: Q, visibleLauncherPosition: L }), !c) {
472
- a.classList.add("pluno-pa-widget--open"), s.hidden = !0, r && (d.value = r, ee(d)), k.scrollTop = k.scrollHeight, d.focus(), d.setSelectionRange(d.value.length, d.value.length), N();
532
+ }, q = (r = "", u = !0) => {
533
+ Ge(), z !== null && (window.clearTimeout(z), z = null), f.hidden = !1, y.hidden = !1, a.classList.remove("pluno-pa-widget--closing");
534
+ const L = re(), ne = ot(a, L, t.position);
535
+ if (Fe(ne, L), W("Opening launcher at clamped open panel position", { openPanelPosition: ne, visibleLauncherPosition: L }), !u) {
536
+ a.classList.add("pluno-pa-widget--open"), g.hidden = !0, r && (s.value = r, oe(s)), m.scrollTop = m.scrollHeight, s.focus(), s.setSelectionRange(s.value.length, s.value.length), I();
473
537
  return;
474
538
  }
475
539
  window.requestAnimationFrame(() => {
476
- a.classList.add("pluno-pa-widget--open"), r && (d.value = r, ee(d)), k.scrollTop = k.scrollHeight, d.focus(), d.setSelectionRange(d.value.length, d.value.length), N(), B = window.setTimeout(() => {
477
- s.hidden = !0, k.scrollTop = k.scrollHeight;
540
+ a.classList.add("pluno-pa-widget--open"), r && (s.value = r, oe(s)), m.scrollTop = m.scrollHeight, s.focus(), s.setSelectionRange(s.value.length, s.value.length), I(), z = window.setTimeout(() => {
541
+ g.hidden = !0, m.scrollTop = m.scrollHeight;
478
542
  }, 220);
479
543
  });
480
- }, Dt = () => {
481
- B !== null && (window.clearTimeout(B), B = null), s.hidden = !1, M && (ae(!1), G("Closing launcher at stored position")), a.classList.remove("pluno-pa-widget--open"), a.classList.add("pluno-pa-widget--closing"), N(), B = window.setTimeout(() => {
482
- b.hidden = !0, w.hidden = !0, a.classList.remove("pluno-pa-widget--closing");
544
+ }, Ut = () => {
545
+ z !== null && (window.clearTimeout(z), z = null), g.hidden = !1, O && (re(!1), W("Closing launcher at stored position")), a.classList.remove("pluno-pa-widget--open"), a.classList.add("pluno-pa-widget--closing"), I(), z = window.setTimeout(() => {
546
+ f.hidden = !0, y.hidden = !0, a.classList.remove("pluno-pa-widget--closing");
483
547
  }, 220);
484
548
  };
485
- s.addEventListener("submit", (r) => {
486
- r.preventDefault(), W(u.value), u.value = "";
487
- }), g?.addEventListener("click", (r) => {
549
+ g.addEventListener("submit", (r) => {
550
+ r.preventDefault(), q(d.value), d.value = "";
551
+ }), c?.addEventListener("click", (r) => {
488
552
  r.preventDefault(), r.stopPropagation();
489
- }), s.addEventListener("click", (r) => {
490
- r.target !== u && (W(u.value), u.value = "");
491
- }), u.addEventListener("focus", () => {
492
- W(u.value), u.value = "";
493
- }), u.addEventListener("input", () => {
494
- if (!u.value)
553
+ }), g.addEventListener("click", (r) => {
554
+ r.target !== d && (q(d.value), d.value = "");
555
+ }), d.addEventListener("focus", () => {
556
+ q(d.value), d.value = "";
557
+ }), d.addEventListener("input", () => {
558
+ if (!d.value)
495
559
  return;
496
- const r = u.value;
497
- W(r), u.value = "";
498
- }), w.addEventListener("click", Dt);
499
- const T = () => {
500
- h.disabled = F(t.billingStatus) || !E.getState().isThinking && d.value.trim().length === 0 && y.length === 0;
560
+ const r = d.value;
561
+ q(r), d.value = "";
562
+ }), y.addEventListener("click", Ut);
563
+ const M = () => {
564
+ v.disabled = G(t.billingStatus) || !_.getState().isThinking && s.value.trim().length === 0 && w.length === 0;
501
565
  };
502
- t.loginRequired && (u.readOnly = !0, u.placeholder = t.loginButtonLabel, d.placeholder = t.loginButtonLabel, x.hidden = !0), x.addEventListener("submit", (r) => {
566
+ t.loginRequired && (d.readOnly = !0, d.placeholder = t.loginButtonLabel, s.placeholder = t.loginButtonLabel, x.hidden = !0), x.addEventListener("submit", (r) => {
503
567
  if (r.preventDefault(), t.loginRequired) {
504
568
  t.onLoginClick?.();
505
569
  return;
506
570
  }
507
- F(t.billingStatus) || (y = xe(E, d, y), D(), T());
571
+ G(t.billingStatus) || (w = Ee(_, s, w), S(), M());
508
572
  });
509
- let Z = 0;
510
- const It = () => {
511
- Z = 0, a.classList.remove("pluno-pa-widget--drag-over");
512
- }, Mt = (r) => {
513
- v !== null && window.clearTimeout(v), C.textContent = r, C.hidden = !1, v = window.setTimeout(() => {
514
- C.textContent = "", C.hidden = !0, v = null;
573
+ let ee = 0;
574
+ const zt = () => {
575
+ ee = 0, a.classList.remove("pluno-pa-widget--drag-over");
576
+ }, Gt = (r) => {
577
+ C !== null && window.clearTimeout(C), E.textContent = r, E.hidden = !1, C = window.setTimeout(() => {
578
+ E.textContent = "", E.hidden = !0, C = null;
515
579
  }, 3e3);
516
- }, Rt = () => {
517
- v !== null && (window.clearTimeout(v), v = null), C.textContent = "", C.hidden = !0;
518
- }, Ot = async (r) => {
580
+ }, $t = () => {
581
+ C !== null && (window.clearTimeout(C), C = null), E.textContent = "", E.hidden = !0;
582
+ }, Ht = async (r) => {
519
583
  if (r.length === 0)
520
584
  return;
521
- const c = await Xn(r);
522
- if (y.length + c.length > de)
523
- throw new Error(`Attach up to ${de} files per message.`);
524
- y = [...y, ...c], D(), Rt(), T();
585
+ const u = await bo(r);
586
+ if (w.length + u.length > ue)
587
+ throw new Error(`Attach up to ${ue} files per message.`);
588
+ w = [...w, ...u], S(), $t(), M(), A(_.getState());
525
589
  };
526
590
  a.addEventListener("dragenter", (r) => {
527
- !le(r.dataTransfer) || t.loginRequired || (r.preventDefault(), r.stopPropagation(), Z += 1, a.classList.add("pluno-pa-widget--drag-over"));
591
+ !se(r.dataTransfer) || t.loginRequired || (r.preventDefault(), r.stopPropagation(), ee += 1, a.classList.add("pluno-pa-widget--drag-over"));
528
592
  }), a.addEventListener("dragover", (r) => {
529
- const c = r.dataTransfer;
530
- !le(c) || t.loginRequired || (r.preventDefault(), r.stopPropagation(), c.dropEffect = "copy");
593
+ const u = r.dataTransfer;
594
+ !se(u) || t.loginRequired || (r.preventDefault(), r.stopPropagation(), u.dropEffect = "copy");
531
595
  }), a.addEventListener("dragleave", (r) => {
532
- le(r.dataTransfer) && (r.stopPropagation(), Z = Math.max(0, Z - 1), Z === 0 && a.classList.remove("pluno-pa-widget--drag-over"));
596
+ se(r.dataTransfer) && (r.stopPropagation(), ee = Math.max(0, ee - 1), ee === 0 && a.classList.remove("pluno-pa-widget--drag-over"));
533
597
  }), a.addEventListener("drop", (r) => {
534
- const c = r.dataTransfer;
535
- !le(c) || t.loginRequired || (r.preventDefault(), r.stopPropagation(), It(), Ot(c.files).catch((L) => {
536
- Mt(L instanceof Error ? L.message : "Failed to attach file"), U("web-sdk.widget", "Attachment failed", {
598
+ const u = r.dataTransfer;
599
+ !se(u) || t.loginRequired || (r.preventDefault(), r.stopPropagation(), zt(), Ht(u.files).catch((L) => {
600
+ Gt(L instanceof Error ? L.message : "Failed to attach file"), V("web-sdk.widget", "Attachment failed", {
537
601
  message: L instanceof Error ? L.message : String(L)
538
602
  });
539
603
  }));
540
- }), h.addEventListener("click", () => {
604
+ }), v.addEventListener("click", () => {
541
605
  if (t.loginRequired) {
542
606
  t.onLoginClick?.();
543
607
  return;
544
608
  }
545
- if (E.getState().isThinking) {
546
- E.stop();
609
+ if (_.getState().isThinking) {
610
+ _.stop();
547
611
  return;
548
612
  }
549
- y = xe(E, d, y), D(), T();
550
- }), _.addEventListener("click", () => {
551
- E.startNewSession(), ce.clear(), d.value = "", y = [], D(), ee(d), N(), T(), d.focus();
552
- }), d.addEventListener("input", () => {
553
- ee(d), N(), T();
554
- }), d.addEventListener("keydown", (r) => {
613
+ w = Ee(_, s, w), S(), M(), A(_.getState());
614
+ }), $.addEventListener("click", () => {
615
+ _.startNewSession(), ge.clear(), s.value = "", w = [], S(), oe(s), I(), M(), s.focus(), A(_.getState());
616
+ }), s.addEventListener("input", () => {
617
+ oe(s), I(), M(), A(_.getState());
618
+ }), s.addEventListener("keydown", (r) => {
555
619
  if (!(r.key !== "Enter" || r.shiftKey)) {
556
620
  if (r.preventDefault(), t.loginRequired) {
557
621
  t.onLoginClick?.();
558
622
  return;
559
623
  }
560
- y = xe(E, d, y), D(), T();
624
+ w = Ee(_, s, w), S(), M(), A(_.getState());
561
625
  }
562
626
  }), a.addEventListener("click", (r) => {
563
- (r.target instanceof Element ? r.target : null)?.closest("a[href]") && N();
564
- }), z.composerValue && (d.value = z.composerValue, ee(d)), z.isOpen && W(d.value, !1);
565
- const ze = () => i;
566
- let me = E.getState().appearance !== null, ie = null, J = null, H = null, Ge = E.getState().isThinking, V = null;
567
- const Bt = !!t.socialPostDraftHandler, q = (r) => {
568
- if (Te(r.lastErrorCode) ? V = r.lastErrorCode : t.billingStatus?.creditsUsed !== null && !F(t.billingStatus) && (V = null), ve(m, t.billingStatus, V), t.loginRequired) {
569
- so(k, h, _, ze, t.loginButtonLabel, t.onLoginClick);
627
+ (r.target instanceof Element ? r.target : null)?.closest("a[href]") && I();
628
+ }), H.composerValue && (s.value = H.composerValue, oe(s)), H.isOpen && q(s.value, !1);
629
+ const $e = () => i;
630
+ let we = _.getState().appearance !== null, le = null, te = null, K = null, He = _.getState().isThinking, Y = null, _e = null, We = () => {
631
+ };
632
+ const Wt = !!t.socialPostDraftHandler, A = (r) => {
633
+ if (Re(r.lastErrorCode) ? Y = r.lastErrorCode : t.billingStatus?.creditsUsed !== null && !G(t.billingStatus) && (Y = null), ke(h, t.billingStatus, Y), t.loginRequired) {
634
+ No(m, v, $, $e, t.loginButtonLabel, t.onLoginClick);
570
635
  return;
571
636
  }
572
- po(
573
- k,
574
- h,
575
- _,
637
+ Ao(
638
+ m,
639
+ v,
640
+ $,
641
+ U,
576
642
  r,
577
- ce,
578
- N,
579
- ze,
580
- (c) => {
581
- E.sendMessage(c);
643
+ _e,
644
+ _e !== null && pt(r, s.value.trim().length > 0 || w.length > 0),
645
+ ge,
646
+ I,
647
+ $e,
648
+ (u) => {
649
+ _.sendMessage(u);
582
650
  },
583
- Bt && !ue ? {
584
- dismissedCandidateIds: oe,
585
- draftingCandidateId: ie,
586
- error: J,
587
- onSeen: (c) => {
588
- $.add(c.id), N();
651
+ Wt && !he ? {
652
+ dismissedCandidateIds: ie,
653
+ draftingCandidateId: le,
654
+ error: te,
655
+ onSeen: (u) => {
656
+ j.add(u.id), I();
589
657
  },
590
- onDraft: (c) => {
591
- Ft(c);
658
+ onDraft: (u) => {
659
+ Vt(u);
592
660
  },
593
- onDismiss: (c) => {
594
- $.add(c.id), oe.add(c.id), N(), J = null, q(E.getState());
661
+ onDismiss: (u) => {
662
+ j.add(u.id), ie.add(u.id), I(), te = null, A(_.getState());
595
663
  },
596
- onDisable: (c) => {
597
- ue = !0, $.add(c.id), oe.add(c.id), N(), Po(t, !0), J = null, q(E.getState());
664
+ onDisable: (u) => {
665
+ he = !0, j.add(u.id), ie.add(u.id), I(), qo(t, !0), te = null, A(_.getState());
598
666
  }
599
667
  } : void 0
600
668
  );
601
669
  };
602
- return E.on("state", (r) => {
603
- const c = Ge && !r.isThinking;
604
- Ge = r.isThinking, r.appearance ? (me = !0, U("web-sdk.widget", "Agent state supplied appearance", {
670
+ return We = hn((r) => {
671
+ _e = r, !me && pt(_.getState(), s.value.trim().length > 0 || w.length > 0) && A(_.getState());
672
+ }, { backendUrl: t.backendUrl, fetcher: D, loader: t.activeUsersLoader }), _.on("state", (r) => {
673
+ const u = He && !r.isThinking;
674
+ He = r.isThinking, r.appearance ? (we = !0, V("web-sdk.widget", "Agent state supplied appearance", {
605
675
  appearance: r.appearance
606
- }), fe(r.appearance, "agent.state.appearance")) : me && (me = !1, U("web-sdk.widget", "Agent state cleared appearance; reverting to configured widget options", {
676
+ }), xe(r.appearance, "agent.state.appearance")) : we && (we = !1, V("web-sdk.widget", "Agent state cleared appearance; reverting to configured widget options", {
607
677
  fallbackAccentColor: t.accentColor,
608
678
  fallbackColorScheme: t.colorScheme,
609
679
  fallbackFontFamily: t.fontFamily
610
- }), fe({}, "agent.state.appearance-cleared")), q(r), T(), c && Fe();
611
- }), q(E.getState()), T(), {
612
- agent: E,
680
+ }), xe({}, "agent.state.appearance-cleared")), A(r), M(), u && Ge();
681
+ }), A(_.getState()), M(), {
682
+ agent: _,
613
683
  updateAppearance: (r) => {
614
- r.scribbleStyle !== void 0 && (t.scribbleStyle = r.scribbleStyle), fe(r, "widgetHandle.updateAppearance");
684
+ r.scribbleStyle !== void 0 && (t.scribbleStyle = r.scribbleStyle), xe(r, "widgetHandle.updateAppearance");
615
685
  },
616
686
  updateBillingStatus: (r) => {
617
- const c = r ?? null;
618
- tt(t.billingStatus, c, V) && (t.billingStatus = c, t.billingStatus?.creditsUsed !== null && !F(t.billingStatus) && (V = null), ve(
687
+ const u = r ?? null;
688
+ rt(t.billingStatus, u, Y) && (t.billingStatus = u, t.billingStatus?.creditsUsed !== null && !G(t.billingStatus) && (Y = null), ke(
619
689
  a.querySelector(".pluno-pa-widget__billing-status"),
620
690
  t.billingStatus,
621
- V
622
- ), T());
691
+ Y
692
+ ), M());
623
693
  },
624
694
  openPanel: () => {
625
- W(d.value, !1);
695
+ q(s.value, !1);
626
696
  },
627
697
  destroy: () => {
628
- Ie = !0, Me.disconnect(), window.removeEventListener("resize", Oe), Be(), v !== null && window.clearTimeout(v), H?.remove(), E.destroy(), n.remove();
698
+ me = !0, Be.disconnect(), window.removeEventListener("resize", Ue), ze(), C !== null && window.clearTimeout(C), We(), K?.remove(), _.destroy(), n.remove();
629
699
  }
630
700
  };
631
- async function Ft(r) {
632
- if (!ie) {
633
- ie = r.id, J = null, q(E.getState());
701
+ async function Vt(r) {
702
+ if (!le) {
703
+ le = r.id, te = null, A(_.getState());
634
704
  try {
635
705
  if (!t.socialPostDraftHandler)
636
706
  throw new Error("Social post drafting is not available here.");
637
- const c = await t.socialPostDraftHandler(r);
638
- if (!c.linkedinPost || !c.xPost)
707
+ const u = await t.socialPostDraftHandler(r);
708
+ if (!u.linkedinPost || !u.xPost)
639
709
  throw new Error("Pluno did not return a complete social post draft.");
640
- $.add(r.id), oe.add(r.id), N(), H?.remove(), H = go(c, {
710
+ j.add(r.id), ie.add(r.id), I(), K?.remove(), K = Do(u, {
641
711
  socialPostRewardsUrl: t.socialPostRewardsUrl,
642
712
  onClose: () => {
643
- H?.remove(), H = null;
713
+ K?.remove(), K = null;
644
714
  }
645
- }), a.appendChild(H);
646
- } catch (c) {
647
- J = c instanceof Error ? c.message : "Could not draft social post.";
715
+ }), a.appendChild(K);
716
+ } catch (u) {
717
+ te = u instanceof Error ? u.message : "Could not draft social post.";
648
718
  } finally {
649
- ie = null, q(E.getState());
719
+ le = null, A(_.getState());
650
720
  }
651
721
  }
652
722
  }
653
- function fe(r, c) {
654
- const L = r.accentColor ?? t.accentColor, Q = r.colorScheme ?? t.colorScheme, Ue = r.fontFamily ?? t.fontFamily, be = r.scribbleStyle ?? t.scribbleStyle;
655
- i = Ke(L, be), Xe(a, i, {
723
+ function xe(r, u) {
724
+ const L = r.accentColor ?? t.accentColor, ne = r.colorScheme ?? t.colorScheme, Ve = r.fontFamily ?? t.fontFamily, ve = r.scribbleStyle ?? t.scribbleStyle;
725
+ i = et(L, ve), tt(a, i, {
656
726
  accentColor: L,
657
- colorScheme: Q,
658
- fontFamily: Ue,
659
- scribbleStyle: be
660
- }), U("web-sdk.widget", "Updated widget appearance", {
661
- source: c,
727
+ colorScheme: ne,
728
+ fontFamily: Ve,
729
+ scribbleStyle: ve
730
+ }), V("web-sdk.widget", "Updated widget appearance", {
731
+ source: u,
662
732
  inputAppearance: r,
663
733
  appliedAccentColor: L,
664
- appliedColorScheme: Q,
665
- appliedFontFamily: Ue,
666
- appliedScribbleStyle: be,
734
+ appliedColorScheme: ne,
735
+ appliedFontFamily: Ve,
736
+ appliedScribbleStyle: ve,
667
737
  cssAccent: a.style.getPropertyValue("--pluno-pa-accent")
668
738
  });
669
739
  }
670
740
  }
671
- function Ke(e, t) {
672
- return t ? Ht(e) : $t(e);
741
+ function et(e, t) {
742
+ return t ? Zt(e) : Yt(e);
673
743
  }
674
- function Xe(e, t, n) {
744
+ function tt(e, t, n) {
675
745
  e.classList.toggle("pluno-pa-widget--dark", n.colorScheme === "dark"), e.classList.toggle("pluno-pa-widget--light", n.colorScheme !== "dark"), e.classList.toggle("pluno-pa-widget--scribble", n.scribbleStyle);
676
- const o = n.scribbleStyle ? dt(n.accentColor) : n.accentColor;
677
- e.style.setProperty("--pluno-pa-accent", o), e.style.fontFamily = n.scribbleStyle ? dn : n.fontFamily, n.scribbleStyle && Ln(e.ownerDocument);
746
+ const o = n.scribbleStyle ? ft(n.accentColor) : n.accentColor;
747
+ e.style.setProperty("--pluno-pa-accent", o), e.style.fontFamily = n.scribbleStyle ? An : n.fontFamily, n.scribbleStyle && jn(e.ownerDocument);
678
748
  const a = Array.from(e.querySelectorAll(".pluno-pa-widget__character"));
679
749
  for (const i of a)
680
750
  i.src = t;
681
751
  }
682
- function Ln(e) {
683
- if (e.getElementById(Ye))
752
+ function jn(e) {
753
+ if (e.getElementById(Qe))
684
754
  return;
685
755
  const t = e.createElement("style");
686
- t.id = Ye, t.textContent = `@font-face {
756
+ t.id = Qe, t.textContent = `@font-face {
687
757
  font-family: "Architects Daughter";
688
758
  font-style: normal;
689
759
  font-weight: 400;
@@ -691,120 +761,120 @@ function Ln(e) {
691
761
  src: url("https://fonts.gstatic.com/s/architectsdaughter/v20/KtkxAKiDZI_td1Lkx62xHZHDtgO_Y-bvTYlg4-7jA-U.woff2") format("woff2");
692
762
  }`, e.head.appendChild(t), e.fonts?.load('16px "Architects Daughter"');
693
763
  }
694
- function Pn({
764
+ function qn({
695
765
  root: e,
696
766
  launcherDragHandle: t,
697
767
  getPosition: n,
698
768
  setPosition: o,
699
769
  persist: a
700
770
  }) {
701
- let i = null, l = null, p = null, s = !1;
702
- const g = () => {
703
- i = null, l = null, p = null, s = !1, e.classList.remove("pluno-pa-widget--dragging");
704
- }, u = (m) => {
705
- e.classList.contains("pluno-pa-widget--open") || e.classList.contains("pluno-pa-widget--closing") || (m.preventDefault(), m.stopPropagation(), i = m.pointerId, l = { x: m.clientX, y: m.clientY }, p = n(), s = !1, t.setPointerCapture?.(m.pointerId));
706
- }, b = (m) => {
707
- if (i !== m.pointerId || !l || !p)
771
+ let i = null, l = null, p = null, g = !1;
772
+ const c = () => {
773
+ i = null, l = null, p = null, g = !1, e.classList.remove("pluno-pa-widget--dragging");
774
+ }, d = (h) => {
775
+ e.classList.contains("pluno-pa-widget--open") || e.classList.contains("pluno-pa-widget--closing") || (h.preventDefault(), h.stopPropagation(), i = h.pointerId, l = { x: h.clientX, y: h.clientY }, p = n(), g = !1, t.setPointerCapture?.(h.pointerId));
776
+ }, f = (h) => {
777
+ if (i !== h.pointerId || !l || !p)
708
778
  return;
709
- m.preventDefault();
710
- const f = m.clientX - l.x, d = m.clientY - l.y;
711
- !s && Math.hypot(f, d) < yn || (s = !0, e.classList.add("pluno-pa-widget--dragging"), o({ x: p.x + f, y: p.y + d }));
712
- }, w = (m) => {
713
- i === m.pointerId && (m.preventDefault(), m.stopPropagation(), s && a(), g());
714
- }, x = (m) => {
715
- i === m.pointerId && (m.preventDefault(), g());
716
- }, C = (m) => {
779
+ h.preventDefault();
780
+ const b = h.clientX - l.x, s = h.clientY - l.y;
781
+ !g && Math.hypot(b, s) < zn || (g = !0, e.classList.add("pluno-pa-widget--dragging"), o({ x: p.x + b, y: p.y + s }));
782
+ }, y = (h) => {
783
+ i === h.pointerId && (h.preventDefault(), h.stopPropagation(), g && a(), c());
784
+ }, x = (h) => {
785
+ i === h.pointerId && (h.preventDefault(), c());
786
+ }, E = (h) => {
717
787
  if (e.classList.contains("pluno-pa-widget--open") || e.classList.contains("pluno-pa-widget--closing"))
718
788
  return;
719
- const f = m.shiftKey ? Cn : vn, d = n();
720
- let h = null;
721
- m.key === "ArrowUp" ? h = { x: d.x, y: d.y - f } : m.key === "ArrowDown" ? h = { x: d.x, y: d.y + f } : m.key === "ArrowLeft" ? h = { x: d.x - f, y: d.y } : m.key === "ArrowRight" && (h = { x: d.x + f, y: d.y }), h && (m.preventDefault(), m.stopPropagation(), o(h), a());
789
+ const b = h.shiftKey ? $n : Gn, s = n();
790
+ let v = null;
791
+ h.key === "ArrowUp" ? v = { x: s.x, y: s.y - b } : h.key === "ArrowDown" ? v = { x: s.x, y: s.y + b } : h.key === "ArrowLeft" ? v = { x: s.x - b, y: s.y } : h.key === "ArrowRight" && (v = { x: s.x + b, y: s.y }), v && (h.preventDefault(), h.stopPropagation(), o(v), a());
722
792
  };
723
- return t.addEventListener("pointerdown", u), t.addEventListener("pointermove", b), t.addEventListener("pointerup", w), t.addEventListener("pointercancel", x), t.addEventListener("keydown", C), () => {
724
- t.removeEventListener("pointerdown", u), t.removeEventListener("pointermove", b), t.removeEventListener("pointerup", w), t.removeEventListener("pointercancel", x), t.removeEventListener("keydown", C);
793
+ return t.addEventListener("pointerdown", d), t.addEventListener("pointermove", f), t.addEventListener("pointerup", y), t.addEventListener("pointercancel", x), t.addEventListener("keydown", E), () => {
794
+ t.removeEventListener("pointerdown", d), t.removeEventListener("pointermove", f), t.removeEventListener("pointerup", y), t.removeEventListener("pointercancel", x), t.removeEventListener("keydown", E);
725
795
  };
726
796
  }
727
- function Le(e, t = !0) {
728
- const n = K(), o = e.getBoundingClientRect(), a = !e.classList.contains("pluno-pa-widget--open") && !e.classList.contains("pluno-pa-widget--closing");
797
+ function Te(e, t = !0) {
798
+ const n = J(), o = e.getBoundingClientRect(), a = !e.classList.contains("pluno-pa-widget--open") && !e.classList.contains("pluno-pa-widget--closing");
729
799
  return {
730
- width: t && a && o.width > 0 ? o.width : Math.min(mt, n.width - 36),
731
- height: t && a && o.height > 0 ? o.height : e.classList.contains("pluno-pa-widget--scribble") ? cn : ft
800
+ width: t && a && o.width > 0 ? o.width : Math.min(vt, n.width - 36),
801
+ height: t && a && o.height > 0 ? o.height : e.classList.contains("pluno-pa-widget--scribble") ? Nn : yt
732
802
  };
733
803
  }
734
- function _t() {
735
- const e = K();
804
+ function St() {
805
+ const e = J();
736
806
  return {
737
807
  width: Math.min(
738
- Y(e.width * hn, un, gn),
739
- e.width - A * 2
808
+ Z(e.width * Dn, Tn, In),
809
+ e.width - N * 2
740
810
  ),
741
811
  height: Math.min(
742
- Y(e.height * bn, mn, fn),
743
- e.height - Se - A
812
+ Z(e.height * On, Mn, Rn),
813
+ e.height - Ne - N
744
814
  )
745
815
  };
746
816
  }
747
- function An(e, t, n) {
817
+ function Kn(e, t, n) {
748
818
  const o = Number.parseFloat(e.style.left), a = Number.parseFloat(e.style.top);
749
819
  if (Number.isFinite(o) && Number.isFinite(a))
750
820
  return { x: o, y: a };
751
821
  const i = e.getBoundingClientRect();
752
822
  if (i.width > 0 || i.height > 0)
753
823
  return { x: i.left, y: i.top };
754
- const l = K();
824
+ const l = J();
755
825
  return {
756
826
  x: t === "bottom-left" ? 26 : l.width - 26 - n.width,
757
827
  y: l.height - 24 - n.height
758
828
  };
759
829
  }
760
- function Ze(e, t, n) {
761
- const o = K(), a = A + Nn(e);
830
+ function nt(e, t, n) {
831
+ const o = J(), a = N + Yn(e);
762
832
  return {
763
- x: Y(t.x, A, Math.max(A, o.width - n.width - A)),
764
- y: Y(t.y, a, Math.max(a, o.height - n.height - A))
833
+ x: Z(t.x, N, Math.max(N, o.width - n.width - N)),
834
+ y: Z(t.y, a, Math.max(a, o.height - n.height - N))
765
835
  };
766
836
  }
767
- function Nn(e) {
768
- return e.classList.contains("pluno-pa-widget--scribble") ? xn : _n;
837
+ function Yn(e) {
838
+ return e.classList.contains("pluno-pa-widget--scribble") ? Un : Fn;
769
839
  }
770
- function Je(e, t, n) {
771
- const o = Le(e), a = _t(), i = {
840
+ function ot(e, t, n) {
841
+ const o = Te(e), a = St(), i = {
772
842
  x: n === "bottom-left" ? t.x : t.x + o.width - a.width,
773
843
  y: t.y + o.height - a.height
774
844
  };
775
- return Tn(i);
845
+ return Xn(i);
776
846
  }
777
- function Tn(e) {
778
- const t = K(), n = _t();
847
+ function Xn(e) {
848
+ const t = J(), n = St();
779
849
  return {
780
- x: Y(e.x, A, Math.max(A, t.width - n.width - A)),
781
- y: Y(
850
+ x: Z(e.x, N, Math.max(N, t.width - n.width - N)),
851
+ y: Z(
782
852
  e.y,
783
- Se,
784
- Math.max(Se, t.height - n.height - A)
853
+ Ne,
854
+ Math.max(Ne, t.height - n.height - N)
785
855
  )
786
856
  };
787
857
  }
788
- function re(e, t) {
858
+ function pe(e, t) {
789
859
  if (e.classList.toggle("pluno-pa-widget--custom-position", t !== null), !t) {
790
860
  e.style.removeProperty("left"), e.style.removeProperty("top"), e.style.removeProperty("right"), e.style.removeProperty("bottom");
791
861
  return;
792
862
  }
793
863
  e.style.left = `${t.x}px`, e.style.top = `${t.y}px`, e.style.right = "auto", e.style.bottom = "auto";
794
864
  }
795
- function Dn(e, t) {
865
+ function Zn(e, t) {
796
866
  e.style.setProperty("--pluno-pa-panel-offset-x", `${t.x}px`), e.style.setProperty("--pluno-pa-panel-offset-y", `${t.y}px`);
797
867
  }
798
- function In(e) {
868
+ function Jn(e) {
799
869
  e.style.removeProperty("--pluno-pa-panel-offset-x"), e.style.removeProperty("--pluno-pa-panel-offset-y");
800
870
  }
801
- function K() {
871
+ function J() {
802
872
  return {
803
- width: window.innerWidth || document.documentElement.clientWidth || mt + A * 2,
804
- height: window.innerHeight || document.documentElement.clientHeight || ft + A * 2
873
+ width: window.innerWidth || document.documentElement.clientWidth || vt + N * 2,
874
+ height: window.innerHeight || document.documentElement.clientHeight || yt + N * 2
805
875
  };
806
876
  }
807
- function _e(e) {
877
+ function Ce(e) {
808
878
  const t = e.getBoundingClientRect();
809
879
  return {
810
880
  x: Math.round(t.x),
@@ -813,10 +883,10 @@ function _e(e) {
813
883
  height: Math.round(t.height)
814
884
  };
815
885
  }
816
- function Y(e, t, n) {
886
+ function Z(e, t, n) {
817
887
  return Math.min(Math.max(e, t), n);
818
888
  }
819
- function U(e, t, n) {
889
+ function V(e, t, n) {
820
890
  if (typeof window > "u")
821
891
  return;
822
892
  const o = window, a = {
@@ -825,42 +895,44 @@ function U(e, t, n) {
825
895
  message: t,
826
896
  details: n
827
897
  }, i = o.__plunoProductAgentDiagnostics__ ?? [];
828
- i.push(a), i.length > 120 && i.splice(0, i.length - 120), o.__plunoProductAgentDiagnostics__ = i, o.__PLUNO_PRODUCT_AGENT_DIAGNOSTICS__ = () => [...i], window.dispatchEvent(new CustomEvent(ln, { detail: a }));
898
+ i.push(a), i.length > 120 && i.splice(0, i.length - 120), o.__plunoProductAgentDiagnostics__ = i, o.__PLUNO_PRODUCT_AGENT_DIAGNOSTICS__ = () => [...i], window.dispatchEvent(new CustomEvent(kn, { detail: a }));
829
899
  }
830
- function Mn(e, t) {
831
- U("web-sdk.widget.position", e, t);
900
+ function Qn(e, t) {
901
+ V("web-sdk.widget.position", e, t);
832
902
  }
833
- function xe(e, t, n) {
903
+ function Ee(e, t, n) {
834
904
  const o = t.value.trim();
835
905
  return !o && n.length === 0 ? n : (t.value = "", t.style.height = "22px", t.style.overflowY = "hidden", e.sendMessage(o, { attachments: n.length > 0 ? n : void 0 }), t.dispatchEvent(new Event("input", { bubbles: !0 })), []);
836
906
  }
837
- function ee(e) {
907
+ function oe(e) {
838
908
  e.style.height = "0px";
839
909
  const t = Math.max(22, Math.min(e.scrollHeight, 140));
840
910
  e.style.height = `${t}px`, e.style.overflowY = e.scrollHeight > 140 ? "auto" : "hidden";
841
911
  }
842
- function Rn(e, t, n, o) {
843
- e.appendChild(Gn()), e.appendChild(On(t, n, o)), e.appendChild(vt("pluno-pa-widget__close", "Close", Un(16), !0)), e.appendChild(Bn(n));
912
+ function eo(e, t, n, o) {
913
+ e.appendChild(ro()), e.appendChild(to(t, n, o)), e.appendChild(Pt("pluno-pa-widget__close", "Close", lo(16), !0)), e.appendChild(no(n));
844
914
  }
845
- function On(e, t, n) {
915
+ function to(e, t, n) {
846
916
  const o = document.createElement("form");
847
917
  if (o.className = "pluno-pa-widget__launcher", n) {
848
918
  const i = document.createElement("button");
849
919
  i.type = "button", i.className = "pluno-pa-widget__launcher-drag-handle", i.setAttribute("aria-label", "Move Pluno launcher"), i.title = "Move Pluno launcher", o.appendChild(i);
850
920
  }
851
- o.appendChild(yt("pluno-pa-widget__character--launcher", t));
921
+ o.appendChild(Lt("pluno-pa-widget__character--launcher", t));
852
922
  const a = document.createElement("input");
853
923
  return a.className = "pluno-pa-widget__launcher-input", a.type = "text", a.placeholder = e, a.setAttribute("aria-label", e), o.appendChild(a), o;
854
924
  }
855
- function Bn(e) {
925
+ function no(e) {
856
926
  const t = document.createElement("section");
857
927
  t.className = "pluno-pa-widget__panel", t.hidden = !0;
858
928
  const n = document.createElement("div");
859
929
  n.className = "pluno-pa-widget__timeline-wrap";
860
930
  const o = document.createElement("main");
861
- return o.className = "pluno-pa-widget__timeline", o.appendChild(zn(e)), n.appendChild(o), n.appendChild(vt("pluno-pa-widget__new-chat", "New chat", $n(), !0)), t.appendChild(n), t.appendChild(Fn()), t;
931
+ o.className = "pluno-pa-widget__timeline", o.appendChild(ao(e)), n.appendChild(o);
932
+ const a = document.createElement("div");
933
+ return a.className = "pluno-pa-widget__active-users-counter", a.hidden = !0, n.appendChild(a), n.appendChild(Pt("pluno-pa-widget__new-chat", "New chat", po(), !0)), t.appendChild(n), t.appendChild(oo()), t;
862
934
  }
863
- function Fn() {
935
+ function oo() {
864
936
  const e = document.createElement("form");
865
937
  e.className = "pluno-pa-widget__composer";
866
938
  const t = document.createElement("div");
@@ -874,44 +946,49 @@ function Fn() {
874
946
  const i = document.createElement("textarea");
875
947
  i.className = "pluno-pa-widget__input", i.rows = 1, i.placeholder = "Ask for anything...", a.appendChild(i);
876
948
  const l = document.createElement("button");
877
- l.type = "button", l.className = "pluno-pa-widget__send", l.setAttribute("aria-label", "Send"), l.appendChild(Ct()), a.appendChild(l), e.appendChild(a);
949
+ l.type = "button", l.className = "pluno-pa-widget__send", l.setAttribute("aria-label", "Send"), l.appendChild(At()), a.appendChild(l), e.appendChild(a);
878
950
  const p = document.createElement("div");
879
951
  p.className = "pluno-pa-widget__composer-meta";
880
- const s = document.createElement("a");
881
- s.className = "pluno-pa-widget__powered-by", s.href = "https://pluno.ai", s.target = "_blank", s.rel = "noopener noreferrer", s.textContent = "Powered by Pluno.ai.", p.appendChild(s);
882
- const g = document.createElement("span");
883
- return g.className = "pluno-pa-widget__ai-disclaimer", g.textContent = "AI can make mistakes. Verify outputs.", p.appendChild(g), e.appendChild(p), e;
952
+ const g = document.createElement("a");
953
+ g.className = "pluno-pa-widget__powered-by", g.href = "https://pluno.ai", g.target = "_blank", g.rel = "noopener noreferrer", g.textContent = "Powered by Pluno.ai.", p.appendChild(g);
954
+ const c = document.createElement("span");
955
+ return c.className = "pluno-pa-widget__ai-disclaimer", c.textContent = "AI can make mistakes. Verify outputs.", p.appendChild(c), e.appendChild(p), e;
884
956
  }
885
- function zn(e) {
957
+ function ao(e) {
886
958
  const t = document.createElement("div");
887
- return t.className = "pluno-pa-widget__empty-state", t.appendChild(yt("pluno-pa-widget__character--empty", e)), t.appendChild(xt()), t;
959
+ return t.className = "pluno-pa-widget__empty-state", t.appendChild(Lt("pluno-pa-widget__character--empty", e)), t.appendChild(kt()), t;
888
960
  }
889
- function xt() {
961
+ function kt() {
890
962
  const e = document.createElement("div");
891
963
  return e.className = "pluno-pa-widget__empty", e.appendChild(document.createTextNode("Hey there, I'm Pluno 👋")), e.appendChild(document.createElement("br")), e.appendChild(document.createTextNode("What do you want to do today?")), e;
892
964
  }
893
- function yt(e, t) {
965
+ function io(e, t) {
966
+ e.replaceChildren(), e.setAttribute("aria-label", `${t.toLocaleString("en-US")} users currently active`);
967
+ const n = document.createElement("span");
968
+ n.className = "pluno-pa-widget__active-users-counter-dot", n.setAttribute("aria-hidden", "true"), e.appendChild(n), e.appendChild(document.createTextNode(`${t.toLocaleString("en-US")} users currently active`));
969
+ }
970
+ function Lt(e, t) {
894
971
  const n = document.createElement("img");
895
972
  return n.className = `pluno-pa-widget__character ${e}`, n.src = t, n.alt = "", n.setAttribute("aria-hidden", "true"), n;
896
973
  }
897
- function vt(e, t, n, o) {
974
+ function Pt(e, t, n, o) {
898
975
  const a = document.createElement("button");
899
976
  return a.type = "button", a.className = e, a.setAttribute("aria-label", t), a.title = t, a.hidden = o, a.appendChild(n), a;
900
977
  }
901
- function Gn() {
902
- const e = S("svg", {
978
+ function ro() {
979
+ const e = k("svg", {
903
980
  class: "pluno-pa-widget__scribble-defs",
904
981
  "aria-hidden": "true",
905
982
  focusable: "false",
906
983
  width: "0",
907
984
  height: "0"
908
- }), t = S("defs");
909
- return t.appendChild(ye("pluno-pa-scribble-wobble", "2", "12")), t.appendChild(ye("pluno-pa-scribble-wobble-2", "5", "15")), t.appendChild(ye("pluno-pa-scribble-wobble-3", "9", "19")), e.appendChild(t), e;
985
+ }), t = k("defs");
986
+ return t.appendChild(Se("pluno-pa-scribble-wobble", "2", "12")), t.appendChild(Se("pluno-pa-scribble-wobble-2", "5", "15")), t.appendChild(Se("pluno-pa-scribble-wobble-3", "9", "19")), e.appendChild(t), e;
910
987
  }
911
- function ye(e, t, n) {
912
- const o = S("filter", { id: e, x: "-8%", y: "-8%", width: "116%", height: "116%" });
988
+ function Se(e, t, n) {
989
+ const o = k("filter", { id: e, x: "-8%", y: "-8%", width: "116%", height: "116%" });
913
990
  return o.appendChild(
914
- S("feTurbulence", {
991
+ k("feTurbulence", {
915
992
  type: "fractalNoise",
916
993
  baseFrequency: "0.012 0.028",
917
994
  numOctaves: "3",
@@ -919,7 +996,7 @@ function ye(e, t, n) {
919
996
  result: "stroke-noise"
920
997
  })
921
998
  ), o.appendChild(
922
- S("feDisplacementMap", {
999
+ k("feDisplacementMap", {
923
1000
  in: "SourceGraphic",
924
1001
  in2: "stroke-noise",
925
1002
  scale: "3.5",
@@ -928,7 +1005,7 @@ function ye(e, t, n) {
928
1005
  result: "warped"
929
1006
  })
930
1007
  ), o.appendChild(
931
- S("feTurbulence", {
1008
+ k("feTurbulence", {
932
1009
  type: "fractalNoise",
933
1010
  baseFrequency: "0.7",
934
1011
  numOctaves: "1",
@@ -936,7 +1013,7 @@ function ye(e, t, n) {
936
1013
  result: "ink-noise"
937
1014
  })
938
1015
  ), o.appendChild(
939
- S("feDisplacementMap", {
1016
+ k("feDisplacementMap", {
940
1017
  in: "warped",
941
1018
  in2: "ink-noise",
942
1019
  scale: "0.9",
@@ -945,31 +1022,31 @@ function ye(e, t, n) {
945
1022
  })
946
1023
  ), o;
947
1024
  }
948
- function Un(e) {
949
- const t = X("0 0 24 24", e, e, "none", "currentColor", "2.25");
950
- return t.appendChild(S("path", { d: "m6 9 6 6 6-6" })), t;
1025
+ function lo(e) {
1026
+ const t = Q("0 0 24 24", e, e, "none", "currentColor", "2.25");
1027
+ return t.appendChild(k("path", { d: "m6 9 6 6 6-6" })), t;
951
1028
  }
952
- function $n() {
953
- const e = X("0 0 24 24", 17, 17, "none", "currentColor", "2.25");
954
- return e.appendChild(S("path", { d: "M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7" })), e.appendChild(S("path", { d: "M18.4 2.6a2.1 2.1 0 0 1 3 3L12 15l-4 1 1-4Z" })), e;
1029
+ function po() {
1030
+ const e = Q("0 0 24 24", 17, 17, "none", "currentColor", "2.25");
1031
+ return e.appendChild(k("path", { d: "M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7" })), e.appendChild(k("path", { d: "M18.4 2.6a2.1 2.1 0 0 1 3 3L12 15l-4 1 1-4Z" })), e;
955
1032
  }
956
- function Ct() {
957
- const e = X("0 0 24 24", 14, 14, "none", "currentColor", "2.75");
958
- return e.appendChild(S("line", { x1: "12", y1: "19", x2: "12", y2: "5" })), e.appendChild(S("polyline", { points: "5 12 12 5 19 12" })), e;
1033
+ function At() {
1034
+ const e = Q("0 0 24 24", 14, 14, "none", "currentColor", "2.75");
1035
+ return e.appendChild(k("line", { x1: "12", y1: "19", x2: "12", y2: "5" })), e.appendChild(k("polyline", { points: "5 12 12 5 19 12" })), e;
959
1036
  }
960
- function Wn() {
961
- const e = X("0 0 24 24", 18, 18, "currentColor");
962
- return e.appendChild(S("rect", { x: "6", y: "6", width: "12", height: "12", rx: "2" })), e;
1037
+ function so() {
1038
+ const e = Q("0 0 24 24", 18, 18, "currentColor");
1039
+ return e.appendChild(k("rect", { x: "6", y: "6", width: "12", height: "12", rx: "2" })), e;
963
1040
  }
964
- function Hn() {
965
- const e = X("0 0 24 24", 12, 12, "none", "currentColor", "2.4");
966
- return e.appendChild(S("path", { d: "M18 6 6 18" })), e.appendChild(S("path", { d: "m6 6 12 12" })), e;
1041
+ function co() {
1042
+ const e = Q("0 0 24 24", 12, 12, "none", "currentColor", "2.4");
1043
+ return e.appendChild(k("path", { d: "M18 6 6 18" })), e.appendChild(k("path", { d: "m6 6 12 12" })), e;
967
1044
  }
968
- function Vn() {
969
- const e = X("0 0 24 24", 13, 13, "none", "currentColor", "2.25");
970
- return e.appendChild(S("rect", { width: "14", height: "14", x: "8", y: "8", rx: "2", ry: "2" })), e.appendChild(S("path", { d: "M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2" })), e;
1045
+ function uo() {
1046
+ const e = Q("0 0 24 24", 13, 13, "none", "currentColor", "2.25");
1047
+ return e.appendChild(k("rect", { width: "14", height: "14", x: "8", y: "8", rx: "2", ry: "2" })), e.appendChild(k("path", { d: "M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2" })), e;
971
1048
  }
972
- function X(e, t, n, o, a, i) {
1049
+ function Q(e, t, n, o, a, i) {
973
1050
  const l = {
974
1051
  viewBox: e,
975
1052
  width: String(t),
@@ -977,41 +1054,41 @@ function X(e, t, n, o, a, i) {
977
1054
  fill: o,
978
1055
  "aria-hidden": "true"
979
1056
  };
980
- return a && (l.stroke = a, l["stroke-linecap"] = "round", l["stroke-linejoin"] = "round"), i && (l["stroke-width"] = i), S("svg", l);
1057
+ return a && (l.stroke = a, l["stroke-linecap"] = "round", l["stroke-linejoin"] = "round"), i && (l["stroke-width"] = i), k("svg", l);
981
1058
  }
982
- function S(e, t = {}) {
983
- const n = document.createElementNS(wn, e);
1059
+ function k(e, t = {}) {
1060
+ const n = document.createElementNS(Bn, e);
984
1061
  for (const [o, a] of Object.entries(t))
985
1062
  n.setAttribute(o, a);
986
1063
  return n;
987
1064
  }
988
- function Qe(e) {
1065
+ function at(e) {
989
1066
  for (const t of ["keydown", "keypress", "keyup"])
990
1067
  e.addEventListener(t, (n) => {
991
1068
  n.stopPropagation();
992
1069
  });
993
1070
  }
994
- function qn(e, t, n) {
1071
+ function go(e, t, n) {
995
1072
  e.replaceChildren(), e.hidden = t.length === 0;
996
1073
  for (const [o, a] of t.entries()) {
997
1074
  const i = document.createElement("div");
998
- i.className = "pluno-pa-widget__attachment", i.appendChild(jn(a));
1075
+ i.className = "pluno-pa-widget__attachment", i.appendChild(ho(a));
999
1076
  const l = document.createElement("span");
1000
1077
  l.textContent = a.name, i.appendChild(l);
1001
1078
  const p = document.createElement("button");
1002
- p.type = "button", p.setAttribute("aria-label", `Remove ${a.name}`), p.appendChild(Hn()), p.addEventListener("click", () => n(o)), i.appendChild(p), e.appendChild(i);
1079
+ p.type = "button", p.setAttribute("aria-label", `Remove ${a.name}`), p.appendChild(co()), p.addEventListener("click", () => n(o)), i.appendChild(p), e.appendChild(i);
1003
1080
  }
1004
1081
  }
1005
- function jn(e) {
1006
- if (Et(e)) {
1082
+ function ho(e) {
1083
+ if (Nt(e)) {
1007
1084
  const n = document.createElement("img");
1008
1085
  return n.src = e.dataUrl, n.alt = "", n.setAttribute("aria-hidden", "true"), n;
1009
1086
  }
1010
1087
  const t = document.createElement("span");
1011
1088
  return t.className = "pluno-pa-widget__attachment-file", t.textContent = "PDF", t;
1012
1089
  }
1013
- function Yn(e) {
1014
- if (Et(e)) {
1090
+ function mo(e) {
1091
+ if (Nt(e)) {
1015
1092
  const a = document.createElement("img");
1016
1093
  return a.src = e.dataUrl, a.alt = e.name, a;
1017
1094
  }
@@ -1022,51 +1099,51 @@ function Yn(e) {
1022
1099
  const o = document.createElement("strong");
1023
1100
  return o.textContent = e.name, t.append(n, o), t;
1024
1101
  }
1025
- function Et(e) {
1102
+ function Nt(e) {
1026
1103
  return e.mimeType.startsWith("image/");
1027
1104
  }
1028
- function Kn(e) {
1105
+ function fo(e) {
1029
1106
  return e === "application/pdf" ? "document.pdf" : "image";
1030
1107
  }
1031
- async function Xn(e) {
1108
+ async function bo(e) {
1032
1109
  if (!e)
1033
1110
  return [];
1034
1111
  const t = Array.from(e);
1035
- if (t.length > de)
1036
- throw new Error(`Attach up to ${de} files per message.`);
1112
+ if (t.length > ue)
1113
+ throw new Error(`Attach up to ${ue} files per message.`);
1037
1114
  return Promise.all(
1038
1115
  t.map(async (n) => {
1039
- const o = Zn(n);
1116
+ const o = wo(n);
1040
1117
  if (!o)
1041
1118
  throw new Error("Pluno supports PNG, JPEG, WebP, non-animated GIF, and PDF files.");
1042
- if (n.size > pn)
1119
+ if (n.size > Ln)
1043
1120
  throw new Error("Each Pluno attachment can be up to 10 MB.");
1044
1121
  if (o === "image/gif") {
1045
- const a = new Uint8Array(await ro(n));
1046
- if (Qn(a))
1122
+ const a = new Uint8Array(await Lo(n));
1123
+ if (xo(a))
1047
1124
  throw new Error("Pluno supports non-animated GIF images.");
1048
1125
  }
1049
1126
  return {
1050
- name: n.name || Kn(o),
1127
+ name: n.name || fo(o),
1051
1128
  mimeType: o,
1052
1129
  sizeBytes: n.size,
1053
- dataUrl: Jn(await lo(n), o)
1130
+ dataUrl: _o(await Po(n), o)
1054
1131
  };
1055
1132
  })
1056
1133
  );
1057
1134
  }
1058
- function Zn(e) {
1059
- if (sn.has(e.type))
1135
+ function wo(e) {
1136
+ if (Pn.has(e.type))
1060
1137
  return e.type;
1061
1138
  const t = e.name.toLowerCase();
1062
1139
  return t.endsWith(".png") ? "image/png" : t.endsWith(".jpg") || t.endsWith(".jpeg") ? "image/jpeg" : t.endsWith(".webp") ? "image/webp" : t.endsWith(".gif") ? "image/gif" : t.endsWith(".pdf") ? "application/pdf" : null;
1063
1140
  }
1064
- function Jn(e, t) {
1141
+ function _o(e, t) {
1065
1142
  const n = `data:${t};base64,`;
1066
1143
  return e.startsWith(n) ? e : e.replace(/^data:[^;]*;base64,/, n);
1067
1144
  }
1068
- function Qn(e) {
1069
- if (e.length < 14 || !eo(e))
1145
+ function xo(e) {
1146
+ if (e.length < 14 || !vo(e))
1070
1147
  return !1;
1071
1148
  const t = e[10];
1072
1149
  let n = 13;
@@ -1077,7 +1154,7 @@ function Qn(e) {
1077
1154
  if (n += 1, a === 59)
1078
1155
  return !1;
1079
1156
  if (a === 33) {
1080
- n += 1, n = et(e, n);
1157
+ n += 1, n = it(e, n);
1081
1158
  continue;
1082
1159
  }
1083
1160
  if (a !== 44)
@@ -1089,14 +1166,14 @@ function Qn(e) {
1089
1166
  const i = e[n + 8];
1090
1167
  if (n += 9, i & 128 && (n += 3 * 2 ** ((i & 7) + 1)), n >= e.length)
1091
1168
  return !1;
1092
- n += 1, n = et(e, n);
1169
+ n += 1, n = it(e, n);
1093
1170
  }
1094
1171
  return !1;
1095
1172
  }
1096
- function eo(e) {
1173
+ function vo(e) {
1097
1174
  return e[0] === 71 && e[1] === 73 && e[2] === 70 && e[3] === 56 && (e[4] === 55 || e[4] === 57) && e[5] === 97;
1098
1175
  }
1099
- function et(e, t) {
1176
+ function it(e, t) {
1100
1177
  for (; t < e.length; ) {
1101
1178
  const n = e[t];
1102
1179
  if (t += 1, n === 0)
@@ -1105,69 +1182,69 @@ function et(e, t) {
1105
1182
  }
1106
1183
  return t;
1107
1184
  }
1108
- function le(e) {
1185
+ function se(e) {
1109
1186
  return !!(e && Array.from(e.types).includes("Files"));
1110
1187
  }
1111
- function ve(e, t, n = null) {
1112
- if (!e || !Pe(t, n)) {
1188
+ function ke(e, t, n = null) {
1189
+ if (!e || !Ie(t, n)) {
1113
1190
  e && (e.hidden = !0, e.replaceChildren());
1114
1191
  return;
1115
1192
  }
1116
- e.hidden = !1, e.replaceChildren(), e.className = "pluno-pa-widget__billing-status", F(t) || Te(n) ? e.appendChild(to(t, n)) : kt(t) && e.appendChild(no(t));
1193
+ e.hidden = !1, e.replaceChildren(), e.className = "pluno-pa-widget__billing-status", G(t) || Re(n) ? e.appendChild(yo(t, n)) : Tt(t) && e.appendChild(Co(t));
1117
1194
  }
1118
- function to(e, t) {
1195
+ function yo(e, t) {
1119
1196
  const n = document.createElement("div");
1120
1197
  n.className = "pluno-pa-widget__billing-action-card";
1121
1198
  const o = e.limitExceeded || t === "limit_exceeded", a = document.createElement("strong");
1122
1199
  a.textContent = o ? "Credits used up" : "Billing needs attention", n.appendChild(a);
1123
1200
  const i = document.createElement("span");
1124
- return i.textContent = o ? "Earn bonus credits or upgrade to keep using Pluno on this product." : e.paymentIssue ?? "Open billing to keep using Pluno.", n.appendChild(i), n.appendChild(St(e, "Upgrade plan", "pluno-pa-widget__billing-action-card-actions")), n;
1201
+ return i.textContent = o ? "Earn bonus credits or upgrade to keep using Pluno on this product." : e.paymentIssue ?? "Open billing to keep using Pluno.", n.appendChild(i), n.appendChild(It(e, "Upgrade plan", "pluno-pa-widget__billing-action-card-actions")), n;
1125
1202
  }
1126
- function no(e) {
1203
+ function Co(e) {
1127
1204
  const t = document.createElement("div");
1128
1205
  t.className = "pluno-pa-widget__billing-action-card pluno-pa-widget__billing-action-card--low";
1129
1206
  const n = document.createElement("strong");
1130
1207
  n.textContent = "Credits running low", t.appendChild(n);
1131
1208
  const o = document.createElement("span");
1132
- return o.textContent = ao(e) ?? "Credits are running low for this period.", t.appendChild(o), t.appendChild(St(e, "Upgrade", "pluno-pa-widget__billing-action-card-actions")), t;
1209
+ return o.textContent = So(e) ?? "Credits are running low for this period.", t.appendChild(o), t.appendChild(It(e, "Upgrade", "pluno-pa-widget__billing-action-card-actions")), t;
1133
1210
  }
1134
- function Pe(e, t) {
1135
- return e !== null && (F(e) || kt(e) || Te(t));
1211
+ function Ie(e, t) {
1212
+ return e !== null && (G(e) || Tt(e) || Re(t));
1136
1213
  }
1137
- function tt(e, t, n) {
1138
- return Pe(t, n) || oo(t) ? !0 : !Pe(e, n);
1214
+ function rt(e, t, n) {
1215
+ return Ie(t, n) || Eo(t) ? !0 : !Ie(e, n);
1139
1216
  }
1140
- function oo(e) {
1141
- return e != null && (e.creditsUsed !== null || e.creditLimit !== null || e.creditsRemaining !== null || F(e));
1217
+ function Eo(e) {
1218
+ return e != null && (e.creditsUsed !== null || e.creditLimit !== null || e.creditsRemaining !== null || G(e));
1142
1219
  }
1143
- function F(e) {
1220
+ function G(e) {
1144
1221
  return e?.limitExceeded === !0 || !!e?.paymentIssue;
1145
1222
  }
1146
- function Te(e) {
1223
+ function Re(e) {
1147
1224
  return e === "limit_exceeded" || e === "subscription_required" || e === "subscription_inactive" || e === "payment_issue" || e === "subscription_invalid" || e === "payment_required";
1148
1225
  }
1149
- function kt(e) {
1150
- return !F(e) && e.creditLimit !== null && e.creditLimit > 0 && e.creditsRemaining !== null && e.creditsRemaining > 0 && e.creditsRemaining / e.creditLimit <= 0.2;
1226
+ function Tt(e) {
1227
+ return !G(e) && e.creditLimit !== null && e.creditLimit > 0 && e.creditsRemaining !== null && e.creditsRemaining > 0 && e.creditsRemaining / e.creditLimit <= 0.2;
1151
1228
  }
1152
- function ao(e) {
1153
- return e.creditsRemaining === null ? null : `${io(e.creditsRemaining)} credits left`;
1229
+ function So(e) {
1230
+ return e.creditsRemaining === null ? null : `${ko(e.creditsRemaining)} credits left`;
1154
1231
  }
1155
- function io(e) {
1232
+ function ko(e) {
1156
1233
  return new Intl.NumberFormat("en-US", {
1157
1234
  maximumFractionDigits: 0
1158
1235
  }).format(Math.ceil(e));
1159
1236
  }
1160
- function St(e, t, n) {
1237
+ function It(e, t, n) {
1161
1238
  const o = document.createElement("div");
1162
- return o.className = n, o.appendChild(nt(t, e.pricingUrl)), o.appendChild(nt("Earn credits", e.earnCreditsUrl)), o;
1239
+ return o.className = n, o.appendChild(lt(t, e.pricingUrl)), o.appendChild(lt("Earn credits", e.earnCreditsUrl)), o;
1163
1240
  }
1164
- function nt(e, t) {
1241
+ function lt(e, t) {
1165
1242
  const n = document.createElement("button");
1166
1243
  return n.type = "button", n.textContent = e, n.disabled = t.trim().length === 0, n.addEventListener("click", () => {
1167
1244
  t.trim().length !== 0 && window.open(t, "_blank", "noopener,noreferrer");
1168
1245
  }), n;
1169
1246
  }
1170
- function ro(e) {
1247
+ function Lo(e) {
1171
1248
  return new Promise((t, n) => {
1172
1249
  const o = new FileReader();
1173
1250
  o.addEventListener("load", () => {
@@ -1181,7 +1258,7 @@ function ro(e) {
1181
1258
  }), o.readAsArrayBuffer(e);
1182
1259
  });
1183
1260
  }
1184
- function lo(e) {
1261
+ function Po(e) {
1185
1262
  return new Promise((t, n) => {
1186
1263
  const o = new FileReader();
1187
1264
  o.addEventListener("load", () => {
@@ -1195,112 +1272,117 @@ function lo(e) {
1195
1272
  }), o.readAsDataURL(e);
1196
1273
  });
1197
1274
  }
1198
- function po(e, t, n, o, a, i, l, p, s) {
1199
- const g = [...o.messages], u = g.filter((h) => !wo(h));
1200
- e.replaceChildren(), Pt(t, o.isThinking);
1201
- const b = u.length > 0 || !!o.assistantDraft || o.isThinking;
1202
- if (n.hidden = !b, u.length === 0 && !o.assistantDraft && !o.lastError && !o.isThinking) {
1203
- const h = document.createElement("div");
1204
- h.className = "pluno-pa-widget__empty-state pluno-pa-widget__empty-state--starter";
1205
- const _ = document.createElement("img");
1206
- _.className = "pluno-pa-widget__character pluno-pa-widget__character--empty", _.src = l(), _.alt = "", _.setAttribute("aria-hidden", "true"), h.appendChild(_), h.appendChild(xt());
1207
- const k = document.createElement("div");
1208
- k.className = o.starterPrompts.length > 0 ? "pluno-pa-widget__starter-prompts" : "pluno-pa-widget__starter-prompts pluno-pa-widget__starter-prompts--empty", o.starterPrompts.length === 0 && k.setAttribute("aria-hidden", "true");
1209
- for (const y of o.starterPrompts) {
1210
- const v = document.createElement("button");
1211
- v.type = "button", v.className = "pluno-pa-widget__starter-prompt", v.textContent = `"${y}"`, v.addEventListener("click", () => {
1212
- p(y);
1213
- }), k.appendChild(v);
1214
- }
1215
- h.appendChild(k), e.appendChild(h);
1275
+ function pt(e, t) {
1276
+ return e.messages.filter((o) => !Dt(o)).length === 0 && !e.assistantDraft && !e.lastError && !e.isThinking && !t;
1277
+ }
1278
+ function Ao(e, t, n, o, a, i, l, p, g, c, d, f) {
1279
+ const y = [...a.messages], x = y.filter((m) => !Dt(m));
1280
+ e.replaceChildren(), Rt(t, a.isThinking), o.hidden = !l, l && i !== null && io(o, i);
1281
+ const E = x.length > 0 || !!a.assistantDraft || a.isThinking;
1282
+ if (n.hidden = !E, x.length === 0 && !a.assistantDraft && !a.lastError && !a.isThinking) {
1283
+ const m = document.createElement("div");
1284
+ m.className = "pluno-pa-widget__empty-state pluno-pa-widget__empty-state--starter";
1285
+ const w = document.createElement("div");
1286
+ w.className = "pluno-pa-widget__empty-hero";
1287
+ const C = document.createElement("img");
1288
+ C.className = "pluno-pa-widget__character pluno-pa-widget__character--empty", C.src = c(), C.alt = "", C.setAttribute("aria-hidden", "true"), w.appendChild(C), m.appendChild(w), m.appendChild(kt());
1289
+ const S = document.createElement("div");
1290
+ S.className = a.starterPrompts.length > 0 ? "pluno-pa-widget__starter-prompts" : "pluno-pa-widget__starter-prompts pluno-pa-widget__starter-prompts--empty", a.starterPrompts.length === 0 && S.setAttribute("aria-hidden", "true");
1291
+ for (const T of a.starterPrompts) {
1292
+ const D = document.createElement("button");
1293
+ D.type = "button", D.className = "pluno-pa-widget__starter-prompt", D.textContent = `"${T}"`, D.addEventListener("click", () => {
1294
+ d(T);
1295
+ }), S.appendChild(D);
1296
+ }
1297
+ m.appendChild(S), e.appendChild(m);
1216
1298
  return;
1217
1299
  }
1218
- let w = null, x = null, C = [];
1219
- const m = () => {
1220
- if (C.length === 0)
1300
+ let h = null, b = null, s = [];
1301
+ const v = () => {
1302
+ if (s.length === 0)
1221
1303
  return !1;
1222
- const h = _o(C, a, i, l());
1223
- return e.appendChild(h), w = null, x = h, C = [], !0;
1304
+ const m = Fo(s, p, g, c());
1305
+ return e.appendChild(m), h = null, b = m, s = [], !0;
1224
1306
  };
1225
- for (let h = 0; h < u.length; h += 1) {
1226
- const _ = u[h];
1227
- if (_.role === "tool") {
1228
- C.push(_);
1307
+ for (let m = 0; m < x.length; m += 1) {
1308
+ const w = x[m];
1309
+ if (w.role === "tool") {
1310
+ s.push(w);
1229
1311
  continue;
1230
1312
  }
1231
- if (_.role === "system")
1313
+ if (w.role === "system")
1232
1314
  continue;
1233
- const k = m(), y = at(_.content);
1234
- if (_.role === "assistant" && !k) {
1235
- const ne = Ae(l());
1236
- e.appendChild(ne), w = null, x = ne;
1315
+ const C = v(), S = dt(w.content);
1316
+ if (w.role === "assistant" && !C) {
1317
+ const _ = De(c());
1318
+ e.appendChild(_), h = null, b = _;
1237
1319
  }
1238
- const v = document.createElement("div");
1239
- v.className = `pluno-pa-widget__message pluno-pa-widget__message--${_.role}`, _.role === "assistant" ? it(v, y) : v.textContent = y, _.role === "user" && _.attachments?.length && v.appendChild(co(_.attachments));
1320
+ const T = document.createElement("div");
1321
+ T.className = `pluno-pa-widget__message pluno-pa-widget__message--${w.role}`, w.role === "assistant" ? ct(T, S) : T.textContent = S, w.role === "user" && w.attachments?.length && T.appendChild(To(w.attachments));
1240
1322
  const D = document.createElement("div");
1241
- D.className = "pluno-pa-widget__message-actions", D.appendChild(ot(y)), v.appendChild(D), e.appendChild(v), w = v, x = null;
1323
+ D.className = "pluno-pa-widget__message-actions", D.appendChild(st(S)), T.appendChild(D), e.appendChild(T), h = T, b = null;
1242
1324
  }
1243
- const f = m();
1244
- if (o.assistantDraft) {
1245
- if (!f) {
1246
- const y = Ae(l());
1247
- e.appendChild(y), w = null, x = y;
1248
- }
1249
- const h = at(o.assistantDraft), _ = document.createElement("div");
1250
- _.className = "pluno-pa-widget__message pluno-pa-widget__message--assistant", it(_, h);
1251
- const k = document.createElement("div");
1252
- k.className = "pluno-pa-widget__message-actions", k.appendChild(ot(h)), _.appendChild(k), e.appendChild(_), w = _, x = null;
1325
+ const $ = v();
1326
+ if (a.assistantDraft) {
1327
+ if (!$) {
1328
+ const S = De(c());
1329
+ e.appendChild(S), h = null, b = S;
1330
+ }
1331
+ const m = dt(a.assistantDraft), w = document.createElement("div");
1332
+ w.className = "pluno-pa-widget__message pluno-pa-widget__message--assistant", ct(w, m);
1333
+ const C = document.createElement("div");
1334
+ C.className = "pluno-pa-widget__message-actions", C.appendChild(st(m)), w.appendChild(C), e.appendChild(w), h = w, b = null;
1253
1335
  }
1254
- if (o.isThinking && !o.assistantDraft)
1255
- if (f) {
1256
- const h = Lt();
1257
- e.appendChild(h), w = null, x = h;
1336
+ if (a.isThinking && !a.assistantDraft)
1337
+ if ($) {
1338
+ const m = Mt();
1339
+ e.appendChild(m), h = null, b = m;
1258
1340
  } else {
1259
- const h = xo(l());
1260
- e.appendChild(h), w = null, x = h;
1341
+ const m = Uo(c());
1342
+ e.appendChild(m), h = null, b = m;
1261
1343
  }
1262
- if (o.lastError) {
1263
- const h = document.createElement("div");
1264
- h.className = "pluno-pa-widget__error", h.textContent = o.lastError, e.appendChild(h), w = h, x = null;
1344
+ if (a.lastError) {
1345
+ const m = document.createElement("div");
1346
+ m.className = "pluno-pa-widget__error", m.textContent = a.lastError, e.appendChild(m), h = m, b = null;
1265
1347
  }
1266
- const d = s && !o.isThinking ? Xt(g) : null;
1267
- if (s && d && !s.dismissedCandidateIds.has(d.id)) {
1268
- const h = uo(d, {
1269
- isDrafting: s.draftingCandidateId === d.id,
1270
- error: s.error,
1271
- onDraft: s.onDraft,
1272
- onDismiss: s.onDismiss,
1273
- onDisable: s.onDisable
1348
+ const U = f && !a.isThinking ? on(y) : null;
1349
+ if (f && U && !f.dismissedCandidateIds.has(U.id)) {
1350
+ const m = Io(U, {
1351
+ isDrafting: f.draftingCandidateId === U.id,
1352
+ error: f.error,
1353
+ onDraft: f.onDraft,
1354
+ onDismiss: f.onDismiss,
1355
+ onDisable: f.onDisable
1274
1356
  });
1275
- e.appendChild(h), s.onSeen(d), w = null, x = h;
1357
+ e.appendChild(m), f.onSeen(U), h = null, b = m;
1276
1358
  }
1277
- w?.classList.add("pluno-pa-widget__message--bottom-reserve"), x?.classList.add("pluno-pa-widget__bottom-reserve-compact"), e.scrollTop = e.scrollHeight;
1359
+ h?.classList.add("pluno-pa-widget__message--bottom-reserve"), b?.classList.add("pluno-pa-widget__bottom-reserve-compact"), e.scrollTop = e.scrollHeight;
1278
1360
  }
1279
- function so(e, t, n, o, a, i) {
1280
- e.replaceChildren(), Pt(t, !1), t.disabled = !0, n.hidden = !0;
1361
+ function No(e, t, n, o, a, i) {
1362
+ e.replaceChildren(), Rt(t, !1), t.disabled = !0, n.hidden = !0;
1281
1363
  const l = document.createElement("div");
1282
1364
  l.className = "pluno-pa-widget__empty-state pluno-pa-widget__empty-state--starter";
1283
1365
  const p = document.createElement("img");
1284
1366
  p.className = "pluno-pa-widget__character pluno-pa-widget__character--empty", p.src = o(), p.alt = "", p.setAttribute("aria-hidden", "true"), l.appendChild(p);
1285
- const s = document.createElement("div");
1286
- s.className = "pluno-pa-widget__empty", s.textContent = "Log in to use Pluno on this page.", l.appendChild(s);
1287
- const g = document.createElement("button");
1288
- g.type = "button", g.className = "pluno-pa-widget__login", g.textContent = a, g.addEventListener("click", () => i?.()), l.appendChild(g), e.appendChild(l);
1367
+ const g = document.createElement("div");
1368
+ g.className = "pluno-pa-widget__empty", g.textContent = "Log in to use Pluno on this page.", l.appendChild(g);
1369
+ const c = document.createElement("button");
1370
+ c.type = "button", c.className = "pluno-pa-widget__login", c.textContent = a, c.addEventListener("click", () => i?.()), l.appendChild(c), e.appendChild(l);
1289
1371
  }
1290
- function co(e) {
1372
+ function To(e) {
1291
1373
  const t = document.createElement("div");
1292
1374
  t.className = "pluno-pa-widget__message-attachments";
1293
1375
  for (const n of e)
1294
- t.appendChild(Yn(n));
1376
+ t.appendChild(mo(n));
1295
1377
  return t;
1296
1378
  }
1297
- function ot(e) {
1379
+ function st(e) {
1298
1380
  const t = document.createElement("button");
1299
- return t.type = "button", t.className = "pluno-pa-widget__message-copy", t.setAttribute("aria-label", "Copy message"), t.title = "Copy message", t.appendChild(Vn()), t.addEventListener("click", (n) => {
1381
+ return t.type = "button", t.className = "pluno-pa-widget__message-copy", t.setAttribute("aria-label", "Copy message"), t.title = "Copy message", t.appendChild(uo()), t.addEventListener("click", (n) => {
1300
1382
  n.preventDefault(), n.stopPropagation(), navigator.clipboard.writeText(e);
1301
1383
  }), t;
1302
1384
  }
1303
- function uo(e, t) {
1385
+ function Io(e, t) {
1304
1386
  const n = document.createElement("article");
1305
1387
  n.className = "pluno-pa-widget__share-prompt";
1306
1388
  const o = document.createElement("div");
@@ -1311,35 +1393,35 @@ function uo(e, t) {
1311
1393
  i.textContent = "Share this win?", a.appendChild(i);
1312
1394
  const l = document.createElement("span");
1313
1395
  if (l.textContent = t.isDrafting ? "Drafting social post..." : "Create a screenshot and generate a draft for a social post.", a.appendChild(l), t.error) {
1314
- const u = document.createElement("span");
1315
- u.className = "pluno-pa-widget__share-prompt-error", u.textContent = t.error, a.appendChild(u);
1396
+ const d = document.createElement("span");
1397
+ d.className = "pluno-pa-widget__share-prompt-error", d.textContent = t.error, a.appendChild(d);
1316
1398
  }
1317
1399
  o.appendChild(a);
1318
1400
  const p = document.createElement("div");
1319
1401
  p.className = "pluno-pa-widget__share-prompt-actions";
1320
- const s = document.createElement("div");
1321
- s.className = "pluno-pa-widget__share-prompt-primary-actions";
1322
- const g = document.createElement("button");
1323
- if (g.type = "button", g.disabled = t.isDrafting, g.addEventListener("click", () => {
1402
+ const g = document.createElement("div");
1403
+ g.className = "pluno-pa-widget__share-prompt-primary-actions";
1404
+ const c = document.createElement("button");
1405
+ if (c.type = "button", c.disabled = t.isDrafting, c.addEventListener("click", () => {
1324
1406
  t.onDraft(e);
1325
- }), t.isDrafting ? (g.appendChild(Ne()), g.appendChild(document.createTextNode("Drafting..."))) : g.textContent = "Draft a social post", s.appendChild(g), t.isDrafting)
1326
- p.appendChild(s);
1407
+ }), t.isDrafting ? (c.appendChild(Me()), c.appendChild(document.createTextNode("Drafting..."))) : c.textContent = "Draft a social post", g.appendChild(c), t.isDrafting)
1408
+ p.appendChild(g);
1327
1409
  else {
1328
- const u = document.createElement("button");
1329
- u.type = "button", u.className = "pluno-pa-widget__share-prompt-dismiss", u.setAttribute("aria-label", "Dismiss share prompt"), u.title = "Dismiss", u.textContent = "Dismiss", u.addEventListener("click", () => {
1410
+ const d = document.createElement("button");
1411
+ d.type = "button", d.className = "pluno-pa-widget__share-prompt-dismiss", d.setAttribute("aria-label", "Dismiss share prompt"), d.title = "Dismiss", d.textContent = "Dismiss", d.addEventListener("click", () => {
1330
1412
  t.onDismiss(e);
1331
- }), s.appendChild(u), p.appendChild(s);
1332
- const b = document.createElement("button");
1333
- b.type = "button", b.className = "pluno-pa-widget__share-prompt-disable", b.textContent = "Don't ask again", b.addEventListener("click", () => {
1413
+ }), g.appendChild(d), p.appendChild(g);
1414
+ const f = document.createElement("button");
1415
+ f.type = "button", f.className = "pluno-pa-widget__share-prompt-disable", f.textContent = "Don't ask again", f.addEventListener("click", () => {
1334
1416
  t.onDisable(e);
1335
- }), p.appendChild(b);
1417
+ }), p.appendChild(f);
1336
1418
  }
1337
1419
  return o.appendChild(p), n.appendChild(o), n;
1338
1420
  }
1339
- function go(e, t) {
1421
+ function Do(e, t) {
1340
1422
  const n = document.createElement("div");
1341
- n.className = "pluno-pa-widget__share-dialog-backdrop", n.addEventListener("click", (f) => {
1342
- f.target === n && t.onClose();
1423
+ n.className = "pluno-pa-widget__share-dialog-backdrop", n.addEventListener("click", (b) => {
1424
+ b.target === n && t.onClose();
1343
1425
  });
1344
1426
  const o = document.createElement("section");
1345
1427
  o.className = "pluno-pa-widget__share-dialog", o.setAttribute("role", "dialog"), o.setAttribute("aria-modal", "true"), o.setAttribute("aria-label", "Draft a social post");
@@ -1349,55 +1431,55 @@ function go(e, t) {
1349
1431
  l.type = "button", l.setAttribute("aria-label", "Close"), l.textContent = "×", l.addEventListener("click", t.onClose), a.appendChild(l), o.appendChild(a);
1350
1432
  const p = document.createElement("p");
1351
1433
  p.className = "pluno-pa-widget__share-dialog-status", p.hidden = !0;
1352
- const s = document.createElement("div");
1353
- s.className = "pluno-pa-widget__share-dialog-step";
1354
1434
  const g = document.createElement("div");
1355
- g.className = "pluno-pa-widget__share-dialog-step-header";
1356
- const u = document.createElement("strong");
1357
- u.textContent = "1) Copy Screenshot", g.appendChild(u);
1358
- const b = ho("Copy Screenshot", async () => {
1435
+ g.className = "pluno-pa-widget__share-dialog-step";
1436
+ const c = document.createElement("div");
1437
+ c.className = "pluno-pa-widget__share-dialog-step-header";
1438
+ const d = document.createElement("strong");
1439
+ d.textContent = "1) Copy Screenshot", c.appendChild(d);
1440
+ const f = Mo("Copy Screenshot", async () => {
1359
1441
  try {
1360
- return await Zt(e.screenshotDataUrl ?? ""), p.textContent = "", p.hidden = !0, !0;
1442
+ return await an(e.screenshotDataUrl ?? ""), p.textContent = "", p.hidden = !0, !0;
1361
1443
  } catch {
1362
1444
  return p.textContent = "Could not copy screenshot.", p.hidden = !1, !1;
1363
1445
  }
1364
1446
  });
1365
- if (g.appendChild(b), s.appendChild(g), e.screenshotDataUrl) {
1366
- const f = document.createElement("div");
1367
- f.className = "pluno-pa-widget__share-dialog-screenshot";
1368
- const d = document.createElement("img");
1369
- d.src = e.screenshotDataUrl, d.alt = "Product page with Pluno open", f.appendChild(d), s.appendChild(f);
1447
+ if (c.appendChild(f), g.appendChild(c), e.screenshotDataUrl) {
1448
+ const b = document.createElement("div");
1449
+ b.className = "pluno-pa-widget__share-dialog-screenshot";
1450
+ const s = document.createElement("img");
1451
+ s.src = e.screenshotDataUrl, s.alt = "Product page with Pluno open", b.appendChild(s), g.appendChild(b);
1370
1452
  }
1371
- o.appendChild(s), o.appendChild(p);
1372
- const w = document.createElement("div");
1373
- w.className = "pluno-pa-widget__share-dialog-step";
1453
+ o.appendChild(g), o.appendChild(p);
1454
+ const y = document.createElement("div");
1455
+ y.className = "pluno-pa-widget__share-dialog-step";
1374
1456
  const x = document.createElement("strong");
1375
- x.className = "pluno-pa-widget__share-dialog-step-title", x.textContent = "2) Share on", w.appendChild(x);
1376
- const C = document.createElement("p");
1377
- C.className = "pluno-pa-widget__share-dialog-hint", C.textContent = "Post draft opens prefilled on supported platforms.", w.appendChild(C);
1378
- const m = document.createElement("footer");
1379
- m.className = "pluno-pa-widget__share-dialog-platforms";
1380
- for (const f of mo(e)) {
1381
- const d = document.createElement("a");
1382
- d.href = f.href, d.target = "_blank", d.rel = "noopener noreferrer", d.title = f.label, d.setAttribute("aria-label", `Open ${f.label}`), d.appendChild(fo(f.id)), m.appendChild(d);
1457
+ x.className = "pluno-pa-widget__share-dialog-step-title", x.textContent = "2) Share on", y.appendChild(x);
1458
+ const E = document.createElement("p");
1459
+ E.className = "pluno-pa-widget__share-dialog-hint", E.textContent = "Post draft opens prefilled on supported platforms.", y.appendChild(E);
1460
+ const h = document.createElement("footer");
1461
+ h.className = "pluno-pa-widget__share-dialog-platforms";
1462
+ for (const b of Ro(e)) {
1463
+ const s = document.createElement("a");
1464
+ s.href = b.href, s.target = "_blank", s.rel = "noopener noreferrer", s.title = b.label, s.setAttribute("aria-label", `Open ${b.label}`), s.appendChild(Oo(b.id)), h.appendChild(s);
1383
1465
  }
1384
- if (w.appendChild(m), o.appendChild(w), t.socialPostRewardsUrl) {
1385
- const f = document.createElement("div");
1386
- f.className = "pluno-pa-widget__share-dialog-step";
1387
- const d = document.createElement("strong");
1388
- d.className = "pluno-pa-widget__share-dialog-step-title", d.textContent = "3) Submit post to get 2000 free credits!", f.appendChild(d);
1389
- const h = document.createElement("a");
1390
- h.className = "pluno-pa-widget__share-dialog-reward-link", h.href = t.socialPostRewardsUrl, h.target = "_blank", h.rel = "noopener noreferrer", h.appendChild(document.createTextNode("Submit post URL")), h.appendChild(bo()), f.appendChild(h), o.appendChild(f);
1466
+ if (y.appendChild(h), o.appendChild(y), t.socialPostRewardsUrl) {
1467
+ const b = document.createElement("div");
1468
+ b.className = "pluno-pa-widget__share-dialog-step";
1469
+ const s = document.createElement("strong");
1470
+ s.className = "pluno-pa-widget__share-dialog-step-title", s.textContent = "3) Submit post to get 2000 free credits!", b.appendChild(s);
1471
+ const v = document.createElement("a");
1472
+ v.className = "pluno-pa-widget__share-dialog-reward-link", v.href = t.socialPostRewardsUrl, v.target = "_blank", v.rel = "noopener noreferrer", v.appendChild(document.createTextNode("Submit post URL")), v.appendChild(Bo()), b.appendChild(v), o.appendChild(b);
1391
1473
  }
1392
1474
  return n.appendChild(o), n;
1393
1475
  }
1394
- function ho(e, t) {
1476
+ function Mo(e, t) {
1395
1477
  const n = document.createElement("button");
1396
1478
  return n.type = "button", n.className = "pluno-pa-widget__share-dialog-copy", n.textContent = e, n.addEventListener("click", async (o) => {
1397
1479
  o.preventDefault(), o.stopPropagation(), await t() && (n.textContent = "Copied ✓");
1398
1480
  }), n;
1399
1481
  }
1400
- function mo(e) {
1482
+ function Ro(e) {
1401
1483
  const t = e.linkedinPost.trim(), n = e.xPost.trim();
1402
1484
  return [
1403
1485
  {
@@ -1417,7 +1499,7 @@ function mo(e) {
1417
1499
  }
1418
1500
  ];
1419
1501
  }
1420
- function fo(e) {
1502
+ function Oo(e) {
1421
1503
  const t = document.createElementNS("http://www.w3.org/2000/svg", "svg");
1422
1504
  return t.setAttribute("class", "pluno-pa-widget__share-dialog-platform-logo"), t.setAttribute("viewBox", "0 0 32 32"), t.setAttribute("aria-hidden", "true"), e === "linkedin" ? (P(t, "M6.7 13.2c.4 4.1.2 8.1.1 12.3"), P(t, "M6.4 6.9c.6-.5 1.6-.5 2.1.1.7.7.5 1.8-.2 2.3-.8.5-1.9.2-2.3-.6-.2-.6 0-1.3.4-1.8Z"), P(t, "M14.4 13.3c.1 3.8.1 7.8 0 11.9"), P(t, "M14.8 16.2c1.2-2 3-3.1 5.1-2.9 3.4.3 4.8 2.7 4.8 6.2 0 1.9-.1 3.8-.1 5.8"), P(t, "M20 18c.1 2.2.1 4.7 0 7.2"), t) : e === "x" ? (P(t, "M7.2 7.4c5.6 6.4 10.9 12.2 17.7 17.2"), P(t, "M24.4 7.2c-5.1 6.3-10.6 11.8-17 17.8"), P(t, "M9.1 8.2c5.1 5.6 9.7 10.8 15 15.5", "0.55"), t) : (P(t, "M10.2 6.4c3.8-.3 8-.3 11.6.1 2.5.3 3.8 1.8 4 4 .4 3.3.4 7.4 0 10.9-.3 2.4-1.7 3.8-4 4.1-3.8.4-8.2.4-11.8 0-2.3-.3-3.7-1.8-4-4.1-.4-3.5-.3-7.8.1-11.1.2-2.2 1.8-3.6 4.1-3.9Z"), P(t, "M11 7.3c3.4-.4 7.1-.4 10.2.1 2 .3 3.1 1.4 3.4 3.2.4 3 .4 6.6.1 9.9-.3 2.2-1.3 3.3-3.3 3.7-3.2.5-7.2.5-10.5.1", "0.48"), P(t, "M12.1 16.1c.1-2.4 1.8-4.1 4-4.2 2.4-.1 4.2 1.6 4.3 4 .1 2.3-1.6 4.1-3.9 4.2-2.6.2-4.3-1.5-4.4-4Z"), P(t, "M22 10.7c.3-.1.7 0 .9.3.2.4.1.8-.2 1-.4.2-.8.1-1-.2-.2-.4-.1-.8.3-1.1Z"), t);
1423
1505
  }
@@ -1425,52 +1507,52 @@ function P(e, t, n) {
1425
1507
  const o = document.createElementNS("http://www.w3.org/2000/svg", "path");
1426
1508
  o.setAttribute("d", t), n && o.setAttribute("opacity", n), e.appendChild(o);
1427
1509
  }
1428
- function bo() {
1510
+ function Bo() {
1429
1511
  const e = document.createElementNS("http://www.w3.org/2000/svg", "svg");
1430
1512
  return e.setAttribute("class", "pluno-pa-widget__share-dialog-external-icon"), e.setAttribute("viewBox", "0 0 24 24"), e.setAttribute("aria-hidden", "true"), P(e, "M14 5h5v5"), P(e, "M19 5l-8 8"), P(e, "M18 13v5a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1V8a1 1 0 0 1 1-1h5"), e;
1431
1513
  }
1432
- function wo(e) {
1433
- return e.role === "tool" && e.toolName === ut;
1514
+ function Dt(e) {
1515
+ return e.role === "tool" && e.toolName === wt;
1434
1516
  }
1435
- function at(e) {
1517
+ function dt(e) {
1436
1518
  return e.replace(/\uE200[^\uE201]*(?:\uE201|$)/g, "");
1437
1519
  }
1438
- function _o(e, t, n, o) {
1520
+ function Fo(e, t, n, o) {
1439
1521
  const a = document.createElement("article");
1440
1522
  a.className = "pluno-pa-widget__tool-group", a.title = new Date(e[e.length - 1].createdAt).toLocaleString();
1441
1523
  const i = document.createElement("img");
1442
1524
  i.className = "pluno-pa-widget__character pluno-pa-widget__character--tool-group", i.src = o, i.alt = "", i.setAttribute("aria-hidden", "true"), a.appendChild(i);
1443
- const l = document.createElement("details"), p = yo(e);
1525
+ const l = document.createElement("details"), p = zo(e);
1444
1526
  l.open = t.has(p), l.addEventListener("toggle", () => {
1445
1527
  l.open ? t.add(p) : t.delete(p), n();
1446
1528
  });
1447
- const s = document.createElement("summary");
1448
- s.className = "pluno-pa-widget__tool-summary", e.some((b) => b.loading) && s.appendChild(Ne());
1449
- const u = document.createElement("span");
1450
- if (u.className = "pluno-pa-widget__tool-summary-title", u.textContent = e[e.length - 1].content || "Run tool", s.appendChild(u), l.appendChild(s), e.length > 0) {
1451
- const b = document.createElement("div");
1452
- b.className = "pluno-pa-widget__tool-lines";
1453
- for (const w of e) {
1529
+ const g = document.createElement("summary");
1530
+ g.className = "pluno-pa-widget__tool-summary", e.some((f) => f.loading) && g.appendChild(Me());
1531
+ const d = document.createElement("span");
1532
+ if (d.className = "pluno-pa-widget__tool-summary-title", d.textContent = e[e.length - 1].content || "Run tool", g.appendChild(d), l.appendChild(g), e.length > 0) {
1533
+ const f = document.createElement("div");
1534
+ f.className = "pluno-pa-widget__tool-lines";
1535
+ for (const y of e) {
1454
1536
  const x = document.createElement("div");
1455
- x.className = "pluno-pa-widget__tool-line", w.loading && x.appendChild(Ne());
1456
- const C = document.createElement("span");
1457
- C.textContent = w.content || "Run tool", x.appendChild(C), b.appendChild(x);
1537
+ x.className = "pluno-pa-widget__tool-line", y.loading && x.appendChild(Me());
1538
+ const E = document.createElement("span");
1539
+ E.textContent = y.content || "Run tool", x.appendChild(E), f.appendChild(x);
1458
1540
  }
1459
- l.appendChild(b);
1541
+ l.appendChild(f);
1460
1542
  }
1461
1543
  return a.appendChild(l), a;
1462
1544
  }
1463
- function Ae(e) {
1545
+ function De(e) {
1464
1546
  const t = document.createElement("article");
1465
1547
  t.className = "pluno-pa-widget__tool-group pluno-pa-widget__assistant-marker";
1466
1548
  const n = document.createElement("img");
1467
1549
  return n.className = "pluno-pa-widget__character pluno-pa-widget__character--tool-group", n.src = e, n.alt = "", n.setAttribute("aria-hidden", "true"), t.appendChild(n), t;
1468
1550
  }
1469
- function xo(e) {
1470
- const t = Ae(e);
1471
- return t.classList.add("pluno-pa-widget__thinking-marker"), t.appendChild(Lt()), t;
1551
+ function Uo(e) {
1552
+ const t = De(e);
1553
+ return t.classList.add("pluno-pa-widget__thinking-marker"), t.appendChild(Mt()), t;
1472
1554
  }
1473
- function Lt() {
1555
+ function Mt() {
1474
1556
  const e = document.createElement("div");
1475
1557
  e.className = "pluno-pa-widget__status";
1476
1558
  const t = document.createElement("span");
@@ -1478,17 +1560,17 @@ function Lt() {
1478
1560
  const n = document.createElement("span");
1479
1561
  return n.textContent = "Thinking...", e.appendChild(n), e;
1480
1562
  }
1481
- function yo(e) {
1563
+ function zo(e) {
1482
1564
  return `tools:${e.map((t) => t.id).join("|")}`;
1483
1565
  }
1484
- function Ne() {
1566
+ function Me() {
1485
1567
  const e = document.createElement("span");
1486
1568
  return e.className = "pluno-pa-widget__spinner", e.setAttribute("aria-hidden", "true"), e;
1487
1569
  }
1488
- function Pt(e, t) {
1489
- e.setAttribute("aria-label", t ? "Stop" : "Send"), e.classList.toggle("pluno-pa-widget__send--stop", t), e.replaceChildren(t ? Wn() : Ct());
1570
+ function Rt(e, t) {
1571
+ e.setAttribute("aria-label", t ? "Stop" : "Send"), e.classList.toggle("pluno-pa-widget__send--stop", t), e.replaceChildren(t ? so() : At());
1490
1572
  }
1491
- function it(e, t) {
1573
+ function ct(e, t) {
1492
1574
  const n = t.replace(/\r\n/g, `
1493
1575
  `).split(`
1494
1576
  `);
@@ -1500,49 +1582,49 @@ function it(e, t) {
1500
1582
  continue;
1501
1583
  }
1502
1584
  if (a.match(/^```(\w+)?\s*$/)) {
1503
- const g = [];
1585
+ const c = [];
1504
1586
  for (o += 1; o < n.length && !/^```\s*$/.test(n[o]); )
1505
- g.push(n[o]), o += 1;
1587
+ c.push(n[o]), o += 1;
1506
1588
  o += o < n.length ? 1 : 0;
1507
- const u = document.createElement("pre"), b = document.createElement("code");
1508
- b.textContent = g.join(`
1509
- `), u.appendChild(b), e.appendChild(u);
1589
+ const d = document.createElement("pre"), f = document.createElement("code");
1590
+ f.textContent = c.join(`
1591
+ `), d.appendChild(f), e.appendChild(d);
1510
1592
  continue;
1511
1593
  }
1512
1594
  const l = a.match(/^(#{1,3})\s+(.+)$/);
1513
1595
  if (l) {
1514
- const g = document.createElement(`h${l[1].length + 2}`);
1515
- pe(g, l[2]), e.appendChild(g), o += 1;
1596
+ const c = document.createElement(`h${l[1].length + 2}`);
1597
+ de(c, l[2]), e.appendChild(c), o += 1;
1516
1598
  continue;
1517
1599
  }
1518
1600
  if (/^\s*[-*+]\s+/.test(a)) {
1519
- const g = document.createElement("ul");
1601
+ const c = document.createElement("ul");
1520
1602
  for (; o < n.length && /^\s*[-*+]\s+/.test(n[o]); ) {
1521
- const u = document.createElement("li");
1522
- pe(u, n[o].replace(/^\s*[-*+]\s+/, "")), g.appendChild(u), o += 1;
1603
+ const d = document.createElement("li");
1604
+ de(d, n[o].replace(/^\s*[-*+]\s+/, "")), c.appendChild(d), o += 1;
1523
1605
  }
1524
- e.appendChild(g);
1606
+ e.appendChild(c);
1525
1607
  continue;
1526
1608
  }
1527
1609
  if (/^\s*\d+\.\s+/.test(a)) {
1528
- const g = document.createElement("ol");
1610
+ const c = document.createElement("ol");
1529
1611
  for (; o < n.length && /^\s*\d+\.\s+/.test(n[o]); ) {
1530
- const u = document.createElement("li");
1531
- pe(u, n[o].replace(/^\s*\d+\.\s+/, "")), g.appendChild(u), o += 1;
1612
+ const d = document.createElement("li");
1613
+ de(d, n[o].replace(/^\s*\d+\.\s+/, "")), c.appendChild(d), o += 1;
1532
1614
  }
1533
- e.appendChild(g);
1615
+ e.appendChild(c);
1534
1616
  continue;
1535
1617
  }
1536
1618
  const p = [a];
1537
1619
  for (o += 1; o < n.length && n[o].trim() && !/^```/.test(n[o]) && !/^(#{1,3})\s+/.test(n[o]) && !/^\s*[-*+]\s+/.test(n[o]) && !/^\s*\d+\.\s+/.test(n[o]); )
1538
1620
  p.push(n[o]), o += 1;
1539
- const s = document.createElement("p");
1540
- p.forEach((g, u) => {
1541
- u > 0 && s.appendChild(document.createElement("br")), pe(s, g);
1542
- }), e.appendChild(s);
1621
+ const g = document.createElement("p");
1622
+ p.forEach((c, d) => {
1623
+ d > 0 && g.appendChild(document.createElement("br")), de(g, c);
1624
+ }), e.appendChild(g);
1543
1625
  }
1544
1626
  }
1545
- function pe(e, t) {
1627
+ function de(e, t) {
1546
1628
  const n = /(`[^`]+`|\*\*[^*]+\*\*|\*[^*]+\*|\[[^\]]+\]\(([^)\s]+)\))/g;
1547
1629
  let o = 0;
1548
1630
  for (const a of t.matchAll(n)) {
@@ -1560,9 +1642,9 @@ function pe(e, t) {
1560
1642
  p.textContent = l.slice(1, -1), e.appendChild(p);
1561
1643
  } else {
1562
1644
  const p = l.match(/^\[([^\]]+)\]\(([^)\s]+)\)$/);
1563
- if (p && vo(p[2])) {
1564
- const s = document.createElement("a");
1565
- s.href = p[2], s.target = "_top", s.rel = "noreferrer", s.textContent = p[1], e.appendChild(s);
1645
+ if (p && Go(p[2])) {
1646
+ const g = document.createElement("a");
1647
+ g.href = p[2], g.target = "_top", g.rel = "noreferrer", g.textContent = p[1], e.appendChild(g);
1566
1648
  } else
1567
1649
  e.appendChild(document.createTextNode(l));
1568
1650
  }
@@ -1570,7 +1652,7 @@ function pe(e, t) {
1570
1652
  }
1571
1653
  o < t.length && e.appendChild(document.createTextNode(t.slice(o)));
1572
1654
  }
1573
- function vo(e) {
1655
+ function Go(e) {
1574
1656
  if (e.startsWith("/") || e.startsWith("#"))
1575
1657
  return !0;
1576
1658
  try {
@@ -1580,8 +1662,8 @@ function vo(e) {
1580
1662
  return !1;
1581
1663
  }
1582
1664
  }
1583
- function rt(e, t) {
1584
- if (Co(e))
1665
+ function ut(e, t) {
1666
+ if ($o(e))
1585
1667
  return;
1586
1668
  const n = `
1587
1669
  :host {
@@ -1634,7 +1716,7 @@ function rt(e, t) {
1634
1716
  --pluno-pa-accent-contrast: #fafafa;
1635
1717
  position: fixed;
1636
1718
  z-index: 2147483645;
1637
- font-family: ${R.fontFamily};
1719
+ font-family: ${B.fontFamily};
1638
1720
  font-size: 14px;
1639
1721
  color: var(--pluno-pa-text);
1640
1722
  width: var(--pluno-pa-launcher-width);
@@ -2336,7 +2418,7 @@ function rt(e, t) {
2336
2418
  place-items: center;
2337
2419
  padding: 18px;
2338
2420
  background: rgba(24, 24, 27, 0.28);
2339
- font-family: var(--pluno-pa-font, ${R.fontFamily});
2421
+ font-family: var(--pluno-pa-font, ${B.fontFamily});
2340
2422
  color: var(--pluno-pa-text);
2341
2423
  }
2342
2424
  .pluno-pa-widget__share-dialog {
@@ -2832,6 +2914,39 @@ function rt(e, t) {
2832
2914
  line-height: 1.34;
2833
2915
  text-align: left;
2834
2916
  }
2917
+ .pluno-pa-widget__empty-hero {
2918
+ display: inline-flex;
2919
+ align-items: center;
2920
+ gap: 16px;
2921
+ }
2922
+ .pluno-pa-widget__empty-hero .pluno-pa-widget__character--empty {
2923
+ margin-bottom: 0;
2924
+ }
2925
+ .pluno-pa-widget__active-users-counter {
2926
+ position: absolute;
2927
+ top: 18px;
2928
+ left: 50%;
2929
+ z-index: 2;
2930
+ display: inline-flex;
2931
+ align-items: center;
2932
+ justify-content: center;
2933
+ gap: 7px;
2934
+ transform: translateX(-50%);
2935
+ color: color-mix(in srgb, var(--pluno-pa-text) 62%, transparent);
2936
+ font-size: 13px;
2937
+ font-weight: 600;
2938
+ line-height: 1.3;
2939
+ font-variant-numeric: tabular-nums;
2940
+ text-align: center;
2941
+ text-transform: lowercase;
2942
+ }
2943
+ .pluno-pa-widget__active-users-counter-dot {
2944
+ width: 7px;
2945
+ height: 7px;
2946
+ border-radius: 999px;
2947
+ background: #22c55e;
2948
+ box-shadow: 0 0 0 4px rgb(34 197 94 / 10%);
2949
+ }
2835
2950
  .pluno-pa-widget__empty-state--starter .pluno-pa-widget__character--empty {
2836
2951
  margin-bottom: -24px;
2837
2952
  }
@@ -2972,7 +3087,7 @@ function rt(e, t) {
2972
3087
  right: 16px;
2973
3088
  height: 36px;
2974
3089
  z-index: 3;
2975
- background-image: url('${je}');
3090
+ background-image: url('${Je}');
2976
3091
  background-repeat: repeat-x;
2977
3092
  background-size: 104px 36px;
2978
3093
  filter: url(#pluno-pa-scribble-wobble-2);
@@ -3014,7 +3129,7 @@ function rt(e, t) {
3014
3129
  height: 160px;
3015
3130
  }
3016
3131
  .pluno-pa-widget--scribble .pluno-pa-widget__empty-state--starter .pluno-pa-widget__character--empty {
3017
- margin-bottom: -42px;
3132
+ margin-bottom: 0;
3018
3133
  }
3019
3134
  .pluno-pa-widget--scribble .pluno-pa-widget__character--tool-group {
3020
3135
  width: 60px;
@@ -3219,7 +3334,7 @@ function rt(e, t) {
3219
3334
  right: 12px;
3220
3335
  height: 22px;
3221
3336
  z-index: 1;
3222
- background-image: url('${je}');
3337
+ background-image: url('${Je}');
3223
3338
  background-repeat: repeat-x;
3224
3339
  background-size: 62px 21.5px;
3225
3340
  filter: url(#pluno-pa-scribble-wobble-2);
@@ -3232,28 +3347,28 @@ function rt(e, t) {
3232
3347
  filter: url(#pluno-pa-scribble-wobble-2);
3233
3348
  }
3234
3349
  `;
3235
- if (Eo(e, n))
3350
+ if (Ho(e, n))
3236
3351
  return;
3237
3352
  const o = e.ownerDocument.createElement("style");
3238
- o.id = bt, o.textContent = n, e.appendChild(o), At(e);
3353
+ o.id = Ct, o.textContent = n, e.appendChild(o), Ot(e);
3239
3354
  }
3240
- function Co(e) {
3241
- return e.getElementById(bt) !== null || e.host instanceof HTMLElement && e.host.getAttribute(wt) === "true";
3355
+ function $o(e) {
3356
+ return e.getElementById(Ct) !== null || e.host instanceof HTMLElement && e.host.getAttribute(Et) === "true";
3242
3357
  }
3243
- function At(e) {
3244
- e.host instanceof HTMLElement && e.host.setAttribute(wt, "true");
3358
+ function Ot(e) {
3359
+ e.host instanceof HTMLElement && e.host.setAttribute(Et, "true");
3245
3360
  }
3246
- function Eo(e, t) {
3361
+ function Ho(e, t) {
3247
3362
  if (typeof CSSStyleSheet > "u" || typeof CSSStyleSheet.prototype.replaceSync != "function" || !("adoptedStyleSheets" in e))
3248
3363
  return !1;
3249
3364
  try {
3250
3365
  const n = new CSSStyleSheet();
3251
- return n.replaceSync(t), e.adoptedStyleSheets = [...e.adoptedStyleSheets, n], At(e), !0;
3366
+ return n.replaceSync(t), e.adoptedStyleSheets = [...e.adoptedStyleSheets, n], Ot(e), !0;
3252
3367
  } catch {
3253
3368
  return !1;
3254
3369
  }
3255
3370
  }
3256
- async function ko() {
3371
+ async function Wo() {
3257
3372
  return document.body ? document.body : await new Promise((e) => {
3258
3373
  const t = new MutationObserver(() => {
3259
3374
  document.body && (t.disconnect(), e(document.body));
@@ -3261,49 +3376,49 @@ async function ko() {
3261
3376
  t.observe(document.documentElement, { childList: !0 });
3262
3377
  });
3263
3378
  }
3264
- function Nt(e) {
3379
+ function Bt(e) {
3265
3380
  return `pluno.productAgent.widgetState.${location.origin}.${e.backendUrl ?? ""}.${e.tokenEndpoint ?? ""}.${e.position ?? ""}`;
3266
3381
  }
3267
- function So(e) {
3382
+ function Vo(e) {
3268
3383
  try {
3269
- const t = window.localStorage.getItem(Nt(e));
3384
+ const t = window.localStorage.getItem(Bt(e));
3270
3385
  if (!t)
3271
- return lt();
3386
+ return gt();
3272
3387
  const n = JSON.parse(t);
3273
3388
  return {
3274
3389
  isOpen: n.isOpen === !0,
3275
3390
  composerValue: typeof n.composerValue == "string" ? n.composerValue : "",
3276
3391
  openToolGroupKeys: Array.isArray(n.openToolGroupKeys) ? n.openToolGroupKeys.filter((o) => typeof o == "string") : [],
3277
- launcherPosition: No(n.launcherPosition) ? n.launcherPosition : null,
3278
- seenShareCandidateIds: Array.isArray(n.seenShareCandidateIds) ? n.seenShareCandidateIds.filter((o) => typeof o == "string").slice(-gt) : [],
3392
+ launcherPosition: Yo(n.launcherPosition) ? n.launcherPosition : null,
3393
+ seenShareCandidateIds: Array.isArray(n.seenShareCandidateIds) ? n.seenShareCandidateIds.filter((o) => typeof o == "string").slice(-_t) : [],
3279
3394
  sharePromptsDisabled: n.sharePromptsDisabled === !0
3280
3395
  };
3281
3396
  } catch {
3282
- return lt();
3397
+ return gt();
3283
3398
  }
3284
3399
  }
3285
- async function Lo(e) {
3400
+ async function jo(e) {
3286
3401
  if (e.loadSharePromptsDisabled)
3287
3402
  return e.loadSharePromptsDisabled();
3288
3403
  try {
3289
- return window.localStorage.getItem(ht) === "true";
3404
+ return window.localStorage.getItem(xt) === "true";
3290
3405
  } catch {
3291
3406
  return !1;
3292
3407
  }
3293
3408
  }
3294
- function Po(e, t) {
3409
+ function qo(e, t) {
3295
3410
  if (e.persistSharePromptsDisabled) {
3296
3411
  Promise.resolve(e.persistSharePromptsDisabled(t)).catch(() => {
3297
3412
  });
3298
3413
  return;
3299
3414
  }
3300
3415
  try {
3301
- t && window.localStorage.setItem(ht, "true");
3416
+ t && window.localStorage.setItem(xt, "true");
3302
3417
  } catch {
3303
3418
  return;
3304
3419
  }
3305
3420
  }
3306
- function lt() {
3421
+ function gt() {
3307
3422
  return {
3308
3423
  isOpen: !1,
3309
3424
  composerValue: "",
@@ -3313,43 +3428,43 @@ function lt() {
3313
3428
  sharePromptsDisabled: !1
3314
3429
  };
3315
3430
  }
3316
- function Ao(e, t) {
3431
+ function Ko(e, t) {
3317
3432
  try {
3318
- window.localStorage.setItem(Nt(e), JSON.stringify(t));
3433
+ window.localStorage.setItem(Bt(e), JSON.stringify(t));
3319
3434
  } catch {
3320
3435
  return;
3321
3436
  }
3322
3437
  }
3323
- function No(e) {
3438
+ function Yo(e) {
3324
3439
  if (!e || typeof e != "object")
3325
3440
  return !1;
3326
3441
  const t = e;
3327
3442
  return Number.isFinite(t.x) && Number.isFinite(t.y);
3328
3443
  }
3329
- const pt = /* @__PURE__ */ new WeakSet();
3330
- function To(e) {
3444
+ const ht = /* @__PURE__ */ new WeakSet();
3445
+ function Xo(e) {
3331
3446
  return Object.keys(e.dataset).some((t) => t.startsWith("pluno"));
3332
3447
  }
3333
- function st(e) {
3448
+ function mt(e) {
3334
3449
  const t = e.pathname.split("/");
3335
3450
  return t[t.length - 1] ?? "";
3336
3451
  }
3337
- function Do(e, t) {
3452
+ function Zo(e, t) {
3338
3453
  const n = new URL(e.src, document.baseURI);
3339
- return n.href === t.href || n.pathname === t.pathname ? !0 : st(n) === st(t);
3454
+ return n.href === t.href || n.pathname === t.pathname ? !0 : mt(n) === mt(t);
3340
3455
  }
3341
- class O extends EventTarget {
3456
+ class F extends EventTarget {
3342
3457
  constructor(t, n) {
3343
- super(), this.channelId = n, this.url = t, this.addPreviewListener(nn, () => {
3344
- this.readyState = O.OPEN, this.dispatchEvent(new Event("open"));
3345
- }), this.addPreviewListener(on, (o) => {
3458
+ super(), this.channelId = n, this.url = t, this.addPreviewListener(yn, () => {
3459
+ this.readyState = F.OPEN, this.dispatchEvent(new Event("open"));
3460
+ }), this.addPreviewListener(Cn, (o) => {
3346
3461
  const a = o;
3347
3462
  this.dispatchEvent(new MessageEvent("message", { data: a.detail?.data ?? "" }));
3348
- }), this.addPreviewListener(an, () => {
3349
- this.readyState = O.CLOSED, this.dispatchEvent(new Event("error")), this.cleanup();
3350
- }), this.addPreviewListener(rn, (o) => {
3463
+ }), this.addPreviewListener(En, () => {
3464
+ this.readyState = F.CLOSED, this.dispatchEvent(new Event("error")), this.cleanup();
3465
+ }), this.addPreviewListener(Sn, (o) => {
3351
3466
  const a = o;
3352
- this.readyState = O.CLOSED, this.dispatchEvent(
3467
+ this.readyState = F.CLOSED, this.dispatchEvent(
3353
3468
  new CloseEvent("close", {
3354
3469
  code: a.detail?.code ?? 1e3,
3355
3470
  reason: a.detail?.reason ?? "",
@@ -3357,7 +3472,7 @@ class O extends EventTarget {
3357
3472
  })
3358
3473
  ), this.cleanup();
3359
3474
  }), window.dispatchEvent(
3360
- new CustomEvent(se(Qt, this.channelId), {
3475
+ new CustomEvent(ce(_n, this.channelId), {
3361
3476
  detail: { socketId: this.socketId, url: t }
3362
3477
  })
3363
3478
  );
@@ -3372,27 +3487,27 @@ class O extends EventTarget {
3372
3487
  extensions = "";
3373
3488
  binaryType = "blob";
3374
3489
  bufferedAmount = 0;
3375
- readyState = O.CONNECTING;
3376
- socketId = Io();
3490
+ readyState = F.CONNECTING;
3491
+ socketId = Jo();
3377
3492
  listeners = /* @__PURE__ */ new Map();
3378
3493
  send(t) {
3379
- if (this.readyState !== O.OPEN)
3494
+ if (this.readyState !== F.OPEN)
3380
3495
  throw new DOMException("Pluno preview websocket is not open", "InvalidStateError");
3381
3496
  window.dispatchEvent(
3382
- new CustomEvent(se(en, this.channelId), {
3497
+ new CustomEvent(ce(xn, this.channelId), {
3383
3498
  detail: { socketId: this.socketId, data: typeof t == "string" ? t : String(t) }
3384
3499
  })
3385
3500
  );
3386
3501
  }
3387
3502
  close(t, n) {
3388
- this.readyState !== O.CLOSED && (this.readyState = O.CLOSING, window.dispatchEvent(
3389
- new CustomEvent(se(tn, this.channelId), {
3503
+ this.readyState !== F.CLOSED && (this.readyState = F.CLOSING, window.dispatchEvent(
3504
+ new CustomEvent(ce(vn, this.channelId), {
3390
3505
  detail: { socketId: this.socketId, code: t, reason: n }
3391
3506
  })
3392
3507
  ), this.cleanup());
3393
3508
  }
3394
3509
  addPreviewListener(t, n) {
3395
- const o = se(t, this.channelId), a = (i) => {
3510
+ const o = ce(t, this.channelId), a = (i) => {
3396
3511
  i.detail?.socketId === this.socketId && n(i);
3397
3512
  };
3398
3513
  this.listeners.set(o, a), window.addEventListener(o, a);
@@ -3403,36 +3518,36 @@ class O extends EventTarget {
3403
3518
  this.listeners.clear();
3404
3519
  }
3405
3520
  }
3406
- function Io() {
3407
- const e = window.sessionStorage.getItem(qe);
3521
+ function Jo() {
3522
+ const e = window.sessionStorage.getItem(Ze);
3408
3523
  if (e)
3409
3524
  return e;
3410
3525
  const t = crypto.randomUUID();
3411
- return window.sessionStorage.setItem(qe, t), t;
3526
+ return window.sessionStorage.setItem(Ze, t), t;
3412
3527
  }
3413
- function se(e, t) {
3528
+ function ce(e, t) {
3414
3529
  return `${e}:${t}`;
3415
3530
  }
3416
- function Mo(e) {
3531
+ function Qo(e) {
3417
3532
  const t = document.currentScript;
3418
3533
  if (t instanceof HTMLScriptElement)
3419
3534
  return [t];
3420
3535
  const n = new URL(e, document.baseURI).href, o = new URL(n);
3421
3536
  return Array.from(document.querySelectorAll("script[type='module'][src]")).filter(
3422
- (a) => a instanceof HTMLScriptElement && To(a) && Do(a, o)
3537
+ (a) => a instanceof HTMLScriptElement && Xo(a) && Zo(a, o)
3423
3538
  );
3424
3539
  }
3425
- function Ro(e) {
3426
- for (const t of Mo(e)) {
3427
- if (pt.has(t) || t.dataset.plunoAutoMount === "false")
3540
+ function ea(e) {
3541
+ for (const t of Qo(e)) {
3542
+ if (ht.has(t) || t.dataset.plunoAutoMount === "false")
3428
3543
  continue;
3429
- pt.add(t);
3544
+ ht.add(t);
3430
3545
  const n = t.dataset.plunoPreviewChannel;
3431
- Sn({
3546
+ Vn({
3432
3547
  token: t.dataset.plunoToken,
3433
3548
  tokenEndpoint: t.dataset.plunoTokenEndpoint,
3434
3549
  backendUrl: t.dataset.plunoBackendUrl,
3435
- webSocketFactory: n ? kn(n) : void 0,
3550
+ webSocketFactory: n ? Wn(n) : void 0,
3436
3551
  launcherLabel: t.dataset.plunoLauncherLabel,
3437
3552
  accentColor: t.dataset.plunoAccentColor,
3438
3553
  colorScheme: t.dataset.plunoColorScheme === "dark" ? "dark" : "light",
@@ -3444,8 +3559,8 @@ function Ro(e) {
3444
3559
  });
3445
3560
  }
3446
3561
  }
3447
- Ro(import.meta.url);
3562
+ ea(import.meta.url);
3448
3563
  export {
3449
- kn as createProductAgentPreviewBridgeWebSocketFactory,
3450
- Sn as mountPlunoProductAgentWidget
3564
+ Wn as createProductAgentPreviewBridgeWebSocketFactory,
3565
+ Vn as mountPlunoProductAgentWidget
3451
3566
  };