@pluno/product-agent-web 0.1.22 → 0.1.23

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,25 +1,25 @@
1
- import { PlunoProductAgent as Ct } from "./product-agent-sdk.js";
2
- const Et = "#7c3aed";
3
- function kt(t) {
4
- const e = Nt(t);
1
+ import { PlunoProductAgent as Ot } from "./product-agent-sdk.js";
2
+ const Bt = "#7c3aed";
3
+ function Ft(e) {
4
+ const t = Wt(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">
8
- <stop offset="0" stop-color="${e.top}"/>
9
- <stop offset="0.36" stop-color="${e.middle}"/>
10
- <stop offset="0.72" stop-color="${e.bottom}"/>
11
- <stop offset="1" stop-color="${e.bottom}"/>
8
+ <stop offset="0" stop-color="${t.top}"/>
9
+ <stop offset="0.36" stop-color="${t.middle}"/>
10
+ <stop offset="0.72" stop-color="${t.bottom}"/>
11
+ <stop offset="1" stop-color="${t.bottom}"/>
12
12
  </linearGradient>
13
13
  <linearGradient id="boltEdge" x1="470" y1="145" x2="900" y2="980" gradientUnits="userSpaceOnUse">
14
- <stop offset="0" stop-color="${e.edgeStart}"/>
15
- <stop offset="0.32" stop-color="${e.edgeMiddle}"/>
16
- <stop offset="0.78" stop-color="${e.edgeEnd}"/>
17
- <stop offset="1" stop-color="${e.edgeEnd}"/>
14
+ <stop offset="0" stop-color="${t.edgeStart}"/>
15
+ <stop offset="0.32" stop-color="${t.edgeMiddle}"/>
16
+ <stop offset="0.78" stop-color="${t.edgeEnd}"/>
17
+ <stop offset="1" stop-color="${t.edgeEnd}"/>
18
18
  </linearGradient>
19
19
  <radialGradient id="boltGlow" cx="50%" cy="22%" r="82%">
20
- <stop offset="0" stop-color="${e.glow}" stop-opacity="0.72"/>
21
- <stop offset="0.5" stop-color="${e.middle}" stop-opacity="0.44"/>
22
- <stop offset="1" stop-color="${e.bottom}" stop-opacity="0"/>
20
+ <stop offset="0" stop-color="${t.glow}" stop-opacity="0.72"/>
21
+ <stop offset="0.5" stop-color="${t.middle}" stop-opacity="0.44"/>
22
+ <stop offset="1" stop-color="${t.bottom}" stop-opacity="0"/>
23
23
  </radialGradient>
24
24
  <radialGradient id="eyeWhite" cx="35%" cy="25%" r="70%">
25
25
  <stop offset="0" stop-color="#ffffff"/>
@@ -32,7 +32,7 @@ function kt(t) {
32
32
  <stop offset="1" stop-color="#000000"/>
33
33
  </radialGradient>
34
34
  <filter id="softDropShadow" x="-18%" y="-12%" width="136%" height="136%" color-interpolation-filters="sRGB">
35
- <feDropShadow dx="0" dy="12" stdDeviation="18" flood-color="${e.shadow}" flood-opacity="0.24"/>
35
+ <feDropShadow dx="0" dy="12" stdDeviation="18" flood-color="${t.shadow}" flood-opacity="0.24"/>
36
36
  </filter>
37
37
  <filter id="innerDepth" x="-8%" y="-8%" width="116%" height="116%" color-interpolation-filters="sRGB">
38
38
  <feGaussianBlur in="SourceAlpha" stdDeviation="8" result="blur"/>
@@ -42,7 +42,7 @@ function kt(t) {
42
42
  <feBlend in="SourceGraphic" in2="innerLight" mode="screen"/>
43
43
  </filter>
44
44
  <filter id="eyeShadow" x="-24%" y="-20%" width="148%" height="148%" color-interpolation-filters="sRGB">
45
- <feDropShadow dx="0" dy="8" stdDeviation="5" flood-color="${e.shadow}" flood-opacity="0.3"/>
45
+ <feDropShadow dx="0" dy="8" stdDeviation="5" flood-color="${t.shadow}" flood-opacity="0.3"/>
46
46
  </filter>
47
47
  <filter id="pupilGloss" x="-15%" y="-15%" width="130%" height="130%" color-interpolation-filters="sRGB">
48
48
  <feDropShadow dx="0" dy="3" stdDeviation="3" flood-color="#000000" flood-opacity="0.22"/>
@@ -56,9 +56,9 @@ function kt(t) {
56
56
  <path d="M546 166 C522 166 505 180 499 204 L397 606 C390 630 406 646 432 646 L526 646 C568 646 590 672 581 712 L512 1001 C510 1010 518 1014 524 1006 L875 475 C886 458 878 449 855 449 L814 449 C764 449 745 415 769 374 L884 200 C894 181 883 161 858 161 Z" fill="url(#boltFill)" filter="url(#innerDepth)"/>
57
57
  <path d="M546 166 C522 166 505 180 499 204 L397 606 C390 630 406 646 432 646 L526 646 C568 646 590 672 581 712 L512 1001 C510 1010 518 1014 524 1006 L875 475 C886 458 878 449 855 449 L814 449 C764 449 745 415 769 374 L884 200 C894 181 883 161 858 161 Z" fill="url(#boltGlow)" opacity="0.74"/>
58
58
  <g clip-path="url(#boltClip)" opacity="0.42">
59
- <path d="M523 181 C505 189 496 206 489 232 L400 594 C397 606 400 619 411 626" fill="none" stroke="${e.highlight}" stroke-width="22" stroke-linecap="round" opacity="0.65"/>
60
- <path d="M556 685 L501 994" fill="none" stroke="${e.highlight}" stroke-width="20" stroke-linecap="round" opacity="0.55"/>
61
- <path d="M858 160 C882 166 893 181 883 204" fill="none" stroke="${e.inner}" stroke-width="18" stroke-linecap="round" opacity="0.48"/>
59
+ <path d="M523 181 C505 189 496 206 489 232 L400 594 C397 606 400 619 411 626" fill="none" stroke="${t.highlight}" stroke-width="22" stroke-linecap="round" opacity="0.65"/>
60
+ <path d="M556 685 L501 994" fill="none" stroke="${t.highlight}" stroke-width="20" stroke-linecap="round" opacity="0.55"/>
61
+ <path d="M858 160 C882 166 893 181 883 204" fill="none" stroke="${t.inner}" stroke-width="18" stroke-linecap="round" opacity="0.48"/>
62
62
  </g>
63
63
  </g>
64
64
  <g filter="url(#eyeShadow)">
@@ -75,23 +75,23 @@ function kt(t) {
75
75
  </g>
76
76
  </svg>`;
77
77
  }
78
- function St(t) {
79
- return `data:image/svg+xml,${encodeURIComponent(kt(t))}`;
78
+ function zt(e) {
79
+ return `data:image/svg+xml,${encodeURIComponent(Ft(e))}`;
80
80
  }
81
- const H = "#2c2a1e", De = [253, 250, 241], Te = 3.5;
82
- function et(t) {
83
- const e = tt(t);
84
- if (Ie(J(e), De) >= Te)
85
- return e;
86
- let o = J(e);
87
- const a = J(H);
88
- for (let r = 0; r < 6; r += 1)
89
- if (o = Dt(o, a, 0.22), Ie(o, De) >= Te)
90
- return be(o);
91
- return be(o);
92
- }
93
- function Lt(t) {
94
- const e = et(t), 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";
81
+ const j = "#2c2a1e", Ge = [253, 250, 241], Ue = 3.5;
82
+ function ct(e) {
83
+ const t = ut(e);
84
+ if ($e(te(t), Ge) >= Ue)
85
+ return t;
86
+ let o = te(t);
87
+ const a = te(j);
88
+ for (let i = 0; i < 6; i += 1)
89
+ if (o = Ht(o, a, 0.22), $e(o, Ge) >= Ue)
90
+ return Ce(o);
91
+ return Ce(o);
92
+ }
93
+ function Gt(e) {
94
+ const t = ct(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,35 +104,35 @@ function Lt(t) {
104
104
  </defs>
105
105
  <g filter="url(#scribbleBoltWobble)">
106
106
  <g clip-path="url(#scribbleBoltClip)">
107
- <path d="${At()}" fill="none" stroke="${e}" stroke-width="56" stroke-linecap="round" stroke-linejoin="round" opacity="0.9" transform="rotate(-14 627 600)"/>
107
+ <path d="${$t()}" 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="${H}" stroke-width="18" stroke-linejoin="round"/>
109
+ <path d="${n}" fill="none" stroke="${j}" 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="${H}" stroke-width="13"/>
112
- <ellipse cx="533" cy="473" rx="45" ry="53" fill="${H}"/>
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}"/>
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="${H}" stroke-width="13"/>
117
- <ellipse cx="712" cy="473" rx="45" ry="53" fill="${H}"/>
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}"/>
118
118
  <circle cx="728" cy="447" r="16" fill="#ffffff"/>
119
119
  </g>
120
120
  </g>
121
121
  </svg>`;
122
122
  }
123
- function Pt(t) {
124
- return `data:image/svg+xml,${encodeURIComponent(Lt(t))}`;
123
+ function Ut(e) {
124
+ return `data:image/svg+xml,${encodeURIComponent(Gt(e))}`;
125
125
  }
126
- function At() {
126
+ function $t() {
127
127
  let n = "M 280 120", o = !1, a = 0;
128
- for (let r = 150; r <= 1170; r += 62) {
128
+ for (let i = 150; i <= 1170; i += 62) {
129
129
  const l = (a % 3 - 1) * 18, p = o ? 280 - l : 1020 + l;
130
- n += ` L ${p} ${r}`, o = !o, a += 1;
130
+ n += ` L ${p} ${i}`, o = !o, a += 1;
131
131
  }
132
132
  return n;
133
133
  }
134
- function Nt(t) {
135
- const e = tt(t), n = _e(J(e));
134
+ function Wt(e) {
135
+ const t = ut(e), n = Ee(te(t));
136
136
  return n > 0.86 ? {
137
137
  top: "#ffffff",
138
138
  middle: "#f6f6f6",
@@ -156,90 +156,90 @@ function Nt(t) {
156
156
  inner: "#4b4b4b",
157
157
  shadow: "#000000"
158
158
  } : {
159
- top: D(e, 0.28, -0.03),
160
- middle: D(e, 0.08, 0.04),
161
- bottom: D(e, -0.1, 0.02),
162
- edgeStart: D(e, 0.08, 0.08),
163
- edgeMiddle: D(e, -0.08, 0.08),
164
- edgeEnd: D(e, -0.18, 0.05),
165
- glow: D(e, 0.32, -0.12),
166
- highlight: D(e, 0.38, -0.18),
167
- inner: D(e, 0.24, -0.1),
168
- shadow: D(e, -0.25, -0.08)
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)
169
169
  };
170
170
  }
171
- function tt(t) {
172
- const e = t.trim();
173
- return /^#[0-9a-f]{6}$/i.test(e) ? e.toLowerCase() : /^#[0-9a-f]{3}$/i.test(e) ? `#${e.slice(1).split("").map((n) => n + n).join("").toLowerCase()}` : Et;
171
+ function ut(e) {
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()}` : Bt;
174
174
  }
175
- function J(t) {
175
+ function te(e) {
176
176
  return [
177
- Number.parseInt(t.slice(1, 3), 16),
178
- Number.parseInt(t.slice(3, 5), 16),
179
- Number.parseInt(t.slice(5, 7), 16)
177
+ Number.parseInt(e.slice(1, 3), 16),
178
+ Number.parseInt(e.slice(3, 5), 16),
179
+ Number.parseInt(e.slice(5, 7), 16)
180
180
  ];
181
181
  }
182
- function be([t, e, n]) {
182
+ function Ce([e, t, n]) {
183
183
  const o = (a) => Math.max(0, Math.min(255, Math.round(a))).toString(16).padStart(2, "0");
184
- return `#${o(t)}${o(e)}${o(n)}`;
184
+ return `#${o(e)}${o(t)}${o(n)}`;
185
185
  }
186
- function _e([t, e, n]) {
186
+ function Ee([e, t, n]) {
187
187
  const o = (a) => {
188
- const r = a / 255;
189
- return r <= 0.04045 ? r / 12.92 : ((r + 0.055) / 1.055) ** 2.4;
188
+ const i = a / 255;
189
+ return i <= 0.04045 ? i / 12.92 : ((i + 0.055) / 1.055) ** 2.4;
190
190
  };
191
- return 0.2126 * o(t) + 0.7152 * o(e) + 0.0722 * o(n);
191
+ return 0.2126 * o(e) + 0.7152 * o(t) + 0.0722 * o(n);
192
192
  }
193
- function Ie(t, e) {
194
- const n = _e(t), o = _e(e), [a, r] = n > o ? [n, o] : [o, n];
195
- return (a + 0.05) / (r + 0.05);
193
+ function $e(e, t) {
194
+ const n = Ee(e), o = Ee(t), [a, i] = n > o ? [n, o] : [o, n];
195
+ return (a + 0.05) / (i + 0.05);
196
196
  }
197
- function Dt(t, e, n) {
198
- const o = xe(n);
197
+ function Ht(e, t, n) {
198
+ const o = ke(n);
199
199
  return [
200
- t[0] + (e[0] - t[0]) * o,
201
- t[1] + (e[1] - t[1]) * o,
202
- t[2] + (e[2] - t[2]) * o
200
+ e[0] + (t[0] - e[0]) * o,
201
+ e[1] + (t[1] - e[1]) * o,
202
+ e[2] + (t[2] - e[2]) * o
203
203
  ];
204
204
  }
205
- function D(t, e, n) {
206
- const [o, a, r] = Tt(J(t));
207
- return be(It(o, xe(a + n), xe(r + e)));
205
+ function I(e, t, n) {
206
+ const [o, a, i] = Vt(te(e));
207
+ return Ce(qt(o, ke(a + n), ke(i + t)));
208
208
  }
209
- function Tt([t, e, n]) {
210
- const o = t / 255, a = e / 255, r = n / 255, l = Math.max(o, a, r), p = Math.min(o, a, r), s = (l + p) / 2;
209
+ function Vt([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;
211
211
  if (l === p)
212
212
  return [0, 0, s];
213
213
  const g = l - p, c = s > 0.5 ? g / (2 - l - p) : g / (l + p);
214
- return [(l === o ? (a - r) / g + (a < r ? 6 : 0) : l === a ? (r - o) / g + 2 : (o - a) / g + 4) / 6, c, s];
214
+ return [(l === o ? (a - i) / g + (a < i ? 6 : 0) : l === a ? (i - o) / g + 2 : (o - a) / g + 4) / 6, c, s];
215
215
  }
216
- function It(t, e, n) {
217
- if (e === 0)
216
+ function qt(e, t, n) {
217
+ if (t === 0)
218
218
  return [n * 255, n * 255, n * 255];
219
- const o = n < 0.5 ? n * (1 + e) : n + e - n * e, a = 2 * n - o;
219
+ const o = n < 0.5 ? n * (1 + t) : n + t - n * t, a = 2 * n - o;
220
220
  return [
221
- he(a, o, t + 1 / 3) * 255,
222
- he(a, o, t) * 255,
223
- he(a, o, t - 1 / 3) * 255
221
+ we(a, o, e + 1 / 3) * 255,
222
+ we(a, o, e) * 255,
223
+ we(a, o, e - 1 / 3) * 255
224
224
  ];
225
225
  }
226
- function he(t, e, n) {
226
+ function we(e, t, n) {
227
227
  let o = n;
228
- return o < 0 && (o += 1), o > 1 && (o -= 1), o < 1 / 6 ? t + (e - t) * 6 * o : o < 1 / 2 ? e : o < 2 / 3 ? t + (e - t) * (2 / 3 - o) * 6 : t;
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 xe(t) {
231
- return Math.max(0, Math.min(1, t));
230
+ function ke(e) {
231
+ return Math.max(0, Math.min(1, e));
232
232
  }
233
- const nt = "suggest_share_on_socials";
234
- function Mt(t) {
235
- for (let e = t.length - 1; e >= 0; e -= 1) {
236
- const n = t[e];
237
- if (n.role !== "tool" || n.toolName !== nt)
233
+ const gt = "suggest_share_on_socials";
234
+ function jt(e) {
235
+ for (let t = e.length - 1; t >= 0; t -= 1) {
236
+ const n = e[t];
237
+ if (n.role !== "tool" || n.toolName !== gt)
238
238
  continue;
239
- const o = Me(t, e, "assistant");
239
+ const o = We(e, t, "assistant");
240
240
  if (!o)
241
241
  return null;
242
- const a = Me(t, o.index, "user");
242
+ const a = We(e, o.index, "user");
243
243
  return a ? {
244
244
  id: `share:${n.callId ?? n.id}`,
245
245
  userPrompt: a.content,
@@ -248,24 +248,24 @@ function Mt(t) {
248
248
  }
249
249
  return null;
250
250
  }
251
- async function Rt(t) {
252
- const e = await Ot(t);
251
+ async function Kt(e) {
252
+ const t = await Yt(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
- await navigator.clipboard.write([new ClipboardItem({ [e.type || "image/png"]: e })]);
255
+ await navigator.clipboard.write([new ClipboardItem({ [t.type || "image/png"]: t })]);
256
256
  }
257
- function Me(t, e, n) {
258
- for (let o = e - 1; o >= 0; o -= 1) {
259
- const a = t[o];
257
+ function We(e, t, n) {
258
+ for (let o = t - 1; o >= 0; o -= 1) {
259
+ const a = e[o];
260
260
  if (a.role === n && a.content.trim())
261
261
  return { index: o, content: a.content.trim() };
262
262
  }
263
263
  return null;
264
264
  }
265
- async function Ot(t) {
266
- return await (await fetch(t)).blob();
265
+ async function Yt(e) {
266
+ return await (await fetch(e)).blob();
267
267
  }
268
- const ot = 100, Ft = "product-agent:sdk-preview-socket-connect", Bt = "product-agent:sdk-preview-socket-send", zt = "product-agent:sdk-preview-socket-close", Gt = "product-agent:sdk-preview-socket-open", $t = "product-agent:sdk-preview-socket-message", Ut = "product-agent:sdk-preview-socket-error", Wt = "product-agent:sdk-preview-socket-closed", Re = "product-agent:sdk-preview-socket-id", Ht = "product-agent:preview-diagnostic", at = "pluno.productAgent.sharePromptsDisabled", ie = 10, Vt = 10 * 1024 * 1024, jt = /* @__PURE__ */ new Set(["image/png", "image/jpeg", "image/webp", "image/gif", "application/pdf"]), M = {
268
+ const ht = 100, Xt = "product-agent:sdk-preview-socket-connect", Zt = "product-agent:sdk-preview-socket-send", Jt = "product-agent:sdk-preview-socket-close", Qt = "product-agent:sdk-preview-socket-open", en = "product-agent:sdk-preview-socket-message", tn = "product-agent:sdk-preview-socket-error", nn = "product-agent:sdk-preview-socket-closed", He = "product-agent:sdk-preview-socket-id", on = "product-agent:preview-diagnostic", mt = "pluno.productAgent.sharePromptsDisabled", de = 10, an = 10 * 1024 * 1024, rn = /* @__PURE__ */ new Set(["image/png", "image/jpeg", "image/webp", "image/gif", "application/pdf"]), M = {
269
269
  launcherLabel: "Ask for anything...",
270
270
  accentColor: "#7c3aed",
271
271
  colorScheme: "light",
@@ -273,129 +273,137 @@ const ot = 100, Ft = "product-agent:sdk-preview-socket-connect", Bt = "product-a
273
273
  scribbleStyle: !1,
274
274
  position: "bottom-right",
275
275
  movableLauncher: !1
276
- }, Oe = '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>', qt = '"Architects Daughter", "Bradley Hand", "Chalkboard SE", "Comic Sans MS", "Comic Sans", "Segoe Print", cursive', Fe = "pluno-pa-scribble-font", rt = 190, it = 41, Kt = 48, Yt = 420, Xt = 680, N = 8, Be = 50, Zt = "http://www.w3.org/2000/svg", Jt = 11, Qt = 13, en = 4, tn = 10, nn = 40, on = "movable-launcher-position-v2";
277
- function an(t) {
278
- return (e) => new R(e, t);
279
- }
280
- async function rn(t = {}) {
281
- const e = {
282
- launcherLabel: t.launcherLabel ?? M.launcherLabel,
283
- accentColor: t.accentColor ?? M.accentColor,
284
- colorScheme: t.colorScheme ?? M.colorScheme,
285
- fontFamily: t.fontFamily ?? M.fontFamily,
286
- scribbleStyle: t.scribbleStyle ?? M.scribbleStyle,
287
- position: t.position ?? M.position,
288
- movableLauncher: t.movableLauncher ?? M.movableLauncher,
289
- token: t.token,
290
- tokenProvider: t.tokenProvider,
291
- tokenEndpoint: t.tokenEndpoint,
292
- backendUrl: t.backendUrl,
293
- metadata: t.metadata,
294
- initialStarterPrompts: t.initialStarterPrompts,
295
- webSocketFactory: t.webSocketFactory,
296
- loginRequired: t.loginRequired === !0,
297
- loginButtonLabel: t.loginButtonLabel ?? "Log in to Pluno",
298
- onLoginClick: t.onLoginClick,
299
- socialPostDraftHandler: t.socialPostDraftHandler,
300
- socialPostRewardsUrl: t.socialPostRewardsUrl,
301
- loadSharePromptsDisabled: t.loadSharePromptsDisabled,
302
- persistSharePromptsDisabled: t.persistSharePromptsDisabled
303
- };
304
- z("web-sdk.widget", "Mounting widget with merged options", {
305
- accentColor: e.accentColor,
306
- colorScheme: e.colorScheme,
307
- fontFamily: e.fontFamily,
276
+ }, Ve = '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>', ln = '"Architects Daughter", "Bradley Hand", "Chalkboard SE", "Comic Sans MS", "Comic Sans", "Segoe Print", cursive', qe = "pluno-pa-scribble-font", ft = 190, bt = 41, pn = 48, sn = 420, dn = 520, cn = 0.24, un = 680, gn = 800, hn = 0.76, D = 8, je = 50, mn = "http://www.w3.org/2000/svg", fn = 11, bn = 13, wn = 4, _n = 10, xn = 40, vn = "movable-launcher-position-v2";
277
+ function yn(e) {
278
+ return (t) => new O(t, e);
279
+ }
280
+ async function Cn(e = {}) {
281
+ const t = {
282
+ launcherLabel: e.launcherLabel ?? M.launcherLabel,
283
+ accentColor: e.accentColor ?? M.accentColor,
284
+ colorScheme: e.colorScheme ?? M.colorScheme,
285
+ fontFamily: e.fontFamily ?? M.fontFamily,
286
+ scribbleStyle: e.scribbleStyle ?? M.scribbleStyle,
287
+ position: e.position ?? M.position,
288
+ movableLauncher: e.movableLauncher ?? M.movableLauncher,
289
+ token: e.token,
290
+ tokenProvider: e.tokenProvider,
291
+ tokenEndpoint: e.tokenEndpoint,
308
292
  backendUrl: e.backendUrl,
309
- hasToken: !!e.token,
310
- hasTokenProvider: !!e.tokenProvider,
311
- hasTokenEndpoint: !!e.tokenEndpoint,
312
- hasWebSocketFactory: !!e.webSocketFactory,
313
- initialStarterPromptCount: e.initialStarterPrompts?.length ?? 0
293
+ metadata: e.metadata,
294
+ initialStarterPrompts: e.initialStarterPrompts,
295
+ clientId: e.clientId,
296
+ restorePersistedState: e.restorePersistedState,
297
+ expectedPersistedSessionId: e.expectedPersistedSessionId,
298
+ webSocketFactory: e.webSocketFactory,
299
+ loginRequired: e.loginRequired === !0,
300
+ loginButtonLabel: e.loginButtonLabel ?? "Log in to Pluno",
301
+ onLoginClick: e.onLoginClick,
302
+ socialPostDraftHandler: e.socialPostDraftHandler,
303
+ billingStatus: e.billingStatus ?? null,
304
+ billingStatusLoader: e.billingStatusLoader,
305
+ socialPostRewardsUrl: e.socialPostRewardsUrl,
306
+ loadSharePromptsDisabled: e.loadSharePromptsDisabled,
307
+ persistSharePromptsDisabled: e.persistSharePromptsDisabled
308
+ };
309
+ U("web-sdk.widget", "Mounting widget with merged options", {
310
+ accentColor: t.accentColor,
311
+ colorScheme: t.colorScheme,
312
+ fontFamily: t.fontFamily,
313
+ backendUrl: t.backendUrl,
314
+ hasToken: !!t.token,
315
+ hasTokenProvider: !!t.tokenProvider,
316
+ hasTokenEndpoint: !!t.tokenEndpoint,
317
+ hasWebSocketFactory: !!t.webSocketFactory,
318
+ initialStarterPromptCount: t.initialStarterPrompts?.length ?? 0
314
319
  });
315
320
  const n = document.createElement("div");
316
321
  n.className = "pluno-pa-widget-host";
317
322
  const o = n.attachShadow({ mode: "open" }), a = document.createElement("div");
318
- a.className = `pluno-pa-widget pluno-pa-widget--${e.position}`;
319
- let r = ze(e.accentColor, e.scribbleStyle);
320
- hn(a, e.launcherLabel, r, e.movableLauncher), o.appendChild(a);
321
- const l = await Xn(), p = l.ownerDocument;
322
- l.appendChild(n), a.classList.add(`pluno-pa-widget--${e.colorScheme}`), Xe(o, e.accentColor), Ge(a, r, {
323
- accentColor: e.accentColor,
324
- colorScheme: e.colorScheme,
325
- fontFamily: e.fontFamily,
326
- scribbleStyle: e.scribbleStyle
327
- }), z("web-sdk.widget", "Applied initial widget appearance", {
328
- accentColor: e.accentColor,
329
- colorScheme: e.colorScheme,
330
- fontFamily: e.fontFamily,
323
+ a.className = `pluno-pa-widget pluno-pa-widget--${t.position}`;
324
+ let i = Ke(t.accentColor, t.scribbleStyle);
325
+ Dn(a, t.launcherLabel, i, t.movableLauncher), o.appendChild(a);
326
+ const l = await _o(), p = l.ownerDocument;
327
+ l.appendChild(n), a.classList.add(`pluno-pa-widget--${t.colorScheme}`), lt(o, t.accentColor), Ye(a, i, {
328
+ accentColor: t.accentColor,
329
+ colorScheme: t.colorScheme,
330
+ fontFamily: t.fontFamily,
331
+ scribbleStyle: t.scribbleStyle
332
+ }), U("web-sdk.widget", "Applied initial widget appearance", {
333
+ accentColor: t.accentColor,
334
+ colorScheme: t.colorScheme,
335
+ fontFamily: t.fontFamily,
331
336
  cssAccent: a.style.getPropertyValue("--pluno-pa-accent")
332
337
  });
333
- const s = a.querySelector(".pluno-pa-widget__launcher"), g = a.querySelector(".pluno-pa-widget__launcher-drag-handle"), c = a.querySelector(".pluno-pa-widget__launcher-input"), b = a.querySelector(".pluno-pa-widget__panel"), _ = a.querySelector(".pluno-pa-widget__close"), x = a.querySelector(".pluno-pa-widget__composer"), y = a.querySelector(".pluno-pa-widget__attachment-error"), h = a.querySelector(".pluno-pa-widget__attachments"), d = a.querySelector(".pluno-pa-widget__input"), w = a.querySelector(".pluno-pa-widget__send"), m = a.querySelector(".pluno-pa-widget__new-chat"), f = a.querySelector(".pluno-pa-widget__timeline");
334
- if (!s || !c || !b || !_ || !x || !y || !h || !d || !w || !m || !f)
338
+ const s = a.querySelector(".pluno-pa-widget__launcher"), g = a.querySelector(".pluno-pa-widget__launcher-drag-handle"), c = 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"), h = a.querySelector(".pluno-pa-widget__billing-status"), f = a.querySelector(".pluno-pa-widget__attachments"), u = a.querySelector(".pluno-pa-widget__input"), m = a.querySelector(".pluno-pa-widget__send"), _ = a.querySelector(".pluno-pa-widget__new-chat"), k = a.querySelector(".pluno-pa-widget__timeline");
339
+ if (!s || !c || !b || !w || !x || !C || !h || !f || !u || !m || !_ || !k)
335
340
  throw new Error("Failed to mount Pluno widget");
336
- if (e.movableLauncher && !g)
341
+ if (t.movableLauncher && !g)
337
342
  throw new Error("Failed to mount Pluno widget drag handle");
338
- Ve(c), Ve(d);
339
- let v = [], k = null;
340
- const E = () => {
341
- kn(h, v, (i) => {
342
- v = v.filter((u, L) => L !== i), E(), I();
343
+ et(c), et(u);
344
+ let v = [], y = null;
345
+ const T = () => {
346
+ $n(f, v, (r) => {
347
+ v = v.filter((d, L) => L !== r), T(), N();
343
348
  });
344
- }, q = e.loginRequired || e.token || e.webSocketFactory ? void 0 : e.tokenProvider ?? (async () => {
345
- if (!e.tokenEndpoint)
349
+ }, ne = t.loginRequired || t.token || t.webSocketFactory ? void 0 : t.tokenProvider ?? (async () => {
350
+ if (!t.tokenEndpoint)
346
351
  throw new Error("Pluno widget requires token or tokenEndpoint");
347
- const i = await fetch(e.tokenEndpoint, {
352
+ const r = await fetch(t.tokenEndpoint, {
348
353
  method: "POST",
349
354
  credentials: "include",
350
355
  headers: { "content-type": "application/json" },
351
356
  body: JSON.stringify({ origin: location.origin, url: location.href })
352
357
  });
353
- if (!i.ok)
358
+ if (!r.ok)
354
359
  throw new Error("Failed to load Pluno token");
355
- const u = await i.json();
356
- if (!u.token)
360
+ const d = await r.json();
361
+ if (!d.token)
357
362
  throw new Error("Pluno token endpoint did not return a token");
358
- return u.token;
363
+ return d.token;
359
364
  });
360
- let C;
361
- C = await Ct.init({
362
- token: e.token,
363
- tokenProvider: q,
364
- backendUrl: e.backendUrl,
365
+ let E;
366
+ E = await Ot.init({
367
+ token: t.token,
368
+ tokenProvider: ne,
369
+ backendUrl: t.backendUrl,
365
370
  metadata: () => ({
366
- ...e.metadata ?? {},
367
- ...!C.getState().sessionId && e.scribbleStyle ? { scribbleStyleStarted: !0 } : {}
371
+ ...t.metadata ?? {},
372
+ ...!E.getState().sessionId && t.scribbleStyle ? { scribbleStyleStarted: !0 } : {}
368
373
  }),
369
- initialStarterPrompts: e.initialStarterPrompts,
370
- webSocketFactory: e.webSocketFactory,
371
- autoConnect: e.loginRequired ? !1 : void 0
374
+ initialStarterPrompts: t.initialStarterPrompts,
375
+ clientId: t.clientId,
376
+ restorePersistedState: t.restorePersistedState,
377
+ expectedPersistedSessionId: t.expectedPersistedSessionId,
378
+ webSocketFactory: t.webSocketFactory,
379
+ autoConnect: t.loginRequired ? !1 : void 0
372
380
  });
373
- const F = Zn(e), pe = new Set(F.openToolGroupKeys), G = new Set(F.seenShareCandidateIds), Q = new Set(G);
374
- let se = F.sharePromptsDisabled || await Jn(e), T = e.movableLauncher ? F.launcherPosition : null, Ce = T !== null, O = null, Ee = !1;
375
- const mt = () => {
376
- Ee || typeof document > "u" || (Xe(o, e.accentColor), n.isConnected || p.body?.appendChild(n));
377
- }, ke = new MutationObserver(mt);
378
- ke.observe(p.documentElement, { childList: !0, subtree: !0 });
379
- const de = (i = !0) => {
380
- const u = $e(a, i);
381
- return Ue(
381
+ const z = xo(t), ce = new Set(z.openToolGroupKeys), $ = new Set(z.seenShareCandidateIds), oe = new Set($);
382
+ let ue = z.sharePromptsDisabled || await vo(t), R = t.movableLauncher ? z.launcherPosition : null, Ne = R !== null, B = null, De = !1;
383
+ const Pt = () => {
384
+ De || typeof document > "u" || (lt(o, t.accentColor), n.isConnected || p.body?.appendChild(n));
385
+ }, Te = new MutationObserver(Pt);
386
+ Te.observe(p.documentElement, { childList: !0, subtree: !0 });
387
+ const ge = (r = !0) => {
388
+ const d = Xe(a, r);
389
+ return Ze(
382
390
  a,
383
- T ?? dn(a, e.position, u),
384
- u
391
+ R ?? Ln(a, t.position, d),
392
+ d
385
393
  );
386
394
  }, A = () => {
387
- eo(e, {
395
+ Co(t, {
388
396
  isOpen: a.classList.contains("pluno-pa-widget--open"),
389
- composerValue: d.value,
390
- openToolGroupKeys: [...pe],
391
- launcherPosition: Ce ? T : null,
392
- seenShareCandidateIds: [...G].slice(-ot),
393
- sharePromptsDisabled: se
397
+ composerValue: u.value,
398
+ openToolGroupKeys: [...ce],
399
+ launcherPosition: Ne ? R : null,
400
+ seenShareCandidateIds: [...$].slice(-ht),
401
+ sharePromptsDisabled: ue
394
402
  });
395
- }, B = (i, u = {}) => {
396
- gn(i, {
397
- debugVersion: on,
398
- launcherPosition: T,
403
+ }, G = (r, d = {}) => {
404
+ Nn(r, {
405
+ debugVersion: vn,
406
+ launcherPosition: R,
399
407
  rootClasses: a.className,
400
408
  rootStyle: {
401
409
  left: a.style.left,
@@ -403,479 +411,507 @@ async function rn(t = {}) {
403
411
  right: a.style.right,
404
412
  bottom: a.style.bottom
405
413
  },
406
- rootRect: me(a),
407
- launcherRect: me(s),
408
- panelRect: me(b),
409
- viewport: V(),
414
+ rootRect: _e(a),
415
+ launcherRect: _e(s),
416
+ panelRect: _e(b),
417
+ viewport: Y(),
410
418
  panelHidden: b.hidden,
411
- closeHidden: _.hidden,
412
- ...u
419
+ closeHidden: w.hidden,
420
+ ...d
413
421
  });
414
- }, ee = (i = !0) => {
415
- if (!T)
416
- return ne(a, null), de(i);
417
- const u = de(i);
418
- return ne(a, u), B("Applied stored closed launcher position", { visibleLauncherPosition: u }), u;
419
- }, Se = (i, u) => {
420
- if (!i || !u) {
421
- He(a);
422
+ }, ae = (r = !0) => {
423
+ if (!R)
424
+ return re(a, null), ge(r);
425
+ const d = ge(r);
426
+ return re(a, d), G("Applied stored closed launcher position", { visibleLauncherPosition: d }), d;
427
+ }, Ie = (r, d) => {
428
+ if (!r || !d) {
429
+ Qe(a);
422
430
  return;
423
431
  }
424
- un(a, {
425
- x: i.x - u.x,
426
- y: i.y - u.y
432
+ An(a, {
433
+ x: r.x - d.x,
434
+ y: r.y - d.y
427
435
  });
428
- }, Le = () => {
429
- const i = ee();
436
+ }, Re = () => {
437
+ const r = ae();
430
438
  if (a.classList.contains("pluno-pa-widget--open") || a.classList.contains("pluno-pa-widget--closing")) {
431
- const u = We(i);
432
- Se(u, i), B("Applied open panel position after viewport resize", { openPanelPosition: u });
433
- } else T && B("Applied visible launcher position after viewport resize", { visibleLauncherPosition: i });
439
+ const d = Je(r);
440
+ Ie(d, r), G("Applied open panel position after viewport resize", { openPanelPosition: d });
441
+ } else R && G("Applied visible launcher position after viewport resize", { visibleLauncherPosition: r });
434
442
  };
435
- let Pe = () => {
443
+ let Me = () => {
436
444
  };
437
- e.movableLauncher && g ? (ee(), window.addEventListener("resize", Le), Pe = pn({
445
+ t.movableLauncher && g ? (ae(), window.addEventListener("resize", Re), Me = kn({
438
446
  root: a,
439
447
  launcherDragHandle: g,
440
- getPosition: () => de(),
441
- setPosition: (i) => {
442
- const u = i;
443
- T = Ue(a, i, $e(a)), ne(a, T), B("Dragging closed launcher", { requestedPosition: u });
448
+ getPosition: () => ge(),
449
+ setPosition: (r) => {
450
+ const d = r;
451
+ R = Ze(a, r, Xe(a)), re(a, R), G("Dragging closed launcher", { requestedPosition: d });
444
452
  },
445
453
  persist: () => {
446
- Ce = !0, A(), B("Persisted closed launcher drag position");
454
+ Ne = !0, A(), G("Persisted closed launcher drag position");
455
+ }
456
+ })) : re(a, null);
457
+ let he = !1;
458
+ const Oe = async () => {
459
+ if (!(!t.billingStatusLoader || he)) {
460
+ he = !0;
461
+ try {
462
+ const r = await t.billingStatusLoader();
463
+ nt(t.billingStatus, r, E.getState().lastErrorCode) && (t.billingStatus = r, ye(h, t.billingStatus, E.getState().lastErrorCode), N());
464
+ } finally {
465
+ he = !1;
466
+ }
447
467
  }
448
- })) : ne(a, null);
449
- const $ = (i = "", u = !0) => {
450
- if (O !== null && (window.clearTimeout(O), O = null), b.hidden = !1, _.hidden = !1, a.classList.remove("pluno-pa-widget--closing"), e.movableLauncher) {
451
- const L = ee(), X = We(L);
452
- Se(X, L), B("Opening launcher at clamped open panel position", { openPanelPosition: X, visibleLauncherPosition: L });
468
+ }, W = (r = "", d = !0) => {
469
+ if (Oe(), B !== null && (window.clearTimeout(B), B = null), b.hidden = !1, w.hidden = !1, a.classList.remove("pluno-pa-widget--closing"), t.movableLauncher) {
470
+ const L = ae(), Q = Je(L);
471
+ Ie(Q, L), G("Opening launcher at clamped open panel position", { openPanelPosition: Q, visibleLauncherPosition: L });
453
472
  } else
454
- He(a);
455
- if (!u) {
456
- a.classList.add("pluno-pa-widget--open"), s.hidden = !0, i && (d.value = i, Z(d)), f.scrollTop = f.scrollHeight, d.focus(), d.setSelectionRange(d.value.length, d.value.length), A();
473
+ Qe(a);
474
+ if (!d) {
475
+ a.classList.add("pluno-pa-widget--open"), s.hidden = !0, r && (u.value = r, ee(u)), k.scrollTop = k.scrollHeight, u.focus(), u.setSelectionRange(u.value.length, u.value.length), A();
457
476
  return;
458
477
  }
459
478
  window.requestAnimationFrame(() => {
460
- a.classList.add("pluno-pa-widget--open"), i && (d.value = i, Z(d)), f.scrollTop = f.scrollHeight, d.focus(), d.setSelectionRange(d.value.length, d.value.length), A(), O = window.setTimeout(() => {
461
- s.hidden = !0, f.scrollTop = f.scrollHeight;
479
+ a.classList.add("pluno-pa-widget--open"), r && (u.value = r, ee(u)), k.scrollTop = k.scrollHeight, u.focus(), u.setSelectionRange(u.value.length, u.value.length), A(), B = window.setTimeout(() => {
480
+ s.hidden = !0, k.scrollTop = k.scrollHeight;
462
481
  }, 220);
463
482
  });
464
- }, ft = () => {
465
- O !== null && (window.clearTimeout(O), O = null), s.hidden = !1, T && (ee(!1), B("Closing launcher at stored position")), a.classList.remove("pluno-pa-widget--open"), a.classList.add("pluno-pa-widget--closing"), A(), O = window.setTimeout(() => {
466
- b.hidden = !0, _.hidden = !0, a.classList.remove("pluno-pa-widget--closing");
483
+ }, At = () => {
484
+ B !== null && (window.clearTimeout(B), B = null), s.hidden = !1, R && (ae(!1), G("Closing launcher at stored position")), a.classList.remove("pluno-pa-widget--open"), a.classList.add("pluno-pa-widget--closing"), A(), B = window.setTimeout(() => {
485
+ b.hidden = !0, w.hidden = !0, a.classList.remove("pluno-pa-widget--closing");
467
486
  }, 220);
468
487
  };
469
- s.addEventListener("submit", (i) => {
470
- i.preventDefault(), $(c.value), c.value = "";
471
- }), g?.addEventListener("click", (i) => {
472
- i.preventDefault(), i.stopPropagation();
473
- }), s.addEventListener("click", (i) => {
474
- i.target !== c && ($(c.value), c.value = "");
488
+ s.addEventListener("submit", (r) => {
489
+ r.preventDefault(), W(c.value), c.value = "";
490
+ }), g?.addEventListener("click", (r) => {
491
+ r.preventDefault(), r.stopPropagation();
492
+ }), s.addEventListener("click", (r) => {
493
+ r.target !== c && (W(c.value), c.value = "");
475
494
  }), c.addEventListener("focus", () => {
476
- $(c.value), c.value = "";
495
+ W(c.value), c.value = "";
477
496
  }), c.addEventListener("input", () => {
478
497
  if (!c.value)
479
498
  return;
480
- const i = c.value;
481
- $(i), c.value = "";
482
- }), _.addEventListener("click", ft);
483
- const I = () => {
484
- w.disabled = !C.getState().isThinking && d.value.trim().length === 0 && v.length === 0;
499
+ const r = c.value;
500
+ W(r), c.value = "";
501
+ }), w.addEventListener("click", At);
502
+ const N = () => {
503
+ m.disabled = F(t.billingStatus) || !E.getState().isThinking && u.value.trim().length === 0 && v.length === 0;
485
504
  };
486
- e.loginRequired && (c.readOnly = !0, c.placeholder = e.loginButtonLabel, d.placeholder = e.loginButtonLabel, x.hidden = !0), x.addEventListener("submit", (i) => {
487
- if (i.preventDefault(), e.loginRequired) {
488
- e.onLoginClick?.();
505
+ t.loginRequired && (c.readOnly = !0, c.placeholder = t.loginButtonLabel, u.placeholder = t.loginButtonLabel, x.hidden = !0), x.addEventListener("submit", (r) => {
506
+ if (r.preventDefault(), t.loginRequired) {
507
+ t.onLoginClick?.();
489
508
  return;
490
509
  }
491
- v = fe(C, d, v), E(), I();
510
+ F(t.billingStatus) || (v = xe(E, u, v), T(), N());
492
511
  });
493
- let K = 0;
494
- const wt = () => {
495
- K = 0, a.classList.remove("pluno-pa-widget--drag-over");
496
- }, bt = (i) => {
497
- k !== null && window.clearTimeout(k), y.textContent = i, y.hidden = !1, k = window.setTimeout(() => {
498
- y.textContent = "", y.hidden = !0, k = null;
512
+ let Z = 0;
513
+ const Nt = () => {
514
+ Z = 0, a.classList.remove("pluno-pa-widget--drag-over");
515
+ }, Dt = (r) => {
516
+ y !== null && window.clearTimeout(y), C.textContent = r, C.hidden = !1, y = window.setTimeout(() => {
517
+ C.textContent = "", C.hidden = !0, y = null;
499
518
  }, 3e3);
500
- }, _t = () => {
501
- k !== null && (window.clearTimeout(k), k = null), y.textContent = "", y.hidden = !0;
502
- }, xt = async (i) => {
503
- if (i.length === 0)
519
+ }, Tt = () => {
520
+ y !== null && (window.clearTimeout(y), y = null), C.textContent = "", C.hidden = !0;
521
+ }, It = async (r) => {
522
+ if (r.length === 0)
504
523
  return;
505
- const u = await An(i);
506
- if (v.length + u.length > ie)
507
- throw new Error(`Attach up to ${ie} files per message.`);
508
- v = [...v, ...u], E(), _t(), I();
524
+ const d = await qn(r);
525
+ if (v.length + d.length > de)
526
+ throw new Error(`Attach up to ${de} files per message.`);
527
+ v = [...v, ...d], T(), Tt(), N();
509
528
  };
510
- a.addEventListener("dragenter", (i) => {
511
- !oe(i.dataTransfer) || e.loginRequired || (i.preventDefault(), i.stopPropagation(), K += 1, a.classList.add("pluno-pa-widget--drag-over"));
512
- }), a.addEventListener("dragover", (i) => {
513
- const u = i.dataTransfer;
514
- !oe(u) || e.loginRequired || (i.preventDefault(), i.stopPropagation(), u.dropEffect = "copy");
515
- }), a.addEventListener("dragleave", (i) => {
516
- oe(i.dataTransfer) && (i.stopPropagation(), K = Math.max(0, K - 1), K === 0 && a.classList.remove("pluno-pa-widget--drag-over"));
517
- }), a.addEventListener("drop", (i) => {
518
- const u = i.dataTransfer;
519
- !oe(u) || e.loginRequired || (i.preventDefault(), i.stopPropagation(), wt(), xt(u.files).catch((L) => {
520
- bt(L instanceof Error ? L.message : "Failed to attach file"), z("web-sdk.widget", "Attachment failed", {
529
+ a.addEventListener("dragenter", (r) => {
530
+ !le(r.dataTransfer) || t.loginRequired || (r.preventDefault(), r.stopPropagation(), Z += 1, a.classList.add("pluno-pa-widget--drag-over"));
531
+ }), a.addEventListener("dragover", (r) => {
532
+ const d = r.dataTransfer;
533
+ !le(d) || t.loginRequired || (r.preventDefault(), r.stopPropagation(), d.dropEffect = "copy");
534
+ }), a.addEventListener("dragleave", (r) => {
535
+ le(r.dataTransfer) && (r.stopPropagation(), Z = Math.max(0, Z - 1), Z === 0 && a.classList.remove("pluno-pa-widget--drag-over"));
536
+ }), a.addEventListener("drop", (r) => {
537
+ const d = r.dataTransfer;
538
+ !le(d) || t.loginRequired || (r.preventDefault(), r.stopPropagation(), Nt(), It(d.files).catch((L) => {
539
+ Dt(L instanceof Error ? L.message : "Failed to attach file"), U("web-sdk.widget", "Attachment failed", {
521
540
  message: L instanceof Error ? L.message : String(L)
522
541
  });
523
542
  }));
524
- }), w.addEventListener("click", () => {
525
- if (e.loginRequired) {
526
- e.onLoginClick?.();
543
+ }), m.addEventListener("click", () => {
544
+ if (t.loginRequired) {
545
+ t.onLoginClick?.();
527
546
  return;
528
547
  }
529
- if (C.getState().isThinking) {
530
- C.stop();
548
+ if (E.getState().isThinking) {
549
+ E.stop();
531
550
  return;
532
551
  }
533
- v = fe(C, d, v), E(), I();
534
- }), m.addEventListener("click", () => {
535
- C.startNewSession(), pe.clear(), d.value = "", v = [], E(), Z(d), A(), I(), d.focus();
536
- }), d.addEventListener("input", () => {
537
- Z(d), A(), I();
538
- }), d.addEventListener("keydown", (i) => {
539
- if (!(i.key !== "Enter" || i.shiftKey)) {
540
- if (i.preventDefault(), e.loginRequired) {
541
- e.onLoginClick?.();
552
+ v = xe(E, u, v), T(), N();
553
+ }), _.addEventListener("click", () => {
554
+ E.startNewSession(), ce.clear(), u.value = "", v = [], T(), ee(u), A(), N(), u.focus();
555
+ }), u.addEventListener("input", () => {
556
+ ee(u), A(), N();
557
+ }), u.addEventListener("keydown", (r) => {
558
+ if (!(r.key !== "Enter" || r.shiftKey)) {
559
+ if (r.preventDefault(), t.loginRequired) {
560
+ t.onLoginClick?.();
542
561
  return;
543
562
  }
544
- v = fe(C, d, v), E(), I();
545
- }
546
- }), a.addEventListener("click", (i) => {
547
- (i.target instanceof Element ? i.target : null)?.closest("a[href]") && A();
548
- }), F.composerValue && (d.value = F.composerValue, Z(d)), F.isOpen && $(d.value, !1);
549
- const Ae = () => r;
550
- let ce = C.getState().appearance !== null, te = null, Y = null, U = null;
551
- const vt = !!e.socialPostDraftHandler, W = (i) => {
552
- if (e.loginRequired) {
553
- Fn(f, w, m, Ae, e.loginButtonLabel, e.onLoginClick);
563
+ v = xe(E, u, v), T(), N();
564
+ }
565
+ }), a.addEventListener("click", (r) => {
566
+ (r.target instanceof Element ? r.target : null)?.closest("a[href]") && A();
567
+ }), z.composerValue && (u.value = z.composerValue, ee(u)), z.isOpen && W(u.value, !1);
568
+ const Be = () => i;
569
+ let me = E.getState().appearance !== null, ie = null, J = null, H = null, Fe = E.getState().isThinking, V = null;
570
+ const Rt = !!t.socialPostDraftHandler, q = (r) => {
571
+ if (Ae(r.lastErrorCode) ? V = r.lastErrorCode : t.billingStatus?.creditsUsed !== null && !F(t.billingStatus) && (V = null), ye(h, t.billingStatus, V), t.loginRequired) {
572
+ io(k, m, _, Be, t.loginButtonLabel, t.onLoginClick);
554
573
  return;
555
574
  }
556
- On(
557
- f,
558
- w,
575
+ ao(
576
+ k,
559
577
  m,
560
- i,
561
- pe,
578
+ _,
579
+ r,
580
+ ce,
562
581
  A,
563
- Ae,
564
- (u) => {
565
- C.sendMessage(u);
582
+ Be,
583
+ (d) => {
584
+ E.sendMessage(d);
566
585
  },
567
- vt && !se ? {
568
- dismissedCandidateIds: Q,
569
- draftingCandidateId: te,
570
- error: Y,
571
- onSeen: (u) => {
572
- G.add(u.id), A();
586
+ Rt && !ue ? {
587
+ dismissedCandidateIds: oe,
588
+ draftingCandidateId: ie,
589
+ error: J,
590
+ onSeen: (d) => {
591
+ $.add(d.id), A();
573
592
  },
574
- onDraft: (u) => {
575
- yt(u);
593
+ onDraft: (d) => {
594
+ Mt(d);
576
595
  },
577
- onDismiss: (u) => {
578
- G.add(u.id), Q.add(u.id), A(), Y = null, W(C.getState());
596
+ onDismiss: (d) => {
597
+ $.add(d.id), oe.add(d.id), A(), J = null, q(E.getState());
579
598
  },
580
- onDisable: (u) => {
581
- se = !0, G.add(u.id), Q.add(u.id), A(), Qn(e, !0), Y = null, W(C.getState());
599
+ onDisable: (d) => {
600
+ ue = !0, $.add(d.id), oe.add(d.id), A(), yo(t, !0), J = null, q(E.getState());
582
601
  }
583
602
  } : void 0
584
603
  );
585
604
  };
586
- return C.on("state", (i) => {
587
- i.appearance ? (ce = !0, z("web-sdk.widget", "Agent state supplied appearance", {
588
- appearance: i.appearance
589
- }), ue(i.appearance, "agent.state.appearance")) : ce && (ce = !1, z("web-sdk.widget", "Agent state cleared appearance; reverting to configured widget options", {
590
- fallbackAccentColor: e.accentColor,
591
- fallbackColorScheme: e.colorScheme,
592
- fallbackFontFamily: e.fontFamily
593
- }), ue({}, "agent.state.appearance-cleared")), W(i), I();
594
- }), W(C.getState()), I(), {
595
- agent: C,
596
- updateAppearance: (i) => {
597
- i.scribbleStyle !== void 0 && (e.scribbleStyle = i.scribbleStyle), ue(i, "widgetHandle.updateAppearance");
605
+ return E.on("state", (r) => {
606
+ const d = Fe && !r.isThinking;
607
+ Fe = r.isThinking, r.appearance ? (me = !0, U("web-sdk.widget", "Agent state supplied appearance", {
608
+ appearance: r.appearance
609
+ }), fe(r.appearance, "agent.state.appearance")) : me && (me = !1, U("web-sdk.widget", "Agent state cleared appearance; reverting to configured widget options", {
610
+ fallbackAccentColor: t.accentColor,
611
+ fallbackColorScheme: t.colorScheme,
612
+ fallbackFontFamily: t.fontFamily
613
+ }), fe({}, "agent.state.appearance-cleared")), q(r), N(), d && Oe();
614
+ }), q(E.getState()), N(), {
615
+ agent: E,
616
+ updateAppearance: (r) => {
617
+ r.scribbleStyle !== void 0 && (t.scribbleStyle = r.scribbleStyle), fe(r, "widgetHandle.updateAppearance");
618
+ },
619
+ updateBillingStatus: (r) => {
620
+ const d = r ?? null;
621
+ nt(t.billingStatus, d, V) && (t.billingStatus = d, t.billingStatus?.creditsUsed !== null && !F(t.billingStatus) && (V = null), ye(
622
+ a.querySelector(".pluno-pa-widget__billing-status"),
623
+ t.billingStatus,
624
+ V
625
+ ), N());
598
626
  },
599
627
  openPanel: () => {
600
- $(d.value, !1);
628
+ W(u.value, !1);
601
629
  },
602
630
  destroy: () => {
603
- Ee = !0, ke.disconnect(), e.movableLauncher && window.removeEventListener("resize", Le), Pe(), k !== null && window.clearTimeout(k), U?.remove(), C.destroy(), n.remove();
631
+ De = !0, Te.disconnect(), t.movableLauncher && window.removeEventListener("resize", Re), Me(), y !== null && window.clearTimeout(y), H?.remove(), E.destroy(), n.remove();
604
632
  }
605
633
  };
606
- async function yt(i) {
607
- if (!te) {
608
- te = i.id, Y = null, W(C.getState());
634
+ async function Mt(r) {
635
+ if (!ie) {
636
+ ie = r.id, J = null, q(E.getState());
609
637
  try {
610
- if (!e.socialPostDraftHandler)
638
+ if (!t.socialPostDraftHandler)
611
639
  throw new Error("Social post drafting is not available here.");
612
- const u = await e.socialPostDraftHandler(i);
613
- if (!u.linkedinPost || !u.xPost)
640
+ const d = await t.socialPostDraftHandler(r);
641
+ if (!d.linkedinPost || !d.xPost)
614
642
  throw new Error("Pluno did not return a complete social post draft.");
615
- G.add(i.id), Q.add(i.id), A(), U?.remove(), U = Gn(u, {
616
- socialPostRewardsUrl: e.socialPostRewardsUrl,
643
+ $.add(r.id), oe.add(r.id), A(), H?.remove(), H = po(d, {
644
+ socialPostRewardsUrl: t.socialPostRewardsUrl,
617
645
  onClose: () => {
618
- U?.remove(), U = null;
646
+ H?.remove(), H = null;
619
647
  }
620
- }), a.appendChild(U);
621
- } catch (u) {
622
- Y = u instanceof Error ? u.message : "Could not draft social post.";
648
+ }), a.appendChild(H);
649
+ } catch (d) {
650
+ J = d instanceof Error ? d.message : "Could not draft social post.";
623
651
  } finally {
624
- te = null, W(C.getState());
652
+ ie = null, q(E.getState());
625
653
  }
626
654
  }
627
655
  }
628
- function ue(i, u) {
629
- const L = i.accentColor ?? e.accentColor, X = i.colorScheme ?? e.colorScheme, Ne = i.fontFamily ?? e.fontFamily, ge = i.scribbleStyle ?? e.scribbleStyle;
630
- r = ze(L, ge), Ge(a, r, {
656
+ function fe(r, d) {
657
+ const L = r.accentColor ?? t.accentColor, Q = r.colorScheme ?? t.colorScheme, ze = r.fontFamily ?? t.fontFamily, be = r.scribbleStyle ?? t.scribbleStyle;
658
+ i = Ke(L, be), Ye(a, i, {
631
659
  accentColor: L,
632
- colorScheme: X,
633
- fontFamily: Ne,
634
- scribbleStyle: ge
635
- }), z("web-sdk.widget", "Updated widget appearance", {
636
- source: u,
637
- inputAppearance: i,
660
+ colorScheme: Q,
661
+ fontFamily: ze,
662
+ scribbleStyle: be
663
+ }), U("web-sdk.widget", "Updated widget appearance", {
664
+ source: d,
665
+ inputAppearance: r,
638
666
  appliedAccentColor: L,
639
- appliedColorScheme: X,
640
- appliedFontFamily: Ne,
641
- appliedScribbleStyle: ge,
667
+ appliedColorScheme: Q,
668
+ appliedFontFamily: ze,
669
+ appliedScribbleStyle: be,
642
670
  cssAccent: a.style.getPropertyValue("--pluno-pa-accent")
643
671
  });
644
672
  }
645
673
  }
646
- function ze(t, e) {
647
- return e ? Pt(t) : St(t);
674
+ function Ke(e, t) {
675
+ return t ? Ut(e) : zt(e);
648
676
  }
649
- function Ge(t, e, n) {
650
- t.classList.toggle("pluno-pa-widget--dark", n.colorScheme === "dark"), t.classList.toggle("pluno-pa-widget--light", n.colorScheme !== "dark"), t.classList.toggle("pluno-pa-widget--scribble", n.scribbleStyle);
651
- const o = n.scribbleStyle ? et(n.accentColor) : n.accentColor;
652
- t.style.setProperty("--pluno-pa-accent", o), t.style.fontFamily = n.scribbleStyle ? qt : n.fontFamily, n.scribbleStyle && ln(t.ownerDocument);
653
- const a = Array.from(t.querySelectorAll(".pluno-pa-widget__character"));
654
- for (const r of a)
655
- r.src = e;
677
+ function Ye(e, t, n) {
678
+ 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);
679
+ const o = n.scribbleStyle ? ct(n.accentColor) : n.accentColor;
680
+ e.style.setProperty("--pluno-pa-accent", o), e.style.fontFamily = n.scribbleStyle ? ln : n.fontFamily, n.scribbleStyle && En(e.ownerDocument);
681
+ const a = Array.from(e.querySelectorAll(".pluno-pa-widget__character"));
682
+ for (const i of a)
683
+ i.src = t;
656
684
  }
657
- function ln(t) {
658
- if (t.getElementById(Fe))
685
+ function En(e) {
686
+ if (e.getElementById(qe))
659
687
  return;
660
- const e = t.createElement("style");
661
- e.id = Fe, e.textContent = `@font-face {
688
+ const t = e.createElement("style");
689
+ t.id = qe, t.textContent = `@font-face {
662
690
  font-family: "Architects Daughter";
663
691
  font-style: normal;
664
692
  font-weight: 400;
665
693
  font-display: swap;
666
694
  src: url("https://fonts.gstatic.com/s/architectsdaughter/v20/KtkxAKiDZI_td1Lkx62xHZHDtgO_Y-bvTYlg4-7jA-U.woff2") format("woff2");
667
- }`, t.head.appendChild(e), t.fonts?.load('16px "Architects Daughter"');
695
+ }`, e.head.appendChild(t), e.fonts?.load('16px "Architects Daughter"');
668
696
  }
669
- function pn({
670
- root: t,
671
- launcherDragHandle: e,
697
+ function kn({
698
+ root: e,
699
+ launcherDragHandle: t,
672
700
  getPosition: n,
673
701
  setPosition: o,
674
702
  persist: a
675
703
  }) {
676
- let r = null, l = null, p = null, s = !1;
704
+ let i = null, l = null, p = null, s = !1;
677
705
  const g = () => {
678
- r = null, l = null, p = null, s = !1, t.classList.remove("pluno-pa-widget--dragging");
706
+ i = null, l = null, p = null, s = !1, e.classList.remove("pluno-pa-widget--dragging");
679
707
  }, c = (h) => {
680
- t.classList.contains("pluno-pa-widget--open") || t.classList.contains("pluno-pa-widget--closing") || (h.preventDefault(), h.stopPropagation(), r = h.pointerId, l = { x: h.clientX, y: h.clientY }, p = n(), s = !1, e.setPointerCapture?.(h.pointerId));
708
+ 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(), s = !1, t.setPointerCapture?.(h.pointerId));
681
709
  }, b = (h) => {
682
- if (r !== h.pointerId || !l || !p)
710
+ if (i !== h.pointerId || !l || !p)
683
711
  return;
684
712
  h.preventDefault();
685
- const d = h.clientX - l.x, w = h.clientY - l.y;
686
- !s && Math.hypot(d, w) < en || (s = !0, t.classList.add("pluno-pa-widget--dragging"), o({ x: p.x + d, y: p.y + w }));
687
- }, _ = (h) => {
688
- r === h.pointerId && (h.preventDefault(), h.stopPropagation(), s && a(), g());
713
+ const f = h.clientX - l.x, u = h.clientY - l.y;
714
+ !s && Math.hypot(f, u) < wn || (s = !0, e.classList.add("pluno-pa-widget--dragging"), o({ x: p.x + f, y: p.y + u }));
715
+ }, w = (h) => {
716
+ i === h.pointerId && (h.preventDefault(), h.stopPropagation(), s && a(), g());
689
717
  }, x = (h) => {
690
- r === h.pointerId && (h.preventDefault(), g());
691
- }, y = (h) => {
692
- if (t.classList.contains("pluno-pa-widget--open") || t.classList.contains("pluno-pa-widget--closing"))
718
+ i === h.pointerId && (h.preventDefault(), g());
719
+ }, C = (h) => {
720
+ if (e.classList.contains("pluno-pa-widget--open") || e.classList.contains("pluno-pa-widget--closing"))
693
721
  return;
694
- const d = h.shiftKey ? nn : tn, w = n();
722
+ const f = h.shiftKey ? xn : _n, u = n();
695
723
  let m = null;
696
- h.key === "ArrowUp" ? m = { x: w.x, y: w.y - d } : h.key === "ArrowDown" ? m = { x: w.x, y: w.y + d } : h.key === "ArrowLeft" ? m = { x: w.x - d, y: w.y } : h.key === "ArrowRight" && (m = { x: w.x + d, y: w.y }), m && (h.preventDefault(), h.stopPropagation(), o(m), a());
724
+ h.key === "ArrowUp" ? m = { x: u.x, y: u.y - f } : h.key === "ArrowDown" ? m = { x: u.x, y: u.y + f } : h.key === "ArrowLeft" ? m = { x: u.x - f, y: u.y } : h.key === "ArrowRight" && (m = { x: u.x + f, y: u.y }), m && (h.preventDefault(), h.stopPropagation(), o(m), a());
697
725
  };
698
- return e.addEventListener("pointerdown", c), e.addEventListener("pointermove", b), e.addEventListener("pointerup", _), e.addEventListener("pointercancel", x), e.addEventListener("keydown", y), () => {
699
- e.removeEventListener("pointerdown", c), e.removeEventListener("pointermove", b), e.removeEventListener("pointerup", _), e.removeEventListener("pointercancel", x), e.removeEventListener("keydown", y);
726
+ return t.addEventListener("pointerdown", c), t.addEventListener("pointermove", b), t.addEventListener("pointerup", w), t.addEventListener("pointercancel", x), t.addEventListener("keydown", C), () => {
727
+ t.removeEventListener("pointerdown", c), t.removeEventListener("pointermove", b), t.removeEventListener("pointerup", w), t.removeEventListener("pointercancel", x), t.removeEventListener("keydown", C);
700
728
  };
701
729
  }
702
- function $e(t, e = !0) {
703
- const n = V(), o = t.getBoundingClientRect(), a = !t.classList.contains("pluno-pa-widget--open") && !t.classList.contains("pluno-pa-widget--closing");
730
+ function Xe(e, t = !0) {
731
+ const n = Y(), o = e.getBoundingClientRect(), a = !e.classList.contains("pluno-pa-widget--open") && !e.classList.contains("pluno-pa-widget--closing");
704
732
  return {
705
- width: e && a && o.width > 0 ? o.width : Math.min(rt, n.width - 36),
706
- height: e && a && o.height > 0 ? o.height : t.classList.contains("pluno-pa-widget--scribble") ? Kt : it
733
+ width: t && a && o.width > 0 ? o.width : Math.min(ft, n.width - 36),
734
+ height: t && a && o.height > 0 ? o.height : e.classList.contains("pluno-pa-widget--scribble") ? pn : bt
707
735
  };
708
736
  }
709
- function sn() {
710
- const t = V();
737
+ function Sn() {
738
+ const e = Y();
711
739
  return {
712
- width: Math.min(Yt, t.width - 28),
713
- height: Math.min(Xt, t.height - 28)
740
+ width: Math.min(
741
+ K(e.width * cn, sn, dn),
742
+ e.width - 28
743
+ ),
744
+ height: Math.min(
745
+ K(e.height * hn, un, gn),
746
+ e.height - 28
747
+ )
714
748
  };
715
749
  }
716
- function dn(t, e, n) {
717
- const o = Number.parseFloat(t.style.left), a = Number.parseFloat(t.style.top);
750
+ function Ln(e, t, n) {
751
+ const o = Number.parseFloat(e.style.left), a = Number.parseFloat(e.style.top);
718
752
  if (Number.isFinite(o) && Number.isFinite(a))
719
753
  return { x: o, y: a };
720
- const r = t.getBoundingClientRect();
721
- if (r.width > 0 || r.height > 0)
722
- return { x: r.left, y: r.top };
723
- const l = V();
754
+ const i = e.getBoundingClientRect();
755
+ if (i.width > 0 || i.height > 0)
756
+ return { x: i.left, y: i.top };
757
+ const l = Y();
724
758
  return {
725
- x: e === "bottom-left" ? 26 : l.width - 26 - n.width,
759
+ x: t === "bottom-left" ? 26 : l.width - 26 - n.width,
726
760
  y: l.height - 24 - n.height
727
761
  };
728
762
  }
729
- function Ue(t, e, n) {
730
- const o = V(), a = N + cn(t);
763
+ function Ze(e, t, n) {
764
+ const o = Y(), a = D + Pn(e);
731
765
  return {
732
- x: le(e.x, N, Math.max(N, o.width - n.width - N)),
733
- y: le(e.y, a, Math.max(a, o.height - n.height - N))
766
+ x: K(t.x, D, Math.max(D, o.width - n.width - D)),
767
+ y: K(t.y, a, Math.max(a, o.height - n.height - D))
734
768
  };
735
769
  }
736
- function cn(t) {
737
- return t.classList.contains("pluno-pa-widget--scribble") ? Qt : Jt;
770
+ function Pn(e) {
771
+ return e.classList.contains("pluno-pa-widget--scribble") ? bn : fn;
738
772
  }
739
- function We(t) {
740
- const e = V(), n = sn();
773
+ function Je(e) {
774
+ const t = Y(), n = Sn();
741
775
  return {
742
- x: le(t.x, N, Math.max(N, e.width - n.width - N)),
743
- y: le(
744
- t.y,
745
- Be,
746
- Math.max(Be, e.height - n.height - N)
776
+ x: K(e.x, D, Math.max(D, t.width - n.width - D)),
777
+ y: K(
778
+ e.y,
779
+ je,
780
+ Math.max(je, t.height - n.height - D)
747
781
  )
748
782
  };
749
783
  }
750
- function ne(t, e) {
751
- if (t.classList.toggle("pluno-pa-widget--custom-position", e !== null), !e) {
752
- t.style.removeProperty("left"), t.style.removeProperty("top"), t.style.removeProperty("right"), t.style.removeProperty("bottom");
784
+ function re(e, t) {
785
+ if (e.classList.toggle("pluno-pa-widget--custom-position", t !== null), !t) {
786
+ e.style.removeProperty("left"), e.style.removeProperty("top"), e.style.removeProperty("right"), e.style.removeProperty("bottom");
753
787
  return;
754
788
  }
755
- t.style.left = `${e.x}px`, t.style.top = `${e.y}px`, t.style.right = "auto", t.style.bottom = "auto";
789
+ e.style.left = `${t.x}px`, e.style.top = `${t.y}px`, e.style.right = "auto", e.style.bottom = "auto";
756
790
  }
757
- function un(t, e) {
758
- t.style.setProperty("--pluno-pa-panel-offset-x", `${e.x}px`), t.style.setProperty("--pluno-pa-panel-offset-y", `${e.y}px`);
791
+ function An(e, t) {
792
+ e.style.setProperty("--pluno-pa-panel-offset-x", `${t.x}px`), e.style.setProperty("--pluno-pa-panel-offset-y", `${t.y}px`);
759
793
  }
760
- function He(t) {
761
- t.style.removeProperty("--pluno-pa-panel-offset-x"), t.style.removeProperty("--pluno-pa-panel-offset-y");
794
+ function Qe(e) {
795
+ e.style.removeProperty("--pluno-pa-panel-offset-x"), e.style.removeProperty("--pluno-pa-panel-offset-y");
762
796
  }
763
- function V() {
797
+ function Y() {
764
798
  return {
765
- width: window.innerWidth || document.documentElement.clientWidth || rt + N * 2,
766
- height: window.innerHeight || document.documentElement.clientHeight || it + N * 2
799
+ width: window.innerWidth || document.documentElement.clientWidth || ft + D * 2,
800
+ height: window.innerHeight || document.documentElement.clientHeight || bt + D * 2
767
801
  };
768
802
  }
769
- function me(t) {
770
- const e = t.getBoundingClientRect();
803
+ function _e(e) {
804
+ const t = e.getBoundingClientRect();
771
805
  return {
772
- x: Math.round(e.x),
773
- y: Math.round(e.y),
774
- width: Math.round(e.width),
775
- height: Math.round(e.height)
806
+ x: Math.round(t.x),
807
+ y: Math.round(t.y),
808
+ width: Math.round(t.width),
809
+ height: Math.round(t.height)
776
810
  };
777
811
  }
778
- function le(t, e, n) {
779
- return Math.min(Math.max(t, e), n);
812
+ function K(e, t, n) {
813
+ return Math.min(Math.max(e, t), n);
780
814
  }
781
- function z(t, e, n) {
815
+ function U(e, t, n) {
782
816
  if (typeof window > "u")
783
817
  return;
784
818
  const o = window, a = {
785
819
  at: (/* @__PURE__ */ new Date()).toISOString(),
786
- source: t,
787
- message: e,
820
+ source: e,
821
+ message: t,
788
822
  details: n
789
- }, r = o.__plunoProductAgentDiagnostics__ ?? [];
790
- r.push(a), r.length > 120 && r.splice(0, r.length - 120), o.__plunoProductAgentDiagnostics__ = r, o.__PLUNO_PRODUCT_AGENT_DIAGNOSTICS__ = () => [...r], window.dispatchEvent(new CustomEvent(Ht, { detail: a }));
823
+ }, i = o.__plunoProductAgentDiagnostics__ ?? [];
824
+ 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(on, { detail: a }));
791
825
  }
792
- function gn(t, e) {
793
- z("web-sdk.widget.position", t, e);
826
+ function Nn(e, t) {
827
+ U("web-sdk.widget.position", e, t);
794
828
  }
795
- function fe(t, e, n) {
796
- const o = e.value.trim();
797
- return !o && n.length === 0 ? n : (e.value = "", e.style.height = "22px", e.style.overflowY = "hidden", t.sendMessage(o, { attachments: n.length > 0 ? n : void 0 }), e.dispatchEvent(new Event("input", { bubbles: !0 })), []);
829
+ function xe(e, t, n) {
830
+ const o = t.value.trim();
831
+ 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 })), []);
798
832
  }
799
- function Z(t) {
800
- t.style.height = "0px";
801
- const e = Math.max(22, Math.min(t.scrollHeight, 140));
802
- t.style.height = `${e}px`, t.style.overflowY = t.scrollHeight > 140 ? "auto" : "hidden";
833
+ function ee(e) {
834
+ e.style.height = "0px";
835
+ const t = Math.max(22, Math.min(e.scrollHeight, 140));
836
+ e.style.height = `${t}px`, e.style.overflowY = e.scrollHeight > 140 ? "auto" : "hidden";
803
837
  }
804
- function hn(t, e, n, o) {
805
- t.appendChild(_n()), t.appendChild(mn(e, n, o)), t.appendChild(st("pluno-pa-widget__close", "Close", xn(16), !0)), t.appendChild(fn(n));
838
+ function Dn(e, t, n, o) {
839
+ e.appendChild(On()), e.appendChild(Tn(t, n, o)), e.appendChild(xt("pluno-pa-widget__close", "Close", Bn(16), !0)), e.appendChild(In(n));
806
840
  }
807
- function mn(t, e, n) {
841
+ function Tn(e, t, n) {
808
842
  const o = document.createElement("form");
809
843
  if (o.className = "pluno-pa-widget__launcher", n) {
810
- const r = document.createElement("button");
811
- r.type = "button", r.className = "pluno-pa-widget__launcher-drag-handle", r.setAttribute("aria-label", "Move Pluno launcher"), r.title = "Move Pluno launcher", o.appendChild(r);
844
+ const i = document.createElement("button");
845
+ 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);
812
846
  }
813
- o.appendChild(pt("pluno-pa-widget__character--launcher", e));
847
+ o.appendChild(_t("pluno-pa-widget__character--launcher", t));
814
848
  const a = document.createElement("input");
815
- return a.className = "pluno-pa-widget__launcher-input", a.type = "text", a.placeholder = t, a.setAttribute("aria-label", t), o.appendChild(a), o;
849
+ return a.className = "pluno-pa-widget__launcher-input", a.type = "text", a.placeholder = e, a.setAttribute("aria-label", e), o.appendChild(a), o;
816
850
  }
817
- function fn(t) {
818
- const e = document.createElement("section");
819
- e.className = "pluno-pa-widget__panel", e.hidden = !0;
851
+ function In(e) {
852
+ const t = document.createElement("section");
853
+ t.className = "pluno-pa-widget__panel", t.hidden = !0;
820
854
  const n = document.createElement("div");
821
855
  n.className = "pluno-pa-widget__timeline-wrap";
822
856
  const o = document.createElement("main");
823
- return o.className = "pluno-pa-widget__timeline", o.appendChild(bn(t)), n.appendChild(o), n.appendChild(st("pluno-pa-widget__new-chat", "New chat", vn(), !0)), e.appendChild(n), e.appendChild(wn()), e;
857
+ return o.className = "pluno-pa-widget__timeline", o.appendChild(Mn(e)), n.appendChild(o), n.appendChild(xt("pluno-pa-widget__new-chat", "New chat", Fn(), !0)), t.appendChild(n), t.appendChild(Rn()), t;
824
858
  }
825
- function wn() {
826
- const t = document.createElement("form");
827
- t.className = "pluno-pa-widget__composer";
828
- const e = document.createElement("div");
829
- e.className = "pluno-pa-widget__attachment-error", e.hidden = !0, t.appendChild(e);
859
+ function Rn() {
860
+ const e = document.createElement("form");
861
+ e.className = "pluno-pa-widget__composer";
862
+ const t = document.createElement("div");
863
+ t.className = "pluno-pa-widget__billing-status", t.hidden = !0, e.appendChild(t);
830
864
  const n = document.createElement("div");
831
- n.className = "pluno-pa-widget__attachments", n.hidden = !0, t.appendChild(n);
865
+ n.className = "pluno-pa-widget__attachment-error", n.hidden = !0, e.appendChild(n);
832
866
  const o = document.createElement("div");
833
- o.className = "pluno-pa-widget__composer-inner";
834
- const a = document.createElement("textarea");
835
- a.className = "pluno-pa-widget__input", a.rows = 1, a.placeholder = "Ask for anything...", o.appendChild(a);
836
- const r = document.createElement("button");
837
- r.type = "button", r.className = "pluno-pa-widget__send", r.setAttribute("aria-label", "Send"), r.appendChild(dt()), o.appendChild(r), t.appendChild(o);
838
- const l = document.createElement("div");
839
- l.className = "pluno-pa-widget__composer-meta";
840
- const p = document.createElement("a");
841
- p.className = "pluno-pa-widget__powered-by", p.href = "https://pluno.ai", p.target = "_blank", p.rel = "noopener noreferrer", p.textContent = "Powered by Pluno.ai.", l.appendChild(p);
842
- const s = document.createElement("span");
843
- return s.className = "pluno-pa-widget__ai-disclaimer", s.textContent = "AI can make mistakes. Verify outputs.", l.appendChild(s), t.appendChild(l), t;
844
- }
845
- function bn(t) {
846
- const e = document.createElement("div");
847
- return e.className = "pluno-pa-widget__empty-state", e.appendChild(pt("pluno-pa-widget__character--empty", t)), e.appendChild(lt()), e;
867
+ o.className = "pluno-pa-widget__attachments", o.hidden = !0, e.appendChild(o);
868
+ const a = document.createElement("div");
869
+ a.className = "pluno-pa-widget__composer-inner";
870
+ const i = document.createElement("textarea");
871
+ i.className = "pluno-pa-widget__input", i.rows = 1, i.placeholder = "Ask for anything...", a.appendChild(i);
872
+ const l = document.createElement("button");
873
+ l.type = "button", l.className = "pluno-pa-widget__send", l.setAttribute("aria-label", "Send"), l.appendChild(vt()), a.appendChild(l), e.appendChild(a);
874
+ const p = document.createElement("div");
875
+ p.className = "pluno-pa-widget__composer-meta";
876
+ const s = document.createElement("a");
877
+ 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);
878
+ const g = document.createElement("span");
879
+ return g.className = "pluno-pa-widget__ai-disclaimer", g.textContent = "AI can make mistakes. Verify outputs.", p.appendChild(g), e.appendChild(p), e;
848
880
  }
849
- function lt() {
881
+ function Mn(e) {
850
882
  const t = document.createElement("div");
851
- return t.className = "pluno-pa-widget__empty", t.appendChild(document.createTextNode("Hey there, I'm Pluno 👋")), t.appendChild(document.createElement("br")), t.appendChild(document.createTextNode("What do you want to do today?")), t;
883
+ return t.className = "pluno-pa-widget__empty-state", t.appendChild(_t("pluno-pa-widget__character--empty", e)), t.appendChild(wt()), t;
884
+ }
885
+ function wt() {
886
+ const e = document.createElement("div");
887
+ 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;
852
888
  }
853
- function pt(t, e) {
889
+ function _t(e, t) {
854
890
  const n = document.createElement("img");
855
- return n.className = `pluno-pa-widget__character ${t}`, n.src = e, n.alt = "", n.setAttribute("aria-hidden", "true"), n;
891
+ return n.className = `pluno-pa-widget__character ${e}`, n.src = t, n.alt = "", n.setAttribute("aria-hidden", "true"), n;
856
892
  }
857
- function st(t, e, n, o) {
893
+ function xt(e, t, n, o) {
858
894
  const a = document.createElement("button");
859
- return a.type = "button", a.className = t, a.setAttribute("aria-label", e), a.title = e, a.hidden = o, a.appendChild(n), a;
895
+ return a.type = "button", a.className = e, a.setAttribute("aria-label", t), a.title = t, a.hidden = o, a.appendChild(n), a;
860
896
  }
861
- function _n() {
862
- const t = S("svg", {
897
+ function On() {
898
+ const e = S("svg", {
863
899
  class: "pluno-pa-widget__scribble-defs",
864
900
  "aria-hidden": "true",
865
901
  focusable: "false",
866
902
  width: "0",
867
903
  height: "0"
868
- }), e = S("defs");
869
- return e.appendChild(we("pluno-pa-scribble-wobble", "2", "12")), e.appendChild(we("pluno-pa-scribble-wobble-2", "5", "15")), e.appendChild(we("pluno-pa-scribble-wobble-3", "9", "19")), t.appendChild(e), t;
904
+ }), t = S("defs");
905
+ return t.appendChild(ve("pluno-pa-scribble-wobble", "2", "12")), t.appendChild(ve("pluno-pa-scribble-wobble-2", "5", "15")), t.appendChild(ve("pluno-pa-scribble-wobble-3", "9", "19")), e.appendChild(t), e;
870
906
  }
871
- function we(t, e, n) {
872
- const o = S("filter", { id: t, x: "-8%", y: "-8%", width: "116%", height: "116%" });
907
+ function ve(e, t, n) {
908
+ const o = S("filter", { id: e, x: "-8%", y: "-8%", width: "116%", height: "116%" });
873
909
  return o.appendChild(
874
910
  S("feTurbulence", {
875
911
  type: "fractalNoise",
876
912
  baseFrequency: "0.012 0.028",
877
913
  numOctaves: "3",
878
- seed: e,
914
+ seed: t,
879
915
  result: "stroke-noise"
880
916
  })
881
917
  ), o.appendChild(
@@ -905,280 +941,339 @@ function we(t, e, n) {
905
941
  })
906
942
  ), o;
907
943
  }
908
- function xn(t) {
909
- const e = j("0 0 24 24", t, t, "none", "currentColor", "2.25");
910
- return e.appendChild(S("path", { d: "m6 9 6 6 6-6" })), e;
944
+ function Bn(e) {
945
+ const t = X("0 0 24 24", e, e, "none", "currentColor", "2.25");
946
+ return t.appendChild(S("path", { d: "m6 9 6 6 6-6" })), t;
911
947
  }
912
- function vn() {
913
- const t = j("0 0 24 24", 17, 17, "none", "currentColor", "2.25");
914
- return t.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" })), t.appendChild(S("path", { d: "M18.4 2.6a2.1 2.1 0 0 1 3 3L12 15l-4 1 1-4Z" })), t;
948
+ function Fn() {
949
+ const e = X("0 0 24 24", 17, 17, "none", "currentColor", "2.25");
950
+ 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;
915
951
  }
916
- function dt() {
917
- const t = j("0 0 24 24", 14, 14, "none", "currentColor", "2.75");
918
- return t.appendChild(S("line", { x1: "12", y1: "19", x2: "12", y2: "5" })), t.appendChild(S("polyline", { points: "5 12 12 5 19 12" })), t;
952
+ function vt() {
953
+ const e = X("0 0 24 24", 14, 14, "none", "currentColor", "2.75");
954
+ 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;
919
955
  }
920
- function yn() {
921
- const t = j("0 0 24 24", 18, 18, "currentColor");
922
- return t.appendChild(S("rect", { x: "6", y: "6", width: "12", height: "12", rx: "2" })), t;
956
+ function zn() {
957
+ const e = X("0 0 24 24", 18, 18, "currentColor");
958
+ return e.appendChild(S("rect", { x: "6", y: "6", width: "12", height: "12", rx: "2" })), e;
923
959
  }
924
- function Cn() {
925
- const t = j("0 0 24 24", 12, 12, "none", "currentColor", "2.4");
926
- return t.appendChild(S("path", { d: "M18 6 6 18" })), t.appendChild(S("path", { d: "m6 6 12 12" })), t;
960
+ function Gn() {
961
+ const e = X("0 0 24 24", 12, 12, "none", "currentColor", "2.4");
962
+ return e.appendChild(S("path", { d: "M18 6 6 18" })), e.appendChild(S("path", { d: "m6 6 12 12" })), e;
927
963
  }
928
- function En() {
929
- const t = j("0 0 24 24", 13, 13, "none", "currentColor", "2.25");
930
- return t.appendChild(S("rect", { width: "14", height: "14", x: "8", y: "8", rx: "2", ry: "2" })), t.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" })), t;
964
+ function Un() {
965
+ const e = X("0 0 24 24", 13, 13, "none", "currentColor", "2.25");
966
+ 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;
931
967
  }
932
- function j(t, e, n, o, a, r) {
968
+ function X(e, t, n, o, a, i) {
933
969
  const l = {
934
- viewBox: t,
935
- width: String(e),
970
+ viewBox: e,
971
+ width: String(t),
936
972
  height: String(n),
937
973
  fill: o,
938
974
  "aria-hidden": "true"
939
975
  };
940
- return a && (l.stroke = a, l["stroke-linecap"] = "round", l["stroke-linejoin"] = "round"), r && (l["stroke-width"] = r), S("svg", l);
976
+ return a && (l.stroke = a, l["stroke-linecap"] = "round", l["stroke-linejoin"] = "round"), i && (l["stroke-width"] = i), S("svg", l);
941
977
  }
942
- function S(t, e = {}) {
943
- const n = document.createElementNS(Zt, t);
944
- for (const [o, a] of Object.entries(e))
978
+ function S(e, t = {}) {
979
+ const n = document.createElementNS(mn, e);
980
+ for (const [o, a] of Object.entries(t))
945
981
  n.setAttribute(o, a);
946
982
  return n;
947
983
  }
948
- function Ve(t) {
949
- for (const e of ["keydown", "keypress", "keyup"])
950
- t.addEventListener(e, (n) => {
984
+ function et(e) {
985
+ for (const t of ["keydown", "keypress", "keyup"])
986
+ e.addEventListener(t, (n) => {
951
987
  n.stopPropagation();
952
988
  });
953
989
  }
954
- function kn(t, e, n) {
955
- t.replaceChildren(), t.hidden = e.length === 0;
956
- for (const [o, a] of e.entries()) {
957
- const r = document.createElement("div");
958
- r.className = "pluno-pa-widget__attachment", r.appendChild(Sn(a));
990
+ function $n(e, t, n) {
991
+ e.replaceChildren(), e.hidden = t.length === 0;
992
+ for (const [o, a] of t.entries()) {
993
+ const i = document.createElement("div");
994
+ i.className = "pluno-pa-widget__attachment", i.appendChild(Wn(a));
959
995
  const l = document.createElement("span");
960
- l.textContent = a.name, r.appendChild(l);
996
+ l.textContent = a.name, i.appendChild(l);
961
997
  const p = document.createElement("button");
962
- p.type = "button", p.setAttribute("aria-label", `Remove ${a.name}`), p.appendChild(Cn()), p.addEventListener("click", () => n(o)), r.appendChild(p), t.appendChild(r);
998
+ p.type = "button", p.setAttribute("aria-label", `Remove ${a.name}`), p.appendChild(Gn()), p.addEventListener("click", () => n(o)), i.appendChild(p), e.appendChild(i);
963
999
  }
964
1000
  }
965
- function Sn(t) {
966
- if (ct(t)) {
1001
+ function Wn(e) {
1002
+ if (yt(e)) {
967
1003
  const n = document.createElement("img");
968
- return n.src = t.dataUrl, n.alt = "", n.setAttribute("aria-hidden", "true"), n;
1004
+ return n.src = e.dataUrl, n.alt = "", n.setAttribute("aria-hidden", "true"), n;
969
1005
  }
970
- const e = document.createElement("span");
971
- return e.className = "pluno-pa-widget__attachment-file", e.textContent = "PDF", e;
1006
+ const t = document.createElement("span");
1007
+ return t.className = "pluno-pa-widget__attachment-file", t.textContent = "PDF", t;
972
1008
  }
973
- function Ln(t) {
974
- if (ct(t)) {
1009
+ function Hn(e) {
1010
+ if (yt(e)) {
975
1011
  const a = document.createElement("img");
976
- return a.src = t.dataUrl, a.alt = t.name, a;
1012
+ return a.src = e.dataUrl, a.alt = e.name, a;
977
1013
  }
978
- const e = document.createElement("div");
979
- e.className = "pluno-pa-widget__message-attachment-file";
1014
+ const t = document.createElement("div");
1015
+ t.className = "pluno-pa-widget__message-attachment-file";
980
1016
  const n = document.createElement("span");
981
1017
  n.textContent = "PDF";
982
1018
  const o = document.createElement("strong");
983
- return o.textContent = t.name, e.append(n, o), e;
1019
+ return o.textContent = e.name, t.append(n, o), t;
984
1020
  }
985
- function ct(t) {
986
- return t.mimeType.startsWith("image/");
1021
+ function yt(e) {
1022
+ return e.mimeType.startsWith("image/");
987
1023
  }
988
- function Pn(t) {
989
- return t === "application/pdf" ? "document.pdf" : "image";
1024
+ function Vn(e) {
1025
+ return e === "application/pdf" ? "document.pdf" : "image";
990
1026
  }
991
- async function An(t) {
992
- if (!t)
1027
+ async function qn(e) {
1028
+ if (!e)
993
1029
  return [];
994
- const e = Array.from(t);
995
- if (e.length > ie)
996
- throw new Error(`Attach up to ${ie} files per message.`);
1030
+ const t = Array.from(e);
1031
+ if (t.length > de)
1032
+ throw new Error(`Attach up to ${de} files per message.`);
997
1033
  return Promise.all(
998
- e.map(async (n) => {
999
- const o = Nn(n);
1034
+ t.map(async (n) => {
1035
+ const o = jn(n);
1000
1036
  if (!o)
1001
1037
  throw new Error("Pluno supports PNG, JPEG, WebP, non-animated GIF, and PDF files.");
1002
- if (n.size > Vt)
1038
+ if (n.size > an)
1003
1039
  throw new Error("Each Pluno attachment can be up to 10 MB.");
1004
1040
  if (o === "image/gif") {
1005
- const a = new Uint8Array(await Mn(n));
1006
- if (Tn(a))
1041
+ const a = new Uint8Array(await no(n));
1042
+ if (Yn(a))
1007
1043
  throw new Error("Pluno supports non-animated GIF images.");
1008
1044
  }
1009
1045
  return {
1010
- name: n.name || Pn(o),
1046
+ name: n.name || Vn(o),
1011
1047
  mimeType: o,
1012
1048
  sizeBytes: n.size,
1013
- dataUrl: Dn(await Rn(n), o)
1049
+ dataUrl: Kn(await oo(n), o)
1014
1050
  };
1015
1051
  })
1016
1052
  );
1017
1053
  }
1018
- function Nn(t) {
1019
- if (jt.has(t.type))
1020
- return t.type;
1021
- const e = t.name.toLowerCase();
1022
- return e.endsWith(".png") ? "image/png" : e.endsWith(".jpg") || e.endsWith(".jpeg") ? "image/jpeg" : e.endsWith(".webp") ? "image/webp" : e.endsWith(".gif") ? "image/gif" : e.endsWith(".pdf") ? "application/pdf" : null;
1054
+ function jn(e) {
1055
+ if (rn.has(e.type))
1056
+ return e.type;
1057
+ const t = e.name.toLowerCase();
1058
+ 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;
1023
1059
  }
1024
- function Dn(t, e) {
1025
- const n = `data:${e};base64,`;
1026
- return t.startsWith(n) ? t : t.replace(/^data:[^;]*;base64,/, n);
1060
+ function Kn(e, t) {
1061
+ const n = `data:${t};base64,`;
1062
+ return e.startsWith(n) ? e : e.replace(/^data:[^;]*;base64,/, n);
1027
1063
  }
1028
- function Tn(t) {
1029
- if (t.length < 14 || !In(t))
1064
+ function Yn(e) {
1065
+ if (e.length < 14 || !Xn(e))
1030
1066
  return !1;
1031
- const e = t[10];
1067
+ const t = e[10];
1032
1068
  let n = 13;
1033
- e & 128 && (n += 3 * 2 ** ((e & 7) + 1));
1069
+ t & 128 && (n += 3 * 2 ** ((t & 7) + 1));
1034
1070
  let o = 0;
1035
- for (; n < t.length; ) {
1036
- const a = t[n];
1071
+ for (; n < e.length; ) {
1072
+ const a = e[n];
1037
1073
  if (n += 1, a === 59)
1038
1074
  return !1;
1039
1075
  if (a === 33) {
1040
- n += 1, n = je(t, n);
1076
+ n += 1, n = tt(e, n);
1041
1077
  continue;
1042
1078
  }
1043
1079
  if (a !== 44)
1044
1080
  return !1;
1045
1081
  if (o += 1, o > 1)
1046
1082
  return !0;
1047
- if (n + 9 >= t.length)
1083
+ if (n + 9 >= e.length)
1048
1084
  return !1;
1049
- const r = t[n + 8];
1050
- if (n += 9, r & 128 && (n += 3 * 2 ** ((r & 7) + 1)), n >= t.length)
1085
+ const i = e[n + 8];
1086
+ if (n += 9, i & 128 && (n += 3 * 2 ** ((i & 7) + 1)), n >= e.length)
1051
1087
  return !1;
1052
- n += 1, n = je(t, n);
1088
+ n += 1, n = tt(e, n);
1053
1089
  }
1054
1090
  return !1;
1055
1091
  }
1056
- function In(t) {
1057
- return t[0] === 71 && t[1] === 73 && t[2] === 70 && t[3] === 56 && (t[4] === 55 || t[4] === 57) && t[5] === 97;
1092
+ function Xn(e) {
1093
+ return e[0] === 71 && e[1] === 73 && e[2] === 70 && e[3] === 56 && (e[4] === 55 || e[4] === 57) && e[5] === 97;
1094
+ }
1095
+ function tt(e, t) {
1096
+ for (; t < e.length; ) {
1097
+ const n = e[t];
1098
+ if (t += 1, n === 0)
1099
+ return t;
1100
+ t += n;
1101
+ }
1102
+ return t;
1103
+ }
1104
+ function le(e) {
1105
+ return !!(e && Array.from(e.types).includes("Files"));
1058
1106
  }
1059
- function je(t, e) {
1060
- for (; e < t.length; ) {
1061
- const n = t[e];
1062
- if (e += 1, n === 0)
1063
- return e;
1064
- e += n;
1107
+ function ye(e, t, n = null) {
1108
+ if (!e || !Se(t, n)) {
1109
+ e && (e.hidden = !0, e.replaceChildren());
1110
+ return;
1065
1111
  }
1066
- return e;
1112
+ e.hidden = !1, e.replaceChildren(), e.className = "pluno-pa-widget__billing-status", F(t) || Ae(n) ? e.appendChild(Zn(t, n)) : Ct(t) && e.appendChild(Jn(t));
1067
1113
  }
1068
- function oe(t) {
1069
- return !!(t && Array.from(t.types).includes("Files"));
1114
+ function Zn(e, t) {
1115
+ const n = document.createElement("div");
1116
+ n.className = "pluno-pa-widget__billing-action-card";
1117
+ const o = e.limitExceeded || t === "limit_exceeded", a = document.createElement("strong");
1118
+ a.textContent = o ? "Credits used up" : "Billing needs attention", n.appendChild(a);
1119
+ const i = document.createElement("span");
1120
+ 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(Et(e, "Upgrade plan", "pluno-pa-widget__billing-action-card-actions")), n;
1070
1121
  }
1071
- function Mn(t) {
1072
- return new Promise((e, n) => {
1122
+ function Jn(e) {
1123
+ const t = document.createElement("div");
1124
+ t.className = "pluno-pa-widget__billing-action-card pluno-pa-widget__billing-action-card--low";
1125
+ const n = document.createElement("strong");
1126
+ n.textContent = "Credits running low", t.appendChild(n);
1127
+ const o = document.createElement("span");
1128
+ return o.textContent = eo(e) ?? "Credits are running low for this period.", t.appendChild(o), t.appendChild(Et(e, "Upgrade", "pluno-pa-widget__billing-action-card-actions")), t;
1129
+ }
1130
+ function Se(e, t) {
1131
+ return e !== null && (F(e) || Ct(e) || Ae(t));
1132
+ }
1133
+ function nt(e, t, n) {
1134
+ return Se(t, n) || Qn(t) ? !0 : !Se(e, n);
1135
+ }
1136
+ function Qn(e) {
1137
+ return e != null && (e.creditsUsed !== null || e.creditLimit !== null || e.creditsRemaining !== null || F(e));
1138
+ }
1139
+ function F(e) {
1140
+ return e?.limitExceeded === !0 || !!e?.paymentIssue;
1141
+ }
1142
+ function Ae(e) {
1143
+ return e === "limit_exceeded" || e === "subscription_required" || e === "subscription_inactive" || e === "payment_issue" || e === "subscription_invalid" || e === "payment_required";
1144
+ }
1145
+ function Ct(e) {
1146
+ return !F(e) && e.creditLimit !== null && e.creditLimit > 0 && e.creditsRemaining !== null && e.creditsRemaining > 0 && e.creditsRemaining / e.creditLimit <= 0.2;
1147
+ }
1148
+ function eo(e) {
1149
+ return e.creditsRemaining === null ? null : `${to(e.creditsRemaining)} credits left`;
1150
+ }
1151
+ function to(e) {
1152
+ return new Intl.NumberFormat("en-US", {
1153
+ maximumFractionDigits: 0
1154
+ }).format(Math.ceil(e));
1155
+ }
1156
+ function Et(e, t, n) {
1157
+ const o = document.createElement("div");
1158
+ return o.className = n, o.appendChild(ot(t, e.pricingUrl)), o.appendChild(ot("Earn credits", e.earnCreditsUrl)), o;
1159
+ }
1160
+ function ot(e, t) {
1161
+ const n = document.createElement("button");
1162
+ return n.type = "button", n.textContent = e, n.disabled = t.trim().length === 0, n.addEventListener("click", () => {
1163
+ t.trim().length !== 0 && window.open(t, "_blank", "noopener,noreferrer");
1164
+ }), n;
1165
+ }
1166
+ function no(e) {
1167
+ return new Promise((t, n) => {
1073
1168
  const o = new FileReader();
1074
1169
  o.addEventListener("load", () => {
1075
1170
  if (o.result instanceof ArrayBuffer) {
1076
- e(o.result);
1171
+ t(o.result);
1077
1172
  return;
1078
1173
  }
1079
1174
  n(new Error("Failed to read file"));
1080
1175
  }), o.addEventListener("error", () => {
1081
1176
  n(o.error ?? new Error("Failed to read file"));
1082
- }), o.readAsArrayBuffer(t);
1177
+ }), o.readAsArrayBuffer(e);
1083
1178
  });
1084
1179
  }
1085
- function Rn(t) {
1086
- return new Promise((e, n) => {
1180
+ function oo(e) {
1181
+ return new Promise((t, n) => {
1087
1182
  const o = new FileReader();
1088
1183
  o.addEventListener("load", () => {
1089
1184
  if (typeof o.result == "string") {
1090
- e(o.result);
1185
+ t(o.result);
1091
1186
  return;
1092
1187
  }
1093
1188
  n(new Error("Failed to read file"));
1094
1189
  }), o.addEventListener("error", () => {
1095
1190
  n(o.error ?? new Error("Failed to read file"));
1096
- }), o.readAsDataURL(t);
1191
+ }), o.readAsDataURL(e);
1097
1192
  });
1098
1193
  }
1099
- function On(t, e, n, o, a, r, l, p, s) {
1100
- const g = [...o.messages], c = g.filter((m) => !Vn(m));
1101
- t.replaceChildren(), gt(e, o.isThinking);
1194
+ function ao(e, t, n, o, a, i, l, p, s) {
1195
+ const g = [...o.messages], c = g.filter((m) => !ho(m));
1196
+ e.replaceChildren(), St(t, o.isThinking);
1102
1197
  const b = c.length > 0 || !!o.assistantDraft || o.isThinking;
1103
1198
  if (n.hidden = !b, c.length === 0 && !o.assistantDraft && !o.lastError && !o.isThinking) {
1104
1199
  const m = document.createElement("div");
1105
1200
  m.className = "pluno-pa-widget__empty-state pluno-pa-widget__empty-state--starter";
1106
- const f = document.createElement("img");
1107
- f.className = "pluno-pa-widget__character pluno-pa-widget__character--empty", f.src = l(), f.alt = "", f.setAttribute("aria-hidden", "true"), m.appendChild(f), m.appendChild(lt());
1108
- const v = document.createElement("div");
1109
- v.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 && v.setAttribute("aria-hidden", "true");
1110
- for (const k of o.starterPrompts) {
1111
- const E = document.createElement("button");
1112
- E.type = "button", E.className = "pluno-pa-widget__starter-prompt", E.textContent = `"${k}"`, E.addEventListener("click", () => {
1113
- p(k);
1114
- }), v.appendChild(E);
1115
- }
1116
- m.appendChild(v), t.appendChild(m);
1201
+ const _ = document.createElement("img");
1202
+ _.className = "pluno-pa-widget__character pluno-pa-widget__character--empty", _.src = l(), _.alt = "", _.setAttribute("aria-hidden", "true"), m.appendChild(_), m.appendChild(wt());
1203
+ const k = document.createElement("div");
1204
+ 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");
1205
+ for (const v of o.starterPrompts) {
1206
+ const y = document.createElement("button");
1207
+ y.type = "button", y.className = "pluno-pa-widget__starter-prompt", y.textContent = `"${v}"`, y.addEventListener("click", () => {
1208
+ p(v);
1209
+ }), k.appendChild(y);
1210
+ }
1211
+ m.appendChild(k), e.appendChild(m);
1117
1212
  return;
1118
1213
  }
1119
- let _ = null, x = null, y = [];
1214
+ let w = null, x = null, C = [];
1120
1215
  const h = () => {
1121
- if (y.length === 0)
1216
+ if (C.length === 0)
1122
1217
  return !1;
1123
- const m = jn(y, a, r, l());
1124
- return t.appendChild(m), _ = null, x = m, y = [], !0;
1218
+ const m = mo(C, a, i, l());
1219
+ return e.appendChild(m), w = null, x = m, C = [], !0;
1125
1220
  };
1126
1221
  for (let m = 0; m < c.length; m += 1) {
1127
- const f = c[m];
1128
- if (f.role === "tool") {
1129
- y.push(f);
1222
+ const _ = c[m];
1223
+ if (_.role === "tool") {
1224
+ C.push(_);
1130
1225
  continue;
1131
1226
  }
1132
- if (f.role === "system")
1227
+ if (_.role === "system")
1133
1228
  continue;
1134
- const v = h(), k = Ke(f.content);
1135
- if (f.role === "assistant" && !v) {
1136
- const C = ve(l());
1137
- t.appendChild(C), _ = null, x = C;
1138
- }
1139
- const E = document.createElement("div");
1140
- E.className = `pluno-pa-widget__message pluno-pa-widget__message--${f.role}`, f.role === "assistant" ? Ye(E, k) : E.textContent = k, f.role === "user" && f.attachments?.length && E.appendChild(Bn(f.attachments));
1141
- const q = document.createElement("div");
1142
- q.className = "pluno-pa-widget__message-actions", q.appendChild(qe(k)), E.appendChild(q), t.appendChild(E), _ = E, x = null;
1229
+ const k = h(), v = it(_.content);
1230
+ if (_.role === "assistant" && !k) {
1231
+ const ne = Le(l());
1232
+ e.appendChild(ne), w = null, x = ne;
1233
+ }
1234
+ const y = document.createElement("div");
1235
+ y.className = `pluno-pa-widget__message pluno-pa-widget__message--${_.role}`, _.role === "assistant" ? rt(y, v) : y.textContent = v, _.role === "user" && _.attachments?.length && y.appendChild(ro(_.attachments));
1236
+ const T = document.createElement("div");
1237
+ T.className = "pluno-pa-widget__message-actions", T.appendChild(at(v)), y.appendChild(T), e.appendChild(y), w = y, x = null;
1143
1238
  }
1144
- const d = h();
1239
+ const f = h();
1145
1240
  if (o.assistantDraft) {
1146
- if (!d) {
1147
- const k = ve(l());
1148
- t.appendChild(k), _ = null, x = k;
1149
- }
1150
- const m = Ke(o.assistantDraft), f = document.createElement("div");
1151
- f.className = "pluno-pa-widget__message pluno-pa-widget__message--assistant", Ye(f, m);
1152
- const v = document.createElement("div");
1153
- v.className = "pluno-pa-widget__message-actions", v.appendChild(qe(m)), f.appendChild(v), t.appendChild(f), _ = f, x = null;
1241
+ if (!f) {
1242
+ const v = Le(l());
1243
+ e.appendChild(v), w = null, x = v;
1244
+ }
1245
+ const m = it(o.assistantDraft), _ = document.createElement("div");
1246
+ _.className = "pluno-pa-widget__message pluno-pa-widget__message--assistant", rt(_, m);
1247
+ const k = document.createElement("div");
1248
+ k.className = "pluno-pa-widget__message-actions", k.appendChild(at(m)), _.appendChild(k), e.appendChild(_), w = _, x = null;
1154
1249
  }
1155
1250
  if (o.isThinking && !o.assistantDraft)
1156
- if (d) {
1157
- const m = ut();
1158
- t.appendChild(m), _ = null, x = m;
1251
+ if (f) {
1252
+ const m = kt();
1253
+ e.appendChild(m), w = null, x = m;
1159
1254
  } else {
1160
- const m = qn(l());
1161
- t.appendChild(m), _ = null, x = m;
1255
+ const m = fo(l());
1256
+ e.appendChild(m), w = null, x = m;
1162
1257
  }
1163
1258
  if (o.lastError) {
1164
1259
  const m = document.createElement("div");
1165
- m.className = "pluno-pa-widget__error", m.textContent = o.lastError, t.appendChild(m), _ = m, x = null;
1260
+ m.className = "pluno-pa-widget__error", m.textContent = o.lastError, e.appendChild(m), w = m, x = null;
1166
1261
  }
1167
- const w = s && !o.isThinking ? Mt(g) : null;
1168
- if (s && w && !s.dismissedCandidateIds.has(w.id)) {
1169
- const m = zn(w, {
1170
- isDrafting: s.draftingCandidateId === w.id,
1262
+ const u = s && !o.isThinking ? jt(g) : null;
1263
+ if (s && u && !s.dismissedCandidateIds.has(u.id)) {
1264
+ const m = lo(u, {
1265
+ isDrafting: s.draftingCandidateId === u.id,
1171
1266
  error: s.error,
1172
1267
  onDraft: s.onDraft,
1173
1268
  onDismiss: s.onDismiss,
1174
1269
  onDisable: s.onDisable
1175
1270
  });
1176
- t.appendChild(m), s.onSeen(w), _ = null, x = m;
1271
+ e.appendChild(m), s.onSeen(u), w = null, x = m;
1177
1272
  }
1178
- _?.classList.add("pluno-pa-widget__message--bottom-reserve"), x?.classList.add("pluno-pa-widget__bottom-reserve-compact"), t.scrollTop = t.scrollHeight;
1273
+ w?.classList.add("pluno-pa-widget__message--bottom-reserve"), x?.classList.add("pluno-pa-widget__bottom-reserve-compact"), e.scrollTop = e.scrollHeight;
1179
1274
  }
1180
- function Fn(t, e, n, o, a, r) {
1181
- t.replaceChildren(), gt(e, !1), e.disabled = !0, n.hidden = !0;
1275
+ function io(e, t, n, o, a, i) {
1276
+ e.replaceChildren(), St(t, !1), t.disabled = !0, n.hidden = !0;
1182
1277
  const l = document.createElement("div");
1183
1278
  l.className = "pluno-pa-widget__empty-state pluno-pa-widget__empty-state--starter";
1184
1279
  const p = document.createElement("img");
@@ -1186,34 +1281,34 @@ function Fn(t, e, n, o, a, r) {
1186
1281
  const s = document.createElement("div");
1187
1282
  s.className = "pluno-pa-widget__empty", s.textContent = "Log in to use Pluno on this page.", l.appendChild(s);
1188
1283
  const g = document.createElement("button");
1189
- g.type = "button", g.className = "pluno-pa-widget__login", g.textContent = a, g.addEventListener("click", () => r?.()), l.appendChild(g), t.appendChild(l);
1284
+ g.type = "button", g.className = "pluno-pa-widget__login", g.textContent = a, g.addEventListener("click", () => i?.()), l.appendChild(g), e.appendChild(l);
1190
1285
  }
1191
- function Bn(t) {
1192
- const e = document.createElement("div");
1193
- e.className = "pluno-pa-widget__message-attachments";
1194
- for (const n of t)
1195
- e.appendChild(Ln(n));
1196
- return e;
1197
- }
1198
- function qe(t) {
1199
- const e = document.createElement("button");
1200
- return e.type = "button", e.className = "pluno-pa-widget__message-copy", e.setAttribute("aria-label", "Copy message"), e.title = "Copy message", e.appendChild(En()), e.addEventListener("click", (n) => {
1201
- n.preventDefault(), n.stopPropagation(), navigator.clipboard.writeText(t);
1202
- }), e;
1203
- }
1204
- function zn(t, e) {
1286
+ function ro(e) {
1287
+ const t = document.createElement("div");
1288
+ t.className = "pluno-pa-widget__message-attachments";
1289
+ for (const n of e)
1290
+ t.appendChild(Hn(n));
1291
+ return t;
1292
+ }
1293
+ function at(e) {
1294
+ const t = document.createElement("button");
1295
+ return t.type = "button", t.className = "pluno-pa-widget__message-copy", t.setAttribute("aria-label", "Copy message"), t.title = "Copy message", t.appendChild(Un()), t.addEventListener("click", (n) => {
1296
+ n.preventDefault(), n.stopPropagation(), navigator.clipboard.writeText(e);
1297
+ }), t;
1298
+ }
1299
+ function lo(e, t) {
1205
1300
  const n = document.createElement("article");
1206
1301
  n.className = "pluno-pa-widget__share-prompt";
1207
1302
  const o = document.createElement("div");
1208
1303
  o.className = "pluno-pa-widget__share-prompt-body";
1209
1304
  const a = document.createElement("div");
1210
1305
  a.className = "pluno-pa-widget__share-prompt-copy";
1211
- const r = document.createElement("strong");
1212
- r.textContent = "Share this win?", a.appendChild(r);
1306
+ const i = document.createElement("strong");
1307
+ i.textContent = "Share this win?", a.appendChild(i);
1213
1308
  const l = document.createElement("span");
1214
- if (l.textContent = e.isDrafting ? "Drafting social post..." : "Create a screenshot and generate a draft for a social post.", a.appendChild(l), e.error) {
1309
+ if (l.textContent = t.isDrafting ? "Drafting social post..." : "Create a screenshot and generate a draft for a social post.", a.appendChild(l), t.error) {
1215
1310
  const c = document.createElement("span");
1216
- c.className = "pluno-pa-widget__share-prompt-error", c.textContent = e.error, a.appendChild(c);
1311
+ c.className = "pluno-pa-widget__share-prompt-error", c.textContent = t.error, a.appendChild(c);
1217
1312
  }
1218
1313
  o.appendChild(a);
1219
1314
  const p = document.createElement("div");
@@ -1221,33 +1316,33 @@ function zn(t, e) {
1221
1316
  const s = document.createElement("div");
1222
1317
  s.className = "pluno-pa-widget__share-prompt-primary-actions";
1223
1318
  const g = document.createElement("button");
1224
- if (g.type = "button", g.disabled = e.isDrafting, g.addEventListener("click", () => {
1225
- e.onDraft(t);
1226
- }), e.isDrafting ? (g.appendChild(ye()), g.appendChild(document.createTextNode("Drafting..."))) : g.textContent = "Draft a social post", s.appendChild(g), e.isDrafting)
1319
+ if (g.type = "button", g.disabled = t.isDrafting, g.addEventListener("click", () => {
1320
+ t.onDraft(e);
1321
+ }), t.isDrafting ? (g.appendChild(Pe()), g.appendChild(document.createTextNode("Drafting..."))) : g.textContent = "Draft a social post", s.appendChild(g), t.isDrafting)
1227
1322
  p.appendChild(s);
1228
1323
  else {
1229
1324
  const c = document.createElement("button");
1230
1325
  c.type = "button", c.className = "pluno-pa-widget__share-prompt-dismiss", c.setAttribute("aria-label", "Dismiss share prompt"), c.title = "Dismiss", c.textContent = "Dismiss", c.addEventListener("click", () => {
1231
- e.onDismiss(t);
1326
+ t.onDismiss(e);
1232
1327
  }), s.appendChild(c), p.appendChild(s);
1233
1328
  const b = document.createElement("button");
1234
1329
  b.type = "button", b.className = "pluno-pa-widget__share-prompt-disable", b.textContent = "Don't ask again", b.addEventListener("click", () => {
1235
- e.onDisable(t);
1330
+ t.onDisable(e);
1236
1331
  }), p.appendChild(b);
1237
1332
  }
1238
1333
  return o.appendChild(p), n.appendChild(o), n;
1239
1334
  }
1240
- function Gn(t, e) {
1335
+ function po(e, t) {
1241
1336
  const n = document.createElement("div");
1242
1337
  n.className = "pluno-pa-widget__share-dialog-backdrop", n.addEventListener("click", (h) => {
1243
- h.target === n && e.onClose();
1338
+ h.target === n && t.onClose();
1244
1339
  });
1245
1340
  const o = document.createElement("section");
1246
1341
  o.className = "pluno-pa-widget__share-dialog", o.setAttribute("role", "dialog"), o.setAttribute("aria-modal", "true"), o.setAttribute("aria-label", "Draft a social post");
1247
- const a = document.createElement("header"), r = document.createElement("strong");
1248
- r.textContent = "Share this win", a.appendChild(r);
1342
+ const a = document.createElement("header"), i = document.createElement("strong");
1343
+ i.textContent = "Share this win", a.appendChild(i);
1249
1344
  const l = document.createElement("button");
1250
- l.type = "button", l.setAttribute("aria-label", "Close"), l.textContent = "×", l.addEventListener("click", e.onClose), a.appendChild(l), o.appendChild(a);
1345
+ l.type = "button", l.setAttribute("aria-label", "Close"), l.textContent = "×", l.addEventListener("click", t.onClose), a.appendChild(l), o.appendChild(a);
1251
1346
  const p = document.createElement("p");
1252
1347
  p.className = "pluno-pa-widget__share-dialog-status", p.hidden = !0;
1253
1348
  const s = document.createElement("div");
@@ -1256,53 +1351,53 @@ function Gn(t, e) {
1256
1351
  g.className = "pluno-pa-widget__share-dialog-step-header";
1257
1352
  const c = document.createElement("strong");
1258
1353
  c.textContent = "1) Copy Screenshot", g.appendChild(c);
1259
- const b = $n("Copy Screenshot", async () => {
1354
+ const b = so("Copy Screenshot", async () => {
1260
1355
  try {
1261
- return await Rt(t.screenshotDataUrl ?? ""), p.textContent = "", p.hidden = !0, !0;
1356
+ return await Kt(e.screenshotDataUrl ?? ""), p.textContent = "", p.hidden = !0, !0;
1262
1357
  } catch {
1263
1358
  return p.textContent = "Could not copy screenshot.", p.hidden = !1, !1;
1264
1359
  }
1265
1360
  });
1266
- if (g.appendChild(b), s.appendChild(g), t.screenshotDataUrl) {
1361
+ if (g.appendChild(b), s.appendChild(g), e.screenshotDataUrl) {
1267
1362
  const h = document.createElement("div");
1268
1363
  h.className = "pluno-pa-widget__share-dialog-screenshot";
1269
- const d = document.createElement("img");
1270
- d.src = t.screenshotDataUrl, d.alt = "Product page with Pluno open", h.appendChild(d), s.appendChild(h);
1364
+ const f = document.createElement("img");
1365
+ f.src = e.screenshotDataUrl, f.alt = "Product page with Pluno open", h.appendChild(f), s.appendChild(h);
1271
1366
  }
1272
1367
  o.appendChild(s), o.appendChild(p);
1273
- const _ = document.createElement("div");
1274
- _.className = "pluno-pa-widget__share-dialog-step";
1368
+ const w = document.createElement("div");
1369
+ w.className = "pluno-pa-widget__share-dialog-step";
1275
1370
  const x = document.createElement("strong");
1276
- x.className = "pluno-pa-widget__share-dialog-step-title", x.textContent = "2) Share on", _.appendChild(x);
1277
- const y = document.createElement("footer");
1278
- y.className = "pluno-pa-widget__share-dialog-platforms";
1279
- for (const h of Un(t)) {
1280
- const d = document.createElement("a");
1281
- d.href = h.href, d.target = "_blank", d.rel = "noopener noreferrer", d.title = h.label, d.setAttribute("aria-label", `Open ${h.label}`), d.appendChild(Wn(h.id)), y.appendChild(d);
1371
+ x.className = "pluno-pa-widget__share-dialog-step-title", x.textContent = "2) Share on", w.appendChild(x);
1372
+ const C = document.createElement("footer");
1373
+ C.className = "pluno-pa-widget__share-dialog-platforms";
1374
+ for (const h of co(e)) {
1375
+ const f = document.createElement("a");
1376
+ f.href = h.href, f.target = "_blank", f.rel = "noopener noreferrer", f.title = h.label, f.setAttribute("aria-label", `Open ${h.label}`), f.appendChild(uo(h.id)), C.appendChild(f);
1282
1377
  }
1283
- if (_.appendChild(y), o.appendChild(_), e.socialPostRewardsUrl) {
1378
+ if (w.appendChild(C), o.appendChild(w), t.socialPostRewardsUrl) {
1284
1379
  const h = document.createElement("div");
1285
1380
  h.className = "pluno-pa-widget__share-dialog-step";
1286
- const d = document.createElement("strong");
1287
- d.className = "pluno-pa-widget__share-dialog-step-title", d.textContent = "3) Submit post to get 2000 free credits!", h.appendChild(d);
1288
- const w = document.createElement("a");
1289
- w.className = "pluno-pa-widget__share-dialog-reward-link", w.href = e.socialPostRewardsUrl, w.target = "_blank", w.rel = "noopener noreferrer", w.appendChild(document.createTextNode("Submit post URL")), w.appendChild(Hn()), h.appendChild(w), o.appendChild(h);
1381
+ const f = document.createElement("strong");
1382
+ f.className = "pluno-pa-widget__share-dialog-step-title", f.textContent = "3) Submit post to get 2000 free credits!", h.appendChild(f);
1383
+ const u = document.createElement("a");
1384
+ u.className = "pluno-pa-widget__share-dialog-reward-link", u.href = t.socialPostRewardsUrl, u.target = "_blank", u.rel = "noopener noreferrer", u.appendChild(document.createTextNode("Submit post URL")), u.appendChild(go()), h.appendChild(u), o.appendChild(h);
1290
1385
  }
1291
1386
  return n.appendChild(o), n;
1292
1387
  }
1293
- function $n(t, e) {
1388
+ function so(e, t) {
1294
1389
  const n = document.createElement("button");
1295
- return n.type = "button", n.className = "pluno-pa-widget__share-dialog-copy", n.textContent = t, n.addEventListener("click", async (o) => {
1296
- o.preventDefault(), o.stopPropagation(), await e() && (n.textContent = "Copied ✓");
1390
+ return n.type = "button", n.className = "pluno-pa-widget__share-dialog-copy", n.textContent = e, n.addEventListener("click", async (o) => {
1391
+ o.preventDefault(), o.stopPropagation(), await t() && (n.textContent = "Copied ✓");
1297
1392
  }), n;
1298
1393
  }
1299
- function Un(t) {
1300
- const e = t.linkedinPost.trim(), n = t.xPost.trim();
1394
+ function co(e) {
1395
+ const t = e.linkedinPost.trim(), n = e.xPost.trim();
1301
1396
  return [
1302
1397
  {
1303
1398
  id: "linkedin",
1304
1399
  label: "LinkedIn",
1305
- href: `https://www.linkedin.com/feed/?shareActive=true&text=${encodeURIComponent(e)}`
1400
+ href: `https://www.linkedin.com/feed/?shareActive=true&text=${encodeURIComponent(t)}`
1306
1401
  },
1307
1402
  {
1308
1403
  id: "x",
@@ -1316,79 +1411,79 @@ function Un(t) {
1316
1411
  }
1317
1412
  ];
1318
1413
  }
1319
- function Wn(t) {
1320
- const e = document.createElementNS("http://www.w3.org/2000/svg", "svg");
1321
- return e.setAttribute("class", "pluno-pa-widget__share-dialog-platform-logo"), e.setAttribute("viewBox", "0 0 32 32"), e.setAttribute("aria-hidden", "true"), t === "linkedin" ? (P(e, "M6.7 13.2c.4 4.1.2 8.1.1 12.3"), P(e, "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(e, "M14.4 13.3c.1 3.8.1 7.8 0 11.9"), P(e, "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(e, "M20 18c.1 2.2.1 4.7 0 7.2"), e) : t === "x" ? (P(e, "M7.2 7.4c5.6 6.4 10.9 12.2 17.7 17.2"), P(e, "M24.4 7.2c-5.1 6.3-10.6 11.8-17 17.8"), P(e, "M9.1 8.2c5.1 5.6 9.7 10.8 15 15.5", "0.55"), e) : (P(e, "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(e, "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(e, "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(e, "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"), e);
1414
+ function uo(e) {
1415
+ const t = document.createElementNS("http://www.w3.org/2000/svg", "svg");
1416
+ 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);
1322
1417
  }
1323
- function P(t, e, n) {
1418
+ function P(e, t, n) {
1324
1419
  const o = document.createElementNS("http://www.w3.org/2000/svg", "path");
1325
- o.setAttribute("d", e), n && o.setAttribute("opacity", n), t.appendChild(o);
1420
+ o.setAttribute("d", t), n && o.setAttribute("opacity", n), e.appendChild(o);
1326
1421
  }
1327
- function Hn() {
1328
- const t = document.createElementNS("http://www.w3.org/2000/svg", "svg");
1329
- return t.setAttribute("class", "pluno-pa-widget__share-dialog-external-icon"), t.setAttribute("viewBox", "0 0 24 24"), t.setAttribute("aria-hidden", "true"), P(t, "M14 5h5v5"), P(t, "M19 5l-8 8"), P(t, "M18 13v5a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1V8a1 1 0 0 1 1-1h5"), t;
1422
+ function go() {
1423
+ const e = document.createElementNS("http://www.w3.org/2000/svg", "svg");
1424
+ 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;
1330
1425
  }
1331
- function Vn(t) {
1332
- return t.role === "tool" && t.toolName === nt;
1426
+ function ho(e) {
1427
+ return e.role === "tool" && e.toolName === gt;
1333
1428
  }
1334
- function Ke(t) {
1335
- return t.replace(/\uE200[^\uE201]*(?:\uE201|$)/g, "");
1429
+ function it(e) {
1430
+ return e.replace(/\uE200[^\uE201]*(?:\uE201|$)/g, "");
1336
1431
  }
1337
- function jn(t, e, n, o) {
1432
+ function mo(e, t, n, o) {
1338
1433
  const a = document.createElement("article");
1339
- a.className = "pluno-pa-widget__tool-group", a.title = new Date(t[t.length - 1].createdAt).toLocaleString();
1340
- const r = document.createElement("img");
1341
- r.className = "pluno-pa-widget__character pluno-pa-widget__character--tool-group", r.src = o, r.alt = "", r.setAttribute("aria-hidden", "true"), a.appendChild(r);
1342
- const l = document.createElement("details"), p = Kn(t);
1343
- l.open = e.has(p), l.addEventListener("toggle", () => {
1344
- l.open ? e.add(p) : e.delete(p), n();
1434
+ a.className = "pluno-pa-widget__tool-group", a.title = new Date(e[e.length - 1].createdAt).toLocaleString();
1435
+ const i = document.createElement("img");
1436
+ 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);
1437
+ const l = document.createElement("details"), p = bo(e);
1438
+ l.open = t.has(p), l.addEventListener("toggle", () => {
1439
+ l.open ? t.add(p) : t.delete(p), n();
1345
1440
  });
1346
1441
  const s = document.createElement("summary");
1347
- s.className = "pluno-pa-widget__tool-summary", t.some((b) => b.loading) && s.appendChild(ye());
1442
+ s.className = "pluno-pa-widget__tool-summary", e.some((b) => b.loading) && s.appendChild(Pe());
1348
1443
  const c = document.createElement("span");
1349
- if (c.className = "pluno-pa-widget__tool-summary-title", c.textContent = t[t.length - 1].content || "Run tool", s.appendChild(c), l.appendChild(s), t.length > 0) {
1444
+ if (c.className = "pluno-pa-widget__tool-summary-title", c.textContent = e[e.length - 1].content || "Run tool", s.appendChild(c), l.appendChild(s), e.length > 0) {
1350
1445
  const b = document.createElement("div");
1351
1446
  b.className = "pluno-pa-widget__tool-lines";
1352
- for (const _ of t) {
1447
+ for (const w of e) {
1353
1448
  const x = document.createElement("div");
1354
- x.className = "pluno-pa-widget__tool-line", _.loading && x.appendChild(ye());
1355
- const y = document.createElement("span");
1356
- y.textContent = _.content || "Run tool", x.appendChild(y), b.appendChild(x);
1449
+ x.className = "pluno-pa-widget__tool-line", w.loading && x.appendChild(Pe());
1450
+ const C = document.createElement("span");
1451
+ C.textContent = w.content || "Run tool", x.appendChild(C), b.appendChild(x);
1357
1452
  }
1358
1453
  l.appendChild(b);
1359
1454
  }
1360
1455
  return a.appendChild(l), a;
1361
1456
  }
1362
- function ve(t) {
1363
- const e = document.createElement("article");
1364
- e.className = "pluno-pa-widget__tool-group pluno-pa-widget__assistant-marker";
1457
+ function Le(e) {
1458
+ const t = document.createElement("article");
1459
+ t.className = "pluno-pa-widget__tool-group pluno-pa-widget__assistant-marker";
1365
1460
  const n = document.createElement("img");
1366
- return n.className = "pluno-pa-widget__character pluno-pa-widget__character--tool-group", n.src = t, n.alt = "", n.setAttribute("aria-hidden", "true"), e.appendChild(n), e;
1461
+ 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;
1367
1462
  }
1368
- function qn(t) {
1369
- const e = ve(t);
1370
- return e.classList.add("pluno-pa-widget__thinking-marker"), e.appendChild(ut()), e;
1463
+ function fo(e) {
1464
+ const t = Le(e);
1465
+ return t.classList.add("pluno-pa-widget__thinking-marker"), t.appendChild(kt()), t;
1371
1466
  }
1372
- function ut() {
1373
- const t = document.createElement("div");
1374
- t.className = "pluno-pa-widget__status";
1375
- const e = document.createElement("span");
1376
- e.className = "pluno-pa-widget__thinking-dot", e.setAttribute("aria-hidden", "true"), t.appendChild(e);
1467
+ function kt() {
1468
+ const e = document.createElement("div");
1469
+ e.className = "pluno-pa-widget__status";
1470
+ const t = document.createElement("span");
1471
+ t.className = "pluno-pa-widget__thinking-dot", t.setAttribute("aria-hidden", "true"), e.appendChild(t);
1377
1472
  const n = document.createElement("span");
1378
- return n.textContent = "Thinking...", t.appendChild(n), t;
1473
+ return n.textContent = "Thinking...", e.appendChild(n), e;
1379
1474
  }
1380
- function Kn(t) {
1381
- return `tools:${t.map((e) => e.id).join("|")}`;
1475
+ function bo(e) {
1476
+ return `tools:${e.map((t) => t.id).join("|")}`;
1382
1477
  }
1383
- function ye() {
1384
- const t = document.createElement("span");
1385
- return t.className = "pluno-pa-widget__spinner", t.setAttribute("aria-hidden", "true"), t;
1478
+ function Pe() {
1479
+ const e = document.createElement("span");
1480
+ return e.className = "pluno-pa-widget__spinner", e.setAttribute("aria-hidden", "true"), e;
1386
1481
  }
1387
- function gt(t, e) {
1388
- t.setAttribute("aria-label", e ? "Stop" : "Send"), t.classList.toggle("pluno-pa-widget__send--stop", e), t.replaceChildren(e ? yn() : dt());
1482
+ function St(e, t) {
1483
+ e.setAttribute("aria-label", t ? "Stop" : "Send"), e.classList.toggle("pluno-pa-widget__send--stop", t), e.replaceChildren(t ? zn() : vt());
1389
1484
  }
1390
- function Ye(t, e) {
1391
- const n = e.replace(/\r\n/g, `
1485
+ function rt(e, t) {
1486
+ const n = t.replace(/\r\n/g, `
1392
1487
  `).split(`
1393
1488
  `);
1394
1489
  let o = 0;
@@ -1405,31 +1500,31 @@ function Ye(t, e) {
1405
1500
  o += o < n.length ? 1 : 0;
1406
1501
  const c = document.createElement("pre"), b = document.createElement("code");
1407
1502
  b.textContent = g.join(`
1408
- `), c.appendChild(b), t.appendChild(c);
1503
+ `), c.appendChild(b), e.appendChild(c);
1409
1504
  continue;
1410
1505
  }
1411
1506
  const l = a.match(/^(#{1,3})\s+(.+)$/);
1412
1507
  if (l) {
1413
1508
  const g = document.createElement(`h${l[1].length + 2}`);
1414
- ae(g, l[2]), t.appendChild(g), o += 1;
1509
+ pe(g, l[2]), e.appendChild(g), o += 1;
1415
1510
  continue;
1416
1511
  }
1417
1512
  if (/^\s*[-*+]\s+/.test(a)) {
1418
1513
  const g = document.createElement("ul");
1419
1514
  for (; o < n.length && /^\s*[-*+]\s+/.test(n[o]); ) {
1420
1515
  const c = document.createElement("li");
1421
- ae(c, n[o].replace(/^\s*[-*+]\s+/, "")), g.appendChild(c), o += 1;
1516
+ pe(c, n[o].replace(/^\s*[-*+]\s+/, "")), g.appendChild(c), o += 1;
1422
1517
  }
1423
- t.appendChild(g);
1518
+ e.appendChild(g);
1424
1519
  continue;
1425
1520
  }
1426
1521
  if (/^\s*\d+\.\s+/.test(a)) {
1427
1522
  const g = document.createElement("ol");
1428
1523
  for (; o < n.length && /^\s*\d+\.\s+/.test(n[o]); ) {
1429
1524
  const c = document.createElement("li");
1430
- ae(c, n[o].replace(/^\s*\d+\.\s+/, "")), g.appendChild(c), o += 1;
1525
+ pe(c, n[o].replace(/^\s*\d+\.\s+/, "")), g.appendChild(c), o += 1;
1431
1526
  }
1432
- t.appendChild(g);
1527
+ e.appendChild(g);
1433
1528
  continue;
1434
1529
  }
1435
1530
  const p = [a];
@@ -1437,52 +1532,52 @@ function Ye(t, e) {
1437
1532
  p.push(n[o]), o += 1;
1438
1533
  const s = document.createElement("p");
1439
1534
  p.forEach((g, c) => {
1440
- c > 0 && s.appendChild(document.createElement("br")), ae(s, g);
1441
- }), t.appendChild(s);
1535
+ c > 0 && s.appendChild(document.createElement("br")), pe(s, g);
1536
+ }), e.appendChild(s);
1442
1537
  }
1443
1538
  }
1444
- function ae(t, e) {
1539
+ function pe(e, t) {
1445
1540
  const n = /(`[^`]+`|\*\*[^*]+\*\*|\*[^*]+\*|\[[^\]]+\]\(([^)\s]+)\))/g;
1446
1541
  let o = 0;
1447
- for (const a of e.matchAll(n)) {
1448
- const r = a.index ?? 0;
1449
- r > o && t.appendChild(document.createTextNode(e.slice(o, r)));
1542
+ for (const a of t.matchAll(n)) {
1543
+ const i = a.index ?? 0;
1544
+ i > o && e.appendChild(document.createTextNode(t.slice(o, i)));
1450
1545
  const l = a[0];
1451
1546
  if (l.startsWith("`")) {
1452
1547
  const p = document.createElement("code");
1453
- p.textContent = l.slice(1, -1), t.appendChild(p);
1548
+ p.textContent = l.slice(1, -1), e.appendChild(p);
1454
1549
  } else if (l.startsWith("**")) {
1455
1550
  const p = document.createElement("strong");
1456
- p.textContent = l.slice(2, -2), t.appendChild(p);
1551
+ p.textContent = l.slice(2, -2), e.appendChild(p);
1457
1552
  } else if (l.startsWith("*")) {
1458
1553
  const p = document.createElement("em");
1459
- p.textContent = l.slice(1, -1), t.appendChild(p);
1554
+ p.textContent = l.slice(1, -1), e.appendChild(p);
1460
1555
  } else {
1461
1556
  const p = l.match(/^\[([^\]]+)\]\(([^)\s]+)\)$/);
1462
- if (p && Yn(p[2])) {
1557
+ if (p && wo(p[2])) {
1463
1558
  const s = document.createElement("a");
1464
- s.href = p[2], s.target = "_top", s.rel = "noreferrer", s.textContent = p[1], t.appendChild(s);
1559
+ s.href = p[2], s.target = "_top", s.rel = "noreferrer", s.textContent = p[1], e.appendChild(s);
1465
1560
  } else
1466
- t.appendChild(document.createTextNode(l));
1561
+ e.appendChild(document.createTextNode(l));
1467
1562
  }
1468
- o = r + l.length;
1563
+ o = i + l.length;
1469
1564
  }
1470
- o < e.length && t.appendChild(document.createTextNode(e.slice(o)));
1565
+ o < t.length && e.appendChild(document.createTextNode(t.slice(o)));
1471
1566
  }
1472
- function Yn(t) {
1473
- if (t.startsWith("/") || t.startsWith("#"))
1567
+ function wo(e) {
1568
+ if (e.startsWith("/") || e.startsWith("#"))
1474
1569
  return !0;
1475
1570
  try {
1476
- const e = new URL(t);
1477
- return ["http:", "https:", "mailto:"].includes(e.protocol);
1571
+ const t = new URL(e);
1572
+ return ["http:", "https:", "mailto:"].includes(t.protocol);
1478
1573
  } catch {
1479
1574
  return !1;
1480
1575
  }
1481
1576
  }
1482
- function Xe(t, e) {
1483
- if (t.getElementById("pluno-pa-widget-styles"))
1577
+ function lt(e, t) {
1578
+ if (e.getElementById("pluno-pa-widget-styles"))
1484
1579
  return;
1485
- const n = t.ownerDocument.createElement("style");
1580
+ const n = e.ownerDocument.createElement("style");
1486
1581
  n.id = "pluno-pa-widget-styles", n.textContent = `
1487
1582
  :host {
1488
1583
  all: initial;
@@ -1515,7 +1610,7 @@ function Xe(t, e) {
1515
1610
  flex: 0 0 auto;
1516
1611
  }
1517
1612
  .pluno-pa-widget {
1518
- --pluno-pa-accent: ${e};
1613
+ --pluno-pa-accent: ${t};
1519
1614
  --pluno-pa-bg: #fafaf9;
1520
1615
  --pluno-pa-surface: #f4f4f2;
1521
1616
  --pluno-pa-bubble: #eeeded;
@@ -1526,8 +1621,8 @@ function Xe(t, e) {
1526
1621
  --pluno-pa-launcher-hairline: rgba(24, 24, 27, 0.06);
1527
1622
  --pluno-pa-launcher-width: min(190px, calc(100vw - 36px));
1528
1623
  --pluno-pa-launcher-height: 41px;
1529
- --pluno-pa-panel-width: min(420px, calc(100vw - 28px));
1530
- --pluno-pa-panel-height: min(680px, calc(100vh - 28px));
1624
+ --pluno-pa-panel-width: min(clamp(420px, 24vw, 520px), calc(100vw - 28px));
1625
+ --pluno-pa-panel-height: min(clamp(680px, 76vh, 800px), calc(100vh - 28px));
1531
1626
  --pluno-pa-panel-offset-x: calc(var(--pluno-pa-launcher-width) - var(--pluno-pa-panel-width));
1532
1627
  --pluno-pa-panel-offset-y: calc(var(--pluno-pa-launcher-height) - var(--pluno-pa-panel-height));
1533
1628
  --pluno-pa-accent-soft: rgba(24, 24, 27, 0.12);
@@ -2448,6 +2543,65 @@ function Xe(t, e) {
2448
2543
  background: var(--pluno-pa-bg);
2449
2544
  border-top: 1px solid var(--pluno-pa-divider);
2450
2545
  }
2546
+ .pluno-pa-widget__billing-status {
2547
+ display: grid;
2548
+ gap: 8px;
2549
+ margin: 0 0 8px;
2550
+ }
2551
+ .pluno-pa-widget__billing-status[hidden] {
2552
+ display: none;
2553
+ }
2554
+ .pluno-pa-widget__billing-action-card {
2555
+ display: grid;
2556
+ gap: 8px;
2557
+ padding: 10px;
2558
+ border: 1px solid color-mix(in srgb, var(--pluno-pa-accent) 24%, var(--pluno-pa-divider));
2559
+ border-radius: 8px;
2560
+ background: color-mix(in srgb, var(--pluno-pa-accent-soft) 60%, var(--pluno-pa-surface));
2561
+ color: var(--pluno-pa-text);
2562
+ font-size: 12px;
2563
+ line-height: 1.4;
2564
+ }
2565
+ .pluno-pa-widget__billing-action-card strong {
2566
+ color: var(--pluno-pa-text);
2567
+ font-size: 13px;
2568
+ line-height: 1.25;
2569
+ font-weight: 700;
2570
+ }
2571
+ .pluno-pa-widget__billing-action-card span {
2572
+ color: var(--pluno-pa-muted);
2573
+ }
2574
+ .pluno-pa-widget__billing-action-card-actions {
2575
+ display: flex;
2576
+ flex-wrap: wrap;
2577
+ gap: 7px;
2578
+ }
2579
+ .pluno-pa-widget__billing-action-card-actions button {
2580
+ min-height: 29px;
2581
+ display: inline-flex;
2582
+ align-items: center;
2583
+ gap: 6px;
2584
+ border: 1px solid var(--pluno-pa-divider);
2585
+ border-radius: 8px;
2586
+ background: var(--pluno-pa-bg);
2587
+ color: var(--pluno-pa-text);
2588
+ padding: 0 9px;
2589
+ font-size: 12px;
2590
+ font-weight: 650;
2591
+ line-height: 1;
2592
+ cursor: pointer;
2593
+ white-space: nowrap;
2594
+ }
2595
+ .pluno-pa-widget__billing-action-card-actions button:first-child {
2596
+ border-color: var(--pluno-pa-text);
2597
+ background: var(--pluno-pa-text);
2598
+ color: var(--pluno-pa-bg);
2599
+ }
2600
+ .pluno-pa-widget__billing-action-card-actions button:disabled,
2601
+ .pluno-pa-widget__billing-action-card-actions button:disabled {
2602
+ cursor: not-allowed;
2603
+ opacity: 0.55;
2604
+ }
2451
2605
  .pluno-pa-widget__attachment-error {
2452
2606
  margin: 0 0 8px;
2453
2607
  padding: 6px 9px;
@@ -2807,7 +2961,7 @@ function Xe(t, e) {
2807
2961
  right: 16px;
2808
2962
  height: 36px;
2809
2963
  z-index: 3;
2810
- background-image: url('${Oe}');
2964
+ background-image: url('${Ve}');
2811
2965
  background-repeat: repeat-x;
2812
2966
  background-size: 104px 36px;
2813
2967
  filter: url(#pluno-pa-scribble-wobble-2);
@@ -2879,6 +3033,13 @@ function Xe(t, e) {
2879
3033
  .pluno-pa-widget--scribble .pluno-pa-widget__composer-inner {
2880
3034
  border-radius: var(--pluno-pa-scribble-wobble);
2881
3035
  }
3036
+ .pluno-pa-widget--scribble .pluno-pa-widget__billing-action-card {
3037
+ position: relative;
3038
+ border-radius: var(--pluno-pa-scribble-wobble);
3039
+ }
3040
+ .pluno-pa-widget--scribble .pluno-pa-widget__billing-action-card-actions button {
3041
+ position: relative;
3042
+ }
2882
3043
  .pluno-pa-widget--scribble .pluno-pa-widget__share-prompt-body {
2883
3044
  position: relative;
2884
3045
  border-radius: var(--pluno-pa-scribble-wobble);
@@ -2893,6 +3054,8 @@ function Xe(t, e) {
2893
3054
  .pluno-pa-widget--scribble .pluno-pa-widget__new-chat,
2894
3055
  .pluno-pa-widget--scribble .pluno-pa-widget__message-copy,
2895
3056
  .pluno-pa-widget--scribble .pluno-pa-widget__close,
3057
+ .pluno-pa-widget--scribble .pluno-pa-widget__billing-action-card,
3058
+ .pluno-pa-widget--scribble .pluno-pa-widget__billing-action-card-actions button,
2896
3059
  .pluno-pa-widget--scribble .pluno-pa-widget__share-prompt-body,
2897
3060
  .pluno-pa-widget--scribble .pluno-pa-widget__share-prompt-actions button {
2898
3061
  isolation: isolate;
@@ -2907,6 +3070,8 @@ function Xe(t, e) {
2907
3070
  .pluno-pa-widget--scribble .pluno-pa-widget__new-chat::before,
2908
3071
  .pluno-pa-widget--scribble .pluno-pa-widget__message-copy::before,
2909
3072
  .pluno-pa-widget--scribble .pluno-pa-widget__close::before,
3073
+ .pluno-pa-widget--scribble .pluno-pa-widget__billing-action-card::before,
3074
+ .pluno-pa-widget--scribble .pluno-pa-widget__billing-action-card-actions button::before,
2910
3075
  .pluno-pa-widget--scribble .pluno-pa-widget__share-prompt-body::before,
2911
3076
  .pluno-pa-widget--scribble .pluno-pa-widget__share-prompt-actions button:not(.pluno-pa-widget__share-prompt-disable)::before {
2912
3077
  content: "";
@@ -2932,9 +3097,21 @@ function Xe(t, e) {
2932
3097
  .pluno-pa-widget--scribble .pluno-pa-widget__new-chat::before,
2933
3098
  .pluno-pa-widget--scribble .pluno-pa-widget__message-copy::before,
2934
3099
  .pluno-pa-widget--scribble .pluno-pa-widget__close::before,
3100
+ .pluno-pa-widget--scribble .pluno-pa-widget__billing-action-card-actions button::before,
2935
3101
  .pluno-pa-widget--scribble .pluno-pa-widget__share-prompt-actions button:not(.pluno-pa-widget__share-prompt-disable)::before {
2936
3102
  background: var(--pluno-pa-bg);
2937
3103
  }
3104
+ .pluno-pa-widget--scribble .pluno-pa-widget__billing-action-card::before {
3105
+ background: color-mix(in srgb, var(--pluno-pa-accent-soft) 60%, var(--pluno-pa-surface));
3106
+ filter: url(#pluno-pa-scribble-wobble);
3107
+ }
3108
+ .pluno-pa-widget--scribble .pluno-pa-widget__billing-action-card-actions button:first-child {
3109
+ color: var(--pluno-pa-bg);
3110
+ }
3111
+ .pluno-pa-widget--scribble .pluno-pa-widget__billing-action-card-actions button:first-child::before {
3112
+ background: var(--pluno-pa-text);
3113
+ border-color: var(--pluno-pa-text);
3114
+ }
2938
3115
  .pluno-pa-widget--scribble .pluno-pa-widget__composer-inner:focus-within {
2939
3116
  border-color: transparent;
2940
3117
  }
@@ -2945,6 +3122,7 @@ function Xe(t, e) {
2945
3122
  .pluno-pa-widget--scribble .pluno-pa-widget__new-chat,
2946
3123
  .pluno-pa-widget--scribble .pluno-pa-widget__message-copy,
2947
3124
  .pluno-pa-widget--scribble .pluno-pa-widget__close,
3125
+ .pluno-pa-widget--scribble .pluno-pa-widget__billing-action-card-actions button,
2948
3126
  .pluno-pa-widget--scribble .pluno-pa-widget__share-prompt-actions button:not(.pluno-pa-widget__share-prompt-disable) {
2949
3127
  border-radius: 43% 57% 39% 61% / 59% 41% 58% 42%;
2950
3128
  }
@@ -2952,6 +3130,7 @@ function Xe(t, e) {
2952
3130
  .pluno-pa-widget--scribble .pluno-pa-widget__new-chat::after,
2953
3131
  .pluno-pa-widget--scribble .pluno-pa-widget__message-copy::after,
2954
3132
  .pluno-pa-widget--scribble .pluno-pa-widget__close::after,
3133
+ .pluno-pa-widget--scribble .pluno-pa-widget__billing-action-card-actions button::after,
2955
3134
  .pluno-pa-widget--scribble .pluno-pa-widget__share-prompt-actions button:not(.pluno-pa-widget__share-prompt-disable)::after {
2956
3135
  content: "";
2957
3136
  position: absolute;
@@ -3029,7 +3208,7 @@ function Xe(t, e) {
3029
3208
  right: 12px;
3030
3209
  height: 22px;
3031
3210
  z-index: 1;
3032
- background-image: url('${Oe}');
3211
+ background-image: url('${Ve}');
3033
3212
  background-repeat: repeat-x;
3034
3213
  background-size: 62px 21.5px;
3035
3214
  filter: url(#pluno-pa-scribble-wobble-2);
@@ -3041,59 +3220,59 @@ function Xe(t, e) {
3041
3220
  .pluno-pa-widget--scribble .pluno-pa-widget__close svg {
3042
3221
  filter: url(#pluno-pa-scribble-wobble-2);
3043
3222
  }
3044
- `, t.appendChild(n);
3223
+ `, e.appendChild(n);
3045
3224
  }
3046
- async function Xn() {
3047
- return document.body ? document.body : await new Promise((t) => {
3048
- const e = new MutationObserver(() => {
3049
- document.body && (e.disconnect(), t(document.body));
3225
+ async function _o() {
3226
+ return document.body ? document.body : await new Promise((e) => {
3227
+ const t = new MutationObserver(() => {
3228
+ document.body && (t.disconnect(), e(document.body));
3050
3229
  });
3051
- e.observe(document.documentElement, { childList: !0 });
3230
+ t.observe(document.documentElement, { childList: !0 });
3052
3231
  });
3053
3232
  }
3054
- function ht(t) {
3055
- return `pluno.productAgent.widgetState.${location.origin}.${t.backendUrl ?? ""}.${t.tokenEndpoint ?? ""}.${t.position ?? ""}`;
3233
+ function Lt(e) {
3234
+ return `pluno.productAgent.widgetState.${location.origin}.${e.backendUrl ?? ""}.${e.tokenEndpoint ?? ""}.${e.position ?? ""}`;
3056
3235
  }
3057
- function Zn(t) {
3236
+ function xo(e) {
3058
3237
  try {
3059
- const e = window.localStorage.getItem(ht(t));
3060
- if (!e)
3061
- return Ze();
3062
- const n = JSON.parse(e);
3238
+ const t = window.localStorage.getItem(Lt(e));
3239
+ if (!t)
3240
+ return pt();
3241
+ const n = JSON.parse(t);
3063
3242
  return {
3064
3243
  isOpen: n.isOpen === !0,
3065
3244
  composerValue: typeof n.composerValue == "string" ? n.composerValue : "",
3066
3245
  openToolGroupKeys: Array.isArray(n.openToolGroupKeys) ? n.openToolGroupKeys.filter((o) => typeof o == "string") : [],
3067
- launcherPosition: to(n.launcherPosition) ? n.launcherPosition : null,
3068
- seenShareCandidateIds: Array.isArray(n.seenShareCandidateIds) ? n.seenShareCandidateIds.filter((o) => typeof o == "string").slice(-ot) : [],
3246
+ launcherPosition: Eo(n.launcherPosition) ? n.launcherPosition : null,
3247
+ seenShareCandidateIds: Array.isArray(n.seenShareCandidateIds) ? n.seenShareCandidateIds.filter((o) => typeof o == "string").slice(-ht) : [],
3069
3248
  sharePromptsDisabled: n.sharePromptsDisabled === !0
3070
3249
  };
3071
3250
  } catch {
3072
- return Ze();
3251
+ return pt();
3073
3252
  }
3074
3253
  }
3075
- async function Jn(t) {
3076
- if (t.loadSharePromptsDisabled)
3077
- return t.loadSharePromptsDisabled();
3254
+ async function vo(e) {
3255
+ if (e.loadSharePromptsDisabled)
3256
+ return e.loadSharePromptsDisabled();
3078
3257
  try {
3079
- return window.localStorage.getItem(at) === "true";
3258
+ return window.localStorage.getItem(mt) === "true";
3080
3259
  } catch {
3081
3260
  return !1;
3082
3261
  }
3083
3262
  }
3084
- function Qn(t, e) {
3085
- if (t.persistSharePromptsDisabled) {
3086
- Promise.resolve(t.persistSharePromptsDisabled(e)).catch(() => {
3263
+ function yo(e, t) {
3264
+ if (e.persistSharePromptsDisabled) {
3265
+ Promise.resolve(e.persistSharePromptsDisabled(t)).catch(() => {
3087
3266
  });
3088
3267
  return;
3089
3268
  }
3090
3269
  try {
3091
- e && window.localStorage.setItem(at, "true");
3270
+ t && window.localStorage.setItem(mt, "true");
3092
3271
  } catch {
3093
3272
  return;
3094
3273
  }
3095
3274
  }
3096
- function Ze() {
3275
+ function pt() {
3097
3276
  return {
3098
3277
  isOpen: !1,
3099
3278
  composerValue: "",
@@ -3103,43 +3282,43 @@ function Ze() {
3103
3282
  sharePromptsDisabled: !1
3104
3283
  };
3105
3284
  }
3106
- function eo(t, e) {
3285
+ function Co(e, t) {
3107
3286
  try {
3108
- window.localStorage.setItem(ht(t), JSON.stringify(e));
3287
+ window.localStorage.setItem(Lt(e), JSON.stringify(t));
3109
3288
  } catch {
3110
3289
  return;
3111
3290
  }
3112
3291
  }
3113
- function to(t) {
3114
- if (!t || typeof t != "object")
3292
+ function Eo(e) {
3293
+ if (!e || typeof e != "object")
3115
3294
  return !1;
3116
- const e = t;
3117
- return Number.isFinite(e.x) && Number.isFinite(e.y);
3118
- }
3119
- const Je = /* @__PURE__ */ new WeakSet();
3120
- function no(t) {
3121
- return Object.keys(t.dataset).some((e) => e.startsWith("pluno"));
3122
- }
3123
- function Qe(t) {
3124
- const e = t.pathname.split("/");
3125
- return e[e.length - 1] ?? "";
3126
- }
3127
- function oo(t, e) {
3128
- const n = new URL(t.src, document.baseURI);
3129
- return n.href === e.href || n.pathname === e.pathname ? !0 : Qe(n) === Qe(e);
3130
- }
3131
- class R extends EventTarget {
3132
- constructor(e, n) {
3133
- super(), this.channelId = n, this.url = e, this.addPreviewListener(Gt, () => {
3134
- this.readyState = R.OPEN, this.dispatchEvent(new Event("open"));
3135
- }), this.addPreviewListener($t, (o) => {
3295
+ const t = e;
3296
+ return Number.isFinite(t.x) && Number.isFinite(t.y);
3297
+ }
3298
+ const st = /* @__PURE__ */ new WeakSet();
3299
+ function ko(e) {
3300
+ return Object.keys(e.dataset).some((t) => t.startsWith("pluno"));
3301
+ }
3302
+ function dt(e) {
3303
+ const t = e.pathname.split("/");
3304
+ return t[t.length - 1] ?? "";
3305
+ }
3306
+ function So(e, t) {
3307
+ const n = new URL(e.src, document.baseURI);
3308
+ return n.href === t.href || n.pathname === t.pathname ? !0 : dt(n) === dt(t);
3309
+ }
3310
+ class O extends EventTarget {
3311
+ constructor(t, n) {
3312
+ super(), this.channelId = n, this.url = t, this.addPreviewListener(Qt, () => {
3313
+ this.readyState = O.OPEN, this.dispatchEvent(new Event("open"));
3314
+ }), this.addPreviewListener(en, (o) => {
3136
3315
  const a = o;
3137
3316
  this.dispatchEvent(new MessageEvent("message", { data: a.detail?.data ?? "" }));
3138
- }), this.addPreviewListener(Ut, () => {
3139
- this.readyState = R.CLOSED, this.dispatchEvent(new Event("error")), this.cleanup();
3140
- }), this.addPreviewListener(Wt, (o) => {
3317
+ }), this.addPreviewListener(tn, () => {
3318
+ this.readyState = O.CLOSED, this.dispatchEvent(new Event("error")), this.cleanup();
3319
+ }), this.addPreviewListener(nn, (o) => {
3141
3320
  const a = o;
3142
- this.readyState = R.CLOSED, this.dispatchEvent(
3321
+ this.readyState = O.CLOSED, this.dispatchEvent(
3143
3322
  new CloseEvent("close", {
3144
3323
  code: a.detail?.code ?? 1e3,
3145
3324
  reason: a.detail?.reason ?? "",
@@ -3147,8 +3326,8 @@ class R extends EventTarget {
3147
3326
  })
3148
3327
  ), this.cleanup();
3149
3328
  }), window.dispatchEvent(
3150
- new CustomEvent(re(Ft, this.channelId), {
3151
- detail: { socketId: this.socketId, url: e }
3329
+ new CustomEvent(se(Xt, this.channelId), {
3330
+ detail: { socketId: this.socketId, url: t }
3152
3331
  })
3153
3332
  );
3154
3333
  }
@@ -3162,80 +3341,80 @@ class R extends EventTarget {
3162
3341
  extensions = "";
3163
3342
  binaryType = "blob";
3164
3343
  bufferedAmount = 0;
3165
- readyState = R.CONNECTING;
3166
- socketId = ao();
3344
+ readyState = O.CONNECTING;
3345
+ socketId = Lo();
3167
3346
  listeners = /* @__PURE__ */ new Map();
3168
- send(e) {
3169
- if (this.readyState !== R.OPEN)
3347
+ send(t) {
3348
+ if (this.readyState !== O.OPEN)
3170
3349
  throw new DOMException("Pluno preview websocket is not open", "InvalidStateError");
3171
3350
  window.dispatchEvent(
3172
- new CustomEvent(re(Bt, this.channelId), {
3173
- detail: { socketId: this.socketId, data: typeof e == "string" ? e : String(e) }
3351
+ new CustomEvent(se(Zt, this.channelId), {
3352
+ detail: { socketId: this.socketId, data: typeof t == "string" ? t : String(t) }
3174
3353
  })
3175
3354
  );
3176
3355
  }
3177
- close(e, n) {
3178
- this.readyState !== R.CLOSED && (this.readyState = R.CLOSING, window.dispatchEvent(
3179
- new CustomEvent(re(zt, this.channelId), {
3180
- detail: { socketId: this.socketId, code: e, reason: n }
3356
+ close(t, n) {
3357
+ this.readyState !== O.CLOSED && (this.readyState = O.CLOSING, window.dispatchEvent(
3358
+ new CustomEvent(se(Jt, this.channelId), {
3359
+ detail: { socketId: this.socketId, code: t, reason: n }
3181
3360
  })
3182
3361
  ), this.cleanup());
3183
3362
  }
3184
- addPreviewListener(e, n) {
3185
- const o = re(e, this.channelId), a = (r) => {
3186
- r.detail?.socketId === this.socketId && n(r);
3363
+ addPreviewListener(t, n) {
3364
+ const o = se(t, this.channelId), a = (i) => {
3365
+ i.detail?.socketId === this.socketId && n(i);
3187
3366
  };
3188
3367
  this.listeners.set(o, a), window.addEventListener(o, a);
3189
3368
  }
3190
3369
  cleanup() {
3191
- for (const [e, n] of this.listeners.entries())
3192
- window.removeEventListener(e, n);
3370
+ for (const [t, n] of this.listeners.entries())
3371
+ window.removeEventListener(t, n);
3193
3372
  this.listeners.clear();
3194
3373
  }
3195
3374
  }
3196
- function ao() {
3197
- const t = window.sessionStorage.getItem(Re);
3198
- if (t)
3199
- return t;
3200
- const e = crypto.randomUUID();
3201
- return window.sessionStorage.setItem(Re, e), e;
3375
+ function Lo() {
3376
+ const e = window.sessionStorage.getItem(He);
3377
+ if (e)
3378
+ return e;
3379
+ const t = crypto.randomUUID();
3380
+ return window.sessionStorage.setItem(He, t), t;
3202
3381
  }
3203
- function re(t, e) {
3204
- return `${t}:${e}`;
3382
+ function se(e, t) {
3383
+ return `${e}:${t}`;
3205
3384
  }
3206
- function ro(t) {
3207
- const e = document.currentScript;
3208
- if (e instanceof HTMLScriptElement)
3209
- return [e];
3210
- const n = new URL(t, document.baseURI).href, o = new URL(n);
3385
+ function Po(e) {
3386
+ const t = document.currentScript;
3387
+ if (t instanceof HTMLScriptElement)
3388
+ return [t];
3389
+ const n = new URL(e, document.baseURI).href, o = new URL(n);
3211
3390
  return Array.from(document.querySelectorAll("script[type='module'][src]")).filter(
3212
- (a) => a instanceof HTMLScriptElement && no(a) && oo(a, o)
3391
+ (a) => a instanceof HTMLScriptElement && ko(a) && So(a, o)
3213
3392
  );
3214
3393
  }
3215
- function io(t) {
3216
- for (const e of ro(t)) {
3217
- if (Je.has(e) || e.dataset.plunoAutoMount === "false")
3394
+ function Ao(e) {
3395
+ for (const t of Po(e)) {
3396
+ if (st.has(t) || t.dataset.plunoAutoMount === "false")
3218
3397
  continue;
3219
- Je.add(e);
3220
- const n = e.dataset.plunoPreviewChannel;
3221
- rn({
3222
- token: e.dataset.plunoToken,
3223
- tokenEndpoint: e.dataset.plunoTokenEndpoint,
3224
- backendUrl: e.dataset.plunoBackendUrl,
3225
- webSocketFactory: n ? an(n) : void 0,
3226
- launcherLabel: e.dataset.plunoLauncherLabel,
3227
- accentColor: e.dataset.plunoAccentColor,
3228
- colorScheme: e.dataset.plunoColorScheme === "dark" ? "dark" : "light",
3229
- fontFamily: e.dataset.plunoFontFamily,
3230
- scribbleStyle: e.dataset.plunoScribbleStyle === "true",
3231
- position: e.dataset.plunoPosition === "bottom-left" ? "bottom-left" : "bottom-right"
3398
+ st.add(t);
3399
+ const n = t.dataset.plunoPreviewChannel;
3400
+ Cn({
3401
+ token: t.dataset.plunoToken,
3402
+ tokenEndpoint: t.dataset.plunoTokenEndpoint,
3403
+ backendUrl: t.dataset.plunoBackendUrl,
3404
+ webSocketFactory: n ? yn(n) : void 0,
3405
+ launcherLabel: t.dataset.plunoLauncherLabel,
3406
+ accentColor: t.dataset.plunoAccentColor,
3407
+ colorScheme: t.dataset.plunoColorScheme === "dark" ? "dark" : "light",
3408
+ fontFamily: t.dataset.plunoFontFamily,
3409
+ scribbleStyle: t.dataset.plunoScribbleStyle === "true",
3410
+ position: t.dataset.plunoPosition === "bottom-left" ? "bottom-left" : "bottom-right"
3232
3411
  }).catch((o) => {
3233
3412
  console.error("Failed to mount Pluno widget", o);
3234
3413
  });
3235
3414
  }
3236
3415
  }
3237
- io(import.meta.url);
3416
+ Ao(import.meta.url);
3238
3417
  export {
3239
- an as createProductAgentPreviewBridgeWebSocketFactory,
3240
- rn as mountPlunoProductAgentWidget
3418
+ yn as createProductAgentPreviewBridgeWebSocketFactory,
3419
+ Cn as mountPlunoProductAgentWidget
3241
3420
  };