@apolopay-sdk/ui 1.1.0 → 1.2.0

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.
@@ -0,0 +1,4577 @@
1
+ const oe = globalThis, Ie = oe.ShadowRoot && (oe.ShadyCSS === void 0 || oe.ShadyCSS.nativeShadow) && "adoptedStyleSheets" in Document.prototype && "replace" in CSSStyleSheet.prototype, Qe = /* @__PURE__ */ Symbol(), je = /* @__PURE__ */ new WeakMap();
2
+ let ht = class {
3
+ constructor(e, t, r) {
4
+ if (this._$cssResult$ = !0, r !== Qe) throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");
5
+ this.cssText = e, this.t = t;
6
+ }
7
+ get styleSheet() {
8
+ let e = this.o;
9
+ const t = this.t;
10
+ if (Ie && e === void 0) {
11
+ const r = t !== void 0 && t.length === 1;
12
+ r && (e = je.get(t)), e === void 0 && ((this.o = e = new CSSStyleSheet()).replaceSync(this.cssText), r && je.set(t, e));
13
+ }
14
+ return e;
15
+ }
16
+ toString() {
17
+ return this.cssText;
18
+ }
19
+ };
20
+ const Nt = (s) => new ht(typeof s == "string" ? s : s + "", void 0, Qe), B = (s, ...e) => {
21
+ const t = s.length === 1 ? s[0] : e.reduce((r, i, n) => r + ((o) => {
22
+ if (o._$cssResult$ === !0) return o.cssText;
23
+ if (typeof o == "number") return o;
24
+ throw Error("Value passed to 'css' function must be a 'css' function result: " + o + ". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.");
25
+ })(i) + s[n + 1], s[0]);
26
+ return new ht(t, s, Qe);
27
+ }, It = (s, e) => {
28
+ if (Ie) s.adoptedStyleSheets = e.map((t) => t instanceof CSSStyleSheet ? t : t.styleSheet);
29
+ else for (const t of e) {
30
+ const r = document.createElement("style"), i = oe.litNonce;
31
+ i !== void 0 && r.setAttribute("nonce", i), r.textContent = t.cssText, s.appendChild(r);
32
+ }
33
+ }, qe = Ie ? (s) => s : (s) => s instanceof CSSStyleSheet ? ((e) => {
34
+ let t = "";
35
+ for (const r of e.cssRules) t += r.cssText;
36
+ return Nt(t);
37
+ })(s) : s;
38
+ const { is: Qt, defineProperty: Lt, getOwnPropertyDescriptor: Pt, getOwnPropertyNames: Zt, getOwnPropertySymbols: Rt, getPrototypeOf: zt } = Object, Ae = globalThis, Ge = Ae.trustedTypes, Mt = Ge ? Ge.emptyScript : "", Dt = Ae.reactiveElementPolyfillSupport, H = (s, e) => s, pe = { toAttribute(s, e) {
39
+ switch (e) {
40
+ case Boolean:
41
+ s = s ? Mt : null;
42
+ break;
43
+ case Object:
44
+ case Array:
45
+ s = s == null ? s : JSON.stringify(s);
46
+ }
47
+ return s;
48
+ }, fromAttribute(s, e) {
49
+ let t = s;
50
+ switch (e) {
51
+ case Boolean:
52
+ t = s !== null;
53
+ break;
54
+ case Number:
55
+ t = s === null ? null : Number(s);
56
+ break;
57
+ case Object:
58
+ case Array:
59
+ try {
60
+ t = JSON.parse(s);
61
+ } catch {
62
+ t = null;
63
+ }
64
+ }
65
+ return t;
66
+ } }, Le = (s, e) => !Qt(s, e), Ye = { attribute: !0, type: String, converter: pe, reflect: !1, useDefault: !1, hasChanged: Le };
67
+ Symbol.metadata ??= /* @__PURE__ */ Symbol("metadata"), Ae.litPropertyMetadata ??= /* @__PURE__ */ new WeakMap();
68
+ let D = class extends HTMLElement {
69
+ static addInitializer(e) {
70
+ this._$Ei(), (this.l ??= []).push(e);
71
+ }
72
+ static get observedAttributes() {
73
+ return this.finalize(), this._$Eh && [...this._$Eh.keys()];
74
+ }
75
+ static createProperty(e, t = Ye) {
76
+ if (t.state && (t.attribute = !1), this._$Ei(), this.prototype.hasOwnProperty(e) && ((t = Object.create(t)).wrapped = !0), this.elementProperties.set(e, t), !t.noAccessor) {
77
+ const r = /* @__PURE__ */ Symbol(), i = this.getPropertyDescriptor(e, r, t);
78
+ i !== void 0 && Lt(this.prototype, e, i);
79
+ }
80
+ }
81
+ static getPropertyDescriptor(e, t, r) {
82
+ const { get: i, set: n } = Pt(this.prototype, e) ?? { get() {
83
+ return this[t];
84
+ }, set(o) {
85
+ this[t] = o;
86
+ } };
87
+ return { get: i, set(o) {
88
+ const l = i?.call(this);
89
+ n?.call(this, o), this.requestUpdate(e, l, r);
90
+ }, configurable: !0, enumerable: !0 };
91
+ }
92
+ static getPropertyOptions(e) {
93
+ return this.elementProperties.get(e) ?? Ye;
94
+ }
95
+ static _$Ei() {
96
+ if (this.hasOwnProperty(H("elementProperties"))) return;
97
+ const e = zt(this);
98
+ e.finalize(), e.l !== void 0 && (this.l = [...e.l]), this.elementProperties = new Map(e.elementProperties);
99
+ }
100
+ static finalize() {
101
+ if (this.hasOwnProperty(H("finalized"))) return;
102
+ if (this.finalized = !0, this._$Ei(), this.hasOwnProperty(H("properties"))) {
103
+ const t = this.properties, r = [...Zt(t), ...Rt(t)];
104
+ for (const i of r) this.createProperty(i, t[i]);
105
+ }
106
+ const e = this[Symbol.metadata];
107
+ if (e !== null) {
108
+ const t = litPropertyMetadata.get(e);
109
+ if (t !== void 0) for (const [r, i] of t) this.elementProperties.set(r, i);
110
+ }
111
+ this._$Eh = /* @__PURE__ */ new Map();
112
+ for (const [t, r] of this.elementProperties) {
113
+ const i = this._$Eu(t, r);
114
+ i !== void 0 && this._$Eh.set(i, t);
115
+ }
116
+ this.elementStyles = this.finalizeStyles(this.styles);
117
+ }
118
+ static finalizeStyles(e) {
119
+ const t = [];
120
+ if (Array.isArray(e)) {
121
+ const r = new Set(e.flat(1 / 0).reverse());
122
+ for (const i of r) t.unshift(qe(i));
123
+ } else e !== void 0 && t.push(qe(e));
124
+ return t;
125
+ }
126
+ static _$Eu(e, t) {
127
+ const r = t.attribute;
128
+ return r === !1 ? void 0 : typeof r == "string" ? r : typeof e == "string" ? e.toLowerCase() : void 0;
129
+ }
130
+ constructor() {
131
+ super(), this._$Ep = void 0, this.isUpdatePending = !1, this.hasUpdated = !1, this._$Em = null, this._$Ev();
132
+ }
133
+ _$Ev() {
134
+ this._$ES = new Promise((e) => this.enableUpdating = e), this._$AL = /* @__PURE__ */ new Map(), this._$E_(), this.requestUpdate(), this.constructor.l?.forEach((e) => e(this));
135
+ }
136
+ addController(e) {
137
+ (this._$EO ??= /* @__PURE__ */ new Set()).add(e), this.renderRoot !== void 0 && this.isConnected && e.hostConnected?.();
138
+ }
139
+ removeController(e) {
140
+ this._$EO?.delete(e);
141
+ }
142
+ _$E_() {
143
+ const e = /* @__PURE__ */ new Map(), t = this.constructor.elementProperties;
144
+ for (const r of t.keys()) this.hasOwnProperty(r) && (e.set(r, this[r]), delete this[r]);
145
+ e.size > 0 && (this._$Ep = e);
146
+ }
147
+ createRenderRoot() {
148
+ const e = this.shadowRoot ?? this.attachShadow(this.constructor.shadowRootOptions);
149
+ return It(e, this.constructor.elementStyles), e;
150
+ }
151
+ connectedCallback() {
152
+ this.renderRoot ??= this.createRenderRoot(), this.enableUpdating(!0), this._$EO?.forEach((e) => e.hostConnected?.());
153
+ }
154
+ enableUpdating(e) {
155
+ }
156
+ disconnectedCallback() {
157
+ this._$EO?.forEach((e) => e.hostDisconnected?.());
158
+ }
159
+ attributeChangedCallback(e, t, r) {
160
+ this._$AK(e, r);
161
+ }
162
+ _$ET(e, t) {
163
+ const r = this.constructor.elementProperties.get(e), i = this.constructor._$Eu(e, r);
164
+ if (i !== void 0 && r.reflect === !0) {
165
+ const n = (r.converter?.toAttribute !== void 0 ? r.converter : pe).toAttribute(t, r.type);
166
+ this._$Em = e, n == null ? this.removeAttribute(i) : this.setAttribute(i, n), this._$Em = null;
167
+ }
168
+ }
169
+ _$AK(e, t) {
170
+ const r = this.constructor, i = r._$Eh.get(e);
171
+ if (i !== void 0 && this._$Em !== i) {
172
+ const n = r.getPropertyOptions(i), o = typeof n.converter == "function" ? { fromAttribute: n.converter } : n.converter?.fromAttribute !== void 0 ? n.converter : pe;
173
+ this._$Em = i;
174
+ const l = o.fromAttribute(t, n.type);
175
+ this[i] = l ?? this._$Ej?.get(i) ?? l, this._$Em = null;
176
+ }
177
+ }
178
+ requestUpdate(e, t, r, i = !1, n) {
179
+ if (e !== void 0) {
180
+ const o = this.constructor;
181
+ if (i === !1 && (n = this[e]), r ??= o.getPropertyOptions(e), !((r.hasChanged ?? Le)(n, t) || r.useDefault && r.reflect && n === this._$Ej?.get(e) && !this.hasAttribute(o._$Eu(e, r)))) return;
182
+ this.C(e, t, r);
183
+ }
184
+ this.isUpdatePending === !1 && (this._$ES = this._$EP());
185
+ }
186
+ C(e, t, { useDefault: r, reflect: i, wrapped: n }, o) {
187
+ r && !(this._$Ej ??= /* @__PURE__ */ new Map()).has(e) && (this._$Ej.set(e, o ?? t ?? this[e]), n !== !0 || o !== void 0) || (this._$AL.has(e) || (this.hasUpdated || r || (t = void 0), this._$AL.set(e, t)), i === !0 && this._$Em !== e && (this._$Eq ??= /* @__PURE__ */ new Set()).add(e));
188
+ }
189
+ async _$EP() {
190
+ this.isUpdatePending = !0;
191
+ try {
192
+ await this._$ES;
193
+ } catch (t) {
194
+ Promise.reject(t);
195
+ }
196
+ const e = this.scheduleUpdate();
197
+ return e != null && await e, !this.isUpdatePending;
198
+ }
199
+ scheduleUpdate() {
200
+ return this.performUpdate();
201
+ }
202
+ performUpdate() {
203
+ if (!this.isUpdatePending) return;
204
+ if (!this.hasUpdated) {
205
+ if (this.renderRoot ??= this.createRenderRoot(), this._$Ep) {
206
+ for (const [i, n] of this._$Ep) this[i] = n;
207
+ this._$Ep = void 0;
208
+ }
209
+ const r = this.constructor.elementProperties;
210
+ if (r.size > 0) for (const [i, n] of r) {
211
+ const { wrapped: o } = n, l = this[i];
212
+ o !== !0 || this._$AL.has(i) || l === void 0 || this.C(i, void 0, n, l);
213
+ }
214
+ }
215
+ let e = !1;
216
+ const t = this._$AL;
217
+ try {
218
+ e = this.shouldUpdate(t), e ? (this.willUpdate(t), this._$EO?.forEach((r) => r.hostUpdate?.()), this.update(t)) : this._$EM();
219
+ } catch (r) {
220
+ throw e = !1, this._$EM(), r;
221
+ }
222
+ e && this._$AE(t);
223
+ }
224
+ willUpdate(e) {
225
+ }
226
+ _$AE(e) {
227
+ this._$EO?.forEach((t) => t.hostUpdated?.()), this.hasUpdated || (this.hasUpdated = !0, this.firstUpdated(e)), this.updated(e);
228
+ }
229
+ _$EM() {
230
+ this._$AL = /* @__PURE__ */ new Map(), this.isUpdatePending = !1;
231
+ }
232
+ get updateComplete() {
233
+ return this.getUpdateComplete();
234
+ }
235
+ getUpdateComplete() {
236
+ return this._$ES;
237
+ }
238
+ shouldUpdate(e) {
239
+ return !0;
240
+ }
241
+ update(e) {
242
+ this._$Eq &&= this._$Eq.forEach((t) => this._$ET(t, this[t])), this._$EM();
243
+ }
244
+ updated(e) {
245
+ }
246
+ firstUpdated(e) {
247
+ }
248
+ };
249
+ D.elementStyles = [], D.shadowRootOptions = { mode: "open" }, D[H("elementProperties")] = /* @__PURE__ */ new Map(), D[H("finalized")] = /* @__PURE__ */ new Map(), Dt?.({ ReactiveElement: D }), (Ae.reactiveElementVersions ??= []).push("2.1.2");
250
+ const Pe = globalThis, He = (s) => s, de = Pe.trustedTypes, _e = de ? de.createPolicy("lit-html", { createHTML: (s) => s }) : void 0, pt = "$lit$", N = `lit$${Math.random().toFixed(9).slice(2)}$`, dt = "?" + N, Xt = `<${dt}>`, R = document, _ = () => R.createComment(""), $ = (s) => s === null || typeof s != "object" && typeof s != "function", Ze = Array.isArray, Vt = (s) => Ze(s) || typeof s?.[Symbol.iterator] == "function", ke = `[
251
+ \f\r]`, q = /<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g, $e = /-->/g, et = />/g, P = RegExp(`>|${ke}(?:([^\\s"'>=/]+)(${ke}*=${ke}*(?:[^
252
+ \f\r"'\`<>=]|("|')|))|$)`, "g"), tt = /'/g, st = /"/g, ut = /^(?:script|style|textarea|title)$/i, Ft = (s) => (e, ...t) => ({ _$litType$: s, strings: e, values: t }), f = Ft(1), z = /* @__PURE__ */ Symbol.for("lit-noChange"), b = /* @__PURE__ */ Symbol.for("lit-nothing"), rt = /* @__PURE__ */ new WeakMap(), Z = R.createTreeWalker(R, 129);
253
+ function At(s, e) {
254
+ if (!Ze(s) || !s.hasOwnProperty("raw")) throw Error("invalid template strings array");
255
+ return _e !== void 0 ? _e.createHTML(e) : e;
256
+ }
257
+ const Wt = (s, e) => {
258
+ const t = s.length - 1, r = [];
259
+ let i, n = e === 2 ? "<svg>" : e === 3 ? "<math>" : "", o = q;
260
+ for (let l = 0; l < t; l++) {
261
+ const a = s[l];
262
+ let p, u, h = -1, E = 0;
263
+ for (; E < a.length && (o.lastIndex = E, u = o.exec(a), u !== null); ) E = o.lastIndex, o === q ? u[1] === "!--" ? o = $e : u[1] !== void 0 ? o = et : u[2] !== void 0 ? (ut.test(u[2]) && (i = RegExp("</" + u[2], "g")), o = P) : u[3] !== void 0 && (o = P) : o === P ? u[0] === ">" ? (o = i ?? q, h = -1) : u[1] === void 0 ? h = -2 : (h = o.lastIndex - u[2].length, p = u[1], o = u[3] === void 0 ? P : u[3] === '"' ? st : tt) : o === st || o === tt ? o = P : o === $e || o === et ? o = q : (o = P, i = void 0);
264
+ const U = o === P && s[l + 1].startsWith("/>") ? " " : "";
265
+ n += o === q ? a + Xt : h >= 0 ? (r.push(p), a.slice(0, h) + pt + a.slice(h) + N + U) : a + N + (h === -2 ? l : U);
266
+ }
267
+ return [At(s, n + (s[t] || "<?>") + (e === 2 ? "</svg>" : e === 3 ? "</math>" : "")), r];
268
+ };
269
+ class ee {
270
+ constructor({ strings: e, _$litType$: t }, r) {
271
+ let i;
272
+ this.parts = [];
273
+ let n = 0, o = 0;
274
+ const l = e.length - 1, a = this.parts, [p, u] = Wt(e, t);
275
+ if (this.el = ee.createElement(p, r), Z.currentNode = this.el.content, t === 2 || t === 3) {
276
+ const h = this.el.content.firstChild;
277
+ h.replaceWith(...h.childNodes);
278
+ }
279
+ for (; (i = Z.nextNode()) !== null && a.length < l; ) {
280
+ if (i.nodeType === 1) {
281
+ if (i.hasAttributes()) for (const h of i.getAttributeNames()) if (h.endsWith(pt)) {
282
+ const E = u[o++], U = i.getAttribute(h).split(N), M = /([.?@])?(.*)/.exec(E);
283
+ a.push({ type: 1, index: n, name: M[2], strings: U, ctor: M[1] === "." ? qt : M[1] === "?" ? Gt : M[1] === "@" ? Yt : fe }), i.removeAttribute(h);
284
+ } else h.startsWith(N) && (a.push({ type: 6, index: n }), i.removeAttribute(h));
285
+ if (ut.test(i.tagName)) {
286
+ const h = i.textContent.split(N), E = h.length - 1;
287
+ if (E > 0) {
288
+ i.textContent = de ? de.emptyScript : "";
289
+ for (let U = 0; U < E; U++) i.append(h[U], _()), Z.nextNode(), a.push({ type: 2, index: ++n });
290
+ i.append(h[E], _());
291
+ }
292
+ }
293
+ } else if (i.nodeType === 8) if (i.data === dt) a.push({ type: 2, index: n });
294
+ else {
295
+ let h = -1;
296
+ for (; (h = i.data.indexOf(N, h + 1)) !== -1; ) a.push({ type: 7, index: n }), h += N.length - 1;
297
+ }
298
+ n++;
299
+ }
300
+ }
301
+ static createElement(e, t) {
302
+ const r = R.createElement("template");
303
+ return r.innerHTML = e, r;
304
+ }
305
+ }
306
+ function V(s, e, t = s, r) {
307
+ if (e === z) return e;
308
+ let i = r !== void 0 ? t._$Co?.[r] : t._$Cl;
309
+ const n = $(e) ? void 0 : e._$litDirective$;
310
+ return i?.constructor !== n && (i?._$AO?.(!1), n === void 0 ? i = void 0 : (i = new n(s), i._$AT(s, t, r)), r !== void 0 ? (t._$Co ??= [])[r] = i : t._$Cl = i), i !== void 0 && (e = V(s, i._$AS(s, e.values), i, r)), e;
311
+ }
312
+ class jt {
313
+ constructor(e, t) {
314
+ this._$AV = [], this._$AN = void 0, this._$AD = e, this._$AM = t;
315
+ }
316
+ get parentNode() {
317
+ return this._$AM.parentNode;
318
+ }
319
+ get _$AU() {
320
+ return this._$AM._$AU;
321
+ }
322
+ u(e) {
323
+ const { el: { content: t }, parts: r } = this._$AD, i = (e?.creationScope ?? R).importNode(t, !0);
324
+ Z.currentNode = i;
325
+ let n = Z.nextNode(), o = 0, l = 0, a = r[0];
326
+ for (; a !== void 0; ) {
327
+ if (o === a.index) {
328
+ let p;
329
+ a.type === 2 ? p = new se(n, n.nextSibling, this, e) : a.type === 1 ? p = new a.ctor(n, a.name, a.strings, this, e) : a.type === 6 && (p = new Ht(n, this, e)), this._$AV.push(p), a = r[++l];
330
+ }
331
+ o !== a?.index && (n = Z.nextNode(), o++);
332
+ }
333
+ return Z.currentNode = R, i;
334
+ }
335
+ p(e) {
336
+ let t = 0;
337
+ for (const r of this._$AV) r !== void 0 && (r.strings !== void 0 ? (r._$AI(e, r, t), t += r.strings.length - 2) : r._$AI(e[t])), t++;
338
+ }
339
+ }
340
+ class se {
341
+ get _$AU() {
342
+ return this._$AM?._$AU ?? this._$Cv;
343
+ }
344
+ constructor(e, t, r, i) {
345
+ this.type = 2, this._$AH = b, this._$AN = void 0, this._$AA = e, this._$AB = t, this._$AM = r, this.options = i, this._$Cv = i?.isConnected ?? !0;
346
+ }
347
+ get parentNode() {
348
+ let e = this._$AA.parentNode;
349
+ const t = this._$AM;
350
+ return t !== void 0 && e?.nodeType === 11 && (e = t.parentNode), e;
351
+ }
352
+ get startNode() {
353
+ return this._$AA;
354
+ }
355
+ get endNode() {
356
+ return this._$AB;
357
+ }
358
+ _$AI(e, t = this) {
359
+ e = V(this, e, t), $(e) ? e === b || e == null || e === "" ? (this._$AH !== b && this._$AR(), this._$AH = b) : e !== this._$AH && e !== z && this._(e) : e._$litType$ !== void 0 ? this.$(e) : e.nodeType !== void 0 ? this.T(e) : Vt(e) ? this.k(e) : this._(e);
360
+ }
361
+ O(e) {
362
+ return this._$AA.parentNode.insertBefore(e, this._$AB);
363
+ }
364
+ T(e) {
365
+ this._$AH !== e && (this._$AR(), this._$AH = this.O(e));
366
+ }
367
+ _(e) {
368
+ this._$AH !== b && $(this._$AH) ? this._$AA.nextSibling.data = e : this.T(R.createTextNode(e)), this._$AH = e;
369
+ }
370
+ $(e) {
371
+ const { values: t, _$litType$: r } = e, i = typeof r == "number" ? this._$AC(e) : (r.el === void 0 && (r.el = ee.createElement(At(r.h, r.h[0]), this.options)), r);
372
+ if (this._$AH?._$AD === i) this._$AH.p(t);
373
+ else {
374
+ const n = new jt(i, this), o = n.u(this.options);
375
+ n.p(t), this.T(o), this._$AH = n;
376
+ }
377
+ }
378
+ _$AC(e) {
379
+ let t = rt.get(e.strings);
380
+ return t === void 0 && rt.set(e.strings, t = new ee(e)), t;
381
+ }
382
+ k(e) {
383
+ Ze(this._$AH) || (this._$AH = [], this._$AR());
384
+ const t = this._$AH;
385
+ let r, i = 0;
386
+ for (const n of e) i === t.length ? t.push(r = new se(this.O(_()), this.O(_()), this, this.options)) : r = t[i], r._$AI(n), i++;
387
+ i < t.length && (this._$AR(r && r._$AB.nextSibling, i), t.length = i);
388
+ }
389
+ _$AR(e = this._$AA.nextSibling, t) {
390
+ for (this._$AP?.(!1, !0, t); e !== this._$AB; ) {
391
+ const r = He(e).nextSibling;
392
+ He(e).remove(), e = r;
393
+ }
394
+ }
395
+ setConnected(e) {
396
+ this._$AM === void 0 && (this._$Cv = e, this._$AP?.(e));
397
+ }
398
+ }
399
+ class fe {
400
+ get tagName() {
401
+ return this.element.tagName;
402
+ }
403
+ get _$AU() {
404
+ return this._$AM._$AU;
405
+ }
406
+ constructor(e, t, r, i, n) {
407
+ this.type = 1, this._$AH = b, this._$AN = void 0, this.element = e, this.name = t, this._$AM = i, this.options = n, r.length > 2 || r[0] !== "" || r[1] !== "" ? (this._$AH = Array(r.length - 1).fill(new String()), this.strings = r) : this._$AH = b;
408
+ }
409
+ _$AI(e, t = this, r, i) {
410
+ const n = this.strings;
411
+ let o = !1;
412
+ if (n === void 0) e = V(this, e, t, 0), o = !$(e) || e !== this._$AH && e !== z, o && (this._$AH = e);
413
+ else {
414
+ const l = e;
415
+ let a, p;
416
+ for (e = n[0], a = 0; a < n.length - 1; a++) p = V(this, l[r + a], t, a), p === z && (p = this._$AH[a]), o ||= !$(p) || p !== this._$AH[a], p === b ? e = b : e !== b && (e += (p ?? "") + n[a + 1]), this._$AH[a] = p;
417
+ }
418
+ o && !i && this.j(e);
419
+ }
420
+ j(e) {
421
+ e === b ? this.element.removeAttribute(this.name) : this.element.setAttribute(this.name, e ?? "");
422
+ }
423
+ }
424
+ class qt extends fe {
425
+ constructor() {
426
+ super(...arguments), this.type = 3;
427
+ }
428
+ j(e) {
429
+ this.element[this.name] = e === b ? void 0 : e;
430
+ }
431
+ }
432
+ class Gt extends fe {
433
+ constructor() {
434
+ super(...arguments), this.type = 4;
435
+ }
436
+ j(e) {
437
+ this.element.toggleAttribute(this.name, !!e && e !== b);
438
+ }
439
+ }
440
+ class Yt extends fe {
441
+ constructor(e, t, r, i, n) {
442
+ super(e, t, r, i, n), this.type = 5;
443
+ }
444
+ _$AI(e, t = this) {
445
+ if ((e = V(this, e, t, 0) ?? b) === z) return;
446
+ const r = this._$AH, i = e === b && r !== b || e.capture !== r.capture || e.once !== r.once || e.passive !== r.passive, n = e !== b && (r === b || i);
447
+ i && this.element.removeEventListener(this.name, this, r), n && this.element.addEventListener(this.name, this, e), this._$AH = e;
448
+ }
449
+ handleEvent(e) {
450
+ typeof this._$AH == "function" ? this._$AH.call(this.options?.host ?? this.element, e) : this._$AH.handleEvent(e);
451
+ }
452
+ }
453
+ class Ht {
454
+ constructor(e, t, r) {
455
+ this.element = e, this.type = 6, this._$AN = void 0, this._$AM = t, this.options = r;
456
+ }
457
+ get _$AU() {
458
+ return this._$AM._$AU;
459
+ }
460
+ _$AI(e) {
461
+ V(this, e);
462
+ }
463
+ }
464
+ const _t = Pe.litHtmlPolyfillSupport;
465
+ _t?.(ee, se), (Pe.litHtmlVersions ??= []).push("3.3.2");
466
+ const $t = (s, e, t) => {
467
+ const r = t?.renderBefore ?? e;
468
+ let i = r._$litPart$;
469
+ if (i === void 0) {
470
+ const n = t?.renderBefore ?? null;
471
+ r._$litPart$ = i = new se(e.insertBefore(_(), n), n, void 0, t ?? {});
472
+ }
473
+ return i._$AI(s), i;
474
+ };
475
+ const Re = globalThis;
476
+ let I = class extends D {
477
+ constructor() {
478
+ super(...arguments), this.renderOptions = { host: this }, this._$Do = void 0;
479
+ }
480
+ createRenderRoot() {
481
+ const e = super.createRenderRoot();
482
+ return this.renderOptions.renderBefore ??= e.firstChild, e;
483
+ }
484
+ update(e) {
485
+ const t = this.render();
486
+ this.hasUpdated || (this.renderOptions.isConnected = this.isConnected), super.update(e), this._$Do = $t(t, this.renderRoot, this.renderOptions);
487
+ }
488
+ connectedCallback() {
489
+ super.connectedCallback(), this._$Do?.setConnected(!0);
490
+ }
491
+ disconnectedCallback() {
492
+ super.disconnectedCallback(), this._$Do?.setConnected(!1);
493
+ }
494
+ render() {
495
+ return z;
496
+ }
497
+ };
498
+ I._$litElement$ = !0, I.finalized = !0, Re.litElementHydrateSupport?.({ LitElement: I });
499
+ const es = Re.litElementPolyfillSupport;
500
+ es?.({ LitElement: I });
501
+ (Re.litElementVersions ??= []).push("4.2.2");
502
+ const me = (s) => (e, t) => {
503
+ t !== void 0 ? t.addInitializer(() => {
504
+ customElements.define(s, e);
505
+ }) : customElements.define(s, e);
506
+ };
507
+ const ts = { attribute: !0, type: String, converter: pe, reflect: !1, hasChanged: Le }, ss = (s = ts, e, t) => {
508
+ const { kind: r, metadata: i } = t;
509
+ let n = globalThis.litPropertyMetadata.get(i);
510
+ if (n === void 0 && globalThis.litPropertyMetadata.set(i, n = /* @__PURE__ */ new Map()), r === "setter" && ((s = Object.create(s)).wrapped = !0), n.set(t.name, s), r === "accessor") {
511
+ const { name: o } = t;
512
+ return { set(l) {
513
+ const a = e.get.call(this);
514
+ e.set.call(this, l), this.requestUpdate(o, a, s, !0, l);
515
+ }, init(l) {
516
+ return l !== void 0 && this.C(o, void 0, s, l), l;
517
+ } };
518
+ }
519
+ if (r === "setter") {
520
+ const { name: o } = t;
521
+ return function(l) {
522
+ const a = this[o];
523
+ e.call(this, l), this.requestUpdate(o, a, s, !0, l);
524
+ };
525
+ }
526
+ throw Error("Unsupported decorator location: " + r);
527
+ };
528
+ function d(s) {
529
+ return (e, t) => typeof t == "object" ? ss(s, e, t) : ((r, i, n) => {
530
+ const o = i.hasOwnProperty(n);
531
+ return i.constructor.createProperty(n, r), o ? Object.getOwnPropertyDescriptor(i, n) : void 0;
532
+ })(s, e, t);
533
+ }
534
+ function C(s) {
535
+ return d({ ...s, state: !0, attribute: !1 });
536
+ }
537
+ const rs = (s, e, t) => (t.configurable = !0, t.enumerable = !0, Reflect.decorate && typeof e != "object" && Object.defineProperty(s, e, t), t);
538
+ function is(s, e) {
539
+ return (t, r, i) => {
540
+ const n = (o) => o.renderRoot?.querySelector(s) ?? null;
541
+ return rs(t, r, { get() {
542
+ return n(this);
543
+ } });
544
+ };
545
+ }
546
+ const x = /* @__PURE__ */ Object.create(null);
547
+ x.open = "0";
548
+ x.close = "1";
549
+ x.ping = "2";
550
+ x.pong = "3";
551
+ x.message = "4";
552
+ x.upgrade = "5";
553
+ x.noop = "6";
554
+ const ae = /* @__PURE__ */ Object.create(null);
555
+ Object.keys(x).forEach((s) => {
556
+ ae[x[s]] = s;
557
+ });
558
+ const Ee = { type: "error", data: "parser error" }, ft = typeof Blob == "function" || typeof Blob < "u" && Object.prototype.toString.call(Blob) === "[object BlobConstructor]", mt = typeof ArrayBuffer == "function", yt = (s) => typeof ArrayBuffer.isView == "function" ? ArrayBuffer.isView(s) : s && s.buffer instanceof ArrayBuffer, ze = ({ type: s, data: e }, t, r) => ft && e instanceof Blob ? t ? r(e) : it(e, r) : mt && (e instanceof ArrayBuffer || yt(e)) ? t ? r(e) : it(new Blob([e]), r) : r(x[s] + (e || "")), it = (s, e) => {
559
+ const t = new FileReader();
560
+ return t.onload = function() {
561
+ const r = t.result.split(",")[1];
562
+ e("b" + (r || ""));
563
+ }, t.readAsDataURL(s);
564
+ };
565
+ function nt(s) {
566
+ return s instanceof Uint8Array ? s : s instanceof ArrayBuffer ? new Uint8Array(s) : new Uint8Array(s.buffer, s.byteOffset, s.byteLength);
567
+ }
568
+ let ve;
569
+ function ns(s, e) {
570
+ if (ft && s.data instanceof Blob)
571
+ return s.data.arrayBuffer().then(nt).then(e);
572
+ if (mt && (s.data instanceof ArrayBuffer || yt(s.data)))
573
+ return e(nt(s.data));
574
+ ze(s, !1, (t) => {
575
+ ve || (ve = new TextEncoder()), e(ve.encode(t));
576
+ });
577
+ }
578
+ const ot = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", Y = typeof Uint8Array > "u" ? [] : new Uint8Array(256);
579
+ for (let s = 0; s < ot.length; s++)
580
+ Y[ot.charCodeAt(s)] = s;
581
+ const os = (s) => {
582
+ let e = s.length * 0.75, t = s.length, r, i = 0, n, o, l, a;
583
+ s[s.length - 1] === "=" && (e--, s[s.length - 2] === "=" && e--);
584
+ const p = new ArrayBuffer(e), u = new Uint8Array(p);
585
+ for (r = 0; r < t; r += 4)
586
+ n = Y[s.charCodeAt(r)], o = Y[s.charCodeAt(r + 1)], l = Y[s.charCodeAt(r + 2)], a = Y[s.charCodeAt(r + 3)], u[i++] = n << 2 | o >> 4, u[i++] = (o & 15) << 4 | l >> 2, u[i++] = (l & 3) << 6 | a & 63;
587
+ return p;
588
+ }, as = typeof ArrayBuffer == "function", Me = (s, e) => {
589
+ if (typeof s != "string")
590
+ return {
591
+ type: "message",
592
+ data: gt(s, e)
593
+ };
594
+ const t = s.charAt(0);
595
+ return t === "b" ? {
596
+ type: "message",
597
+ data: ls(s.substring(1), e)
598
+ } : ae[t] ? s.length > 1 ? {
599
+ type: ae[t],
600
+ data: s.substring(1)
601
+ } : {
602
+ type: ae[t]
603
+ } : Ee;
604
+ }, ls = (s, e) => {
605
+ if (as) {
606
+ const t = os(s);
607
+ return gt(t, e);
608
+ } else
609
+ return { base64: !0, data: s };
610
+ }, gt = (s, e) => e === "blob" ? s instanceof Blob ? s : new Blob([s]) : s instanceof ArrayBuffer ? s : s.buffer, kt = "", cs = (s, e) => {
611
+ const t = s.length, r = new Array(t);
612
+ let i = 0;
613
+ s.forEach((n, o) => {
614
+ ze(n, !1, (l) => {
615
+ r[o] = l, ++i === t && e(r.join(kt));
616
+ });
617
+ });
618
+ }, hs = (s, e) => {
619
+ const t = s.split(kt), r = [];
620
+ for (let i = 0; i < t.length; i++) {
621
+ const n = Me(t[i], e);
622
+ if (r.push(n), n.type === "error")
623
+ break;
624
+ }
625
+ return r;
626
+ };
627
+ function ps() {
628
+ return new TransformStream({
629
+ transform(s, e) {
630
+ ns(s, (t) => {
631
+ const r = t.length;
632
+ let i;
633
+ if (r < 126)
634
+ i = new Uint8Array(1), new DataView(i.buffer).setUint8(0, r);
635
+ else if (r < 65536) {
636
+ i = new Uint8Array(3);
637
+ const n = new DataView(i.buffer);
638
+ n.setUint8(0, 126), n.setUint16(1, r);
639
+ } else {
640
+ i = new Uint8Array(9);
641
+ const n = new DataView(i.buffer);
642
+ n.setUint8(0, 127), n.setBigUint64(1, BigInt(r));
643
+ }
644
+ s.data && typeof s.data != "string" && (i[0] |= 128), e.enqueue(i), e.enqueue(t);
645
+ });
646
+ }
647
+ });
648
+ }
649
+ let be;
650
+ function re(s) {
651
+ return s.reduce((e, t) => e + t.length, 0);
652
+ }
653
+ function ie(s, e) {
654
+ if (s[0].length === e)
655
+ return s.shift();
656
+ const t = new Uint8Array(e);
657
+ let r = 0;
658
+ for (let i = 0; i < e; i++)
659
+ t[i] = s[0][r++], r === s[0].length && (s.shift(), r = 0);
660
+ return s.length && r < s[0].length && (s[0] = s[0].slice(r)), t;
661
+ }
662
+ function ds(s, e) {
663
+ be || (be = new TextDecoder());
664
+ const t = [];
665
+ let r = 0, i = -1, n = !1;
666
+ return new TransformStream({
667
+ transform(o, l) {
668
+ for (t.push(o); ; ) {
669
+ if (r === 0) {
670
+ if (re(t) < 1)
671
+ break;
672
+ const a = ie(t, 1);
673
+ n = (a[0] & 128) === 128, i = a[0] & 127, i < 126 ? r = 3 : i === 126 ? r = 1 : r = 2;
674
+ } else if (r === 1) {
675
+ if (re(t) < 2)
676
+ break;
677
+ const a = ie(t, 2);
678
+ i = new DataView(a.buffer, a.byteOffset, a.length).getUint16(0), r = 3;
679
+ } else if (r === 2) {
680
+ if (re(t) < 8)
681
+ break;
682
+ const a = ie(t, 8), p = new DataView(a.buffer, a.byteOffset, a.length), u = p.getUint32(0);
683
+ if (u > Math.pow(2, 21) - 1) {
684
+ l.enqueue(Ee);
685
+ break;
686
+ }
687
+ i = u * Math.pow(2, 32) + p.getUint32(4), r = 3;
688
+ } else {
689
+ if (re(t) < i)
690
+ break;
691
+ const a = ie(t, i);
692
+ l.enqueue(Me(n ? a : be.decode(a), e)), r = 0;
693
+ }
694
+ if (i === 0 || i > s) {
695
+ l.enqueue(Ee);
696
+ break;
697
+ }
698
+ }
699
+ }
700
+ });
701
+ }
702
+ const vt = 4;
703
+ function S(s) {
704
+ if (s) return us(s);
705
+ }
706
+ function us(s) {
707
+ for (var e in S.prototype)
708
+ s[e] = S.prototype[e];
709
+ return s;
710
+ }
711
+ S.prototype.on = S.prototype.addEventListener = function(s, e) {
712
+ return this._callbacks = this._callbacks || {}, (this._callbacks["$" + s] = this._callbacks["$" + s] || []).push(e), this;
713
+ };
714
+ S.prototype.once = function(s, e) {
715
+ function t() {
716
+ this.off(s, t), e.apply(this, arguments);
717
+ }
718
+ return t.fn = e, this.on(s, t), this;
719
+ };
720
+ S.prototype.off = S.prototype.removeListener = S.prototype.removeAllListeners = S.prototype.removeEventListener = function(s, e) {
721
+ if (this._callbacks = this._callbacks || {}, arguments.length == 0)
722
+ return this._callbacks = {}, this;
723
+ var t = this._callbacks["$" + s];
724
+ if (!t) return this;
725
+ if (arguments.length == 1)
726
+ return delete this._callbacks["$" + s], this;
727
+ for (var r, i = 0; i < t.length; i++)
728
+ if (r = t[i], r === e || r.fn === e) {
729
+ t.splice(i, 1);
730
+ break;
731
+ }
732
+ return t.length === 0 && delete this._callbacks["$" + s], this;
733
+ };
734
+ S.prototype.emit = function(s) {
735
+ this._callbacks = this._callbacks || {};
736
+ for (var e = new Array(arguments.length - 1), t = this._callbacks["$" + s], r = 1; r < arguments.length; r++)
737
+ e[r - 1] = arguments[r];
738
+ if (t) {
739
+ t = t.slice(0);
740
+ for (var r = 0, i = t.length; r < i; ++r)
741
+ t[r].apply(this, e);
742
+ }
743
+ return this;
744
+ };
745
+ S.prototype.emitReserved = S.prototype.emit;
746
+ S.prototype.listeners = function(s) {
747
+ return this._callbacks = this._callbacks || {}, this._callbacks["$" + s] || [];
748
+ };
749
+ S.prototype.hasListeners = function(s) {
750
+ return !!this.listeners(s).length;
751
+ };
752
+ const ye = typeof Promise == "function" && typeof Promise.resolve == "function" ? (e) => Promise.resolve().then(e) : (e, t) => t(e, 0), w = typeof self < "u" ? self : typeof window < "u" ? window : Function("return this")(), As = "arraybuffer";
753
+ function bt(s, ...e) {
754
+ return e.reduce((t, r) => (s.hasOwnProperty(r) && (t[r] = s[r]), t), {});
755
+ }
756
+ const fs = w.setTimeout, ms = w.clearTimeout;
757
+ function ge(s, e) {
758
+ e.useNativeTimers ? (s.setTimeoutFn = fs.bind(w), s.clearTimeoutFn = ms.bind(w)) : (s.setTimeoutFn = w.setTimeout.bind(w), s.clearTimeoutFn = w.clearTimeout.bind(w));
759
+ }
760
+ const ys = 1.33;
761
+ function gs(s) {
762
+ return typeof s == "string" ? ks(s) : Math.ceil((s.byteLength || s.size) * ys);
763
+ }
764
+ function ks(s) {
765
+ let e = 0, t = 0;
766
+ for (let r = 0, i = s.length; r < i; r++)
767
+ e = s.charCodeAt(r), e < 128 ? t += 1 : e < 2048 ? t += 2 : e < 55296 || e >= 57344 ? t += 3 : (r++, t += 4);
768
+ return t;
769
+ }
770
+ function St() {
771
+ return Date.now().toString(36).substring(3) + Math.random().toString(36).substring(2, 5);
772
+ }
773
+ function vs(s) {
774
+ let e = "";
775
+ for (let t in s)
776
+ s.hasOwnProperty(t) && (e.length && (e += "&"), e += encodeURIComponent(t) + "=" + encodeURIComponent(s[t]));
777
+ return e;
778
+ }
779
+ function bs(s) {
780
+ let e = {}, t = s.split("&");
781
+ for (let r = 0, i = t.length; r < i; r++) {
782
+ let n = t[r].split("=");
783
+ e[decodeURIComponent(n[0])] = decodeURIComponent(n[1]);
784
+ }
785
+ return e;
786
+ }
787
+ class Ss extends Error {
788
+ constructor(e, t, r) {
789
+ super(e), this.description = t, this.context = r, this.type = "TransportError";
790
+ }
791
+ }
792
+ class De extends S {
793
+ /**
794
+ * Transport abstract constructor.
795
+ *
796
+ * @param {Object} opts - options
797
+ * @protected
798
+ */
799
+ constructor(e) {
800
+ super(), this.writable = !1, ge(this, e), this.opts = e, this.query = e.query, this.socket = e.socket, this.supportsBinary = !e.forceBase64;
801
+ }
802
+ /**
803
+ * Emits an error.
804
+ *
805
+ * @param {String} reason
806
+ * @param description
807
+ * @param context - the error context
808
+ * @return {Transport} for chaining
809
+ * @protected
810
+ */
811
+ onError(e, t, r) {
812
+ return super.emitReserved("error", new Ss(e, t, r)), this;
813
+ }
814
+ /**
815
+ * Opens the transport.
816
+ */
817
+ open() {
818
+ return this.readyState = "opening", this.doOpen(), this;
819
+ }
820
+ /**
821
+ * Closes the transport.
822
+ */
823
+ close() {
824
+ return (this.readyState === "opening" || this.readyState === "open") && (this.doClose(), this.onClose()), this;
825
+ }
826
+ /**
827
+ * Sends multiple packets.
828
+ *
829
+ * @param {Array} packets
830
+ */
831
+ send(e) {
832
+ this.readyState === "open" && this.write(e);
833
+ }
834
+ /**
835
+ * Called upon open
836
+ *
837
+ * @protected
838
+ */
839
+ onOpen() {
840
+ this.readyState = "open", this.writable = !0, super.emitReserved("open");
841
+ }
842
+ /**
843
+ * Called with data.
844
+ *
845
+ * @param {String} data
846
+ * @protected
847
+ */
848
+ onData(e) {
849
+ const t = Me(e, this.socket.binaryType);
850
+ this.onPacket(t);
851
+ }
852
+ /**
853
+ * Called with a decoded packet.
854
+ *
855
+ * @protected
856
+ */
857
+ onPacket(e) {
858
+ super.emitReserved("packet", e);
859
+ }
860
+ /**
861
+ * Called upon close.
862
+ *
863
+ * @protected
864
+ */
865
+ onClose(e) {
866
+ this.readyState = "closed", super.emitReserved("close", e);
867
+ }
868
+ /**
869
+ * Pauses the transport, in order not to lose packets during an upgrade.
870
+ *
871
+ * @param onPause
872
+ */
873
+ pause(e) {
874
+ }
875
+ createUri(e, t = {}) {
876
+ return e + "://" + this._hostname() + this._port() + this.opts.path + this._query(t);
877
+ }
878
+ _hostname() {
879
+ const e = this.opts.hostname;
880
+ return e.indexOf(":") === -1 ? e : "[" + e + "]";
881
+ }
882
+ _port() {
883
+ return this.opts.port && (this.opts.secure && Number(this.opts.port) !== 443 || !this.opts.secure && Number(this.opts.port) !== 80) ? ":" + this.opts.port : "";
884
+ }
885
+ _query(e) {
886
+ const t = vs(e);
887
+ return t.length ? "?" + t : "";
888
+ }
889
+ }
890
+ class Cs extends De {
891
+ constructor() {
892
+ super(...arguments), this._polling = !1;
893
+ }
894
+ get name() {
895
+ return "polling";
896
+ }
897
+ /**
898
+ * Opens the socket (triggers polling). We write a PING message to determine
899
+ * when the transport is open.
900
+ *
901
+ * @protected
902
+ */
903
+ doOpen() {
904
+ this._poll();
905
+ }
906
+ /**
907
+ * Pauses polling.
908
+ *
909
+ * @param {Function} onPause - callback upon buffers are flushed and transport is paused
910
+ * @package
911
+ */
912
+ pause(e) {
913
+ this.readyState = "pausing";
914
+ const t = () => {
915
+ this.readyState = "paused", e();
916
+ };
917
+ if (this._polling || !this.writable) {
918
+ let r = 0;
919
+ this._polling && (r++, this.once("pollComplete", function() {
920
+ --r || t();
921
+ })), this.writable || (r++, this.once("drain", function() {
922
+ --r || t();
923
+ }));
924
+ } else
925
+ t();
926
+ }
927
+ /**
928
+ * Starts polling cycle.
929
+ *
930
+ * @private
931
+ */
932
+ _poll() {
933
+ this._polling = !0, this.doPoll(), this.emitReserved("poll");
934
+ }
935
+ /**
936
+ * Overloads onData to detect payloads.
937
+ *
938
+ * @protected
939
+ */
940
+ onData(e) {
941
+ const t = (r) => {
942
+ if (this.readyState === "opening" && r.type === "open" && this.onOpen(), r.type === "close")
943
+ return this.onClose({ description: "transport closed by the server" }), !1;
944
+ this.onPacket(r);
945
+ };
946
+ hs(e, this.socket.binaryType).forEach(t), this.readyState !== "closed" && (this._polling = !1, this.emitReserved("pollComplete"), this.readyState === "open" && this._poll());
947
+ }
948
+ /**
949
+ * For polling, send a close packet.
950
+ *
951
+ * @protected
952
+ */
953
+ doClose() {
954
+ const e = () => {
955
+ this.write([{ type: "close" }]);
956
+ };
957
+ this.readyState === "open" ? e() : this.once("open", e);
958
+ }
959
+ /**
960
+ * Writes a packets payload.
961
+ *
962
+ * @param {Array} packets - data packets
963
+ * @protected
964
+ */
965
+ write(e) {
966
+ this.writable = !1, cs(e, (t) => {
967
+ this.doWrite(t, () => {
968
+ this.writable = !0, this.emitReserved("drain");
969
+ });
970
+ });
971
+ }
972
+ /**
973
+ * Generates uri for connection.
974
+ *
975
+ * @private
976
+ */
977
+ uri() {
978
+ const e = this.opts.secure ? "https" : "http", t = this.query || {};
979
+ return this.opts.timestampRequests !== !1 && (t[this.opts.timestampParam] = St()), !this.supportsBinary && !t.sid && (t.b64 = 1), this.createUri(e, t);
980
+ }
981
+ }
982
+ let Ct = !1;
983
+ try {
984
+ Ct = typeof XMLHttpRequest < "u" && "withCredentials" in new XMLHttpRequest();
985
+ } catch {
986
+ }
987
+ const Es = Ct;
988
+ function Js() {
989
+ }
990
+ class ws extends Cs {
991
+ /**
992
+ * XHR Polling constructor.
993
+ *
994
+ * @param {Object} opts
995
+ * @package
996
+ */
997
+ constructor(e) {
998
+ if (super(e), typeof location < "u") {
999
+ const t = location.protocol === "https:";
1000
+ let r = location.port;
1001
+ r || (r = t ? "443" : "80"), this.xd = typeof location < "u" && e.hostname !== location.hostname || r !== e.port;
1002
+ }
1003
+ }
1004
+ /**
1005
+ * Sends data.
1006
+ *
1007
+ * @param {String} data to send.
1008
+ * @param {Function} called upon flush.
1009
+ * @private
1010
+ */
1011
+ doWrite(e, t) {
1012
+ const r = this.request({
1013
+ method: "POST",
1014
+ data: e
1015
+ });
1016
+ r.on("success", t), r.on("error", (i, n) => {
1017
+ this.onError("xhr post error", i, n);
1018
+ });
1019
+ }
1020
+ /**
1021
+ * Starts a poll cycle.
1022
+ *
1023
+ * @private
1024
+ */
1025
+ doPoll() {
1026
+ const e = this.request();
1027
+ e.on("data", this.onData.bind(this)), e.on("error", (t, r) => {
1028
+ this.onError("xhr poll error", t, r);
1029
+ }), this.pollXhr = e;
1030
+ }
1031
+ }
1032
+ class O extends S {
1033
+ /**
1034
+ * Request constructor
1035
+ *
1036
+ * @param {Object} options
1037
+ * @package
1038
+ */
1039
+ constructor(e, t, r) {
1040
+ super(), this.createRequest = e, ge(this, r), this._opts = r, this._method = r.method || "GET", this._uri = t, this._data = r.data !== void 0 ? r.data : null, this._create();
1041
+ }
1042
+ /**
1043
+ * Creates the XHR object and sends the request.
1044
+ *
1045
+ * @private
1046
+ */
1047
+ _create() {
1048
+ var e;
1049
+ const t = bt(this._opts, "agent", "pfx", "key", "passphrase", "cert", "ca", "ciphers", "rejectUnauthorized", "autoUnref");
1050
+ t.xdomain = !!this._opts.xd;
1051
+ const r = this._xhr = this.createRequest(t);
1052
+ try {
1053
+ r.open(this._method, this._uri, !0);
1054
+ try {
1055
+ if (this._opts.extraHeaders) {
1056
+ r.setDisableHeaderCheck && r.setDisableHeaderCheck(!0);
1057
+ for (let i in this._opts.extraHeaders)
1058
+ this._opts.extraHeaders.hasOwnProperty(i) && r.setRequestHeader(i, this._opts.extraHeaders[i]);
1059
+ }
1060
+ } catch {
1061
+ }
1062
+ if (this._method === "POST")
1063
+ try {
1064
+ r.setRequestHeader("Content-type", "text/plain;charset=UTF-8");
1065
+ } catch {
1066
+ }
1067
+ try {
1068
+ r.setRequestHeader("Accept", "*/*");
1069
+ } catch {
1070
+ }
1071
+ (e = this._opts.cookieJar) === null || e === void 0 || e.addCookies(r), "withCredentials" in r && (r.withCredentials = this._opts.withCredentials), this._opts.requestTimeout && (r.timeout = this._opts.requestTimeout), r.onreadystatechange = () => {
1072
+ var i;
1073
+ r.readyState === 3 && ((i = this._opts.cookieJar) === null || i === void 0 || i.parseCookies(
1074
+ // @ts-ignore
1075
+ r.getResponseHeader("set-cookie")
1076
+ )), r.readyState === 4 && (r.status === 200 || r.status === 1223 ? this._onLoad() : this.setTimeoutFn(() => {
1077
+ this._onError(typeof r.status == "number" ? r.status : 0);
1078
+ }, 0));
1079
+ }, r.send(this._data);
1080
+ } catch (i) {
1081
+ this.setTimeoutFn(() => {
1082
+ this._onError(i);
1083
+ }, 0);
1084
+ return;
1085
+ }
1086
+ typeof document < "u" && (this._index = O.requestsCount++, O.requests[this._index] = this);
1087
+ }
1088
+ /**
1089
+ * Called upon error.
1090
+ *
1091
+ * @private
1092
+ */
1093
+ _onError(e) {
1094
+ this.emitReserved("error", e, this._xhr), this._cleanup(!0);
1095
+ }
1096
+ /**
1097
+ * Cleans up house.
1098
+ *
1099
+ * @private
1100
+ */
1101
+ _cleanup(e) {
1102
+ if (!(typeof this._xhr > "u" || this._xhr === null)) {
1103
+ if (this._xhr.onreadystatechange = Js, e)
1104
+ try {
1105
+ this._xhr.abort();
1106
+ } catch {
1107
+ }
1108
+ typeof document < "u" && delete O.requests[this._index], this._xhr = null;
1109
+ }
1110
+ }
1111
+ /**
1112
+ * Called upon load.
1113
+ *
1114
+ * @private
1115
+ */
1116
+ _onLoad() {
1117
+ const e = this._xhr.responseText;
1118
+ e !== null && (this.emitReserved("data", e), this.emitReserved("success"), this._cleanup());
1119
+ }
1120
+ /**
1121
+ * Aborts the request.
1122
+ *
1123
+ * @package
1124
+ */
1125
+ abort() {
1126
+ this._cleanup();
1127
+ }
1128
+ }
1129
+ O.requestsCount = 0;
1130
+ O.requests = {};
1131
+ if (typeof document < "u") {
1132
+ if (typeof attachEvent == "function")
1133
+ attachEvent("onunload", at);
1134
+ else if (typeof addEventListener == "function") {
1135
+ const s = "onpagehide" in w ? "pagehide" : "unload";
1136
+ addEventListener(s, at, !1);
1137
+ }
1138
+ }
1139
+ function at() {
1140
+ for (let s in O.requests)
1141
+ O.requests.hasOwnProperty(s) && O.requests[s].abort();
1142
+ }
1143
+ const Ks = (function() {
1144
+ const s = Et({
1145
+ xdomain: !1
1146
+ });
1147
+ return s && s.responseType !== null;
1148
+ })();
1149
+ class Ts extends ws {
1150
+ constructor(e) {
1151
+ super(e);
1152
+ const t = e && e.forceBase64;
1153
+ this.supportsBinary = Ks && !t;
1154
+ }
1155
+ request(e = {}) {
1156
+ return Object.assign(e, { xd: this.xd }, this.opts), new O(Et, this.uri(), e);
1157
+ }
1158
+ }
1159
+ function Et(s) {
1160
+ const e = s.xdomain;
1161
+ try {
1162
+ if (typeof XMLHttpRequest < "u" && (!e || Es))
1163
+ return new XMLHttpRequest();
1164
+ } catch {
1165
+ }
1166
+ if (!e)
1167
+ try {
1168
+ return new w[["Active"].concat("Object").join("X")]("Microsoft.XMLHTTP");
1169
+ } catch {
1170
+ }
1171
+ }
1172
+ const Jt = typeof navigator < "u" && typeof navigator.product == "string" && navigator.product.toLowerCase() === "reactnative";
1173
+ class Os extends De {
1174
+ get name() {
1175
+ return "websocket";
1176
+ }
1177
+ doOpen() {
1178
+ const e = this.uri(), t = this.opts.protocols, r = Jt ? {} : bt(this.opts, "agent", "perMessageDeflate", "pfx", "key", "passphrase", "cert", "ca", "ciphers", "rejectUnauthorized", "localAddress", "protocolVersion", "origin", "maxPayload", "family", "checkServerIdentity");
1179
+ this.opts.extraHeaders && (r.headers = this.opts.extraHeaders);
1180
+ try {
1181
+ this.ws = this.createSocket(e, t, r);
1182
+ } catch (i) {
1183
+ return this.emitReserved("error", i);
1184
+ }
1185
+ this.ws.binaryType = this.socket.binaryType, this.addEventListeners();
1186
+ }
1187
+ /**
1188
+ * Adds event listeners to the socket
1189
+ *
1190
+ * @private
1191
+ */
1192
+ addEventListeners() {
1193
+ this.ws.onopen = () => {
1194
+ this.opts.autoUnref && this.ws._socket.unref(), this.onOpen();
1195
+ }, this.ws.onclose = (e) => this.onClose({
1196
+ description: "websocket connection closed",
1197
+ context: e
1198
+ }), this.ws.onmessage = (e) => this.onData(e.data), this.ws.onerror = (e) => this.onError("websocket error", e);
1199
+ }
1200
+ write(e) {
1201
+ this.writable = !1;
1202
+ for (let t = 0; t < e.length; t++) {
1203
+ const r = e[t], i = t === e.length - 1;
1204
+ ze(r, this.supportsBinary, (n) => {
1205
+ try {
1206
+ this.doWrite(r, n);
1207
+ } catch {
1208
+ }
1209
+ i && ye(() => {
1210
+ this.writable = !0, this.emitReserved("drain");
1211
+ }, this.setTimeoutFn);
1212
+ });
1213
+ }
1214
+ }
1215
+ doClose() {
1216
+ typeof this.ws < "u" && (this.ws.onerror = () => {
1217
+ }, this.ws.close(), this.ws = null);
1218
+ }
1219
+ /**
1220
+ * Generates uri for connection.
1221
+ *
1222
+ * @private
1223
+ */
1224
+ uri() {
1225
+ const e = this.opts.secure ? "wss" : "ws", t = this.query || {};
1226
+ return this.opts.timestampRequests && (t[this.opts.timestampParam] = St()), this.supportsBinary || (t.b64 = 1), this.createUri(e, t);
1227
+ }
1228
+ }
1229
+ const Se = w.WebSocket || w.MozWebSocket;
1230
+ class xs extends Os {
1231
+ createSocket(e, t, r) {
1232
+ return Jt ? new Se(e, t, r) : t ? new Se(e, t) : new Se(e);
1233
+ }
1234
+ doWrite(e, t) {
1235
+ this.ws.send(t);
1236
+ }
1237
+ }
1238
+ class Us extends De {
1239
+ get name() {
1240
+ return "webtransport";
1241
+ }
1242
+ doOpen() {
1243
+ try {
1244
+ this._transport = new WebTransport(this.createUri("https"), this.opts.transportOptions[this.name]);
1245
+ } catch (e) {
1246
+ return this.emitReserved("error", e);
1247
+ }
1248
+ this._transport.closed.then(() => {
1249
+ this.onClose();
1250
+ }).catch((e) => {
1251
+ this.onError("webtransport error", e);
1252
+ }), this._transport.ready.then(() => {
1253
+ this._transport.createBidirectionalStream().then((e) => {
1254
+ const t = ds(Number.MAX_SAFE_INTEGER, this.socket.binaryType), r = e.readable.pipeThrough(t).getReader(), i = ps();
1255
+ i.readable.pipeTo(e.writable), this._writer = i.writable.getWriter();
1256
+ const n = () => {
1257
+ r.read().then(({ done: l, value: a }) => {
1258
+ l || (this.onPacket(a), n());
1259
+ }).catch((l) => {
1260
+ });
1261
+ };
1262
+ n();
1263
+ const o = { type: "open" };
1264
+ this.query.sid && (o.data = `{"sid":"${this.query.sid}"}`), this._writer.write(o).then(() => this.onOpen());
1265
+ });
1266
+ });
1267
+ }
1268
+ write(e) {
1269
+ this.writable = !1;
1270
+ for (let t = 0; t < e.length; t++) {
1271
+ const r = e[t], i = t === e.length - 1;
1272
+ this._writer.write(r).then(() => {
1273
+ i && ye(() => {
1274
+ this.writable = !0, this.emitReserved("drain");
1275
+ }, this.setTimeoutFn);
1276
+ });
1277
+ }
1278
+ }
1279
+ doClose() {
1280
+ var e;
1281
+ (e = this._transport) === null || e === void 0 || e.close();
1282
+ }
1283
+ }
1284
+ const Bs = {
1285
+ websocket: xs,
1286
+ webtransport: Us,
1287
+ polling: Ts
1288
+ }, Ns = /^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/, Is = [
1289
+ "source",
1290
+ "protocol",
1291
+ "authority",
1292
+ "userInfo",
1293
+ "user",
1294
+ "password",
1295
+ "host",
1296
+ "port",
1297
+ "relative",
1298
+ "path",
1299
+ "directory",
1300
+ "file",
1301
+ "query",
1302
+ "anchor"
1303
+ ];
1304
+ function Je(s) {
1305
+ if (s.length > 8e3)
1306
+ throw "URI too long";
1307
+ const e = s, t = s.indexOf("["), r = s.indexOf("]");
1308
+ t != -1 && r != -1 && (s = s.substring(0, t) + s.substring(t, r).replace(/:/g, ";") + s.substring(r, s.length));
1309
+ let i = Ns.exec(s || ""), n = {}, o = 14;
1310
+ for (; o--; )
1311
+ n[Is[o]] = i[o] || "";
1312
+ return t != -1 && r != -1 && (n.source = e, n.host = n.host.substring(1, n.host.length - 1).replace(/;/g, ":"), n.authority = n.authority.replace("[", "").replace("]", "").replace(/;/g, ":"), n.ipv6uri = !0), n.pathNames = Qs(n, n.path), n.queryKey = Ls(n, n.query), n;
1313
+ }
1314
+ function Qs(s, e) {
1315
+ const t = /\/{2,9}/g, r = e.replace(t, "/").split("/");
1316
+ return (e.slice(0, 1) == "/" || e.length === 0) && r.splice(0, 1), e.slice(-1) == "/" && r.splice(r.length - 1, 1), r;
1317
+ }
1318
+ function Ls(s, e) {
1319
+ const t = {};
1320
+ return e.replace(/(?:^|&)([^&=]*)=?([^&]*)/g, function(r, i, n) {
1321
+ i && (t[i] = n);
1322
+ }), t;
1323
+ }
1324
+ const we = typeof addEventListener == "function" && typeof removeEventListener == "function", le = [];
1325
+ we && addEventListener("offline", () => {
1326
+ le.forEach((s) => s());
1327
+ }, !1);
1328
+ class Q extends S {
1329
+ /**
1330
+ * Socket constructor.
1331
+ *
1332
+ * @param {String|Object} uri - uri or options
1333
+ * @param {Object} opts - options
1334
+ */
1335
+ constructor(e, t) {
1336
+ if (super(), this.binaryType = As, this.writeBuffer = [], this._prevBufferLen = 0, this._pingInterval = -1, this._pingTimeout = -1, this._maxPayload = -1, this._pingTimeoutTime = 1 / 0, e && typeof e == "object" && (t = e, e = null), e) {
1337
+ const r = Je(e);
1338
+ t.hostname = r.host, t.secure = r.protocol === "https" || r.protocol === "wss", t.port = r.port, r.query && (t.query = r.query);
1339
+ } else t.host && (t.hostname = Je(t.host).host);
1340
+ ge(this, t), this.secure = t.secure != null ? t.secure : typeof location < "u" && location.protocol === "https:", t.hostname && !t.port && (t.port = this.secure ? "443" : "80"), this.hostname = t.hostname || (typeof location < "u" ? location.hostname : "localhost"), this.port = t.port || (typeof location < "u" && location.port ? location.port : this.secure ? "443" : "80"), this.transports = [], this._transportsByName = {}, t.transports.forEach((r) => {
1341
+ const i = r.prototype.name;
1342
+ this.transports.push(i), this._transportsByName[i] = r;
1343
+ }), this.opts = Object.assign({
1344
+ path: "/engine.io",
1345
+ agent: !1,
1346
+ withCredentials: !1,
1347
+ upgrade: !0,
1348
+ timestampParam: "t",
1349
+ rememberUpgrade: !1,
1350
+ addTrailingSlash: !0,
1351
+ rejectUnauthorized: !0,
1352
+ perMessageDeflate: {
1353
+ threshold: 1024
1354
+ },
1355
+ transportOptions: {},
1356
+ closeOnBeforeunload: !1
1357
+ }, t), this.opts.path = this.opts.path.replace(/\/$/, "") + (this.opts.addTrailingSlash ? "/" : ""), typeof this.opts.query == "string" && (this.opts.query = bs(this.opts.query)), we && (this.opts.closeOnBeforeunload && (this._beforeunloadEventListener = () => {
1358
+ this.transport && (this.transport.removeAllListeners(), this.transport.close());
1359
+ }, addEventListener("beforeunload", this._beforeunloadEventListener, !1)), this.hostname !== "localhost" && (this._offlineEventListener = () => {
1360
+ this._onClose("transport close", {
1361
+ description: "network connection lost"
1362
+ });
1363
+ }, le.push(this._offlineEventListener))), this.opts.withCredentials && (this._cookieJar = void 0), this._open();
1364
+ }
1365
+ /**
1366
+ * Creates transport of the given type.
1367
+ *
1368
+ * @param {String} name - transport name
1369
+ * @return {Transport}
1370
+ * @private
1371
+ */
1372
+ createTransport(e) {
1373
+ const t = Object.assign({}, this.opts.query);
1374
+ t.EIO = vt, t.transport = e, this.id && (t.sid = this.id);
1375
+ const r = Object.assign({}, this.opts, {
1376
+ query: t,
1377
+ socket: this,
1378
+ hostname: this.hostname,
1379
+ secure: this.secure,
1380
+ port: this.port
1381
+ }, this.opts.transportOptions[e]);
1382
+ return new this._transportsByName[e](r);
1383
+ }
1384
+ /**
1385
+ * Initializes transport to use and starts probe.
1386
+ *
1387
+ * @private
1388
+ */
1389
+ _open() {
1390
+ if (this.transports.length === 0) {
1391
+ this.setTimeoutFn(() => {
1392
+ this.emitReserved("error", "No transports available");
1393
+ }, 0);
1394
+ return;
1395
+ }
1396
+ const e = this.opts.rememberUpgrade && Q.priorWebsocketSuccess && this.transports.indexOf("websocket") !== -1 ? "websocket" : this.transports[0];
1397
+ this.readyState = "opening";
1398
+ const t = this.createTransport(e);
1399
+ t.open(), this.setTransport(t);
1400
+ }
1401
+ /**
1402
+ * Sets the current transport. Disables the existing one (if any).
1403
+ *
1404
+ * @private
1405
+ */
1406
+ setTransport(e) {
1407
+ this.transport && this.transport.removeAllListeners(), this.transport = e, e.on("drain", this._onDrain.bind(this)).on("packet", this._onPacket.bind(this)).on("error", this._onError.bind(this)).on("close", (t) => this._onClose("transport close", t));
1408
+ }
1409
+ /**
1410
+ * Called when connection is deemed open.
1411
+ *
1412
+ * @private
1413
+ */
1414
+ onOpen() {
1415
+ this.readyState = "open", Q.priorWebsocketSuccess = this.transport.name === "websocket", this.emitReserved("open"), this.flush();
1416
+ }
1417
+ /**
1418
+ * Handles a packet.
1419
+ *
1420
+ * @private
1421
+ */
1422
+ _onPacket(e) {
1423
+ if (this.readyState === "opening" || this.readyState === "open" || this.readyState === "closing")
1424
+ switch (this.emitReserved("packet", e), this.emitReserved("heartbeat"), e.type) {
1425
+ case "open":
1426
+ this.onHandshake(JSON.parse(e.data));
1427
+ break;
1428
+ case "ping":
1429
+ this._sendPacket("pong"), this.emitReserved("ping"), this.emitReserved("pong"), this._resetPingTimeout();
1430
+ break;
1431
+ case "error":
1432
+ const t = new Error("server error");
1433
+ t.code = e.data, this._onError(t);
1434
+ break;
1435
+ case "message":
1436
+ this.emitReserved("data", e.data), this.emitReserved("message", e.data);
1437
+ break;
1438
+ }
1439
+ }
1440
+ /**
1441
+ * Called upon handshake completion.
1442
+ *
1443
+ * @param {Object} data - handshake obj
1444
+ * @private
1445
+ */
1446
+ onHandshake(e) {
1447
+ this.emitReserved("handshake", e), this.id = e.sid, this.transport.query.sid = e.sid, this._pingInterval = e.pingInterval, this._pingTimeout = e.pingTimeout, this._maxPayload = e.maxPayload, this.onOpen(), this.readyState !== "closed" && this._resetPingTimeout();
1448
+ }
1449
+ /**
1450
+ * Sets and resets ping timeout timer based on server pings.
1451
+ *
1452
+ * @private
1453
+ */
1454
+ _resetPingTimeout() {
1455
+ this.clearTimeoutFn(this._pingTimeoutTimer);
1456
+ const e = this._pingInterval + this._pingTimeout;
1457
+ this._pingTimeoutTime = Date.now() + e, this._pingTimeoutTimer = this.setTimeoutFn(() => {
1458
+ this._onClose("ping timeout");
1459
+ }, e), this.opts.autoUnref && this._pingTimeoutTimer.unref();
1460
+ }
1461
+ /**
1462
+ * Called on `drain` event
1463
+ *
1464
+ * @private
1465
+ */
1466
+ _onDrain() {
1467
+ this.writeBuffer.splice(0, this._prevBufferLen), this._prevBufferLen = 0, this.writeBuffer.length === 0 ? this.emitReserved("drain") : this.flush();
1468
+ }
1469
+ /**
1470
+ * Flush write buffers.
1471
+ *
1472
+ * @private
1473
+ */
1474
+ flush() {
1475
+ if (this.readyState !== "closed" && this.transport.writable && !this.upgrading && this.writeBuffer.length) {
1476
+ const e = this._getWritablePackets();
1477
+ this.transport.send(e), this._prevBufferLen = e.length, this.emitReserved("flush");
1478
+ }
1479
+ }
1480
+ /**
1481
+ * Ensure the encoded size of the writeBuffer is below the maxPayload value sent by the server (only for HTTP
1482
+ * long-polling)
1483
+ *
1484
+ * @private
1485
+ */
1486
+ _getWritablePackets() {
1487
+ if (!(this._maxPayload && this.transport.name === "polling" && this.writeBuffer.length > 1))
1488
+ return this.writeBuffer;
1489
+ let t = 1;
1490
+ for (let r = 0; r < this.writeBuffer.length; r++) {
1491
+ const i = this.writeBuffer[r].data;
1492
+ if (i && (t += gs(i)), r > 0 && t > this._maxPayload)
1493
+ return this.writeBuffer.slice(0, r);
1494
+ t += 2;
1495
+ }
1496
+ return this.writeBuffer;
1497
+ }
1498
+ /**
1499
+ * Checks whether the heartbeat timer has expired but the socket has not yet been notified.
1500
+ *
1501
+ * Note: this method is private for now because it does not really fit the WebSocket API, but if we put it in the
1502
+ * `write()` method then the message would not be buffered by the Socket.IO client.
1503
+ *
1504
+ * @return {boolean}
1505
+ * @private
1506
+ */
1507
+ /* private */
1508
+ _hasPingExpired() {
1509
+ if (!this._pingTimeoutTime)
1510
+ return !0;
1511
+ const e = Date.now() > this._pingTimeoutTime;
1512
+ return e && (this._pingTimeoutTime = 0, ye(() => {
1513
+ this._onClose("ping timeout");
1514
+ }, this.setTimeoutFn)), e;
1515
+ }
1516
+ /**
1517
+ * Sends a message.
1518
+ *
1519
+ * @param {String} msg - message.
1520
+ * @param {Object} options.
1521
+ * @param {Function} fn - callback function.
1522
+ * @return {Socket} for chaining.
1523
+ */
1524
+ write(e, t, r) {
1525
+ return this._sendPacket("message", e, t, r), this;
1526
+ }
1527
+ /**
1528
+ * Sends a message. Alias of {@link Socket#write}.
1529
+ *
1530
+ * @param {String} msg - message.
1531
+ * @param {Object} options.
1532
+ * @param {Function} fn - callback function.
1533
+ * @return {Socket} for chaining.
1534
+ */
1535
+ send(e, t, r) {
1536
+ return this._sendPacket("message", e, t, r), this;
1537
+ }
1538
+ /**
1539
+ * Sends a packet.
1540
+ *
1541
+ * @param {String} type: packet type.
1542
+ * @param {String} data.
1543
+ * @param {Object} options.
1544
+ * @param {Function} fn - callback function.
1545
+ * @private
1546
+ */
1547
+ _sendPacket(e, t, r, i) {
1548
+ if (typeof t == "function" && (i = t, t = void 0), typeof r == "function" && (i = r, r = null), this.readyState === "closing" || this.readyState === "closed")
1549
+ return;
1550
+ r = r || {}, r.compress = r.compress !== !1;
1551
+ const n = {
1552
+ type: e,
1553
+ data: t,
1554
+ options: r
1555
+ };
1556
+ this.emitReserved("packetCreate", n), this.writeBuffer.push(n), i && this.once("flush", i), this.flush();
1557
+ }
1558
+ /**
1559
+ * Closes the connection.
1560
+ */
1561
+ close() {
1562
+ const e = () => {
1563
+ this._onClose("forced close"), this.transport.close();
1564
+ }, t = () => {
1565
+ this.off("upgrade", t), this.off("upgradeError", t), e();
1566
+ }, r = () => {
1567
+ this.once("upgrade", t), this.once("upgradeError", t);
1568
+ };
1569
+ return (this.readyState === "opening" || this.readyState === "open") && (this.readyState = "closing", this.writeBuffer.length ? this.once("drain", () => {
1570
+ this.upgrading ? r() : e();
1571
+ }) : this.upgrading ? r() : e()), this;
1572
+ }
1573
+ /**
1574
+ * Called upon transport error
1575
+ *
1576
+ * @private
1577
+ */
1578
+ _onError(e) {
1579
+ if (Q.priorWebsocketSuccess = !1, this.opts.tryAllTransports && this.transports.length > 1 && this.readyState === "opening")
1580
+ return this.transports.shift(), this._open();
1581
+ this.emitReserved("error", e), this._onClose("transport error", e);
1582
+ }
1583
+ /**
1584
+ * Called upon transport close.
1585
+ *
1586
+ * @private
1587
+ */
1588
+ _onClose(e, t) {
1589
+ if (this.readyState === "opening" || this.readyState === "open" || this.readyState === "closing") {
1590
+ if (this.clearTimeoutFn(this._pingTimeoutTimer), this.transport.removeAllListeners("close"), this.transport.close(), this.transport.removeAllListeners(), we && (this._beforeunloadEventListener && removeEventListener("beforeunload", this._beforeunloadEventListener, !1), this._offlineEventListener)) {
1591
+ const r = le.indexOf(this._offlineEventListener);
1592
+ r !== -1 && le.splice(r, 1);
1593
+ }
1594
+ this.readyState = "closed", this.id = null, this.emitReserved("close", e, t), this.writeBuffer = [], this._prevBufferLen = 0;
1595
+ }
1596
+ }
1597
+ }
1598
+ Q.protocol = vt;
1599
+ class Ps extends Q {
1600
+ constructor() {
1601
+ super(...arguments), this._upgrades = [];
1602
+ }
1603
+ onOpen() {
1604
+ if (super.onOpen(), this.readyState === "open" && this.opts.upgrade)
1605
+ for (let e = 0; e < this._upgrades.length; e++)
1606
+ this._probe(this._upgrades[e]);
1607
+ }
1608
+ /**
1609
+ * Probes a transport.
1610
+ *
1611
+ * @param {String} name - transport name
1612
+ * @private
1613
+ */
1614
+ _probe(e) {
1615
+ let t = this.createTransport(e), r = !1;
1616
+ Q.priorWebsocketSuccess = !1;
1617
+ const i = () => {
1618
+ r || (t.send([{ type: "ping", data: "probe" }]), t.once("packet", (h) => {
1619
+ if (!r)
1620
+ if (h.type === "pong" && h.data === "probe") {
1621
+ if (this.upgrading = !0, this.emitReserved("upgrading", t), !t)
1622
+ return;
1623
+ Q.priorWebsocketSuccess = t.name === "websocket", this.transport.pause(() => {
1624
+ r || this.readyState !== "closed" && (u(), this.setTransport(t), t.send([{ type: "upgrade" }]), this.emitReserved("upgrade", t), t = null, this.upgrading = !1, this.flush());
1625
+ });
1626
+ } else {
1627
+ const E = new Error("probe error");
1628
+ E.transport = t.name, this.emitReserved("upgradeError", E);
1629
+ }
1630
+ }));
1631
+ };
1632
+ function n() {
1633
+ r || (r = !0, u(), t.close(), t = null);
1634
+ }
1635
+ const o = (h) => {
1636
+ const E = new Error("probe error: " + h);
1637
+ E.transport = t.name, n(), this.emitReserved("upgradeError", E);
1638
+ };
1639
+ function l() {
1640
+ o("transport closed");
1641
+ }
1642
+ function a() {
1643
+ o("socket closed");
1644
+ }
1645
+ function p(h) {
1646
+ t && h.name !== t.name && n();
1647
+ }
1648
+ const u = () => {
1649
+ t.removeListener("open", i), t.removeListener("error", o), t.removeListener("close", l), this.off("close", a), this.off("upgrading", p);
1650
+ };
1651
+ t.once("open", i), t.once("error", o), t.once("close", l), this.once("close", a), this.once("upgrading", p), this._upgrades.indexOf("webtransport") !== -1 && e !== "webtransport" ? this.setTimeoutFn(() => {
1652
+ r || t.open();
1653
+ }, 200) : t.open();
1654
+ }
1655
+ onHandshake(e) {
1656
+ this._upgrades = this._filterUpgrades(e.upgrades), super.onHandshake(e);
1657
+ }
1658
+ /**
1659
+ * Filters upgrades, returning only those matching client transports.
1660
+ *
1661
+ * @param {Array} upgrades - server upgrades
1662
+ * @private
1663
+ */
1664
+ _filterUpgrades(e) {
1665
+ const t = [];
1666
+ for (let r = 0; r < e.length; r++)
1667
+ ~this.transports.indexOf(e[r]) && t.push(e[r]);
1668
+ return t;
1669
+ }
1670
+ }
1671
+ let Zs = class extends Ps {
1672
+ constructor(e, t = {}) {
1673
+ const r = typeof e == "object" ? e : t;
1674
+ (!r.transports || r.transports && typeof r.transports[0] == "string") && (r.transports = (r.transports || ["polling", "websocket", "webtransport"]).map((i) => Bs[i]).filter((i) => !!i)), super(e, r);
1675
+ }
1676
+ };
1677
+ function Rs(s, e = "", t) {
1678
+ let r = s;
1679
+ t = t || typeof location < "u" && location, s == null && (s = t.protocol + "//" + t.host), typeof s == "string" && (s.charAt(0) === "/" && (s.charAt(1) === "/" ? s = t.protocol + s : s = t.host + s), /^(https?|wss?):\/\//.test(s) || (typeof t < "u" ? s = t.protocol + "//" + s : s = "https://" + s), r = Je(s)), r.port || (/^(http|ws)$/.test(r.protocol) ? r.port = "80" : /^(http|ws)s$/.test(r.protocol) && (r.port = "443")), r.path = r.path || "/";
1680
+ const n = r.host.indexOf(":") !== -1 ? "[" + r.host + "]" : r.host;
1681
+ return r.id = r.protocol + "://" + n + ":" + r.port + e, r.href = r.protocol + "://" + n + (t && t.port === r.port ? "" : ":" + r.port), r;
1682
+ }
1683
+ const zs = typeof ArrayBuffer == "function", Ms = (s) => typeof ArrayBuffer.isView == "function" ? ArrayBuffer.isView(s) : s.buffer instanceof ArrayBuffer, wt = Object.prototype.toString, Ds = typeof Blob == "function" || typeof Blob < "u" && wt.call(Blob) === "[object BlobConstructor]", Xs = typeof File == "function" || typeof File < "u" && wt.call(File) === "[object FileConstructor]";
1684
+ function Xe(s) {
1685
+ return zs && (s instanceof ArrayBuffer || Ms(s)) || Ds && s instanceof Blob || Xs && s instanceof File;
1686
+ }
1687
+ function ce(s, e) {
1688
+ if (!s || typeof s != "object")
1689
+ return !1;
1690
+ if (Array.isArray(s)) {
1691
+ for (let t = 0, r = s.length; t < r; t++)
1692
+ if (ce(s[t]))
1693
+ return !0;
1694
+ return !1;
1695
+ }
1696
+ if (Xe(s))
1697
+ return !0;
1698
+ if (s.toJSON && typeof s.toJSON == "function" && arguments.length === 1)
1699
+ return ce(s.toJSON(), !0);
1700
+ for (const t in s)
1701
+ if (Object.prototype.hasOwnProperty.call(s, t) && ce(s[t]))
1702
+ return !0;
1703
+ return !1;
1704
+ }
1705
+ function Vs(s) {
1706
+ const e = [], t = s.data, r = s;
1707
+ return r.data = Ke(t, e), r.attachments = e.length, { packet: r, buffers: e };
1708
+ }
1709
+ function Ke(s, e) {
1710
+ if (!s)
1711
+ return s;
1712
+ if (Xe(s)) {
1713
+ const t = { _placeholder: !0, num: e.length };
1714
+ return e.push(s), t;
1715
+ } else if (Array.isArray(s)) {
1716
+ const t = new Array(s.length);
1717
+ for (let r = 0; r < s.length; r++)
1718
+ t[r] = Ke(s[r], e);
1719
+ return t;
1720
+ } else if (typeof s == "object" && !(s instanceof Date)) {
1721
+ const t = {};
1722
+ for (const r in s)
1723
+ Object.prototype.hasOwnProperty.call(s, r) && (t[r] = Ke(s[r], e));
1724
+ return t;
1725
+ }
1726
+ return s;
1727
+ }
1728
+ function Fs(s, e) {
1729
+ return s.data = Te(s.data, e), delete s.attachments, s;
1730
+ }
1731
+ function Te(s, e) {
1732
+ if (!s)
1733
+ return s;
1734
+ if (s && s._placeholder === !0) {
1735
+ if (typeof s.num == "number" && s.num >= 0 && s.num < e.length)
1736
+ return e[s.num];
1737
+ throw new Error("illegal attachments");
1738
+ } else if (Array.isArray(s))
1739
+ for (let t = 0; t < s.length; t++)
1740
+ s[t] = Te(s[t], e);
1741
+ else if (typeof s == "object")
1742
+ for (const t in s)
1743
+ Object.prototype.hasOwnProperty.call(s, t) && (s[t] = Te(s[t], e));
1744
+ return s;
1745
+ }
1746
+ const Kt = [
1747
+ "connect",
1748
+ // used on the client side
1749
+ "connect_error",
1750
+ // used on the client side
1751
+ "disconnect",
1752
+ // used on both sides
1753
+ "disconnecting",
1754
+ // used on the server side
1755
+ "newListener",
1756
+ // used by the Node.js EventEmitter
1757
+ "removeListener"
1758
+ // used by the Node.js EventEmitter
1759
+ ], Ws = 5;
1760
+ var c;
1761
+ (function(s) {
1762
+ s[s.CONNECT = 0] = "CONNECT", s[s.DISCONNECT = 1] = "DISCONNECT", s[s.EVENT = 2] = "EVENT", s[s.ACK = 3] = "ACK", s[s.CONNECT_ERROR = 4] = "CONNECT_ERROR", s[s.BINARY_EVENT = 5] = "BINARY_EVENT", s[s.BINARY_ACK = 6] = "BINARY_ACK";
1763
+ })(c || (c = {}));
1764
+ class js {
1765
+ /**
1766
+ * Encoder constructor
1767
+ *
1768
+ * @param {function} replacer - custom replacer to pass down to JSON.parse
1769
+ */
1770
+ constructor(e) {
1771
+ this.replacer = e;
1772
+ }
1773
+ /**
1774
+ * Encode a packet as a single string if non-binary, or as a
1775
+ * buffer sequence, depending on packet type.
1776
+ *
1777
+ * @param {Object} obj - packet object
1778
+ */
1779
+ encode(e) {
1780
+ return (e.type === c.EVENT || e.type === c.ACK) && ce(e) ? this.encodeAsBinary({
1781
+ type: e.type === c.EVENT ? c.BINARY_EVENT : c.BINARY_ACK,
1782
+ nsp: e.nsp,
1783
+ data: e.data,
1784
+ id: e.id
1785
+ }) : [this.encodeAsString(e)];
1786
+ }
1787
+ /**
1788
+ * Encode packet as string.
1789
+ */
1790
+ encodeAsString(e) {
1791
+ let t = "" + e.type;
1792
+ return (e.type === c.BINARY_EVENT || e.type === c.BINARY_ACK) && (t += e.attachments + "-"), e.nsp && e.nsp !== "/" && (t += e.nsp + ","), e.id != null && (t += e.id), e.data != null && (t += JSON.stringify(e.data, this.replacer)), t;
1793
+ }
1794
+ /**
1795
+ * Encode packet as 'buffer sequence' by removing blobs, and
1796
+ * deconstructing packet into object with placeholders and
1797
+ * a list of buffers.
1798
+ */
1799
+ encodeAsBinary(e) {
1800
+ const t = Vs(e), r = this.encodeAsString(t.packet), i = t.buffers;
1801
+ return i.unshift(r), i;
1802
+ }
1803
+ }
1804
+ class Ve extends S {
1805
+ /**
1806
+ * Decoder constructor
1807
+ *
1808
+ * @param {function} reviver - custom reviver to pass down to JSON.stringify
1809
+ */
1810
+ constructor(e) {
1811
+ super(), this.reviver = e;
1812
+ }
1813
+ /**
1814
+ * Decodes an encoded packet string into packet JSON.
1815
+ *
1816
+ * @param {String} obj - encoded packet
1817
+ */
1818
+ add(e) {
1819
+ let t;
1820
+ if (typeof e == "string") {
1821
+ if (this.reconstructor)
1822
+ throw new Error("got plaintext data when reconstructing a packet");
1823
+ t = this.decodeString(e);
1824
+ const r = t.type === c.BINARY_EVENT;
1825
+ r || t.type === c.BINARY_ACK ? (t.type = r ? c.EVENT : c.ACK, this.reconstructor = new qs(t), t.attachments === 0 && super.emitReserved("decoded", t)) : super.emitReserved("decoded", t);
1826
+ } else if (Xe(e) || e.base64)
1827
+ if (this.reconstructor)
1828
+ t = this.reconstructor.takeBinaryData(e), t && (this.reconstructor = null, super.emitReserved("decoded", t));
1829
+ else
1830
+ throw new Error("got binary data when not reconstructing a packet");
1831
+ else
1832
+ throw new Error("Unknown type: " + e);
1833
+ }
1834
+ /**
1835
+ * Decode a packet String (JSON data)
1836
+ *
1837
+ * @param {String} str
1838
+ * @return {Object} packet
1839
+ */
1840
+ decodeString(e) {
1841
+ let t = 0;
1842
+ const r = {
1843
+ type: Number(e.charAt(0))
1844
+ };
1845
+ if (c[r.type] === void 0)
1846
+ throw new Error("unknown packet type " + r.type);
1847
+ if (r.type === c.BINARY_EVENT || r.type === c.BINARY_ACK) {
1848
+ const n = t + 1;
1849
+ for (; e.charAt(++t) !== "-" && t != e.length; )
1850
+ ;
1851
+ const o = e.substring(n, t);
1852
+ if (o != Number(o) || e.charAt(t) !== "-")
1853
+ throw new Error("Illegal attachments");
1854
+ r.attachments = Number(o);
1855
+ }
1856
+ if (e.charAt(t + 1) === "/") {
1857
+ const n = t + 1;
1858
+ for (; ++t && !(e.charAt(t) === "," || t === e.length); )
1859
+ ;
1860
+ r.nsp = e.substring(n, t);
1861
+ } else
1862
+ r.nsp = "/";
1863
+ const i = e.charAt(t + 1);
1864
+ if (i !== "" && Number(i) == i) {
1865
+ const n = t + 1;
1866
+ for (; ++t; ) {
1867
+ const o = e.charAt(t);
1868
+ if (o == null || Number(o) != o) {
1869
+ --t;
1870
+ break;
1871
+ }
1872
+ if (t === e.length)
1873
+ break;
1874
+ }
1875
+ r.id = Number(e.substring(n, t + 1));
1876
+ }
1877
+ if (e.charAt(++t)) {
1878
+ const n = this.tryParse(e.substr(t));
1879
+ if (Ve.isPayloadValid(r.type, n))
1880
+ r.data = n;
1881
+ else
1882
+ throw new Error("invalid payload");
1883
+ }
1884
+ return r;
1885
+ }
1886
+ tryParse(e) {
1887
+ try {
1888
+ return JSON.parse(e, this.reviver);
1889
+ } catch {
1890
+ return !1;
1891
+ }
1892
+ }
1893
+ static isPayloadValid(e, t) {
1894
+ switch (e) {
1895
+ case c.CONNECT:
1896
+ return ue(t);
1897
+ case c.DISCONNECT:
1898
+ return t === void 0;
1899
+ case c.CONNECT_ERROR:
1900
+ return typeof t == "string" || ue(t);
1901
+ case c.EVENT:
1902
+ case c.BINARY_EVENT:
1903
+ return Array.isArray(t) && (typeof t[0] == "number" || typeof t[0] == "string" && Kt.indexOf(t[0]) === -1);
1904
+ case c.ACK:
1905
+ case c.BINARY_ACK:
1906
+ return Array.isArray(t);
1907
+ }
1908
+ }
1909
+ /**
1910
+ * Deallocates a parser's resources
1911
+ */
1912
+ destroy() {
1913
+ this.reconstructor && (this.reconstructor.finishedReconstruction(), this.reconstructor = null);
1914
+ }
1915
+ }
1916
+ class qs {
1917
+ constructor(e) {
1918
+ this.packet = e, this.buffers = [], this.reconPack = e;
1919
+ }
1920
+ /**
1921
+ * Method to be called when binary data received from connection
1922
+ * after a BINARY_EVENT packet.
1923
+ *
1924
+ * @param {Buffer | ArrayBuffer} binData - the raw binary data received
1925
+ * @return {null | Object} returns null if more binary data is expected or
1926
+ * a reconstructed packet object if all buffers have been received.
1927
+ */
1928
+ takeBinaryData(e) {
1929
+ if (this.buffers.push(e), this.buffers.length === this.reconPack.attachments) {
1930
+ const t = Fs(this.reconPack, this.buffers);
1931
+ return this.finishedReconstruction(), t;
1932
+ }
1933
+ return null;
1934
+ }
1935
+ /**
1936
+ * Cleans up binary packet reconstruction variables.
1937
+ */
1938
+ finishedReconstruction() {
1939
+ this.reconPack = null, this.buffers = [];
1940
+ }
1941
+ }
1942
+ function Gs(s) {
1943
+ return typeof s == "string";
1944
+ }
1945
+ const Ys = Number.isInteger || function(s) {
1946
+ return typeof s == "number" && isFinite(s) && Math.floor(s) === s;
1947
+ };
1948
+ function Hs(s) {
1949
+ return s === void 0 || Ys(s);
1950
+ }
1951
+ function ue(s) {
1952
+ return Object.prototype.toString.call(s) === "[object Object]";
1953
+ }
1954
+ function _s(s, e) {
1955
+ switch (s) {
1956
+ case c.CONNECT:
1957
+ return e === void 0 || ue(e);
1958
+ case c.DISCONNECT:
1959
+ return e === void 0;
1960
+ case c.EVENT:
1961
+ return Array.isArray(e) && (typeof e[0] == "number" || typeof e[0] == "string" && Kt.indexOf(e[0]) === -1);
1962
+ case c.ACK:
1963
+ return Array.isArray(e);
1964
+ case c.CONNECT_ERROR:
1965
+ return typeof e == "string" || ue(e);
1966
+ default:
1967
+ return !1;
1968
+ }
1969
+ }
1970
+ function $s(s) {
1971
+ return Gs(s.nsp) && Hs(s.id) && _s(s.type, s.data);
1972
+ }
1973
+ const er = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
1974
+ __proto__: null,
1975
+ Decoder: Ve,
1976
+ Encoder: js,
1977
+ get PacketType() {
1978
+ return c;
1979
+ },
1980
+ isPacketValid: $s,
1981
+ protocol: Ws
1982
+ }, Symbol.toStringTag, { value: "Module" }));
1983
+ function K(s, e, t) {
1984
+ return s.on(e, t), function() {
1985
+ s.off(e, t);
1986
+ };
1987
+ }
1988
+ const tr = Object.freeze({
1989
+ connect: 1,
1990
+ connect_error: 1,
1991
+ disconnect: 1,
1992
+ disconnecting: 1,
1993
+ // EventEmitter reserved events: https://nodejs.org/api/events.html#events_event_newlistener
1994
+ newListener: 1,
1995
+ removeListener: 1
1996
+ });
1997
+ class Tt extends S {
1998
+ /**
1999
+ * `Socket` constructor.
2000
+ */
2001
+ constructor(e, t, r) {
2002
+ super(), this.connected = !1, this.recovered = !1, this.receiveBuffer = [], this.sendBuffer = [], this._queue = [], this._queueSeq = 0, this.ids = 0, this.acks = {}, this.flags = {}, this.io = e, this.nsp = t, r && r.auth && (this.auth = r.auth), this._opts = Object.assign({}, r), this.io._autoConnect && this.open();
2003
+ }
2004
+ /**
2005
+ * Whether the socket is currently disconnected
2006
+ *
2007
+ * @example
2008
+ * const socket = io();
2009
+ *
2010
+ * socket.on("connect", () => {
2011
+ * console.log(socket.disconnected); // false
2012
+ * });
2013
+ *
2014
+ * socket.on("disconnect", () => {
2015
+ * console.log(socket.disconnected); // true
2016
+ * });
2017
+ */
2018
+ get disconnected() {
2019
+ return !this.connected;
2020
+ }
2021
+ /**
2022
+ * Subscribe to open, close and packet events
2023
+ *
2024
+ * @private
2025
+ */
2026
+ subEvents() {
2027
+ if (this.subs)
2028
+ return;
2029
+ const e = this.io;
2030
+ this.subs = [
2031
+ K(e, "open", this.onopen.bind(this)),
2032
+ K(e, "packet", this.onpacket.bind(this)),
2033
+ K(e, "error", this.onerror.bind(this)),
2034
+ K(e, "close", this.onclose.bind(this))
2035
+ ];
2036
+ }
2037
+ /**
2038
+ * Whether the Socket will try to reconnect when its Manager connects or reconnects.
2039
+ *
2040
+ * @example
2041
+ * const socket = io();
2042
+ *
2043
+ * console.log(socket.active); // true
2044
+ *
2045
+ * socket.on("disconnect", (reason) => {
2046
+ * if (reason === "io server disconnect") {
2047
+ * // the disconnection was initiated by the server, you need to manually reconnect
2048
+ * console.log(socket.active); // false
2049
+ * }
2050
+ * // else the socket will automatically try to reconnect
2051
+ * console.log(socket.active); // true
2052
+ * });
2053
+ */
2054
+ get active() {
2055
+ return !!this.subs;
2056
+ }
2057
+ /**
2058
+ * "Opens" the socket.
2059
+ *
2060
+ * @example
2061
+ * const socket = io({
2062
+ * autoConnect: false
2063
+ * });
2064
+ *
2065
+ * socket.connect();
2066
+ */
2067
+ connect() {
2068
+ return this.connected ? this : (this.subEvents(), this.io._reconnecting || this.io.open(), this.io._readyState === "open" && this.onopen(), this);
2069
+ }
2070
+ /**
2071
+ * Alias for {@link connect()}.
2072
+ */
2073
+ open() {
2074
+ return this.connect();
2075
+ }
2076
+ /**
2077
+ * Sends a `message` event.
2078
+ *
2079
+ * This method mimics the WebSocket.send() method.
2080
+ *
2081
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/send
2082
+ *
2083
+ * @example
2084
+ * socket.send("hello");
2085
+ *
2086
+ * // this is equivalent to
2087
+ * socket.emit("message", "hello");
2088
+ *
2089
+ * @return self
2090
+ */
2091
+ send(...e) {
2092
+ return e.unshift("message"), this.emit.apply(this, e), this;
2093
+ }
2094
+ /**
2095
+ * Override `emit`.
2096
+ * If the event is in `events`, it's emitted normally.
2097
+ *
2098
+ * @example
2099
+ * socket.emit("hello", "world");
2100
+ *
2101
+ * // all serializable datastructures are supported (no need to call JSON.stringify)
2102
+ * socket.emit("hello", 1, "2", { 3: ["4"], 5: Uint8Array.from([6]) });
2103
+ *
2104
+ * // with an acknowledgement from the server
2105
+ * socket.emit("hello", "world", (val) => {
2106
+ * // ...
2107
+ * });
2108
+ *
2109
+ * @return self
2110
+ */
2111
+ emit(e, ...t) {
2112
+ var r, i, n;
2113
+ if (tr.hasOwnProperty(e))
2114
+ throw new Error('"' + e.toString() + '" is a reserved event name');
2115
+ if (t.unshift(e), this._opts.retries && !this.flags.fromQueue && !this.flags.volatile)
2116
+ return this._addToQueue(t), this;
2117
+ const o = {
2118
+ type: c.EVENT,
2119
+ data: t
2120
+ };
2121
+ if (o.options = {}, o.options.compress = this.flags.compress !== !1, typeof t[t.length - 1] == "function") {
2122
+ const u = this.ids++, h = t.pop();
2123
+ this._registerAckCallback(u, h), o.id = u;
2124
+ }
2125
+ const l = (i = (r = this.io.engine) === null || r === void 0 ? void 0 : r.transport) === null || i === void 0 ? void 0 : i.writable, a = this.connected && !(!((n = this.io.engine) === null || n === void 0) && n._hasPingExpired());
2126
+ return this.flags.volatile && !l || (a ? (this.notifyOutgoingListeners(o), this.packet(o)) : this.sendBuffer.push(o)), this.flags = {}, this;
2127
+ }
2128
+ /**
2129
+ * @private
2130
+ */
2131
+ _registerAckCallback(e, t) {
2132
+ var r;
2133
+ const i = (r = this.flags.timeout) !== null && r !== void 0 ? r : this._opts.ackTimeout;
2134
+ if (i === void 0) {
2135
+ this.acks[e] = t;
2136
+ return;
2137
+ }
2138
+ const n = this.io.setTimeoutFn(() => {
2139
+ delete this.acks[e];
2140
+ for (let l = 0; l < this.sendBuffer.length; l++)
2141
+ this.sendBuffer[l].id === e && this.sendBuffer.splice(l, 1);
2142
+ t.call(this, new Error("operation has timed out"));
2143
+ }, i), o = (...l) => {
2144
+ this.io.clearTimeoutFn(n), t.apply(this, l);
2145
+ };
2146
+ o.withError = !0, this.acks[e] = o;
2147
+ }
2148
+ /**
2149
+ * Emits an event and waits for an acknowledgement
2150
+ *
2151
+ * @example
2152
+ * // without timeout
2153
+ * const response = await socket.emitWithAck("hello", "world");
2154
+ *
2155
+ * // with a specific timeout
2156
+ * try {
2157
+ * const response = await socket.timeout(1000).emitWithAck("hello", "world");
2158
+ * } catch (err) {
2159
+ * // the server did not acknowledge the event in the given delay
2160
+ * }
2161
+ *
2162
+ * @return a Promise that will be fulfilled when the server acknowledges the event
2163
+ */
2164
+ emitWithAck(e, ...t) {
2165
+ return new Promise((r, i) => {
2166
+ const n = (o, l) => o ? i(o) : r(l);
2167
+ n.withError = !0, t.push(n), this.emit(e, ...t);
2168
+ });
2169
+ }
2170
+ /**
2171
+ * Add the packet to the queue.
2172
+ * @param args
2173
+ * @private
2174
+ */
2175
+ _addToQueue(e) {
2176
+ let t;
2177
+ typeof e[e.length - 1] == "function" && (t = e.pop());
2178
+ const r = {
2179
+ id: this._queueSeq++,
2180
+ tryCount: 0,
2181
+ pending: !1,
2182
+ args: e,
2183
+ flags: Object.assign({ fromQueue: !0 }, this.flags)
2184
+ };
2185
+ e.push((i, ...n) => (this._queue[0], i !== null ? r.tryCount > this._opts.retries && (this._queue.shift(), t && t(i)) : (this._queue.shift(), t && t(null, ...n)), r.pending = !1, this._drainQueue())), this._queue.push(r), this._drainQueue();
2186
+ }
2187
+ /**
2188
+ * Send the first packet of the queue, and wait for an acknowledgement from the server.
2189
+ * @param force - whether to resend a packet that has not been acknowledged yet
2190
+ *
2191
+ * @private
2192
+ */
2193
+ _drainQueue(e = !1) {
2194
+ if (!this.connected || this._queue.length === 0)
2195
+ return;
2196
+ const t = this._queue[0];
2197
+ t.pending && !e || (t.pending = !0, t.tryCount++, this.flags = t.flags, this.emit.apply(this, t.args));
2198
+ }
2199
+ /**
2200
+ * Sends a packet.
2201
+ *
2202
+ * @param packet
2203
+ * @private
2204
+ */
2205
+ packet(e) {
2206
+ e.nsp = this.nsp, this.io._packet(e);
2207
+ }
2208
+ /**
2209
+ * Called upon engine `open`.
2210
+ *
2211
+ * @private
2212
+ */
2213
+ onopen() {
2214
+ typeof this.auth == "function" ? this.auth((e) => {
2215
+ this._sendConnectPacket(e);
2216
+ }) : this._sendConnectPacket(this.auth);
2217
+ }
2218
+ /**
2219
+ * Sends a CONNECT packet to initiate the Socket.IO session.
2220
+ *
2221
+ * @param data
2222
+ * @private
2223
+ */
2224
+ _sendConnectPacket(e) {
2225
+ this.packet({
2226
+ type: c.CONNECT,
2227
+ data: this._pid ? Object.assign({ pid: this._pid, offset: this._lastOffset }, e) : e
2228
+ });
2229
+ }
2230
+ /**
2231
+ * Called upon engine or manager `error`.
2232
+ *
2233
+ * @param err
2234
+ * @private
2235
+ */
2236
+ onerror(e) {
2237
+ this.connected || this.emitReserved("connect_error", e);
2238
+ }
2239
+ /**
2240
+ * Called upon engine `close`.
2241
+ *
2242
+ * @param reason
2243
+ * @param description
2244
+ * @private
2245
+ */
2246
+ onclose(e, t) {
2247
+ this.connected = !1, delete this.id, this.emitReserved("disconnect", e, t), this._clearAcks();
2248
+ }
2249
+ /**
2250
+ * Clears the acknowledgement handlers upon disconnection, since the client will never receive an acknowledgement from
2251
+ * the server.
2252
+ *
2253
+ * @private
2254
+ */
2255
+ _clearAcks() {
2256
+ Object.keys(this.acks).forEach((e) => {
2257
+ if (!this.sendBuffer.some((r) => String(r.id) === e)) {
2258
+ const r = this.acks[e];
2259
+ delete this.acks[e], r.withError && r.call(this, new Error("socket has been disconnected"));
2260
+ }
2261
+ });
2262
+ }
2263
+ /**
2264
+ * Called with socket packet.
2265
+ *
2266
+ * @param packet
2267
+ * @private
2268
+ */
2269
+ onpacket(e) {
2270
+ if (e.nsp === this.nsp)
2271
+ switch (e.type) {
2272
+ case c.CONNECT:
2273
+ e.data && e.data.sid ? this.onconnect(e.data.sid, e.data.pid) : this.emitReserved("connect_error", new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));
2274
+ break;
2275
+ case c.EVENT:
2276
+ case c.BINARY_EVENT:
2277
+ this.onevent(e);
2278
+ break;
2279
+ case c.ACK:
2280
+ case c.BINARY_ACK:
2281
+ this.onack(e);
2282
+ break;
2283
+ case c.DISCONNECT:
2284
+ this.ondisconnect();
2285
+ break;
2286
+ case c.CONNECT_ERROR:
2287
+ this.destroy();
2288
+ const r = new Error(e.data.message);
2289
+ r.data = e.data.data, this.emitReserved("connect_error", r);
2290
+ break;
2291
+ }
2292
+ }
2293
+ /**
2294
+ * Called upon a server event.
2295
+ *
2296
+ * @param packet
2297
+ * @private
2298
+ */
2299
+ onevent(e) {
2300
+ const t = e.data || [];
2301
+ e.id != null && t.push(this.ack(e.id)), this.connected ? this.emitEvent(t) : this.receiveBuffer.push(Object.freeze(t));
2302
+ }
2303
+ emitEvent(e) {
2304
+ if (this._anyListeners && this._anyListeners.length) {
2305
+ const t = this._anyListeners.slice();
2306
+ for (const r of t)
2307
+ r.apply(this, e);
2308
+ }
2309
+ super.emit.apply(this, e), this._pid && e.length && typeof e[e.length - 1] == "string" && (this._lastOffset = e[e.length - 1]);
2310
+ }
2311
+ /**
2312
+ * Produces an ack callback to emit with an event.
2313
+ *
2314
+ * @private
2315
+ */
2316
+ ack(e) {
2317
+ const t = this;
2318
+ let r = !1;
2319
+ return function(...i) {
2320
+ r || (r = !0, t.packet({
2321
+ type: c.ACK,
2322
+ id: e,
2323
+ data: i
2324
+ }));
2325
+ };
2326
+ }
2327
+ /**
2328
+ * Called upon a server acknowledgement.
2329
+ *
2330
+ * @param packet
2331
+ * @private
2332
+ */
2333
+ onack(e) {
2334
+ const t = this.acks[e.id];
2335
+ typeof t == "function" && (delete this.acks[e.id], t.withError && e.data.unshift(null), t.apply(this, e.data));
2336
+ }
2337
+ /**
2338
+ * Called upon server connect.
2339
+ *
2340
+ * @private
2341
+ */
2342
+ onconnect(e, t) {
2343
+ this.id = e, this.recovered = t && this._pid === t, this._pid = t, this.connected = !0, this.emitBuffered(), this._drainQueue(!0), this.emitReserved("connect");
2344
+ }
2345
+ /**
2346
+ * Emit buffered events (received and emitted).
2347
+ *
2348
+ * @private
2349
+ */
2350
+ emitBuffered() {
2351
+ this.receiveBuffer.forEach((e) => this.emitEvent(e)), this.receiveBuffer = [], this.sendBuffer.forEach((e) => {
2352
+ this.notifyOutgoingListeners(e), this.packet(e);
2353
+ }), this.sendBuffer = [];
2354
+ }
2355
+ /**
2356
+ * Called upon server disconnect.
2357
+ *
2358
+ * @private
2359
+ */
2360
+ ondisconnect() {
2361
+ this.destroy(), this.onclose("io server disconnect");
2362
+ }
2363
+ /**
2364
+ * Called upon forced client/server side disconnections,
2365
+ * this method ensures the manager stops tracking us and
2366
+ * that reconnections don't get triggered for this.
2367
+ *
2368
+ * @private
2369
+ */
2370
+ destroy() {
2371
+ this.subs && (this.subs.forEach((e) => e()), this.subs = void 0), this.io._destroy(this);
2372
+ }
2373
+ /**
2374
+ * Disconnects the socket manually. In that case, the socket will not try to reconnect.
2375
+ *
2376
+ * If this is the last active Socket instance of the {@link Manager}, the low-level connection will be closed.
2377
+ *
2378
+ * @example
2379
+ * const socket = io();
2380
+ *
2381
+ * socket.on("disconnect", (reason) => {
2382
+ * // console.log(reason); prints "io client disconnect"
2383
+ * });
2384
+ *
2385
+ * socket.disconnect();
2386
+ *
2387
+ * @return self
2388
+ */
2389
+ disconnect() {
2390
+ return this.connected && this.packet({ type: c.DISCONNECT }), this.destroy(), this.connected && this.onclose("io client disconnect"), this;
2391
+ }
2392
+ /**
2393
+ * Alias for {@link disconnect()}.
2394
+ *
2395
+ * @return self
2396
+ */
2397
+ close() {
2398
+ return this.disconnect();
2399
+ }
2400
+ /**
2401
+ * Sets the compress flag.
2402
+ *
2403
+ * @example
2404
+ * socket.compress(false).emit("hello");
2405
+ *
2406
+ * @param compress - if `true`, compresses the sending data
2407
+ * @return self
2408
+ */
2409
+ compress(e) {
2410
+ return this.flags.compress = e, this;
2411
+ }
2412
+ /**
2413
+ * Sets a modifier for a subsequent event emission that the event message will be dropped when this socket is not
2414
+ * ready to send messages.
2415
+ *
2416
+ * @example
2417
+ * socket.volatile.emit("hello"); // the server may or may not receive it
2418
+ *
2419
+ * @returns self
2420
+ */
2421
+ get volatile() {
2422
+ return this.flags.volatile = !0, this;
2423
+ }
2424
+ /**
2425
+ * Sets a modifier for a subsequent event emission that the callback will be called with an error when the
2426
+ * given number of milliseconds have elapsed without an acknowledgement from the server:
2427
+ *
2428
+ * @example
2429
+ * socket.timeout(5000).emit("my-event", (err) => {
2430
+ * if (err) {
2431
+ * // the server did not acknowledge the event in the given delay
2432
+ * }
2433
+ * });
2434
+ *
2435
+ * @returns self
2436
+ */
2437
+ timeout(e) {
2438
+ return this.flags.timeout = e, this;
2439
+ }
2440
+ /**
2441
+ * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the
2442
+ * callback.
2443
+ *
2444
+ * @example
2445
+ * socket.onAny((event, ...args) => {
2446
+ * console.log(`got ${event}`);
2447
+ * });
2448
+ *
2449
+ * @param listener
2450
+ */
2451
+ onAny(e) {
2452
+ return this._anyListeners = this._anyListeners || [], this._anyListeners.push(e), this;
2453
+ }
2454
+ /**
2455
+ * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the
2456
+ * callback. The listener is added to the beginning of the listeners array.
2457
+ *
2458
+ * @example
2459
+ * socket.prependAny((event, ...args) => {
2460
+ * console.log(`got event ${event}`);
2461
+ * });
2462
+ *
2463
+ * @param listener
2464
+ */
2465
+ prependAny(e) {
2466
+ return this._anyListeners = this._anyListeners || [], this._anyListeners.unshift(e), this;
2467
+ }
2468
+ /**
2469
+ * Removes the listener that will be fired when any event is emitted.
2470
+ *
2471
+ * @example
2472
+ * const catchAllListener = (event, ...args) => {
2473
+ * console.log(`got event ${event}`);
2474
+ * }
2475
+ *
2476
+ * socket.onAny(catchAllListener);
2477
+ *
2478
+ * // remove a specific listener
2479
+ * socket.offAny(catchAllListener);
2480
+ *
2481
+ * // or remove all listeners
2482
+ * socket.offAny();
2483
+ *
2484
+ * @param listener
2485
+ */
2486
+ offAny(e) {
2487
+ if (!this._anyListeners)
2488
+ return this;
2489
+ if (e) {
2490
+ const t = this._anyListeners;
2491
+ for (let r = 0; r < t.length; r++)
2492
+ if (e === t[r])
2493
+ return t.splice(r, 1), this;
2494
+ } else
2495
+ this._anyListeners = [];
2496
+ return this;
2497
+ }
2498
+ /**
2499
+ * Returns an array of listeners that are listening for any event that is specified. This array can be manipulated,
2500
+ * e.g. to remove listeners.
2501
+ */
2502
+ listenersAny() {
2503
+ return this._anyListeners || [];
2504
+ }
2505
+ /**
2506
+ * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the
2507
+ * callback.
2508
+ *
2509
+ * Note: acknowledgements sent to the server are not included.
2510
+ *
2511
+ * @example
2512
+ * socket.onAnyOutgoing((event, ...args) => {
2513
+ * console.log(`sent event ${event}`);
2514
+ * });
2515
+ *
2516
+ * @param listener
2517
+ */
2518
+ onAnyOutgoing(e) {
2519
+ return this._anyOutgoingListeners = this._anyOutgoingListeners || [], this._anyOutgoingListeners.push(e), this;
2520
+ }
2521
+ /**
2522
+ * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the
2523
+ * callback. The listener is added to the beginning of the listeners array.
2524
+ *
2525
+ * Note: acknowledgements sent to the server are not included.
2526
+ *
2527
+ * @example
2528
+ * socket.prependAnyOutgoing((event, ...args) => {
2529
+ * console.log(`sent event ${event}`);
2530
+ * });
2531
+ *
2532
+ * @param listener
2533
+ */
2534
+ prependAnyOutgoing(e) {
2535
+ return this._anyOutgoingListeners = this._anyOutgoingListeners || [], this._anyOutgoingListeners.unshift(e), this;
2536
+ }
2537
+ /**
2538
+ * Removes the listener that will be fired when any event is emitted.
2539
+ *
2540
+ * @example
2541
+ * const catchAllListener = (event, ...args) => {
2542
+ * console.log(`sent event ${event}`);
2543
+ * }
2544
+ *
2545
+ * socket.onAnyOutgoing(catchAllListener);
2546
+ *
2547
+ * // remove a specific listener
2548
+ * socket.offAnyOutgoing(catchAllListener);
2549
+ *
2550
+ * // or remove all listeners
2551
+ * socket.offAnyOutgoing();
2552
+ *
2553
+ * @param [listener] - the catch-all listener (optional)
2554
+ */
2555
+ offAnyOutgoing(e) {
2556
+ if (!this._anyOutgoingListeners)
2557
+ return this;
2558
+ if (e) {
2559
+ const t = this._anyOutgoingListeners;
2560
+ for (let r = 0; r < t.length; r++)
2561
+ if (e === t[r])
2562
+ return t.splice(r, 1), this;
2563
+ } else
2564
+ this._anyOutgoingListeners = [];
2565
+ return this;
2566
+ }
2567
+ /**
2568
+ * Returns an array of listeners that are listening for any event that is specified. This array can be manipulated,
2569
+ * e.g. to remove listeners.
2570
+ */
2571
+ listenersAnyOutgoing() {
2572
+ return this._anyOutgoingListeners || [];
2573
+ }
2574
+ /**
2575
+ * Notify the listeners for each packet sent
2576
+ *
2577
+ * @param packet
2578
+ *
2579
+ * @private
2580
+ */
2581
+ notifyOutgoingListeners(e) {
2582
+ if (this._anyOutgoingListeners && this._anyOutgoingListeners.length) {
2583
+ const t = this._anyOutgoingListeners.slice();
2584
+ for (const r of t)
2585
+ r.apply(this, e.data);
2586
+ }
2587
+ }
2588
+ }
2589
+ function F(s) {
2590
+ s = s || {}, this.ms = s.min || 100, this.max = s.max || 1e4, this.factor = s.factor || 2, this.jitter = s.jitter > 0 && s.jitter <= 1 ? s.jitter : 0, this.attempts = 0;
2591
+ }
2592
+ F.prototype.duration = function() {
2593
+ var s = this.ms * Math.pow(this.factor, this.attempts++);
2594
+ if (this.jitter) {
2595
+ var e = Math.random(), t = Math.floor(e * this.jitter * s);
2596
+ s = (Math.floor(e * 10) & 1) == 0 ? s - t : s + t;
2597
+ }
2598
+ return Math.min(s, this.max) | 0;
2599
+ };
2600
+ F.prototype.reset = function() {
2601
+ this.attempts = 0;
2602
+ };
2603
+ F.prototype.setMin = function(s) {
2604
+ this.ms = s;
2605
+ };
2606
+ F.prototype.setMax = function(s) {
2607
+ this.max = s;
2608
+ };
2609
+ F.prototype.setJitter = function(s) {
2610
+ this.jitter = s;
2611
+ };
2612
+ class Oe extends S {
2613
+ constructor(e, t) {
2614
+ var r;
2615
+ super(), this.nsps = {}, this.subs = [], e && typeof e == "object" && (t = e, e = void 0), t = t || {}, t.path = t.path || "/socket.io", this.opts = t, ge(this, t), this.reconnection(t.reconnection !== !1), this.reconnectionAttempts(t.reconnectionAttempts || 1 / 0), this.reconnectionDelay(t.reconnectionDelay || 1e3), this.reconnectionDelayMax(t.reconnectionDelayMax || 5e3), this.randomizationFactor((r = t.randomizationFactor) !== null && r !== void 0 ? r : 0.5), this.backoff = new F({
2616
+ min: this.reconnectionDelay(),
2617
+ max: this.reconnectionDelayMax(),
2618
+ jitter: this.randomizationFactor()
2619
+ }), this.timeout(t.timeout == null ? 2e4 : t.timeout), this._readyState = "closed", this.uri = e;
2620
+ const i = t.parser || er;
2621
+ this.encoder = new i.Encoder(), this.decoder = new i.Decoder(), this._autoConnect = t.autoConnect !== !1, this._autoConnect && this.open();
2622
+ }
2623
+ reconnection(e) {
2624
+ return arguments.length ? (this._reconnection = !!e, e || (this.skipReconnect = !0), this) : this._reconnection;
2625
+ }
2626
+ reconnectionAttempts(e) {
2627
+ return e === void 0 ? this._reconnectionAttempts : (this._reconnectionAttempts = e, this);
2628
+ }
2629
+ reconnectionDelay(e) {
2630
+ var t;
2631
+ return e === void 0 ? this._reconnectionDelay : (this._reconnectionDelay = e, (t = this.backoff) === null || t === void 0 || t.setMin(e), this);
2632
+ }
2633
+ randomizationFactor(e) {
2634
+ var t;
2635
+ return e === void 0 ? this._randomizationFactor : (this._randomizationFactor = e, (t = this.backoff) === null || t === void 0 || t.setJitter(e), this);
2636
+ }
2637
+ reconnectionDelayMax(e) {
2638
+ var t;
2639
+ return e === void 0 ? this._reconnectionDelayMax : (this._reconnectionDelayMax = e, (t = this.backoff) === null || t === void 0 || t.setMax(e), this);
2640
+ }
2641
+ timeout(e) {
2642
+ return arguments.length ? (this._timeout = e, this) : this._timeout;
2643
+ }
2644
+ /**
2645
+ * Starts trying to reconnect if reconnection is enabled and we have not
2646
+ * started reconnecting yet
2647
+ *
2648
+ * @private
2649
+ */
2650
+ maybeReconnectOnOpen() {
2651
+ !this._reconnecting && this._reconnection && this.backoff.attempts === 0 && this.reconnect();
2652
+ }
2653
+ /**
2654
+ * Sets the current transport `socket`.
2655
+ *
2656
+ * @param {Function} fn - optional, callback
2657
+ * @return self
2658
+ * @public
2659
+ */
2660
+ open(e) {
2661
+ if (~this._readyState.indexOf("open"))
2662
+ return this;
2663
+ this.engine = new Zs(this.uri, this.opts);
2664
+ const t = this.engine, r = this;
2665
+ this._readyState = "opening", this.skipReconnect = !1;
2666
+ const i = K(t, "open", function() {
2667
+ r.onopen(), e && e();
2668
+ }), n = (l) => {
2669
+ this.cleanup(), this._readyState = "closed", this.emitReserved("error", l), e ? e(l) : this.maybeReconnectOnOpen();
2670
+ }, o = K(t, "error", n);
2671
+ if (this._timeout !== !1) {
2672
+ const l = this._timeout, a = this.setTimeoutFn(() => {
2673
+ i(), n(new Error("timeout")), t.close();
2674
+ }, l);
2675
+ this.opts.autoUnref && a.unref(), this.subs.push(() => {
2676
+ this.clearTimeoutFn(a);
2677
+ });
2678
+ }
2679
+ return this.subs.push(i), this.subs.push(o), this;
2680
+ }
2681
+ /**
2682
+ * Alias for open()
2683
+ *
2684
+ * @return self
2685
+ * @public
2686
+ */
2687
+ connect(e) {
2688
+ return this.open(e);
2689
+ }
2690
+ /**
2691
+ * Called upon transport open.
2692
+ *
2693
+ * @private
2694
+ */
2695
+ onopen() {
2696
+ this.cleanup(), this._readyState = "open", this.emitReserved("open");
2697
+ const e = this.engine;
2698
+ this.subs.push(
2699
+ K(e, "ping", this.onping.bind(this)),
2700
+ K(e, "data", this.ondata.bind(this)),
2701
+ K(e, "error", this.onerror.bind(this)),
2702
+ K(e, "close", this.onclose.bind(this)),
2703
+ // @ts-ignore
2704
+ K(this.decoder, "decoded", this.ondecoded.bind(this))
2705
+ );
2706
+ }
2707
+ /**
2708
+ * Called upon a ping.
2709
+ *
2710
+ * @private
2711
+ */
2712
+ onping() {
2713
+ this.emitReserved("ping");
2714
+ }
2715
+ /**
2716
+ * Called with data.
2717
+ *
2718
+ * @private
2719
+ */
2720
+ ondata(e) {
2721
+ try {
2722
+ this.decoder.add(e);
2723
+ } catch (t) {
2724
+ this.onclose("parse error", t);
2725
+ }
2726
+ }
2727
+ /**
2728
+ * Called when parser fully decodes a packet.
2729
+ *
2730
+ * @private
2731
+ */
2732
+ ondecoded(e) {
2733
+ ye(() => {
2734
+ this.emitReserved("packet", e);
2735
+ }, this.setTimeoutFn);
2736
+ }
2737
+ /**
2738
+ * Called upon socket error.
2739
+ *
2740
+ * @private
2741
+ */
2742
+ onerror(e) {
2743
+ this.emitReserved("error", e);
2744
+ }
2745
+ /**
2746
+ * Creates a new socket for the given `nsp`.
2747
+ *
2748
+ * @return {Socket}
2749
+ * @public
2750
+ */
2751
+ socket(e, t) {
2752
+ let r = this.nsps[e];
2753
+ return r ? this._autoConnect && !r.active && r.connect() : (r = new Tt(this, e, t), this.nsps[e] = r), r;
2754
+ }
2755
+ /**
2756
+ * Called upon a socket close.
2757
+ *
2758
+ * @param socket
2759
+ * @private
2760
+ */
2761
+ _destroy(e) {
2762
+ const t = Object.keys(this.nsps);
2763
+ for (const r of t)
2764
+ if (this.nsps[r].active)
2765
+ return;
2766
+ this._close();
2767
+ }
2768
+ /**
2769
+ * Writes a packet.
2770
+ *
2771
+ * @param packet
2772
+ * @private
2773
+ */
2774
+ _packet(e) {
2775
+ const t = this.encoder.encode(e);
2776
+ for (let r = 0; r < t.length; r++)
2777
+ this.engine.write(t[r], e.options);
2778
+ }
2779
+ /**
2780
+ * Clean up transport subscriptions and packet buffer.
2781
+ *
2782
+ * @private
2783
+ */
2784
+ cleanup() {
2785
+ this.subs.forEach((e) => e()), this.subs.length = 0, this.decoder.destroy();
2786
+ }
2787
+ /**
2788
+ * Close the current socket.
2789
+ *
2790
+ * @private
2791
+ */
2792
+ _close() {
2793
+ this.skipReconnect = !0, this._reconnecting = !1, this.onclose("forced close");
2794
+ }
2795
+ /**
2796
+ * Alias for close()
2797
+ *
2798
+ * @private
2799
+ */
2800
+ disconnect() {
2801
+ return this._close();
2802
+ }
2803
+ /**
2804
+ * Called when:
2805
+ *
2806
+ * - the low-level engine is closed
2807
+ * - the parser encountered a badly formatted packet
2808
+ * - all sockets are disconnected
2809
+ *
2810
+ * @private
2811
+ */
2812
+ onclose(e, t) {
2813
+ var r;
2814
+ this.cleanup(), (r = this.engine) === null || r === void 0 || r.close(), this.backoff.reset(), this._readyState = "closed", this.emitReserved("close", e, t), this._reconnection && !this.skipReconnect && this.reconnect();
2815
+ }
2816
+ /**
2817
+ * Attempt a reconnection.
2818
+ *
2819
+ * @private
2820
+ */
2821
+ reconnect() {
2822
+ if (this._reconnecting || this.skipReconnect)
2823
+ return this;
2824
+ const e = this;
2825
+ if (this.backoff.attempts >= this._reconnectionAttempts)
2826
+ this.backoff.reset(), this.emitReserved("reconnect_failed"), this._reconnecting = !1;
2827
+ else {
2828
+ const t = this.backoff.duration();
2829
+ this._reconnecting = !0;
2830
+ const r = this.setTimeoutFn(() => {
2831
+ e.skipReconnect || (this.emitReserved("reconnect_attempt", e.backoff.attempts), !e.skipReconnect && e.open((i) => {
2832
+ i ? (e._reconnecting = !1, e.reconnect(), this.emitReserved("reconnect_error", i)) : e.onreconnect();
2833
+ }));
2834
+ }, t);
2835
+ this.opts.autoUnref && r.unref(), this.subs.push(() => {
2836
+ this.clearTimeoutFn(r);
2837
+ });
2838
+ }
2839
+ }
2840
+ /**
2841
+ * Called upon successful reconnect.
2842
+ *
2843
+ * @private
2844
+ */
2845
+ onreconnect() {
2846
+ const e = this.backoff.attempts;
2847
+ this._reconnecting = !1, this.backoff.reset(), this.emitReserved("reconnect", e);
2848
+ }
2849
+ }
2850
+ const G = {};
2851
+ function he(s, e) {
2852
+ typeof s == "object" && (e = s, s = void 0), e = e || {};
2853
+ const t = Rs(s, e.path || "/socket.io"), r = t.source, i = t.id, n = t.path, o = G[i] && n in G[i].nsps, l = e.forceNew || e["force new connection"] || e.multiplex === !1 || o;
2854
+ let a;
2855
+ return l ? a = new Oe(r, e) : (G[i] || (G[i] = new Oe(r, e)), a = G[i]), t.query && !e.query && (e.query = t.queryKey), a.socket(t.path, e);
2856
+ }
2857
+ Object.assign(he, {
2858
+ Manager: Oe,
2859
+ Socket: Tt,
2860
+ io: he,
2861
+ connect: he
2862
+ });
2863
+ var Kr = class {
2864
+ constructor(s) {
2865
+ this.publicKey = s.publicKey;
2866
+ }
2867
+ getPublicKey() {
2868
+ return this.publicKey;
2869
+ }
2870
+ }, Ot = {
2871
+ trigger: {
2872
+ loading: "Cargando..."
2873
+ },
2874
+ modal: {
2875
+ titles: {
2876
+ selectAsset: 'Selecciona el <span class="highlight">stablecoin</span>',
2877
+ selectNetwork: 'Selecciona la <span class="highlight">red</span>',
2878
+ scanQr: 'Depósito <span class="highlight">{symbol}</span>',
2879
+ success: '¡Gracias por <span class="highlight">tu compra!</span>',
2880
+ error: "Error en el Pago",
2881
+ idle: "Estado inesperado",
2882
+ processing: '¡Procesando <span class="highlight">tu pago!</span>'
2883
+ },
2884
+ subtitles: {
2885
+ selectAsset: "Selecciona la stablecoin con la que deseas pagar",
2886
+ selectNetwork: "Selecciona la red de tu preferencia",
2887
+ idle: "Ocurrio un error inesperado"
2888
+ },
2889
+ actions: {
2890
+ back: "Volver",
2891
+ close: "Cerrar",
2892
+ support: "Soporte",
2893
+ scanApp: 'Escanea con tu celular y continua desde la app de <span style="color: var(--apolo-accent)">Apolo Pay</span>',
2894
+ copy: "Copiar",
2895
+ copied: "¡Copiado!",
2896
+ payFromDevice: "Pagar desde este dispositivo"
2897
+ },
2898
+ labels: {
2899
+ network: "Red",
2900
+ address: "Dirección de depósito",
2901
+ amount: "Monto",
2902
+ product: "Producto o Servicio",
2903
+ minutes: "min",
2904
+ seconds: "seg",
2905
+ amountSent: "Monto Enviado",
2906
+ paid: "Pagado",
2907
+ remainingToPay: "Restante por pagar"
2908
+ },
2909
+ info: {
2910
+ noReloadPageTitle: '¡Por favor no <span style="color: var(--apolo-accent)">recargues la página!</span>',
2911
+ noReloadPageSubTitle: "La pantalla se actualizara cuando confirmes tu pago",
2912
+ selectNetworkLater: "Luego podrás seleccionar la red de tu preferencia"
2913
+ },
2914
+ warnings: {
2915
+ networkMatch: "Asegúrate de que la <strong>red de tu wallet coincida</strong> con la red de destino.",
2916
+ noNFT: "No envíes NFTs a esta wallet.",
2917
+ onlyToken: "Solo se aceptan <strong>depósitos en {symbol}</strong>. El envío de otro tipo de token podría resultar en su pérdida.",
2918
+ timer: "Realiza el pago dentro del tiempo indicado. <strong>{time}</strong> De lo contrario, el código QR se vencerá."
2919
+ },
2920
+ success: {
2921
+ message: "Tu pago fue exitoso y en breve recibirás un correo",
2922
+ message2: "con los detalles.",
2923
+ details: "Detalles de la compra",
2924
+ support: "Cualquier duda o inquietud puedes comunicarte con soporte"
2925
+ }
2926
+ },
2927
+ successes: {
2928
+ success: "Éxito"
2929
+ },
2930
+ errors: {
2931
+ generic: "Ocurrió un error inesperado.",
2932
+ publicKeyMissing: "Falta la Public Key",
2933
+ config: "Error de Configuración",
2934
+ timeout: "El tiempo para realizar el pago ha expirado. Por favor genera una nueva orden.",
2935
+ paymentFailed: "El pago ha fallado. Por favor genera una nueva orden.",
2936
+ connectError: "Error de conexión.",
2937
+ socketConnectionError: "Error de conexión en el socket.",
2938
+ dataLoadError: "No se pudo cargar los datos de pago.",
2939
+ qrFetchError: "Fallo al obtener los detalles del código QR.",
2940
+ paymentProcessNotAvailable: "El proceso de pago no está disponible.",
2941
+ getAssetsError: "Error al obtener los activos.",
2942
+ unknownError: "Ocurrió un error inesperado."
2943
+ }
2944
+ }, sr = {
2945
+ trigger: {
2946
+ loading: "Loading..."
2947
+ },
2948
+ modal: {
2949
+ titles: {
2950
+ selectAsset: 'Select <span class="highlight">stablecoin</span>',
2951
+ selectNetwork: 'Select <span class="highlight">network</span>',
2952
+ scanQr: 'Deposit <span class="highlight">{symbol}</span>',
2953
+ success: 'Thanks for <span class="highlight">your purchase!</span>',
2954
+ error: "Payment Error",
2955
+ idle: "Unexpected state",
2956
+ processing: 'Processing <span class="highlight">your payment!</span>'
2957
+ },
2958
+ subtitles: {
2959
+ selectAsset: "Select the stablecoin you want to pay with",
2960
+ selectNetwork: "Select your preferred network",
2961
+ idle: "An Unexpected error occurred"
2962
+ },
2963
+ actions: {
2964
+ back: "Back",
2965
+ close: "Close",
2966
+ support: "Support",
2967
+ scanApp: 'Scan with your phone and continue from <br><span style="color: var(--apolo-accent)">Apolo Pay</span> app',
2968
+ copy: "Copy",
2969
+ copied: "Copied!",
2970
+ payFromDevice: "Pay from this device"
2971
+ },
2972
+ labels: {
2973
+ network: "Network",
2974
+ address: "Deposit Address",
2975
+ amount: "Amount",
2976
+ product: "Product or Service",
2977
+ minutes: "min",
2978
+ seconds: "sec",
2979
+ amountSent: "Amount sent",
2980
+ paid: "Paid",
2981
+ remainingToPay: "Remaining balance to pay"
2982
+ },
2983
+ info: {
2984
+ noReloadPageTitle: 'Please do not <span style="color: var(--apolo-accent)">reload the page!</span>',
2985
+ noReloadPageSubTitle: "The screen will update when you confirm your payment",
2986
+ selectNetworkLater: "You will be able to select your preferred network later"
2987
+ },
2988
+ warnings: {
2989
+ networkMatch: "Ensure your <strong>wallet network matches</strong> the destination network.",
2990
+ noNFT: "Do not send NFTs to this wallet.",
2991
+ onlyToken: "Only <strong>{symbol} deposits</strong> are accepted. Sending other tokens may result in loss.",
2992
+ timer: "Complete payment within <strong>{time}</strong>. Otherwise, the QR code will expire."
2993
+ },
2994
+ success: {
2995
+ message: "Your payment was successful. You will receive an email",
2996
+ message2: "shortly.",
2997
+ details: "Purchase Details",
2998
+ support: "Any doubt or inquiry you can contact support"
2999
+ }
3000
+ },
3001
+ successes: {
3002
+ success: "Success"
3003
+ },
3004
+ errors: {
3005
+ generic: "An unexpected error occurred.",
3006
+ publicKeyMissing: "Public Key is missing",
3007
+ config: "Config Error",
3008
+ timeout: "The payment time has expired. Please generate a new order.",
3009
+ paymentFailed: "The payment has failed. Please generate a new order.",
3010
+ connectError: "Connection error in real time.",
3011
+ socketConnectionError: "Connection error in socket.",
3012
+ dataLoadError: "Could not load payment options.",
3013
+ qrFetchError: "Failed to get payment details.",
3014
+ paymentProcessNotAvailable: "The payment process is not available.",
3015
+ getAssetsError: "Failed to get assets.",
3016
+ unknownError: "An unexpected error occurred."
3017
+ }
3018
+ }, y = class {
3019
+ // Cambiar idioma
3020
+ static setLocale(s) {
3021
+ this._currentLocale = s, this._dictionary = s === "en" ? sr : Ot;
3022
+ }
3023
+ static get current() {
3024
+ return this._currentLocale;
3025
+ }
3026
+ // Función para obtener texto (Tipado seguro para claves anidadas sería complejo,
3027
+ // así que usaremos acceso directo o un getter helper si lo prefieres)
3028
+ static get t() {
3029
+ return this._dictionary;
3030
+ }
3031
+ // Helper para interpolar variables: "Hola {name}" -> "Hola Mundo"
3032
+ static interpolate(s, e) {
3033
+ return s.replace(/{(\w+)}/g, (t, r) => typeof e[r] < "u" ? String(e[r]) : t);
3034
+ }
3035
+ };
3036
+ y._currentLocale = "es";
3037
+ y._dictionary = Ot;
3038
+ var X = /* @__PURE__ */ ((s) => (s.success = "success", s.payment_success = "payment_success", s.payment_failed = "payment_failed", s.payment_partial = "payment_partial", s.payment_timeout = "payment_timeout", s.connect_error = "connect_error", s.socket_connection_error = "socket_connection_error", s.data_load_error = "data_load_error", s.qr_fetch_error = "qr_fetch_error", s.paymentProcessNotAvailable = "payment_process_not_available", s.get_assets_error = "get_assets_error", s.unknown_error = "unknown_error", s))(X || {}), xt = class {
3039
+ constructor({ code: s, message: e }) {
3040
+ this.code = s, this.message = e;
3041
+ }
3042
+ }, lt = class Ut extends xt {
3043
+ constructor({ code: e, message: t, result: r }) {
3044
+ super({ code: e, message: t }), this.result = r;
3045
+ }
3046
+ static fromJson(e, { code: t, message: r, result: i } = {}) {
3047
+ const n = e.status || t || "success", o = e.message || r || y.t.successes.success, l = i?.(e.result) || e.result || e;
3048
+ return new Ut({ code: n, message: o, result: l });
3049
+ }
3050
+ }, Ce = class xe extends xt {
3051
+ constructor({ code: e, message: t, error: r }) {
3052
+ super({ code: e, message: t }), this.error = r;
3053
+ }
3054
+ static fromError(e, { code: t, message: r } = {}) {
3055
+ if (e instanceof xe) return e;
3056
+ const i = t || e.statusCode || "unknown_error", n = r || e.message || y.t.errors.unknownError, o = e.error || e;
3057
+ return new xe({ code: i, message: n, error: o });
3058
+ }
3059
+ }, rr = "https://p2p.apolopay.app", ct = "https://pb-api.apolopay.app", ir = "https://pb-ws.apolopay.app", Ue = class {
3060
+ static async getAssets() {
3061
+ try {
3062
+ const e = await (await fetch(`${ct}/payment-button/assets`, {
3063
+ method: "GET",
3064
+ headers: this.headers()
3065
+ })).json();
3066
+ return lt.fromJson(e);
3067
+ } catch (s) {
3068
+ throw Ce.fromError(s, {
3069
+ code: "get_assets_error",
3070
+ message: y.t.errors.getAssetsError
3071
+ });
3072
+ }
3073
+ }
3074
+ static async fetchQrCodeDetails({
3075
+ processId: s,
3076
+ assetId: e,
3077
+ networkId: t,
3078
+ publicKey: r
3079
+ }) {
3080
+ try {
3081
+ const i = await fetch(`${ct}/payment-button/process/confirm`, {
3082
+ method: "POST",
3083
+ headers: this.headers(r),
3084
+ body: JSON.stringify({
3085
+ processId: s,
3086
+ assetId: e,
3087
+ networkId: t
3088
+ })
3089
+ }), n = await i.json();
3090
+ if (!n.result)
3091
+ throw new Ce({
3092
+ code: "payment_process_not_available",
3093
+ message: y.t.errors.paymentProcessNotAvailable
3094
+ });
3095
+ const o = n.result.wallet, a = n.result.network === "apolopay" ? `${rr}/payment-process/${s}` : o;
3096
+ return lt.fromJson(n, {
3097
+ result: (p) => {
3098
+ const h = Date.now() + 600 * 1e3;
3099
+ let E = p.expiresAtMs ?? p.expiresAt;
3100
+ const M = ((j) => {
3101
+ if (!j) return h;
3102
+ let T = 0;
3103
+ if (!isNaN(Number(j)))
3104
+ T = Number(j);
3105
+ else if (typeof j == "string") {
3106
+ const We = new Date(j).getTime();
3107
+ isNaN(We) || (T = We);
3108
+ }
3109
+ if (T === 0) return h;
3110
+ if (T < 1e10)
3111
+ T *= 1e3;
3112
+ else if (T > 1e13)
3113
+ for (; T > 2e13; )
3114
+ T = Math.floor(T / 1e3);
3115
+ return T;
3116
+ })(E);
3117
+ return {
3118
+ ...p,
3119
+ address: a,
3120
+ qrCodeUrl: `https://api.qrserver.com/v1/create-qr-code/?size=150x150&data=${a}&ecc=H`,
3121
+ paymentUrl: a.startsWith("http") ? a : void 0,
3122
+ expiresAtMs: M
3123
+ };
3124
+ }
3125
+ });
3126
+ } catch (i) {
3127
+ throw Ce.fromError(i, {
3128
+ code: "qr_fetch_error",
3129
+ message: y.t.errors.qrFetchError
3130
+ });
3131
+ }
3132
+ }
3133
+ };
3134
+ Ue.headers = (s) => {
3135
+ const e = {
3136
+ "Content-Type": "application/json"
3137
+ };
3138
+ return s && (e["x-public-key"] = s), e;
3139
+ };
3140
+ var nr = class {
3141
+ constructor(s) {
3142
+ this.sessionOptions = null, this.socket = null, this.client = s;
3143
+ }
3144
+ connect(s) {
3145
+ if (typeof window > "u") return;
3146
+ if (this.sessionOptions = s, this.socket && this.socket.connected) return this.disconnect();
3147
+ this.socket = he(ir, {
3148
+ extraHeaders: {
3149
+ "x-public-key": this.client.getPublicKey()
3150
+ },
3151
+ transports: ["websocket", "polling"]
3152
+ });
3153
+ const { processId: e } = s;
3154
+ this.socket.on("connect", () => this.socket?.emit("process:connect", { processId: e })), console.log(`Conectado a Socket.io para processId: ${e}`), this.socket.on("process:message", (t) => this.handleWebSocketMessage(t)), this.socket.on("connect_error", (t) => {
3155
+ console.error("Error en conexión Socket.io:", t), this.sessionOptions?.onError?.({ code: "connect_error", message: y.t.errors.connectError, error: t }), this.disconnect();
3156
+ }), this.socket.on("disconnect", (t) => {
3157
+ console.info(`Socket.io Desconectado: ${t}`), this.socket = null;
3158
+ });
3159
+ }
3160
+ handleWebSocketMessage(s) {
3161
+ if (!s.success)
3162
+ return this.sessionOptions?.onError?.({
3163
+ code: "payment_failed",
3164
+ message: s.message,
3165
+ error: s.result
3166
+ });
3167
+ if (s.event === "partial_payment")
3168
+ return this.sessionOptions?.onPartialPayment?.({
3169
+ code: "payment_partial",
3170
+ message: s.message,
3171
+ result: s.result
3172
+ });
3173
+ if (s.event === "funds_received")
3174
+ return this.sessionOptions?.onSuccess?.({
3175
+ code: "payment_success",
3176
+ message: s.message,
3177
+ result: s.result
3178
+ });
3179
+ }
3180
+ disconnect() {
3181
+ this.socket && (this.socket.disconnect(), this.socket = null);
3182
+ }
3183
+ }, or = class {
3184
+ constructor(s) {
3185
+ this.client = s, this.socket = new nr(this.client);
3186
+ }
3187
+ getPublicKey() {
3188
+ return this.client.getPublicKey();
3189
+ }
3190
+ // --- Métodos para obtener datos ---
3191
+ async getAssets() {
3192
+ return (await Ue.getAssets()).result;
3193
+ }
3194
+ // --- Método para obtener datos del QR ---
3195
+ async fetchQrCodeDetails(s, e) {
3196
+ const t = await Ue.fetchQrCodeDetails({
3197
+ ...s,
3198
+ processId: e.processId,
3199
+ publicKey: this.client.getPublicKey()
3200
+ });
3201
+ return this.socket.connect(e), t.result;
3202
+ }
3203
+ disconnectWebSocket() {
3204
+ this.socket.disconnect();
3205
+ }
3206
+ }, g = /* @__PURE__ */ ((s) => (s[s.SELECT_ASSET = 0] = "SELECT_ASSET", s[s.SELECT_NETWORK = 1] = "SELECT_NETWORK", s[s.SHOW_QR = 2] = "SHOW_QR", s[s.RESULT = 3] = "RESULT", s))(g || {});
3207
+ const Bt = B`
3208
+ :host {
3209
+ /* --- API PÚBLICA DE COLORES (THEMING) --- */
3210
+ --apolo-primary: var(--payment-button-primary, #0388c0);
3211
+ --apolo-primary-darkest: var(--payment-button-primary-darkest, #041c4c);
3212
+ --apolo-on-primary: var(--payment-button-on-primary, #ffffff);
3213
+
3214
+ --apolo-bg: var(--payment-button-bg, #f6f2ec);
3215
+ --apolo-text: var(--payment-button-text, #1c315c);
3216
+ --apolo-text-muted: var(--payment-button-text-muted, #6b7280);
3217
+ --apolo-accent: var(--payment-button-accent, #ea580c);
3218
+ --apolo-border: var(--payment-button-border, #e5e7eb);
3219
+
3220
+ /* --- API PÚBLICA DE FORMA Y TIPOGRAFÍA --- */
3221
+ --apolo-radius: var(--payment-button-radius, 12px);
3222
+ --apolo-radius-lg: var(--payment-button-radius-lg, 30px);
3223
+ --apolo-font: var(--payment-button-font, 'Inter', system-ui, -apple-system, sans-serif);
3224
+ --apolo-shadow: var(--payment-button-shadow, 0 10px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1));
3225
+ --apolo-z-index: var(--payment-button-z-index, 9999);
3226
+ }
3227
+
3228
+ /* Reset global para componentes internos */
3229
+ * {
3230
+ box-sizing: border-box;
3231
+ font-family: var(--apolo-font);
3232
+ }
3233
+ `, Be = "data:image/png;base64,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";
3234
+ var ar = Object.defineProperty, lr = Object.getOwnPropertyDescriptor, W = (s, e, t, r) => {
3235
+ for (var i = r > 1 ? void 0 : r ? lr(e, t) : e, n = s.length - 1, o; n >= 0; n--)
3236
+ (o = s[n]) && (i = (r ? o(e, t, i) : o(i)) || i);
3237
+ return r && i && ar(e, t, i), i;
3238
+ };
3239
+ let L = class extends I {
3240
+ constructor() {
3241
+ super(...arguments), this.lang = "es", this.loading = !1, this.disabled = !1, this.label = void 0, this.hasError = !1;
3242
+ }
3243
+ render() {
3244
+ const s = y.t, e = this.hasError ? s.errors.config || "Config Error" : this.loading ? s.trigger.loading : this.label || "Apolo Pay";
3245
+ return f`
3246
+ <div class="button-wrapper">
3247
+ ${this.hasError ? "" : f`
3248
+ <img class="logo-apolo" src="${Be}" alt="Icon" />
3249
+ `}
3250
+ <button
3251
+ ?disabled=${this.disabled || this.loading || this.hasError}
3252
+ class="${this.hasError ? "error" : ""}"
3253
+ type="button"
3254
+ >
3255
+ ${e}
3256
+ </button>
3257
+ </div>
3258
+ `;
3259
+ }
3260
+ };
3261
+ L.styles = [
3262
+ Bt,
3263
+ B`
3264
+ :host { display: inline-block; }
3265
+
3266
+ .button-wrapper {
3267
+ --img-size: 24px;
3268
+ --gap: 8px;
3269
+ }
3270
+
3271
+ button {
3272
+ position: relative;
3273
+ display: inline-flex;
3274
+ align-items: center;
3275
+ justify-content: center;
3276
+ width: 100%;
3277
+ height: 100%;
3278
+ padding: 12px 32px;
3279
+
3280
+ font-size: 0.9rem;
3281
+ letter-spacing: 0.5px;
3282
+ color: var(--apolo-on-primary);
3283
+
3284
+ background: #74727225;
3285
+ border: none;
3286
+ border-radius: 9999px;
3287
+ cursor: pointer;
3288
+ transition: transform 0.2s, background-color 0.2s;
3289
+
3290
+ text-indent: var(--img-size);
3291
+ mix-blend-mode: difference;
3292
+ z-index: 1;
3293
+ }
3294
+
3295
+ button::before {
3296
+ content: "";
3297
+ position: absolute;
3298
+ inset: 0;
3299
+ border-radius: 9999px;
3300
+ padding: 2px;
3301
+ background: linear-gradient(90deg, var(--apolo-primary), #ffffff);
3302
+ -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
3303
+ mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
3304
+ -webkit-mask-composite: xor;
3305
+ mask-composite: exclude;
3306
+ z-index: -1;
3307
+ }
3308
+
3309
+ button:hover {
3310
+ transform: translateY(-1px);
3311
+ background-color: rgba(255, 255, 255, 0.1);
3312
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
3313
+ }
3314
+
3315
+ .button-wrapper:hover img {
3316
+ transform: translateY(calc(-50% - 1px));
3317
+ }
3318
+
3319
+ button:active {
3320
+ transform: translateY(0);
3321
+ }
3322
+
3323
+ button:disabled {
3324
+ opacity: 0.6;
3325
+ cursor: not-allowed;
3326
+ filter: grayscale(1);
3327
+ transform: none;
3328
+ }
3329
+
3330
+ button.error {
3331
+ background-color: rgba(239, 68, 68, 0.1);
3332
+ color: #ef4444;
3333
+ text-indent: 0;
3334
+ }
3335
+
3336
+ button.error::before {
3337
+ background: linear-gradient(90deg, #ef4444, #fca5a5);
3338
+ }
3339
+
3340
+ .logo-apolo {
3341
+ position: absolute;
3342
+ top: 50%;
3343
+ left: calc((var(--img-size) / 2) + var(--gap));
3344
+ transform: translateY(-50%);
3345
+ width: var(--img-size);
3346
+ height: var(--img-size);
3347
+ margin-right: var(--gap);
3348
+ transition: transform 0.2s;
3349
+ }
3350
+ `
3351
+ ];
3352
+ W([
3353
+ d({ type: String })
3354
+ ], L.prototype, "lang", 2);
3355
+ W([
3356
+ d({ type: Boolean })
3357
+ ], L.prototype, "loading", 2);
3358
+ W([
3359
+ d({ type: Boolean })
3360
+ ], L.prototype, "disabled", 2);
3361
+ W([
3362
+ d({ type: String })
3363
+ ], L.prototype, "label", 2);
3364
+ W([
3365
+ d({ type: Boolean })
3366
+ ], L.prototype, "hasError", 2);
3367
+ L = W([
3368
+ me("trigger-button")
3369
+ ], L);
3370
+ const cr = B`
3371
+ /* 1. Definimos las Animaciones */
3372
+ @keyframes modal-enter {
3373
+ from { opacity: 0; transform: scale(0.95) translateY(10px); }
3374
+ to { opacity: 1; transform: scale(1) translateY(0); }
3375
+ }
3376
+
3377
+ @keyframes modal-exit {
3378
+ from { opacity: 1; transform: scale(1) translateY(0); }
3379
+ to { opacity: 0; transform: scale(0.95) translateY(10px); }
3380
+ }
3381
+
3382
+ @keyframes backdrop-enter {
3383
+ from { background-color: rgba(0, 0, 0, 0); backdrop-filter: blur(0px); }
3384
+ to { background-color: rgba(0, 0, 0, 0.6); backdrop-filter: blur(4px); }
3385
+ }
3386
+
3387
+ @keyframes backdrop-exit {
3388
+ from { background-color: rgba(0, 0, 0, 0.6); backdrop-filter: blur(4px); }
3389
+ to { background-color: rgba(0, 0, 0, 0); backdrop-filter: blur(0px); }
3390
+ }
3391
+
3392
+ /* 2. Estilos Base */
3393
+ dialog {
3394
+ border: none;
3395
+ padding: 0;
3396
+ margin: auto;
3397
+
3398
+ /* Geometría */
3399
+ min-width: 320px;
3400
+ max-width: 420px;
3401
+ width: 90vw;
3402
+ border-radius: var(--apolo-radius);
3403
+
3404
+ background-color: var(--apolo-bg);
3405
+ color: var(--apolo-text);
3406
+ box-shadow: var(--apolo-shadow);
3407
+ font-family: var(--apolo-font);
3408
+
3409
+ opacity: 0;
3410
+ pointer-events: none;
3411
+ }
3412
+
3413
+ /* 3. Estado: ABIERTO (Animación de Entrada) */
3414
+ dialog[open] {
3415
+ opacity: 1;
3416
+ animation: modal-enter 0.2s cubic-bezier(0.16, 1, 0.3, 1) forwards;
3417
+ pointer-events: auto;
3418
+ }
3419
+
3420
+ /* 4. Estado: CERRANDO (Animación de Salida) */
3421
+ dialog.closing {
3422
+ /* Sobrescribimos la animación de entrada */
3423
+ animation: modal-exit 0.15s ease-in forwards;
3424
+ }
3425
+
3426
+ /* 5. Backdrop (Fondo Oscuro) */
3427
+ dialog::backdrop {
3428
+ background-color: rgba(0,0,0,0); /* Invisible por defecto */
3429
+ }
3430
+
3431
+ dialog[open]::backdrop {
3432
+ animation: backdrop-enter 0.2s ease-out forwards;
3433
+ }
3434
+
3435
+ dialog.closing::backdrop {
3436
+ animation: backdrop-exit 0.15s ease-in forwards;
3437
+ }
3438
+
3439
+ dialog:not([open])::backdrop {
3440
+ display: none;
3441
+ pointer-events: none;
3442
+ }
3443
+ `, hr = B`
3444
+ /* Inputs de solo lectura (Diseño Apolo) */
3445
+ .text-field {
3446
+ display: flex;
3447
+ gap: 0.5rem;
3448
+ margin-top: 1rem;
3449
+ text-align: left;
3450
+ position: relative;
3451
+ }
3452
+ .text-field-label {
3453
+ --padding-left: 0.25rem;
3454
+ --padding-top: 0.15rem;
3455
+ font-size: 0.75rem;
3456
+ color: #9ca3af;
3457
+ border-radius: calc(var(--apolo-radius) - 1px);
3458
+ background: #ffffff;
3459
+ padding: var(--padding-top) var(--padding-left);
3460
+ position: absolute;
3461
+ top: calc(-0.5rem - var(--padding-top));
3462
+ left: calc(1rem - var(--padding-left));
3463
+ display: block;
3464
+ z-index: 2;
3465
+ }
3466
+ .text-field-input {
3467
+ width: 100%;
3468
+ padding: 0.75rem 1rem;
3469
+ border: 1px solid #526282;
3470
+ border-radius: var(--apolo-radius);
3471
+ background: #ffffff;
3472
+ color: #4b5563;
3473
+ font-size: 0.9rem;
3474
+ z-index: 1;
3475
+ }
3476
+ .btn-secondary {
3477
+ background-color: #526282;
3478
+ color: #ffffff;
3479
+ border: none;
3480
+ border-radius: var(--apolo-radius);
3481
+ padding: 0.5rem 1rem;
3482
+ cursor: pointer;
3483
+ transition: background-color 0.2s ease;
3484
+ }
3485
+ `;
3486
+ const pr = { CHILD: 2 }, dr = (s) => (...e) => ({ _$litDirective$: s, values: e });
3487
+ class ur {
3488
+ constructor(e) {
3489
+ }
3490
+ get _$AU() {
3491
+ return this._$AM._$AU;
3492
+ }
3493
+ _$AT(e, t, r) {
3494
+ this._$Ct = e, this._$AM = t, this._$Ci = r;
3495
+ }
3496
+ _$AS(e, t) {
3497
+ return this.update(e, t);
3498
+ }
3499
+ update(e, t) {
3500
+ return this.render(...t);
3501
+ }
3502
+ }
3503
+ class Ne extends ur {
3504
+ constructor(e) {
3505
+ if (super(e), this.it = b, e.type !== pr.CHILD) throw Error(this.constructor.directiveName + "() can only be used in child bindings");
3506
+ }
3507
+ render(e) {
3508
+ if (e === b || e == null) return this._t = void 0, this.it = e;
3509
+ if (e === z) return e;
3510
+ if (typeof e != "string") throw Error(this.constructor.directiveName + "() called with a non-string value");
3511
+ if (e === this.it) return this._t;
3512
+ this.it = e;
3513
+ const t = [e];
3514
+ return t.raw = t, this._t = { _$litType$: this.constructor.resultType, strings: t, values: [] };
3515
+ }
3516
+ }
3517
+ Ne.directiveName = "unsafeHTML", Ne.resultType = 1;
3518
+ const J = dr(Ne), Ar = B`
3519
+ .qr-frame {
3520
+ background: white;
3521
+ padding: 10px;
3522
+ padding-bottom: 14px;
3523
+ border-radius: var(--apolo-radius);
3524
+ box-shadow: 0 4px 15px rgba(0,0,0,0.08);
3525
+ display: inline-block;
3526
+ margin-bottom: 1rem;
3527
+ }
3528
+
3529
+ .qr-badge {
3530
+ color: var(--apolo-accent);
3531
+ font-weight: 700;
3532
+ font-size: 1.2rem;
3533
+ display: inline-block;
3534
+ margin-top: 10px;
3535
+ }
3536
+
3537
+ .qr-wrapper {
3538
+ position: relative;
3539
+ display: block;
3540
+ width: 150px;
3541
+ height: 150px;
3542
+ }
3543
+
3544
+ .qr-code-img {
3545
+ width: 100%;
3546
+ height: 100%;
3547
+ }
3548
+
3549
+ .qr-overlay-icon {
3550
+ position: absolute;
3551
+ top: 50%;
3552
+ left: 50%;
3553
+ transform: translate(-50%, -50%);
3554
+
3555
+ width: 36px;
3556
+ height: 36px;
3557
+
3558
+ object-fit: contain;
3559
+ background-color: white;
3560
+ border-radius: 50%;
3561
+ padding: 2px;
3562
+ box-shadow: 0 2px 4px rgba(0,0,0,0.1);
3563
+ }
3564
+ `, fr = "data:image/png;base64,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";
3565
+ function ne(s) {
3566
+ const e = s.target;
3567
+ e.src = fr;
3568
+ }
3569
+ const mr = B`
3570
+ .spinner-overlay {
3571
+ position: absolute;
3572
+ inset: 0;
3573
+ background-color: rgba(255, 255, 255, 0.3);
3574
+ z-index: 50;
3575
+ display: flex;
3576
+ align-items: center;
3577
+ justify-content: center;
3578
+ border-radius: var(--apolo-radius, 12px);
3579
+ cursor: wait;
3580
+ backdrop-filter: blur(2px);
3581
+ }
3582
+
3583
+ .spinner {
3584
+ border: 4px solid #e5e7eb;
3585
+ border-top: 4px solid var(--apolo-primary, #6366f1);
3586
+ border-radius: 50%;
3587
+ width: 40px;
3588
+ height: 40px;
3589
+ animation: spin 1s linear infinite;
3590
+ }
3591
+
3592
+ @keyframes spin {
3593
+ 0% { transform: rotate(0deg); }
3594
+ 100% { transform: rotate(360deg); }
3595
+ }
3596
+ `;
3597
+ var yr = Object.defineProperty, gr = Object.getOwnPropertyDescriptor, Fe = (s, e, t, r) => {
3598
+ for (var i = r > 1 ? void 0 : r ? gr(e, t) : e, n = s.length - 1, o; n >= 0; n--)
3599
+ (o = s[n]) && (i = (r ? o(e, t, i) : o(i)) || i);
3600
+ return r && i && yr(e, t, i), i;
3601
+ };
3602
+ let te = class extends I {
3603
+ constructor() {
3604
+ super(...arguments), this.expiresAt = 0, this.timerString = "-- : --", this._interval = null;
3605
+ }
3606
+ connectedCallback() {
3607
+ super.connectedCallback(), this.startTimer();
3608
+ }
3609
+ disconnectedCallback() {
3610
+ this.stopTimer(), super.disconnectedCallback();
3611
+ }
3612
+ updated(s) {
3613
+ s.has("expiresAt") && this.startTimer();
3614
+ }
3615
+ startTimer() {
3616
+ if (this.stopTimer(), !this.expiresAt || isNaN(this.expiresAt)) return;
3617
+ const s = () => {
3618
+ const e = Date.now(), t = this.expiresAt - e;
3619
+ if (t <= 0) {
3620
+ this.stopTimer();
3621
+ const p = y.t.modal.labels.minutes, u = y.t.modal.labels.seconds;
3622
+ this.timerString = `00 ${p} : 00 ${u}`, this.dispatchEvent(new CustomEvent("expired"));
3623
+ return;
3624
+ }
3625
+ const r = Math.floor(t % (1e3 * 60 * 60) / (1e3 * 60)), i = Math.floor(t % (1e3 * 60) / 1e3), n = r.toString().padStart(2, "0"), o = i.toString().padStart(2, "0"), l = y.t.modal.labels.minutes, a = y.t.modal.labels.seconds;
3626
+ this.timerString = `${n} ${l} : ${o} ${a}`;
3627
+ };
3628
+ s(), this._interval = window.setInterval(s, 1e3);
3629
+ }
3630
+ stopTimer() {
3631
+ this._interval && (clearInterval(this._interval), this._interval = null);
3632
+ }
3633
+ render() {
3634
+ return f`${this.timerString}`;
3635
+ }
3636
+ };
3637
+ te.styles = B`
3638
+ :host {
3639
+ display: block;
3640
+ color: var(--apolo-accent, #ea580c);
3641
+ font-weight: 600;
3642
+ font-size: 0.9rem;
3643
+ margin-bottom: 1rem;
3644
+ }
3645
+ `;
3646
+ Fe([
3647
+ d({ type: Number })
3648
+ ], te.prototype, "expiresAt", 2);
3649
+ Fe([
3650
+ C()
3651
+ ], te.prototype, "timerString", 2);
3652
+ te = Fe([
3653
+ me("payment-timer")
3654
+ ], te);
3655
+ var kr = Object.defineProperty, vr = Object.getOwnPropertyDescriptor, v = (s, e, t, r) => {
3656
+ for (var i = r > 1 ? void 0 : r ? vr(e, t) : e, n = s.length - 1, o; n >= 0; n--)
3657
+ (o = s[n]) && (i = (r ? o(e, t, i) : o(i)) || i);
3658
+ return r && i && kr(e, t, i), i;
3659
+ };
3660
+ let k = class extends I {
3661
+ constructor() {
3662
+ super(...arguments), this.isOpen = !1, this.barrierDismissible = !1, this.lang = "es", this.productTitle = "", this.currentStep = g.SELECT_ASSET, this.status = "idle", this.error = null, this.isLoadingData = !0, this.assets = [], this.selectedAsset = null, this.selectedNetwork = null, this.qrCodeUrl = null, this.paymentAddress = null, this.amount = 0, this.amountPaid = void 0, this.email = "", this.qrCodeExpiresAt = null, this.paymentUrl = null, this.isAddressCopied = !1, this.handleBackdropClick = (s) => {
3663
+ if (s.target !== this.dialogElement || this.dialogElement.classList.contains("closing") || !this.barrierDismissible) return;
3664
+ const e = this.dialogElement.getBoundingClientRect();
3665
+ (s.clientY < e.top || s.clientY > e.bottom || s.clientX < e.left || s.clientX > e.right) && this.requestClose();
3666
+ };
3667
+ }
3668
+ disconnectedCallback() {
3669
+ super.disconnectedCallback();
3670
+ const s = this.dialogElement;
3671
+ s && s.open && s.close();
3672
+ }
3673
+ // --- Lifecycle: Manage Dialog State ---
3674
+ async updated(s) {
3675
+ if (super.updated(s), await this.updateComplete, s.has("isOpen")) {
3676
+ const e = this.dialogElement;
3677
+ if (!e) return;
3678
+ if (this.isOpen)
3679
+ e.classList.remove("closing"), e.open || e.showModal(), e.addEventListener("click", this.handleBackdropClick);
3680
+ else {
3681
+ if (e.removeEventListener("click", this.handleBackdropClick), !e.open) return;
3682
+ e.classList.add("closing");
3683
+ const t = (r) => {
3684
+ r.target === e && this.closeDialogFinal(e, t);
3685
+ };
3686
+ e.addEventListener("animationend", t), setTimeout(() => {
3687
+ e.open && this.closeDialogFinal(e, t);
3688
+ }, 200);
3689
+ }
3690
+ }
3691
+ }
3692
+ // Helper actualizado
3693
+ closeDialogFinal(s, e) {
3694
+ s.removeEventListener("animationend", e), s.classList.remove("closing"), s.open && s.close();
3695
+ }
3696
+ // --- Event Dispatchers (Emit events to parent) ---
3697
+ // Request to close the modal (triggered by X, backdrop, Escape)
3698
+ requestClose() {
3699
+ this.dispatchEvent(new CustomEvent("closeRequest"));
3700
+ }
3701
+ // Handle the native 'close' event (fired by Escape key)
3702
+ handleDialogNativeClose(s) {
3703
+ s.preventDefault(), this.requestClose();
3704
+ }
3705
+ handleTimerExpired() {
3706
+ this.status = "error", this.error = {
3707
+ code: X.payment_timeout,
3708
+ message: y.t.errors.timeout
3709
+ }, this.changeStep(g.RESULT), this.dispatchEvent(new CustomEvent("expired", { detail: { error: this.error } }));
3710
+ }
3711
+ // Emit event when a asset is selected
3712
+ selectAsset(s) {
3713
+ this.dispatchEvent(new CustomEvent("assetSelect", { detail: { assetId: s } }));
3714
+ }
3715
+ // Emit event when a network is selected
3716
+ selectNetwork(s) {
3717
+ this.dispatchEvent(new CustomEvent("networkSelect", { detail: { networkId: s } }));
3718
+ }
3719
+ // Emit event to request changing step (for "Back" buttons)
3720
+ changeStep(s, e) {
3721
+ e?.stopPropagation(), this.dispatchEvent(new CustomEvent("changeStep", { detail: s }));
3722
+ }
3723
+ copyAddress(s) {
3724
+ this.paymentAddress && (s.stopPropagation(), navigator.clipboard.writeText(this.paymentAddress), this.isAddressCopied = !0, setTimeout(() => this.isAddressCopied = !1, 2e3));
3725
+ }
3726
+ handlePayFromDevice() {
3727
+ this.paymentUrl && window.open(this.paymentUrl, "_blank");
3728
+ }
3729
+ get currentAsset() {
3730
+ return this.assets.find((s) => s.id === this.selectedAsset);
3731
+ }
3732
+ get currentNetwork() {
3733
+ return this.currentAsset?.networks.find((s) => s.id === this.selectedNetwork);
3734
+ }
3735
+ getFormattedTimeWindow() {
3736
+ if (!this.qrCodeExpiresAt || isNaN(this.qrCodeExpiresAt)) return "30 min";
3737
+ const s = this.qrCodeExpiresAt, e = Date.now(), t = s - e;
3738
+ return t <= 0 ? "0 min" : `${Math.ceil(t / (1e3 * 60))} min`;
3739
+ }
3740
+ // --- RENDERIZADO DEL QR (Lógica bifurcada) ---
3741
+ renderQRStep(s) {
3742
+ const e = this.getFormattedTimeWindow(), t = y.interpolate(s.modal.warnings.onlyToken, {
3743
+ symbol: this.currentAsset?.symbol || ""
3744
+ }), r = y.interpolate(s.modal.warnings.timer, {
3745
+ time: e
3746
+ }), i = this.currentNetwork, n = this.currentAsset?.symbol || "", o = this.amount - (this.amountPaid || 0);
3747
+ return i?.network === "apolopay" ? f`
3748
+ <payment-timer class="timer" .expiresAt=${this.qrCodeExpiresAt} @expired=${this.handleTimerExpired}></payment-timer>
3749
+
3750
+ ${this.amountPaid && this.amountPaid > 0 ? f`
3751
+ <div class="balance-card">
3752
+ <div class="balance-row">
3753
+ <span class="balance-label">${y.t.modal.labels.paid}:</span>
3754
+ <span class="balance-value">${this.amountPaid} ${n}</span>
3755
+ </div>
3756
+ <div class="balance-row">
3757
+ <span class="balance-label">${y.t.modal.labels.remainingToPay}:</span>
3758
+ <span class="balance-value highlight">${this.amount} ${n}</span>
3759
+ </div>
3760
+ </div>
3761
+ ` : ""}
3762
+
3763
+ <div class="qr-frame">
3764
+ <div class="qr-wrapper">
3765
+ <img src="${this.qrCodeUrl}" class="qr-code-img" alt="QR Apolo Pay" />
3766
+ <img src="${Be}" class="qr-overlay-icon" style="padding: 4px;" />
3767
+ </div>
3768
+ <span class="qr-badge">${o} ${n}</span>
3769
+ </div>
3770
+
3771
+ <div class="btn-dark">
3772
+ <h4 style="margin-top: 0; margin-bottom: .1rem;">${J(s.modal.info.noReloadPageTitle)}</h4>
3773
+ <span style="font-size: .8rem;">${s.modal.info.noReloadPageSubTitle}</span>
3774
+ </div>
3775
+
3776
+ <div class="warning-text">
3777
+ <p>${J(r)}</p>
3778
+ </div>
3779
+
3780
+ <button class="btn-dark">${J(s.modal.actions.scanApp)}</button>
3781
+ ${this.paymentUrl ? f`
3782
+ <button class="btn-primary" style="width: 100%; margin-top: 0.5rem;" @click=${this.handlePayFromDevice}>
3783
+ ${s.modal.actions.payFromDevice}
3784
+ </button>
3785
+ ` : ""}
3786
+ ` : f`
3787
+ <payment-timer class="timer" .expiresAt=${this.qrCodeExpiresAt} @expired=${this.handleTimerExpired}></payment-timer>
3788
+
3789
+ ${this.amountPaid && this.amountPaid > 0 ? f`
3790
+ <div class="balance-card">
3791
+ <div class="balance-row">
3792
+ <span class="balance-label">${y.t.modal.labels.paid}:</span>
3793
+ <span class="balance-value">${this.amountPaid} ${n}</span>
3794
+ </div>
3795
+ <div class="balance-row">
3796
+ <span class="balance-label">${y.t.modal.labels.remainingToPay}:</span>
3797
+ <span class="balance-value highlight">${this.amount} ${n}</span>
3798
+ </div>
3799
+ </div>
3800
+ ` : ""}
3801
+
3802
+ <div class="qr-frame">
3803
+ <div class="qr-wrapper">
3804
+ <img src="${this.qrCodeUrl}" class="qr-code-img" alt="QR Wallet" @error=${ne} />
3805
+
3806
+ ${i ? f`<img src="${i.image}" class="qr-overlay-icon" alt="Network Icon" @error=${ne} />` : ""}
3807
+ </div>
3808
+ <span class="qr-badge">${o} ${this.currentAsset?.symbol}</span>
3809
+ </div>
3810
+
3811
+ <div class="btn-dark">
3812
+ <h4 style="margin-top: 0; margin-bottom: .1rem;">${J(s.modal.info.noReloadPageTitle)}</h4>
3813
+ <span style="font-size: .8rem;">${s.modal.info.noReloadPageSubTitle}</span>
3814
+ </div>
3815
+
3816
+ <div class="text-field">
3817
+ <label class="text-field-label">${s.modal.labels.network}</label>
3818
+ <input class="text-field-input" readonly value="${this.currentNetwork?.name}" />
3819
+ </div>
3820
+
3821
+ <div class="text-field">
3822
+ <label class="text-field-label">${s.modal.labels.address}</label>
3823
+ <input class="text-field-input" readonly value="${this.paymentAddress}" @click=${this.copyAddress} />
3824
+ ${this.paymentAddress ? f`
3825
+ <button class="btn-secondary" @click=${this.copyAddress}>${this.isAddressCopied ? s.modal.actions.copied : s.modal.actions.copy}</button>
3826
+ ` : ""}
3827
+ </div>
3828
+
3829
+ <div class="warning-text">
3830
+ <ul>
3831
+ <li>${J(s.modal.warnings.networkMatch)}</li>
3832
+ <li>${J(s.modal.warnings.noNFT)}</li>
3833
+ <li>${J(t)}</li>
3834
+ </ul>
3835
+ <p>${J(r)}</p>
3836
+ </div>
3837
+ ${this.paymentUrl ? f`
3838
+ <button class="btn-primary" style="width: 100%; margin-top: 1rem;" @click=${this.handlePayFromDevice}>
3839
+ ${s.modal.actions.payFromDevice}
3840
+ </button>
3841
+ ` : ""}
3842
+ `;
3843
+ }
3844
+ // --- Render Method ---
3845
+ render() {
3846
+ const s = y.t;
3847
+ let e;
3848
+ const t = f`
3849
+ <div class="modal-header">
3850
+ ${this.currentStep > g.SELECT_ASSET && this.currentStep < g.RESULT ? f`<button class="back-button" @click=${() => this.changeStep(this.currentStep - 1)} >&larr;</button>` : ""}
3851
+ <button class="close-button" @click=${this.requestClose}>&times;</button>
3852
+ </div>
3853
+ `;
3854
+ this.currentStep === g.SELECT_ASSET ? e = f`
3855
+ <h2>${J(s.modal.titles.selectAsset)}</h2>
3856
+ <p class="subtitle">${s.modal.subtitles.selectAsset}</p>
3857
+
3858
+ <div class="selection-list">
3859
+ ${this.assets.map((i) => f`
3860
+ <div class="selection-card" @click=${() => this.selectAsset(i.id)}>
3861
+ <img src="${i.image}" class="coin-icon" @error=${ne} />
3862
+ <div class="card-text">
3863
+ <span class="card-title">${i.symbol}</span>
3864
+ <span class="card-sub">${i.name}</span>
3865
+ </div>
3866
+ </div>
3867
+ `)}
3868
+ </div>
3869
+ <p class="warning-text" style="font-size: 0.9rem; text-align: center; margin-top: 1.5rem">
3870
+ ${s.modal.info.selectNetworkLater}
3871
+ </p>
3872
+ ` : this.currentStep === g.SELECT_NETWORK ? e = f`
3873
+ <h2>${J(s.modal.titles.selectNetwork)}</h2>
3874
+ <p class="subtitle">${s.modal.subtitles.selectNetwork}</p>
3875
+
3876
+ <div class="selection-list">
3877
+ ${this.currentAsset?.networks.map((i) => f`
3878
+ <div class="selection-card" @click=${() => this.selectNetwork(i.id)}>
3879
+ <img src="${i.network === "apolopay" ? Be : i.image}" class="coin-icon" @error=${ne} />
3880
+ <div class="card-text">
3881
+ <span class="card-title">${i.name}</span>
3882
+ </div>
3883
+ </div>
3884
+ `)}
3885
+ </div>
3886
+ ` : this.currentStep === g.SHOW_QR ? e = f`
3887
+ <h2>${J(y.interpolate(s.modal.titles.scanQr, { symbol: this.currentAsset?.symbol || "" }))}</h2>
3888
+ ${this.productTitle ? f`<p class="subtitle">${this.productTitle}</p>` : ""}
3889
+ ${this.renderQRStep(s)}
3890
+ ` : this.currentStep === g.RESULT && (this.status === "success" ? e = f`
3891
+ <div class="result-container">
3892
+ <div class="success-icon">
3893
+ <svg viewBox="0 0 52 52">
3894
+ <circle class="checkmark-circle" cx="26" cy="26" r="25" fill="none"/>
3895
+ <path class="checkmark-check" fill="none" d="M14.1 27.2l7.1 7.2 16.7-16.8"/>
3896
+ </svg>
3897
+ </div>
3898
+
3899
+ <h2 class="result-title">${J(s.modal.titles.success)}</h2>
3900
+
3901
+ <p class="result-desc">
3902
+ ${s.modal.success.message} ${this.email ? f`<span class="highlight">${this.email}</span>` : ""} ${s.modal.success.message2}
3903
+ </p>
3904
+
3905
+ <div class="purchase-details">
3906
+ <h3 class="details-title">${s.modal.success.details}</h3>
3907
+
3908
+ ${this.productTitle ? f`
3909
+ <div class="text-field">
3910
+ <label class="text-field-label">${s.modal.labels.product}</label>
3911
+ <input class="text-field-input" readonly value=${this.productTitle} />
3912
+ </div>
3913
+ ` : ""}
3914
+
3915
+ <div class="text-field">
3916
+ <label class="text-field-label">${s.modal.labels.amount}</label>
3917
+ <input class="text-field-input" readonly value="${this.amount} ${this.currentAsset?.symbol || ""}" />
3918
+ </div>
3919
+ </div>
3920
+ </div>
3921
+ ` : this.status === "error" ? e = f`
3922
+ <div class="result-container">
3923
+ <div class="error-icon">❌</div>
3924
+ <h2 class="result-title">${s.modal.titles.error}</h2>
3925
+ <p class="result-desc">${this.error?.message || s.errors.generic}</p>
3926
+ <button class="btn-primary" @click=${this.requestClose}>${s.modal.actions.close}</button>
3927
+ </div>
3928
+ ` : this.status === "processing" ? e = f`
3929
+ <div class="processing-container">
3930
+ <div class="dots-loader">
3931
+ <div class="dot"></div>
3932
+ <div class="dot"></div>
3933
+ <div class="dot"></div>
3934
+ <div class="dot"></div>
3935
+ <div class="dot"></div>
3936
+ </div>
3937
+
3938
+ <h2 class="processing-title">${J(s.modal.titles.processing)}</h2>
3939
+
3940
+ <div class="btn-dark" style="margin-bottom: 0">
3941
+ <h4 style="margin-top: 0; margin-bottom: .1rem;">${J(s.modal.info.noReloadPageTitle)}</h4>
3942
+ <span style="font-size: .8rem;">${s.modal.info.noReloadPageSubTitle}</span>
3943
+ </div>
3944
+
3945
+ <div class="text-field" style="width: 100%;">
3946
+ <label class="text-field-label">${s.modal.labels.amountSent} (${this.currentAsset?.symbol})</label>
3947
+ <input class="text-field-input" readonly value="${this.amount} ${this.currentAsset?.symbol}" />
3948
+ </div>
3949
+ </div>
3950
+ </div>
3951
+ ` : e = f`
3952
+ <div class="result-container">
3953
+ <div class="error-icon">⏳</div>
3954
+ <h2 class="result-title">${s.modal.titles.idle}</h2>
3955
+ <p class="result-desc">${s.modal.subtitles.idle}</p>
3956
+ <button class="btn-primary" @click=${this.requestClose}>${s.modal.actions.close}</button>
3957
+ </div>
3958
+ `);
3959
+ const r = this.isLoadingData || this.currentStep === g.SHOW_QR && !this.qrCodeUrl;
3960
+ return f`
3961
+ <dialog @close=${this.handleDialogNativeClose}>
3962
+ ${r ? f`
3963
+ <div class="spinner-overlay">
3964
+ <div class="spinner"></div>
3965
+ </div>` : ""}
3966
+ ${t}
3967
+ <div class="modal-body">
3968
+ ${e}
3969
+ </div>
3970
+ </dialog>
3971
+ `;
3972
+ }
3973
+ // End render
3974
+ };
3975
+ k.styles = [
3976
+ Bt,
3977
+ cr,
3978
+ hr,
3979
+ Ar,
3980
+ mr,
3981
+ B`
3982
+ /* --- HEADER --- */
3983
+ .modal-header {
3984
+ position: relative; /* Para posicionar el botón de cerrar */
3985
+ padding: 1.5rem 1.5rem 0.5rem;
3986
+ display: flex;
3987
+ justify-content: center; /* Título centrado si lo hubiera */
3988
+ align-items: center;
3989
+ }
3990
+
3991
+ .close-button, .back-button {
3992
+ position: absolute;
3993
+ top: 1.5rem;
3994
+ background: none;
3995
+ border: none;
3996
+ cursor: pointer;
3997
+ color: #9ca3af;
3998
+ transition: color 0.2s;
3999
+ padding: 5px;
4000
+ }
4001
+ .close-button { right: 1.5rem; font-size: 1.5rem; }
4002
+ .back-button { left: 1.5rem; font-size: 1.2rem; }
4003
+ .close-button:hover, .back-button:hover { color: #374151; }
4004
+
4005
+ /* --- BODY --- */
4006
+ .modal-body {
4007
+ padding: 1rem 2rem 2.5rem; /* Padding generoso abajo */
4008
+ text-align: center;
4009
+ }
4010
+
4011
+ /* Títulos */
4012
+ h2 {
4013
+ font-size: 1.25rem;
4014
+ font-weight: 700;
4015
+ margin: 0 0 0.5rem;
4016
+ }
4017
+ .highlight { color: var(--apolo-accent); } /* Naranja de tus imágenes */
4018
+
4019
+ p.subtitle {
4020
+ font-size: 0.9rem;
4021
+ color: #6b7280;
4022
+ margin: 0 0 1rem;
4023
+ line-height: 1.4;
4024
+ }
4025
+
4026
+ /* --- LISTAS DE SELECCIÓN (Botones grandes blancos) --- */
4027
+ .selection-list {
4028
+ display: flex;
4029
+ flex-direction: column;
4030
+ gap: 1rem;
4031
+ }
4032
+
4033
+ .selection-card {
4034
+ display: flex;
4035
+ align-items: center;
4036
+ background: white;
4037
+ border: 1px solid #f3f4f6; /* Borde muy sutil */
4038
+ border-radius: 16px;
4039
+ padding: 1rem;
4040
+ cursor: pointer;
4041
+ box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05), 0 2px 4px -1px rgba(0, 0, 0, 0.03);
4042
+ transition: transform 0.2s, box-shadow 0.2s, border-color 0.2s;
4043
+ }
4044
+
4045
+ .selection-card:hover {
4046
+ transform: translateY(-2px);
4047
+ box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.08);
4048
+ border-color: var(--apolo-accent); /* Hover naranja */
4049
+ }
4050
+
4051
+ .coin-icon {
4052
+ width: 40px;
4053
+ height: 40px;
4054
+ margin-right: 1rem;
4055
+ object-fit: cover;
4056
+ }
4057
+
4058
+ .card-text {
4059
+ text-align: left;
4060
+ display: flex;
4061
+ flex-direction: column;
4062
+ }
4063
+ .card-title { font-weight: 600; font-size: 1rem; color: var(--apolo-text); }
4064
+ .card-sub { font-size: 0.8rem; color: var(--apolo-text-muted); text-transform: uppercase;}
4065
+
4066
+ /* --- QR SCREENS --- */
4067
+ .timer {
4068
+ color: var(--apolo-accent);
4069
+ font-weight: 600;
4070
+ font-size: 0.9rem;
4071
+ margin-bottom: 1rem;
4072
+ display: block;
4073
+ }
4074
+
4075
+ /* Botón Naranja Grande */
4076
+ .btn-primary {
4077
+ background-color: var(--apolo-accent); /* Naranja Apolo */
4078
+ color: white;
4079
+ padding: 0.5rem 1.5rem;
4080
+ border-radius: var(--apolo-radius-lg); /* Pill shape */
4081
+ border: none;
4082
+ font-weight: 400;
4083
+ font-size: .9rem;
4084
+ cursor: pointer;
4085
+ box-shadow: 0 4px 10px rgba(234, 88, 12, 0.3);
4086
+ transition: transform 0.1s, box-shadow 0.1s;
4087
+ }
4088
+ .btn-primary:hover { transform: translateY(-1px); box-shadow: 0 6px 15px rgba(234, 88, 12, 0.4); }
4089
+
4090
+ /* Botón Azul Oscuro (Apolo Pay QR) */
4091
+ .btn-dark {
4092
+ background-color: var(--apolo-primary-darkest);
4093
+ color: white;
4094
+ width: 100%;
4095
+ padding: 1rem;
4096
+ border-radius: var(--apolo-radius);
4097
+ border: none;
4098
+ font-weight: 600;
4099
+ cursor: pointer;
4100
+ margin-block: 0.25rem 1.25rem;
4101
+ }
4102
+
4103
+ .warning-text {
4104
+ font-size: 0.75rem;
4105
+ text-align: left;
4106
+ margin-top: 1.5rem;
4107
+ line-height: 1.5;
4108
+ }
4109
+ .warning-text strong { color: var(--apolo-accent); }
4110
+
4111
+ .warning-text ul {
4112
+ padding-left: 1.5rem;
4113
+ }
4114
+
4115
+
4116
+ /* --- PANTALLA DE RESULTADO --- */
4117
+ .result-container {
4118
+ text-align: center;
4119
+ animation: fadeIn 0.5s ease-out;
4120
+ }
4121
+
4122
+ /* Animación simple de entrada */
4123
+ @keyframes fadeIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } }
4124
+
4125
+ .success-icon {
4126
+ width: 80px;
4127
+ height: 80px;
4128
+ margin: 0 auto 1.5rem;
4129
+ }
4130
+
4131
+ /* Animación del Check SVG */
4132
+ .checkmark-circle {
4133
+ stroke-dasharray: 166;
4134
+ stroke-dashoffset: 166;
4135
+ stroke-width: 2;
4136
+ stroke: #22c55e; /* Verde éxito */
4137
+ fill: none;
4138
+ animation: stroke 0.6s cubic-bezier(0.65, 0, 0.45, 1) forwards;
4139
+ }
4140
+ .checkmark-check {
4141
+ transform-origin: 50% 50%;
4142
+ stroke-dasharray: 48;
4143
+ stroke-dashoffset: 48;
4144
+ stroke: #22c55e;
4145
+ stroke-width: 4;
4146
+ animation: stroke 0.3s cubic-bezier(0.65, 0, 0.45, 1) 0.6s forwards;
4147
+ }
4148
+ @keyframes stroke { 100% { stroke-dashoffset: 0; } }
4149
+
4150
+ .result-title {
4151
+ font-size: 1.5rem;
4152
+ margin-bottom: 1rem;
4153
+ }
4154
+
4155
+ .result-desc {
4156
+ font-size: 0.95rem;
4157
+ margin-bottom: 1.5rem;
4158
+ line-height: 1.5;
4159
+ }
4160
+
4161
+ .purchase-details {
4162
+ text-align: left;
4163
+ margin-bottom: 1.5rem;
4164
+ }
4165
+
4166
+ .details-title {
4167
+ font-size: 1rem;
4168
+ font-weight: 700;
4169
+ text-decoration: underline;
4170
+ text-decoration-color: var(--apolo-text);
4171
+ text-underline-offset: 4px;
4172
+ text-align: center;
4173
+ margin-bottom: 1.5rem;
4174
+ }
4175
+
4176
+ /* Estilo Error */
4177
+ .error-icon { font-size: 4rem; margin-bottom: 1rem; }
4178
+
4179
+ /* Estilo Processing */
4180
+ .processing-container {
4181
+ display: flex;
4182
+ flex-direction: column;
4183
+ align-items: center;
4184
+ gap: 1.5rem;
4185
+ padding-top: 1rem;
4186
+ }
4187
+
4188
+ /* Animación de puntos */
4189
+ .dots-loader {
4190
+ display: flex;
4191
+ justify-content: center;
4192
+ align-items: center;
4193
+ gap: 8px;
4194
+ height: 40px;
4195
+ }
4196
+
4197
+ .dot {
4198
+ width: 12px;
4199
+ height: 12px;
4200
+ background-color: var(--apolo-accent);
4201
+ border-radius: 50%;
4202
+ display: inline-block;
4203
+ animation: dot-pulse 1.5s infinite ease-in-out;
4204
+ }
4205
+
4206
+ .dot:nth-child(2) { animation-delay: 0.2s; width: 16px; height: 16px; }
4207
+ .dot:nth-child(3) { animation-delay: 0.4s; width: 20px; height: 20px; }
4208
+ .dot:nth-child(4) { animation-delay: 0.6s; width: 16px; height: 16px; }
4209
+ .dot:nth-child(5) { animation-delay: 0.8s; }
4210
+
4211
+ @keyframes dot-pulse {
4212
+ 0%, 100% { transform: scale(0.7); opacity: 0.5; }
4213
+ 50% { transform: scale(1.1); opacity: 1; }
4214
+ }
4215
+
4216
+ .processing-title {
4217
+ font-size: 1.5rem;
4218
+ font-weight: 800;
4219
+ color: var(--apolo-primary-darkest);
4220
+ margin: 0;
4221
+ }
4222
+
4223
+ /* Balance Card */
4224
+ .balance-card {
4225
+ background-color: #fff7ed; /* Un naranja muy claro de fondo */
4226
+ border: 1px dashed var(--apolo-accent);
4227
+ border-radius: 12px;
4228
+ padding: 0.8rem;
4229
+ margin-bottom: 1.5rem;
4230
+ animation: slideDown 0.4s ease-out;
4231
+ }
4232
+
4233
+ .balance-row {
4234
+ display: flex;
4235
+ justify-content: space-between;
4236
+ align-items: center;
4237
+ font-size: 0.85rem;
4238
+ margin-bottom: 0.25rem;
4239
+ }
4240
+
4241
+ .balance-row:last-child { margin-bottom: 0; }
4242
+
4243
+ .balance-label { color: #6b7280; }
4244
+ .balance-value { font-weight: 700; color: var(--apolo-primary-darkest); }
4245
+
4246
+ @keyframes slideDown {
4247
+ from { opacity: 0; transform: translateY(-10px); }
4248
+ to { opacity: 1; transform: translateY(0); }
4249
+ }
4250
+ `
4251
+ ];
4252
+ v([
4253
+ d({ type: Boolean })
4254
+ ], k.prototype, "isOpen", 2);
4255
+ v([
4256
+ d({ type: Boolean })
4257
+ ], k.prototype, "barrierDismissible", 2);
4258
+ v([
4259
+ d({ type: String })
4260
+ ], k.prototype, "lang", 2);
4261
+ v([
4262
+ d({ type: String })
4263
+ ], k.prototype, "productTitle", 2);
4264
+ v([
4265
+ d({ type: Number })
4266
+ ], k.prototype, "currentStep", 2);
4267
+ v([
4268
+ d({ type: String })
4269
+ ], k.prototype, "status", 2);
4270
+ v([
4271
+ d({ type: Object })
4272
+ ], k.prototype, "error", 2);
4273
+ v([
4274
+ d({ type: Boolean })
4275
+ ], k.prototype, "isLoadingData", 2);
4276
+ v([
4277
+ d({ type: Array })
4278
+ ], k.prototype, "assets", 2);
4279
+ v([
4280
+ d({ type: String })
4281
+ ], k.prototype, "selectedAsset", 2);
4282
+ v([
4283
+ d({ type: String })
4284
+ ], k.prototype, "selectedNetwork", 2);
4285
+ v([
4286
+ d({ type: String })
4287
+ ], k.prototype, "qrCodeUrl", 2);
4288
+ v([
4289
+ d({ type: String })
4290
+ ], k.prototype, "paymentAddress", 2);
4291
+ v([
4292
+ d({ type: Number })
4293
+ ], k.prototype, "amount", 2);
4294
+ v([
4295
+ d({ type: Number })
4296
+ ], k.prototype, "amountPaid", 2);
4297
+ v([
4298
+ d({ type: String })
4299
+ ], k.prototype, "email", 2);
4300
+ v([
4301
+ d({ type: Number })
4302
+ ], k.prototype, "qrCodeExpiresAt", 2);
4303
+ v([
4304
+ d({ type: String })
4305
+ ], k.prototype, "paymentUrl", 2);
4306
+ v([
4307
+ C()
4308
+ ], k.prototype, "isAddressCopied", 2);
4309
+ v([
4310
+ is("dialog")
4311
+ ], k.prototype, "dialogElement", 2);
4312
+ k = v([
4313
+ me("payment-modal")
4314
+ ], k);
4315
+ var br = Object.defineProperty, Sr = Object.getOwnPropertyDescriptor, m = (s, e, t, r) => {
4316
+ for (var i = r > 1 ? void 0 : r ? Sr(e, t) : e, n = s.length - 1, o; n >= 0; n--)
4317
+ (o = s[n]) && (i = (r ? o(e, t, i) : o(i)) || i);
4318
+ return r && i && br(e, t, i), i;
4319
+ };
4320
+ let A = class extends I {
4321
+ constructor() {
4322
+ super(...arguments), this.client = void 0, this.processId = void 0, this.productTitle = void 0, this.lang = "es", this.label = void 0, this.loading = !1, this.disabled = !1, this.barrierDismissible = !1, this.isOpen = !1, this.status = "idle", this.currentStep = g.SELECT_ASSET, this.selectedAsset = null, this.selectedNetwork = null, this.qrCodeUrl = null, this.qrCodeExpiresAt = null, this.paymentAddress = null, this.paymentUrl = null, this.assets = [], this.successResult = null, this.error = null, this.isLoadingData = !0, this.amount = 0, this.amountPaid = void 0, this.hasConfigError = !1, this.email = null, this._service = null;
4323
+ }
4324
+ // Detectar cambios en propiedades
4325
+ willUpdate(s) {
4326
+ s.has("lang") && y.setLocale(this.lang), (s.has("client") || s.has("processId")) && (this.validateConfig(), this.client && this._service === null && this.initService(), this.client && this.processId && this.loadInitialData()), super.willUpdate(s);
4327
+ }
4328
+ // Internal business logic manager
4329
+ // --- API Client Instance ---
4330
+ // If the 'client' property is not provided, the component might fail.
4331
+ // We no longer manage the client instance internally.
4332
+ // --- Lifecycle Methods ---
4333
+ // Called when the component is added to the DOM
4334
+ connectedCallback() {
4335
+ super.connectedCallback(), this.validateConfig(), this.client && (this.initService(), this.processId && this.loadInitialData());
4336
+ }
4337
+ initService() {
4338
+ !this.client || this.hasConfigError || (this._service = new or(this.client));
4339
+ }
4340
+ get isValidProcessId() {
4341
+ return this.processId ? /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/.test(this.processId) : !1;
4342
+ }
4343
+ validateConfig() {
4344
+ const s = this.client?.getPublicKey(), e = !!(s && s.startsWith("pk_") && s.length === 35);
4345
+ this.client && !e && console.error(
4346
+ `PaymentButton Error: Invalid publicKey "${s}". Must start with "pk_" and be 35 characters long.`
4347
+ ), this.hasConfigError = !this.client || !e;
4348
+ }
4349
+ // Called when the component is removed from the DOM
4350
+ disconnectedCallback() {
4351
+ super.disconnectedCallback(), this._service?.disconnectWebSocket();
4352
+ }
4353
+ // Replaced by external client initialization
4354
+ // --- Data Loading ---
4355
+ async loadInitialData() {
4356
+ if (this._service && (this.isLoadingData = !0, this.error = null, !!this.processId))
4357
+ try {
4358
+ this.assets = await this._service.getAssets();
4359
+ } catch (s) {
4360
+ console.error("Error loading initial payment options:", s), this.error = { code: X.data_load_error, message: y.t.errors.dataLoadError };
4361
+ } finally {
4362
+ this.isLoadingData = !1;
4363
+ }
4364
+ }
4365
+ resetState() {
4366
+ this.currentStep = g.SELECT_ASSET, this.status = "idle", this.error = null, this.successResult = null, this.selectedAsset = null, this.selectedNetwork = null, this.qrCodeUrl = null, this.paymentAddress = null, this.paymentUrl = null, this.qrCodeExpiresAt = null;
4367
+ }
4368
+ // --- Event Handlers (Triggered by Child Components) ---
4369
+ // Triggered by <trigger-button> when clicked
4370
+ handleOpen() {
4371
+ if (this.resetState(), this.hasConfigError || !this.client || !this.processId) {
4372
+ console.error("PaymentButton Error: client and process-id are required and must be valid");
4373
+ return;
4374
+ }
4375
+ this.loading || (this.isOpen = !0);
4376
+ }
4377
+ // Triggered by <payment-modal> requesting to close (X, backdrop, Escape)
4378
+ handleCloseRequest() {
4379
+ this.isOpen = !1, this.currentStep === g.SHOW_QR && this.status !== "success" && this.status !== "error" && this._service?.disconnectWebSocket(), setTimeout(() => this.resetState(), 300), this.successResult ? this.successResult.code === X.payment_partial ? this.dispatchEvent(new CustomEvent("partialPayment", { detail: this.successResult })) : this.dispatchEvent(new CustomEvent("success", { detail: this.successResult })) : this.error && (this.error.code === X.payment_timeout ? this.dispatchEvent(new CustomEvent("expired", { detail: this.error })) : this.dispatchEvent(new CustomEvent("error", { detail: this.error })));
4380
+ }
4381
+ // Triggered by <payment-modal> when an asset is selected
4382
+ handleAssetSelect(s) {
4383
+ this.selectedAsset = s.detail.assetId, this.currentStep = g.SELECT_NETWORK, this.error = null;
4384
+ }
4385
+ handleExpired(s) {
4386
+ this.error = s.detail.error;
4387
+ }
4388
+ // Triggered by <payment-modal> when a network is selected
4389
+ async handleInitiatePayment(s) {
4390
+ if (!this.client || !this.processId || (this.selectedNetwork = s.detail.networkId, !this.selectedAsset || !this.selectedNetwork)) return;
4391
+ const e = {
4392
+ assetId: this.selectedAsset,
4393
+ networkId: this.selectedNetwork
4394
+ };
4395
+ this.status = "loading", this.currentStep = g.SHOW_QR, this.qrCodeUrl = null, this.paymentAddress = null, this.error = null;
4396
+ try {
4397
+ const t = await this._service.fetchQrCodeDetails(e, {
4398
+ processId: this.processId,
4399
+ onSuccess: (r) => {
4400
+ this.isOpen && (this.status = "processing", this.currentStep = g.RESULT, this.successResult = r, setTimeout(() => {
4401
+ this.status = "success";
4402
+ }, 2e3));
4403
+ },
4404
+ onPartialPayment: (r) => {
4405
+ this.isOpen && (this.status = "idle", this.currentStep = g.SHOW_QR, this.amount = Number(r.result?.amount || "0"), this.amountPaid = Number(r.result?.amountPaid || "0"), this.successResult = r);
4406
+ },
4407
+ onError: (r) => {
4408
+ this.isOpen && (this.status = "error", this.error = r, this.currentStep = g.RESULT, this.error = r);
4409
+ }
4410
+ });
4411
+ this.qrCodeUrl = t.qrCodeUrl, this.paymentAddress = t.address, this.paymentUrl = t.paymentUrl || null, this.qrCodeExpiresAt = t.expiresAtMs, this.amount = typeof t.amount == "string" ? parseFloat(t.amount) : t.amount, t.amountPaid && (this.amountPaid = typeof t.amountPaid == "string" ? parseFloat(t.amountPaid) : t.amountPaid), this.status = "idle";
4412
+ } catch (t) {
4413
+ const r = t;
4414
+ if (this.error = r, this.status = "error", r.code === X.paymentProcessNotAvailable) {
4415
+ this.currentStep = g.RESULT;
4416
+ return;
4417
+ }
4418
+ console.error("Error fetching QR code details:", r), this.currentStep = g.SELECT_NETWORK;
4419
+ }
4420
+ }
4421
+ // Triggered by <payment-modal> "Back" buttons
4422
+ handleChangeStep(s) {
4423
+ this.currentStep === g.SHOW_QR && s.detail !== g.RESULT && this._service?.disconnectWebSocket(), this.currentStep = s.detail, this.status = "idle", this.error = null, this.currentStep !== g.SHOW_QR && (this.qrCodeUrl = null, this.paymentAddress = null, this.paymentUrl = null);
4424
+ }
4425
+ // --- Render Method ---
4426
+ render() {
4427
+ return f`
4428
+ <div id="trigger-wrapper" @click=${this.handleOpen}>
4429
+ <slot>
4430
+ <trigger-button
4431
+ .lang=${this.lang}
4432
+ .label=${this.label}
4433
+ .loading=${this.loading || this.isLoadingData && !this.hasConfigError || !this.isValidProcessId}
4434
+ .hasError=${this.hasConfigError}
4435
+ ?disabled=${this.disabled || this.hasConfigError || !this.isValidProcessId}
4436
+ ></trigger-button>
4437
+ </slot>
4438
+ </div>
4439
+
4440
+ <payment-modal
4441
+ ?isOpen=${this.isOpen}
4442
+ .barrierDismissible=${this.barrierDismissible}
4443
+ .lang=${this.lang}
4444
+ .currentStep=${this.currentStep}
4445
+ .status=${this.status}
4446
+ .productTitle=${this.productTitle}
4447
+ .error=${this.error}
4448
+ .isLoadingData=${this.isLoadingData}
4449
+ .assets=${this.assets}
4450
+ .selectedAsset=${this.selectedAsset}
4451
+ .selectedNetwork=${this.selectedNetwork}
4452
+ .qrCodeUrl=${this.qrCodeUrl}
4453
+ .paymentAddress=${this.paymentAddress}
4454
+ .amount=${this.amount}
4455
+ .amountPaid=${this.amountPaid}
4456
+ .email=${this.email}
4457
+ .qrCodeExpiresAt=${this.qrCodeExpiresAt}
4458
+ .paymentUrl=${this.paymentUrl}
4459
+ @closeRequest=${this.handleCloseRequest}
4460
+ @assetSelect=${this.handleAssetSelect}
4461
+ @networkSelect=${this.handleInitiatePayment}
4462
+ @changeStep=${this.handleChangeStep}
4463
+ @expired=${this.handleExpired}
4464
+ ></payment-modal>
4465
+ `;
4466
+ }
4467
+ };
4468
+ A.styles = B`
4469
+ :host {
4470
+ display: inline-block;
4471
+ }
4472
+
4473
+ #trigger-wrapper {
4474
+ position: relative;
4475
+ display: inline-block;
4476
+ cursor: pointer;
4477
+ }
4478
+ `;
4479
+ m([
4480
+ d({ type: Object })
4481
+ ], A.prototype, "client", 2);
4482
+ m([
4483
+ d({ type: String, attribute: "process-id" })
4484
+ ], A.prototype, "processId", 2);
4485
+ m([
4486
+ d({ type: String, attribute: "product-title" })
4487
+ ], A.prototype, "productTitle", 2);
4488
+ m([
4489
+ d({ type: String })
4490
+ ], A.prototype, "lang", 2);
4491
+ m([
4492
+ d({ type: String })
4493
+ ], A.prototype, "label", 2);
4494
+ m([
4495
+ d({ type: Boolean })
4496
+ ], A.prototype, "loading", 2);
4497
+ m([
4498
+ d({ type: Boolean })
4499
+ ], A.prototype, "disabled", 2);
4500
+ m([
4501
+ d({
4502
+ type: Boolean,
4503
+ attribute: "barrier-dismissible",
4504
+ converter: {
4505
+ fromAttribute: (s) => s === null ? !1 : s !== "false",
4506
+ toAttribute: (s) => s ? "" : null
4507
+ }
4508
+ })
4509
+ ], A.prototype, "barrierDismissible", 2);
4510
+ m([
4511
+ C()
4512
+ ], A.prototype, "isOpen", 2);
4513
+ m([
4514
+ C()
4515
+ ], A.prototype, "status", 2);
4516
+ m([
4517
+ C()
4518
+ ], A.prototype, "currentStep", 2);
4519
+ m([
4520
+ C()
4521
+ ], A.prototype, "selectedAsset", 2);
4522
+ m([
4523
+ C()
4524
+ ], A.prototype, "selectedNetwork", 2);
4525
+ m([
4526
+ C()
4527
+ ], A.prototype, "qrCodeUrl", 2);
4528
+ m([
4529
+ C()
4530
+ ], A.prototype, "qrCodeExpiresAt", 2);
4531
+ m([
4532
+ C()
4533
+ ], A.prototype, "paymentAddress", 2);
4534
+ m([
4535
+ C()
4536
+ ], A.prototype, "paymentUrl", 2);
4537
+ m([
4538
+ C()
4539
+ ], A.prototype, "assets", 2);
4540
+ m([
4541
+ C()
4542
+ ], A.prototype, "successResult", 2);
4543
+ m([
4544
+ C()
4545
+ ], A.prototype, "error", 2);
4546
+ m([
4547
+ C()
4548
+ ], A.prototype, "isLoadingData", 2);
4549
+ m([
4550
+ C()
4551
+ ], A.prototype, "amount", 2);
4552
+ m([
4553
+ C()
4554
+ ], A.prototype, "amountPaid", 2);
4555
+ m([
4556
+ C()
4557
+ ], A.prototype, "hasConfigError", 2);
4558
+ m([
4559
+ C()
4560
+ ], A.prototype, "email", 2);
4561
+ m([
4562
+ C()
4563
+ ], A.prototype, "_service", 2);
4564
+ A = m([
4565
+ me("apolopay-button")
4566
+ ], A);
4567
+ export {
4568
+ A as ApoloPayButton,
4569
+ Kr as ApoloPayClient,
4570
+ X as ClientCode,
4571
+ Ce as ClientError,
4572
+ lt as ClientResponse,
4573
+ xt as ClientResponseBase,
4574
+ y as I18n,
4575
+ g as ModalStep,
4576
+ or as PaymentService
4577
+ };