@autogames/sdk 1.2.4 → 1.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2744 +0,0 @@
1
- import { j as h, r as Ee, c as Pe } from "./index-BfOurzzw.js";
2
- import { a as f, b as kt, A as Zt, u as pt } from "./main-DBE9yqee.js";
3
- var Z = class {
4
- constructor() {
5
- this.listeners = /* @__PURE__ */ new Set(), this.subscribe = this.subscribe.bind(this);
6
- }
7
- subscribe(t) {
8
- return this.listeners.add(t), this.onSubscribe(), () => {
9
- this.listeners.delete(t), this.onUnsubscribe();
10
- };
11
- }
12
- hasListeners() {
13
- return this.listeners.size > 0;
14
- }
15
- onSubscribe() {
16
- }
17
- onUnsubscribe() {
18
- }
19
- }, Me = {
20
- // We need the wrapper function syntax below instead of direct references to
21
- // global setTimeout etc.
22
- //
23
- // BAD: `setTimeout: setTimeout`
24
- // GOOD: `setTimeout: (cb, delay) => setTimeout(cb, delay)`
25
- //
26
- // If we use direct references here, then anything that wants to spy on or
27
- // replace the global setTimeout (like tests) won't work since we'll already
28
- // have a hard reference to the original implementation at the time when this
29
- // file was imported.
30
- setTimeout: (t, e) => setTimeout(t, e),
31
- clearTimeout: (t) => clearTimeout(t),
32
- setInterval: (t, e) => setInterval(t, e),
33
- clearInterval: (t) => clearInterval(t)
34
- }, je = class {
35
- // We cannot have TimeoutManager<T> as we must instantiate it with a concrete
36
- // type at app boot; and if we leave that type, then any new timer provider
37
- // would need to support ReturnType<typeof setTimeout>, which is infeasible.
38
- //
39
- // We settle for type safety for the TimeoutProvider type, and accept that
40
- // this class is unsafe internally to allow for extension.
41
- #t = Me;
42
- #e = !1;
43
- setTimeoutProvider(t) {
44
- this.#t = t;
45
- }
46
- setTimeout(t, e) {
47
- return this.#t.setTimeout(t, e);
48
- }
49
- clearTimeout(t) {
50
- this.#t.clearTimeout(t);
51
- }
52
- setInterval(t, e) {
53
- return this.#t.setInterval(t, e);
54
- }
55
- clearInterval(t) {
56
- this.#t.clearInterval(t);
57
- }
58
- }, G = new je();
59
- function Ne(t) {
60
- setTimeout(t, 0);
61
- }
62
- var V = typeof window > "u" || "Deno" in globalThis;
63
- function L() {
64
- }
65
- function Ie(t, e) {
66
- return typeof t == "function" ? t(e) : t;
67
- }
68
- function yt(t) {
69
- return typeof t == "number" && t >= 0 && t !== 1 / 0;
70
- }
71
- function te(t, e) {
72
- return Math.max(t + (e || 0) - Date.now(), 0);
73
- }
74
- function H(t, e) {
75
- return typeof t == "function" ? t(e) : t;
76
- }
77
- function _(t, e) {
78
- return typeof t == "function" ? t(e) : t;
79
- }
80
- function Dt(t, e) {
81
- const {
82
- type: s = "all",
83
- exact: r,
84
- fetchStatus: i,
85
- predicate: n,
86
- queryKey: o,
87
- stale: a
88
- } = t;
89
- if (o) {
90
- if (r) {
91
- if (e.queryHash !== Et(o, e.options))
92
- return !1;
93
- } else if (!st(e.queryKey, o))
94
- return !1;
95
- }
96
- if (s !== "all") {
97
- const u = e.isActive();
98
- if (s === "active" && !u || s === "inactive" && u)
99
- return !1;
100
- }
101
- return !(typeof a == "boolean" && e.isStale() !== a || i && i !== e.state.fetchStatus || n && !n(e));
102
- }
103
- function Qt(t, e) {
104
- const { exact: s, status: r, predicate: i, mutationKey: n } = t;
105
- if (n) {
106
- if (!e.options.mutationKey)
107
- return !1;
108
- if (s) {
109
- if (Y(e.options.mutationKey) !== Y(n))
110
- return !1;
111
- } else if (!st(e.options.mutationKey, n))
112
- return !1;
113
- }
114
- return !(r && e.state.status !== r || i && !i(e));
115
- }
116
- function Et(t, e) {
117
- return (e?.queryKeyHashFn || Y)(t);
118
- }
119
- function Y(t) {
120
- return JSON.stringify(
121
- t,
122
- (e, s) => vt(s) ? Object.keys(s).sort().reduce((r, i) => (r[i] = s[i], r), {}) : s
123
- );
124
- }
125
- function st(t, e) {
126
- return t === e ? !0 : typeof t != typeof e ? !1 : t && e && typeof t == "object" && typeof e == "object" ? Object.keys(e).every((s) => st(t[s], e[s])) : !1;
127
- }
128
- var Te = Object.prototype.hasOwnProperty;
129
- function ee(t, e) {
130
- if (t === e)
131
- return t;
132
- const s = $t(t) && $t(e);
133
- if (!s && !(vt(t) && vt(e))) return e;
134
- const i = (s ? t : Object.keys(t)).length, n = s ? e : Object.keys(e), o = n.length, a = s ? new Array(o) : {};
135
- let u = 0;
136
- for (let l = 0; l < o; l++) {
137
- const c = s ? l : n[l], p = t[c], d = e[c];
138
- if (p === d) {
139
- a[c] = p, (s ? l < i : Te.call(t, c)) && u++;
140
- continue;
141
- }
142
- if (p === null || d === null || typeof p != "object" || typeof d != "object") {
143
- a[c] = d;
144
- continue;
145
- }
146
- const S = ee(p, d);
147
- a[c] = S, S === p && u++;
148
- }
149
- return i === o && u === i ? t : a;
150
- }
151
- function ut(t, e) {
152
- if (!e || Object.keys(t).length !== Object.keys(e).length)
153
- return !1;
154
- for (const s in t)
155
- if (t[s] !== e[s])
156
- return !1;
157
- return !0;
158
- }
159
- function $t(t) {
160
- return Array.isArray(t) && t.length === Object.keys(t).length;
161
- }
162
- function vt(t) {
163
- if (!Lt(t))
164
- return !1;
165
- const e = t.constructor;
166
- if (e === void 0)
167
- return !0;
168
- const s = e.prototype;
169
- return !(!Lt(s) || !s.hasOwnProperty("isPrototypeOf") || Object.getPrototypeOf(t) !== Object.prototype);
170
- }
171
- function Lt(t) {
172
- return Object.prototype.toString.call(t) === "[object Object]";
173
- }
174
- function Fe(t) {
175
- return new Promise((e) => {
176
- G.setTimeout(e, t);
177
- });
178
- }
179
- function bt(t, e, s) {
180
- return typeof s.structuralSharing == "function" ? s.structuralSharing(t, e) : s.structuralSharing !== !1 ? ee(t, e) : e;
181
- }
182
- function Ae(t, e, s = 0) {
183
- const r = [...t, e];
184
- return s && r.length > s ? r.slice(1) : r;
185
- }
186
- function De(t, e, s = 0) {
187
- const r = [e, ...t];
188
- return s && r.length > s ? r.slice(0, -1) : r;
189
- }
190
- var Pt = Symbol();
191
- function se(t, e) {
192
- return !t.queryFn && e?.initialPromise ? () => e.initialPromise : !t.queryFn || t.queryFn === Pt ? () => Promise.reject(new Error(`Missing queryFn: '${t.queryHash}'`)) : t.queryFn;
193
- }
194
- function re(t, e) {
195
- return typeof t == "function" ? t(...e) : !!t;
196
- }
197
- var Qe = class extends Z {
198
- #t;
199
- #e;
200
- #s;
201
- constructor() {
202
- super(), this.#s = (t) => {
203
- if (!V && window.addEventListener) {
204
- const e = () => t();
205
- return window.addEventListener("visibilitychange", e, !1), () => {
206
- window.removeEventListener("visibilitychange", e);
207
- };
208
- }
209
- };
210
- }
211
- onSubscribe() {
212
- this.#e || this.setEventListener(this.#s);
213
- }
214
- onUnsubscribe() {
215
- this.hasListeners() || (this.#e?.(), this.#e = void 0);
216
- }
217
- setEventListener(t) {
218
- this.#s = t, this.#e?.(), this.#e = t((e) => {
219
- typeof e == "boolean" ? this.setFocused(e) : this.onFocus();
220
- });
221
- }
222
- setFocused(t) {
223
- this.#t !== t && (this.#t = t, this.onFocus());
224
- }
225
- onFocus() {
226
- const t = this.isFocused();
227
- this.listeners.forEach((e) => {
228
- e(t);
229
- });
230
- }
231
- isFocused() {
232
- return typeof this.#t == "boolean" ? this.#t : globalThis.document?.visibilityState !== "hidden";
233
- }
234
- }, Mt = new Qe();
235
- function xt() {
236
- let t, e;
237
- const s = new Promise((i, n) => {
238
- t = i, e = n;
239
- });
240
- s.status = "pending", s.catch(() => {
241
- });
242
- function r(i) {
243
- Object.assign(s, i), delete s.resolve, delete s.reject;
244
- }
245
- return s.resolve = (i) => {
246
- r({
247
- status: "fulfilled",
248
- value: i
249
- }), t(i);
250
- }, s.reject = (i) => {
251
- r({
252
- status: "rejected",
253
- reason: i
254
- }), e(i);
255
- }, s;
256
- }
257
- var $e = Ne;
258
- function Le() {
259
- let t = [], e = 0, s = (a) => {
260
- a();
261
- }, r = (a) => {
262
- a();
263
- }, i = $e;
264
- const n = (a) => {
265
- e ? t.push(a) : i(() => {
266
- s(a);
267
- });
268
- }, o = () => {
269
- const a = t;
270
- t = [], a.length && i(() => {
271
- r(() => {
272
- a.forEach((u) => {
273
- s(u);
274
- });
275
- });
276
- });
277
- };
278
- return {
279
- batch: (a) => {
280
- let u;
281
- e++;
282
- try {
283
- u = a();
284
- } finally {
285
- e--, e || o();
286
- }
287
- return u;
288
- },
289
- /**
290
- * All calls to the wrapped function will be batched.
291
- */
292
- batchCalls: (a) => (...u) => {
293
- n(() => {
294
- a(...u);
295
- });
296
- },
297
- schedule: n,
298
- /**
299
- * Use this method to set a custom notify function.
300
- * This can be used to for example wrap notifications with `React.act` while running tests.
301
- */
302
- setNotifyFunction: (a) => {
303
- s = a;
304
- },
305
- /**
306
- * Use this method to set a custom function to batch notifications together into a single tick.
307
- * By default React Query will use the batch function provided by ReactDOM or React Native.
308
- */
309
- setBatchNotifyFunction: (a) => {
310
- r = a;
311
- },
312
- setScheduler: (a) => {
313
- i = a;
314
- }
315
- };
316
- }
317
- var F = Le(), qe = class extends Z {
318
- #t = !0;
319
- #e;
320
- #s;
321
- constructor() {
322
- super(), this.#s = (t) => {
323
- if (!V && window.addEventListener) {
324
- const e = () => t(!0), s = () => t(!1);
325
- return window.addEventListener("online", e, !1), window.addEventListener("offline", s, !1), () => {
326
- window.removeEventListener("online", e), window.removeEventListener("offline", s);
327
- };
328
- }
329
- };
330
- }
331
- onSubscribe() {
332
- this.#e || this.setEventListener(this.#s);
333
- }
334
- onUnsubscribe() {
335
- this.hasListeners() || (this.#e?.(), this.#e = void 0);
336
- }
337
- setEventListener(t) {
338
- this.#s = t, this.#e?.(), this.#e = t(this.setOnline.bind(this));
339
- }
340
- setOnline(t) {
341
- this.#t !== t && (this.#t = t, this.listeners.forEach((s) => {
342
- s(t);
343
- }));
344
- }
345
- isOnline() {
346
- return this.#t;
347
- }
348
- }, ht = new qe();
349
- function Ue(t) {
350
- return Math.min(1e3 * 2 ** t, 3e4);
351
- }
352
- function ie(t) {
353
- return (t ?? "online") === "online" ? ht.isOnline() : !0;
354
- }
355
- var wt = class extends Error {
356
- constructor(t) {
357
- super("CancelledError"), this.revert = t?.revert, this.silent = t?.silent;
358
- }
359
- };
360
- function ne(t) {
361
- let e = !1, s = 0, r;
362
- const i = xt(), n = () => i.status !== "pending", o = (m) => {
363
- if (!n()) {
364
- const v = new wt(m);
365
- d(v), t.onCancel?.(v);
366
- }
367
- }, a = () => {
368
- e = !0;
369
- }, u = () => {
370
- e = !1;
371
- }, l = () => Mt.isFocused() && (t.networkMode === "always" || ht.isOnline()) && t.canRun(), c = () => ie(t.networkMode) && t.canRun(), p = (m) => {
372
- n() || (r?.(), i.resolve(m));
373
- }, d = (m) => {
374
- n() || (r?.(), i.reject(m));
375
- }, S = () => new Promise((m) => {
376
- r = (v) => {
377
- (n() || l()) && m(v);
378
- }, t.onPause?.();
379
- }).then(() => {
380
- r = void 0, n() || t.onContinue?.();
381
- }), y = () => {
382
- if (n())
383
- return;
384
- let m;
385
- const v = s === 0 ? t.initialPromise : void 0;
386
- try {
387
- m = v ?? t.fn();
388
- } catch (x) {
389
- m = Promise.reject(x);
390
- }
391
- Promise.resolve(m).then(p).catch((x) => {
392
- if (n())
393
- return;
394
- const P = t.retry ?? (V ? 0 : 3), E = t.retryDelay ?? Ue, A = typeof E == "function" ? E(s, x) : E, Q = P === !0 || typeof P == "number" && s < P || typeof P == "function" && P(s, x);
395
- if (e || !Q) {
396
- d(x);
397
- return;
398
- }
399
- s++, t.onFail?.(s, x), Fe(A).then(() => l() ? void 0 : S()).then(() => {
400
- e ? d(x) : y();
401
- });
402
- });
403
- };
404
- return {
405
- promise: i,
406
- status: () => i.status,
407
- cancel: o,
408
- continue: () => (r?.(), i),
409
- cancelRetry: a,
410
- continueRetry: u,
411
- canStart: c,
412
- start: () => (c() ? y() : S().then(y), i)
413
- };
414
- }
415
- var ae = class {
416
- #t;
417
- destroy() {
418
- this.clearGcTimeout();
419
- }
420
- scheduleGc() {
421
- this.clearGcTimeout(), yt(this.gcTime) && (this.#t = G.setTimeout(() => {
422
- this.optionalRemove();
423
- }, this.gcTime));
424
- }
425
- updateGcTime(t) {
426
- this.gcTime = Math.max(
427
- this.gcTime || 0,
428
- t ?? (V ? 1 / 0 : 300 * 1e3)
429
- );
430
- }
431
- clearGcTimeout() {
432
- this.#t && (G.clearTimeout(this.#t), this.#t = void 0);
433
- }
434
- }, _e = class extends ae {
435
- #t;
436
- #e;
437
- #s;
438
- #i;
439
- #r;
440
- #a;
441
- #o;
442
- constructor(t) {
443
- super(), this.#o = !1, this.#a = t.defaultOptions, this.setOptions(t.options), this.observers = [], this.#i = t.client, this.#s = this.#i.getQueryCache(), this.queryKey = t.queryKey, this.queryHash = t.queryHash, this.#t = Ut(this.options), this.state = t.state ?? this.#t, this.scheduleGc();
444
- }
445
- get meta() {
446
- return this.options.meta;
447
- }
448
- get promise() {
449
- return this.#r?.promise;
450
- }
451
- setOptions(t) {
452
- if (this.options = { ...this.#a, ...t }, this.updateGcTime(this.options.gcTime), this.state && this.state.data === void 0) {
453
- const e = Ut(this.options);
454
- e.data !== void 0 && (this.setState(
455
- qt(e.data, e.dataUpdatedAt)
456
- ), this.#t = e);
457
- }
458
- }
459
- optionalRemove() {
460
- !this.observers.length && this.state.fetchStatus === "idle" && this.#s.remove(this);
461
- }
462
- setData(t, e) {
463
- const s = bt(this.state.data, t, this.options);
464
- return this.#n({
465
- data: s,
466
- type: "success",
467
- dataUpdatedAt: e?.updatedAt,
468
- manual: e?.manual
469
- }), s;
470
- }
471
- setState(t, e) {
472
- this.#n({ type: "setState", state: t, setStateOptions: e });
473
- }
474
- cancel(t) {
475
- const e = this.#r?.promise;
476
- return this.#r?.cancel(t), e ? e.then(L).catch(L) : Promise.resolve();
477
- }
478
- destroy() {
479
- super.destroy(), this.cancel({ silent: !0 });
480
- }
481
- reset() {
482
- this.destroy(), this.setState(this.#t);
483
- }
484
- isActive() {
485
- return this.observers.some(
486
- (t) => _(t.options.enabled, this) !== !1
487
- );
488
- }
489
- isDisabled() {
490
- return this.getObserversCount() > 0 ? !this.isActive() : this.options.queryFn === Pt || this.state.dataUpdateCount + this.state.errorUpdateCount === 0;
491
- }
492
- isStatic() {
493
- return this.getObserversCount() > 0 ? this.observers.some(
494
- (t) => H(t.options.staleTime, this) === "static"
495
- ) : !1;
496
- }
497
- isStale() {
498
- return this.getObserversCount() > 0 ? this.observers.some(
499
- (t) => t.getCurrentResult().isStale
500
- ) : this.state.data === void 0 || this.state.isInvalidated;
501
- }
502
- isStaleByTime(t = 0) {
503
- return this.state.data === void 0 ? !0 : t === "static" ? !1 : this.state.isInvalidated ? !0 : !te(this.state.dataUpdatedAt, t);
504
- }
505
- onFocus() {
506
- this.observers.find((e) => e.shouldFetchOnWindowFocus())?.refetch({ cancelRefetch: !1 }), this.#r?.continue();
507
- }
508
- onOnline() {
509
- this.observers.find((e) => e.shouldFetchOnReconnect())?.refetch({ cancelRefetch: !1 }), this.#r?.continue();
510
- }
511
- addObserver(t) {
512
- this.observers.includes(t) || (this.observers.push(t), this.clearGcTimeout(), this.#s.notify({ type: "observerAdded", query: this, observer: t }));
513
- }
514
- removeObserver(t) {
515
- this.observers.includes(t) && (this.observers = this.observers.filter((e) => e !== t), this.observers.length || (this.#r && (this.#o ? this.#r.cancel({ revert: !0 }) : this.#r.cancelRetry()), this.scheduleGc()), this.#s.notify({ type: "observerRemoved", query: this, observer: t }));
516
- }
517
- getObserversCount() {
518
- return this.observers.length;
519
- }
520
- invalidate() {
521
- this.state.isInvalidated || this.#n({ type: "invalidate" });
522
- }
523
- async fetch(t, e) {
524
- if (this.state.fetchStatus !== "idle" && // If the promise in the retyer is already rejected, we have to definitely
525
- // re-start the fetch; there is a chance that the query is still in a
526
- // pending state when that happens
527
- this.#r?.status() !== "rejected") {
528
- if (this.state.data !== void 0 && e?.cancelRefetch)
529
- this.cancel({ silent: !0 });
530
- else if (this.#r)
531
- return this.#r.continueRetry(), this.#r.promise;
532
- }
533
- if (t && this.setOptions(t), !this.options.queryFn) {
534
- const a = this.observers.find((u) => u.options.queryFn);
535
- a && this.setOptions(a.options);
536
- }
537
- const s = new AbortController(), r = (a) => {
538
- Object.defineProperty(a, "signal", {
539
- enumerable: !0,
540
- get: () => (this.#o = !0, s.signal)
541
- });
542
- }, i = () => {
543
- const a = se(this.options, e), l = (() => {
544
- const c = {
545
- client: this.#i,
546
- queryKey: this.queryKey,
547
- meta: this.meta
548
- };
549
- return r(c), c;
550
- })();
551
- return this.#o = !1, this.options.persister ? this.options.persister(
552
- a,
553
- l,
554
- this
555
- ) : a(l);
556
- }, o = (() => {
557
- const a = {
558
- fetchOptions: e,
559
- options: this.options,
560
- queryKey: this.queryKey,
561
- client: this.#i,
562
- state: this.state,
563
- fetchFn: i
564
- };
565
- return r(a), a;
566
- })();
567
- this.options.behavior?.onFetch(o, this), this.#e = this.state, (this.state.fetchStatus === "idle" || this.state.fetchMeta !== o.fetchOptions?.meta) && this.#n({ type: "fetch", meta: o.fetchOptions?.meta }), this.#r = ne({
568
- initialPromise: e?.initialPromise,
569
- fn: o.fetchFn,
570
- onCancel: (a) => {
571
- a instanceof wt && a.revert && this.setState({
572
- ...this.#e,
573
- fetchStatus: "idle"
574
- }), s.abort();
575
- },
576
- onFail: (a, u) => {
577
- this.#n({ type: "failed", failureCount: a, error: u });
578
- },
579
- onPause: () => {
580
- this.#n({ type: "pause" });
581
- },
582
- onContinue: () => {
583
- this.#n({ type: "continue" });
584
- },
585
- retry: o.options.retry,
586
- retryDelay: o.options.retryDelay,
587
- networkMode: o.options.networkMode,
588
- canRun: () => !0
589
- });
590
- try {
591
- const a = await this.#r.start();
592
- if (a === void 0)
593
- throw new Error(`${this.queryHash} data is undefined`);
594
- return this.setData(a), this.#s.config.onSuccess?.(a, this), this.#s.config.onSettled?.(
595
- a,
596
- this.state.error,
597
- this
598
- ), a;
599
- } catch (a) {
600
- if (a instanceof wt) {
601
- if (a.silent)
602
- return this.#r.promise;
603
- if (a.revert) {
604
- if (this.state.data === void 0)
605
- throw a;
606
- return this.state.data;
607
- }
608
- }
609
- throw this.#n({
610
- type: "error",
611
- error: a
612
- }), this.#s.config.onError?.(
613
- a,
614
- this
615
- ), this.#s.config.onSettled?.(
616
- this.state.data,
617
- a,
618
- this
619
- ), a;
620
- } finally {
621
- this.scheduleGc();
622
- }
623
- }
624
- #n(t) {
625
- const e = (s) => {
626
- switch (t.type) {
627
- case "failed":
628
- return {
629
- ...s,
630
- fetchFailureCount: t.failureCount,
631
- fetchFailureReason: t.error
632
- };
633
- case "pause":
634
- return {
635
- ...s,
636
- fetchStatus: "paused"
637
- };
638
- case "continue":
639
- return {
640
- ...s,
641
- fetchStatus: "fetching"
642
- };
643
- case "fetch":
644
- return {
645
- ...s,
646
- ...oe(s.data, this.options),
647
- fetchMeta: t.meta ?? null
648
- };
649
- case "success":
650
- const r = {
651
- ...s,
652
- ...qt(t.data, t.dataUpdatedAt),
653
- dataUpdateCount: s.dataUpdateCount + 1,
654
- ...!t.manual && {
655
- fetchStatus: "idle",
656
- fetchFailureCount: 0,
657
- fetchFailureReason: null
658
- }
659
- };
660
- return this.#e = t.manual ? r : void 0, r;
661
- case "error":
662
- const i = t.error;
663
- return {
664
- ...s,
665
- error: i,
666
- errorUpdateCount: s.errorUpdateCount + 1,
667
- errorUpdatedAt: Date.now(),
668
- fetchFailureCount: s.fetchFailureCount + 1,
669
- fetchFailureReason: i,
670
- fetchStatus: "idle",
671
- status: "error"
672
- };
673
- case "invalidate":
674
- return {
675
- ...s,
676
- isInvalidated: !0
677
- };
678
- case "setState":
679
- return {
680
- ...s,
681
- ...t.state
682
- };
683
- }
684
- };
685
- this.state = e(this.state), F.batch(() => {
686
- this.observers.forEach((s) => {
687
- s.onQueryUpdate();
688
- }), this.#s.notify({ query: this, type: "updated", action: t });
689
- });
690
- }
691
- };
692
- function oe(t, e) {
693
- return {
694
- fetchFailureCount: 0,
695
- fetchFailureReason: null,
696
- fetchStatus: ie(e.networkMode) ? "fetching" : "paused",
697
- ...t === void 0 && {
698
- error: null,
699
- status: "pending"
700
- }
701
- };
702
- }
703
- function qt(t, e) {
704
- return {
705
- data: t,
706
- dataUpdatedAt: e ?? Date.now(),
707
- error: null,
708
- isInvalidated: !1,
709
- status: "success"
710
- };
711
- }
712
- function Ut(t) {
713
- const e = typeof t.initialData == "function" ? t.initialData() : t.initialData, s = e !== void 0, r = s ? typeof t.initialDataUpdatedAt == "function" ? t.initialDataUpdatedAt() : t.initialDataUpdatedAt : 0;
714
- return {
715
- data: e,
716
- dataUpdateCount: 0,
717
- dataUpdatedAt: s ? r ?? Date.now() : 0,
718
- error: null,
719
- errorUpdateCount: 0,
720
- errorUpdatedAt: 0,
721
- fetchFailureCount: 0,
722
- fetchFailureReason: null,
723
- fetchMeta: null,
724
- isInvalidated: !1,
725
- status: s ? "success" : "pending",
726
- fetchStatus: "idle"
727
- };
728
- }
729
- var ce = class extends Z {
730
- constructor(t, e) {
731
- super(), this.options = e, this.#t = t, this.#n = null, this.#o = xt(), this.bindMethods(), this.setOptions(e);
732
- }
733
- #t;
734
- #e = void 0;
735
- #s = void 0;
736
- #i = void 0;
737
- #r;
738
- #a;
739
- #o;
740
- #n;
741
- #m;
742
- #d;
743
- // This property keeps track of the last query with defined data.
744
- // It will be used to pass the previous data and query to the placeholder function between renders.
745
- #f;
746
- #u;
747
- #h;
748
- #c;
749
- #p = /* @__PURE__ */ new Set();
750
- bindMethods() {
751
- this.refetch = this.refetch.bind(this);
752
- }
753
- onSubscribe() {
754
- this.listeners.size === 1 && (this.#e.addObserver(this), _t(this.#e, this.options) ? this.#l() : this.updateResult(), this.#b());
755
- }
756
- onUnsubscribe() {
757
- this.hasListeners() || this.destroy();
758
- }
759
- shouldFetchOnReconnect() {
760
- return Ct(
761
- this.#e,
762
- this.options,
763
- this.options.refetchOnReconnect
764
- );
765
- }
766
- shouldFetchOnWindowFocus() {
767
- return Ct(
768
- this.#e,
769
- this.options,
770
- this.options.refetchOnWindowFocus
771
- );
772
- }
773
- destroy() {
774
- this.listeners = /* @__PURE__ */ new Set(), this.#x(), this.#w(), this.#e.removeObserver(this);
775
- }
776
- setOptions(t) {
777
- const e = this.options, s = this.#e;
778
- if (this.options = this.#t.defaultQueryOptions(t), this.options.enabled !== void 0 && typeof this.options.enabled != "boolean" && typeof this.options.enabled != "function" && typeof _(this.options.enabled, this.#e) != "boolean")
779
- throw new Error(
780
- "Expected enabled to be a boolean or a callback that returns a boolean"
781
- );
782
- this.#C(), this.#e.setOptions(this.options), e._defaulted && !ut(this.options, e) && this.#t.getQueryCache().notify({
783
- type: "observerOptionsUpdated",
784
- query: this.#e,
785
- observer: this
786
- });
787
- const r = this.hasListeners();
788
- r && Kt(
789
- this.#e,
790
- s,
791
- this.options,
792
- e
793
- ) && this.#l(), this.updateResult(), r && (this.#e !== s || _(this.options.enabled, this.#e) !== _(e.enabled, this.#e) || H(this.options.staleTime, this.#e) !== H(e.staleTime, this.#e)) && this.#g();
794
- const i = this.#y();
795
- r && (this.#e !== s || _(this.options.enabled, this.#e) !== _(e.enabled, this.#e) || i !== this.#c) && this.#v(i);
796
- }
797
- getOptimisticResult(t) {
798
- const e = this.#t.getQueryCache().build(this.#t, t), s = this.createResult(e, t);
799
- return ze(this, s) && (this.#i = s, this.#a = this.options, this.#r = this.#e.state), s;
800
- }
801
- getCurrentResult() {
802
- return this.#i;
803
- }
804
- trackResult(t, e) {
805
- return new Proxy(t, {
806
- get: (s, r) => (this.trackProp(r), e?.(r), r === "promise" && (this.trackProp("data"), !this.options.experimental_prefetchInRender && this.#o.status === "pending" && this.#o.reject(
807
- new Error(
808
- "experimental_prefetchInRender feature flag is not enabled"
809
- )
810
- )), Reflect.get(s, r))
811
- });
812
- }
813
- trackProp(t) {
814
- this.#p.add(t);
815
- }
816
- getCurrentQuery() {
817
- return this.#e;
818
- }
819
- refetch({ ...t } = {}) {
820
- return this.fetch({
821
- ...t
822
- });
823
- }
824
- fetchOptimistic(t) {
825
- const e = this.#t.defaultQueryOptions(t), s = this.#t.getQueryCache().build(this.#t, e);
826
- return s.fetch().then(() => this.createResult(s, e));
827
- }
828
- fetch(t) {
829
- return this.#l({
830
- ...t,
831
- cancelRefetch: t.cancelRefetch ?? !0
832
- }).then(() => (this.updateResult(), this.#i));
833
- }
834
- #l(t) {
835
- this.#C();
836
- let e = this.#e.fetch(
837
- this.options,
838
- t
839
- );
840
- return t?.throwOnError || (e = e.catch(L)), e;
841
- }
842
- #g() {
843
- this.#x();
844
- const t = H(
845
- this.options.staleTime,
846
- this.#e
847
- );
848
- if (V || this.#i.isStale || !yt(t))
849
- return;
850
- const s = te(this.#i.dataUpdatedAt, t) + 1;
851
- this.#u = G.setTimeout(() => {
852
- this.#i.isStale || this.updateResult();
853
- }, s);
854
- }
855
- #y() {
856
- return (typeof this.options.refetchInterval == "function" ? this.options.refetchInterval(this.#e) : this.options.refetchInterval) ?? !1;
857
- }
858
- #v(t) {
859
- this.#w(), this.#c = t, !(V || _(this.options.enabled, this.#e) === !1 || !yt(this.#c) || this.#c === 0) && (this.#h = G.setInterval(() => {
860
- (this.options.refetchIntervalInBackground || Mt.isFocused()) && this.#l();
861
- }, this.#c));
862
- }
863
- #b() {
864
- this.#g(), this.#v(this.#y());
865
- }
866
- #x() {
867
- this.#u && (G.clearTimeout(this.#u), this.#u = void 0);
868
- }
869
- #w() {
870
- this.#h && (G.clearInterval(this.#h), this.#h = void 0);
871
- }
872
- createResult(t, e) {
873
- const s = this.#e, r = this.options, i = this.#i, n = this.#r, o = this.#a, u = t !== s ? t.state : this.#s, { state: l } = t;
874
- let c = { ...l }, p = !1, d;
875
- if (e._optimisticResults) {
876
- const M = this.hasListeners(), j = !M && _t(t, e), $ = M && Kt(t, s, e, r);
877
- (j || $) && (c = {
878
- ...c,
879
- ...oe(l.data, t.options)
880
- }), e._optimisticResults === "isRestoring" && (c.fetchStatus = "idle");
881
- }
882
- let { error: S, errorUpdatedAt: y, status: m } = c;
883
- d = c.data;
884
- let v = !1;
885
- if (e.placeholderData !== void 0 && d === void 0 && m === "pending") {
886
- let M;
887
- i?.isPlaceholderData && e.placeholderData === o?.placeholderData ? (M = i.data, v = !0) : M = typeof e.placeholderData == "function" ? e.placeholderData(
888
- this.#f?.state.data,
889
- this.#f
890
- ) : e.placeholderData, M !== void 0 && (m = "success", d = bt(
891
- i?.data,
892
- M,
893
- e
894
- ), p = !0);
895
- }
896
- if (e.select && d !== void 0 && !v)
897
- if (i && d === n?.data && e.select === this.#m)
898
- d = this.#d;
899
- else
900
- try {
901
- this.#m = e.select, d = e.select(d), d = bt(i?.data, d, e), this.#d = d, this.#n = null;
902
- } catch (M) {
903
- this.#n = M;
904
- }
905
- this.#n && (S = this.#n, d = this.#d, y = Date.now(), m = "error");
906
- const x = c.fetchStatus === "fetching", P = m === "pending", E = m === "error", A = P && x, Q = d !== void 0, I = {
907
- status: m,
908
- fetchStatus: c.fetchStatus,
909
- isPending: P,
910
- isSuccess: m === "success",
911
- isError: E,
912
- isInitialLoading: A,
913
- isLoading: A,
914
- data: d,
915
- dataUpdatedAt: c.dataUpdatedAt,
916
- error: S,
917
- errorUpdatedAt: y,
918
- failureCount: c.fetchFailureCount,
919
- failureReason: c.fetchFailureReason,
920
- errorUpdateCount: c.errorUpdateCount,
921
- isFetched: c.dataUpdateCount > 0 || c.errorUpdateCount > 0,
922
- isFetchedAfterMount: c.dataUpdateCount > u.dataUpdateCount || c.errorUpdateCount > u.errorUpdateCount,
923
- isFetching: x,
924
- isRefetching: x && !P,
925
- isLoadingError: E && !Q,
926
- isPaused: c.fetchStatus === "paused",
927
- isPlaceholderData: p,
928
- isRefetchError: E && Q,
929
- isStale: jt(t, e),
930
- refetch: this.refetch,
931
- promise: this.#o,
932
- isEnabled: _(e.enabled, t) !== !1
933
- };
934
- if (this.options.experimental_prefetchInRender) {
935
- const M = (U) => {
936
- I.status === "error" ? U.reject(I.error) : I.data !== void 0 && U.resolve(I.data);
937
- }, j = () => {
938
- const U = this.#o = I.promise = xt();
939
- M(U);
940
- }, $ = this.#o;
941
- switch ($.status) {
942
- case "pending":
943
- t.queryHash === s.queryHash && M($);
944
- break;
945
- case "fulfilled":
946
- (I.status === "error" || I.data !== $.value) && j();
947
- break;
948
- case "rejected":
949
- (I.status !== "error" || I.error !== $.reason) && j();
950
- break;
951
- }
952
- }
953
- return I;
954
- }
955
- updateResult() {
956
- const t = this.#i, e = this.createResult(this.#e, this.options);
957
- if (this.#r = this.#e.state, this.#a = this.options, this.#r.data !== void 0 && (this.#f = this.#e), ut(e, t))
958
- return;
959
- this.#i = e;
960
- const s = () => {
961
- if (!t)
962
- return !0;
963
- const { notifyOnChangeProps: r } = this.options, i = typeof r == "function" ? r() : r;
964
- if (i === "all" || !i && !this.#p.size)
965
- return !0;
966
- const n = new Set(
967
- i ?? this.#p
968
- );
969
- return this.options.throwOnError && n.add("error"), Object.keys(this.#i).some((o) => {
970
- const a = o;
971
- return this.#i[a] !== t[a] && n.has(a);
972
- });
973
- };
974
- this.#S({ listeners: s() });
975
- }
976
- #C() {
977
- const t = this.#t.getQueryCache().build(this.#t, this.options);
978
- if (t === this.#e)
979
- return;
980
- const e = this.#e;
981
- this.#e = t, this.#s = t.state, this.hasListeners() && (e?.removeObserver(this), t.addObserver(this));
982
- }
983
- onQueryUpdate() {
984
- this.updateResult(), this.hasListeners() && this.#b();
985
- }
986
- #S(t) {
987
- F.batch(() => {
988
- t.listeners && this.listeners.forEach((e) => {
989
- e(this.#i);
990
- }), this.#t.getQueryCache().notify({
991
- query: this.#e,
992
- type: "observerResultsUpdated"
993
- });
994
- });
995
- }
996
- };
997
- function Ke(t, e) {
998
- return _(e.enabled, t) !== !1 && t.state.data === void 0 && !(t.state.status === "error" && e.retryOnMount === !1);
999
- }
1000
- function _t(t, e) {
1001
- return Ke(t, e) || t.state.data !== void 0 && Ct(t, e, e.refetchOnMount);
1002
- }
1003
- function Ct(t, e, s) {
1004
- if (_(e.enabled, t) !== !1 && H(e.staleTime, t) !== "static") {
1005
- const r = typeof s == "function" ? s(t) : s;
1006
- return r === "always" || r !== !1 && jt(t, e);
1007
- }
1008
- return !1;
1009
- }
1010
- function Kt(t, e, s, r) {
1011
- return (t !== e || _(r.enabled, t) === !1) && (!s.suspense || t.state.status !== "error") && jt(t, s);
1012
- }
1013
- function jt(t, e) {
1014
- return _(e.enabled, t) !== !1 && t.isStaleByTime(H(e.staleTime, t));
1015
- }
1016
- function ze(t, e) {
1017
- return !ut(t.getCurrentResult(), e);
1018
- }
1019
- function lt(t) {
1020
- return {
1021
- onFetch: (e, s) => {
1022
- const r = e.options, i = e.fetchOptions?.meta?.fetchMore?.direction, n = e.state.data?.pages || [], o = e.state.data?.pageParams || [];
1023
- let a = { pages: [], pageParams: [] }, u = 0;
1024
- const l = async () => {
1025
- let c = !1;
1026
- const p = (y) => {
1027
- Object.defineProperty(y, "signal", {
1028
- enumerable: !0,
1029
- get: () => (e.signal.aborted ? c = !0 : e.signal.addEventListener("abort", () => {
1030
- c = !0;
1031
- }), e.signal)
1032
- });
1033
- }, d = se(e.options, e.fetchOptions), S = async (y, m, v) => {
1034
- if (c)
1035
- return Promise.reject();
1036
- if (m == null && y.pages.length)
1037
- return Promise.resolve(y);
1038
- const P = (() => {
1039
- const R = {
1040
- client: e.client,
1041
- queryKey: e.queryKey,
1042
- pageParam: m,
1043
- direction: v ? "backward" : "forward",
1044
- meta: e.options.meta
1045
- };
1046
- return p(R), R;
1047
- })(), E = await d(P), { maxPages: A } = e.options, Q = v ? De : Ae;
1048
- return {
1049
- pages: Q(y.pages, E, A),
1050
- pageParams: Q(y.pageParams, m, A)
1051
- };
1052
- };
1053
- if (i && n.length) {
1054
- const y = i === "backward", m = y ? ue : St, v = {
1055
- pages: n,
1056
- pageParams: o
1057
- }, x = m(r, v);
1058
- a = await S(v, x, y);
1059
- } else {
1060
- const y = t ?? n.length;
1061
- do {
1062
- const m = u === 0 ? o[0] ?? r.initialPageParam : St(r, a);
1063
- if (u > 0 && m == null)
1064
- break;
1065
- a = await S(a, m), u++;
1066
- } while (u < y);
1067
- }
1068
- return a;
1069
- };
1070
- e.options.persister ? e.fetchFn = () => e.options.persister?.(
1071
- l,
1072
- {
1073
- client: e.client,
1074
- queryKey: e.queryKey,
1075
- meta: e.options.meta,
1076
- signal: e.signal
1077
- },
1078
- s
1079
- ) : e.fetchFn = l;
1080
- }
1081
- };
1082
- }
1083
- function St(t, { pages: e, pageParams: s }) {
1084
- const r = e.length - 1;
1085
- return e.length > 0 ? t.getNextPageParam(
1086
- e[r],
1087
- e,
1088
- s[r],
1089
- s
1090
- ) : void 0;
1091
- }
1092
- function ue(t, { pages: e, pageParams: s }) {
1093
- return e.length > 0 ? t.getPreviousPageParam?.(e[0], e, s[0], s) : void 0;
1094
- }
1095
- function Be(t, e) {
1096
- return e ? St(t, e) != null : !1;
1097
- }
1098
- function He(t, e) {
1099
- return !e || !t.getPreviousPageParam ? !1 : ue(t, e) != null;
1100
- }
1101
- var Ge = class extends ce {
1102
- constructor(t, e) {
1103
- super(t, e);
1104
- }
1105
- bindMethods() {
1106
- super.bindMethods(), this.fetchNextPage = this.fetchNextPage.bind(this), this.fetchPreviousPage = this.fetchPreviousPage.bind(this);
1107
- }
1108
- setOptions(t) {
1109
- super.setOptions({
1110
- ...t,
1111
- behavior: lt()
1112
- });
1113
- }
1114
- getOptimisticResult(t) {
1115
- return t.behavior = lt(), super.getOptimisticResult(t);
1116
- }
1117
- fetchNextPage(t) {
1118
- return this.fetch({
1119
- ...t,
1120
- meta: {
1121
- fetchMore: { direction: "forward" }
1122
- }
1123
- });
1124
- }
1125
- fetchPreviousPage(t) {
1126
- return this.fetch({
1127
- ...t,
1128
- meta: {
1129
- fetchMore: { direction: "backward" }
1130
- }
1131
- });
1132
- }
1133
- createResult(t, e) {
1134
- const { state: s } = t, r = super.createResult(t, e), { isFetching: i, isRefetching: n, isError: o, isRefetchError: a } = r, u = s.fetchMeta?.fetchMore?.direction, l = o && u === "forward", c = i && u === "forward", p = o && u === "backward", d = i && u === "backward";
1135
- return {
1136
- ...r,
1137
- fetchNextPage: this.fetchNextPage,
1138
- fetchPreviousPage: this.fetchPreviousPage,
1139
- hasNextPage: Be(e, s.data),
1140
- hasPreviousPage: He(e, s.data),
1141
- isFetchNextPageError: l,
1142
- isFetchingNextPage: c,
1143
- isFetchPreviousPageError: p,
1144
- isFetchingPreviousPage: d,
1145
- isRefetchError: a && !l && !p,
1146
- isRefetching: n && !c && !d
1147
- };
1148
- }
1149
- }, We = class extends ae {
1150
- #t;
1151
- #e;
1152
- #s;
1153
- #i;
1154
- constructor(t) {
1155
- super(), this.#t = t.client, this.mutationId = t.mutationId, this.#s = t.mutationCache, this.#e = [], this.state = t.state || he(), this.setOptions(t.options), this.scheduleGc();
1156
- }
1157
- setOptions(t) {
1158
- this.options = t, this.updateGcTime(this.options.gcTime);
1159
- }
1160
- get meta() {
1161
- return this.options.meta;
1162
- }
1163
- addObserver(t) {
1164
- this.#e.includes(t) || (this.#e.push(t), this.clearGcTimeout(), this.#s.notify({
1165
- type: "observerAdded",
1166
- mutation: this,
1167
- observer: t
1168
- }));
1169
- }
1170
- removeObserver(t) {
1171
- this.#e = this.#e.filter((e) => e !== t), this.scheduleGc(), this.#s.notify({
1172
- type: "observerRemoved",
1173
- mutation: this,
1174
- observer: t
1175
- });
1176
- }
1177
- optionalRemove() {
1178
- this.#e.length || (this.state.status === "pending" ? this.scheduleGc() : this.#s.remove(this));
1179
- }
1180
- continue() {
1181
- return this.#i?.continue() ?? // continuing a mutation assumes that variables are set, mutation must have been dehydrated before
1182
- this.execute(this.state.variables);
1183
- }
1184
- async execute(t) {
1185
- const e = () => {
1186
- this.#r({ type: "continue" });
1187
- }, s = {
1188
- client: this.#t,
1189
- meta: this.options.meta,
1190
- mutationKey: this.options.mutationKey
1191
- };
1192
- this.#i = ne({
1193
- fn: () => this.options.mutationFn ? this.options.mutationFn(t, s) : Promise.reject(new Error("No mutationFn found")),
1194
- onFail: (n, o) => {
1195
- this.#r({ type: "failed", failureCount: n, error: o });
1196
- },
1197
- onPause: () => {
1198
- this.#r({ type: "pause" });
1199
- },
1200
- onContinue: e,
1201
- retry: this.options.retry ?? 0,
1202
- retryDelay: this.options.retryDelay,
1203
- networkMode: this.options.networkMode,
1204
- canRun: () => this.#s.canRun(this)
1205
- });
1206
- const r = this.state.status === "pending", i = !this.#i.canStart();
1207
- try {
1208
- if (r)
1209
- e();
1210
- else {
1211
- this.#r({ type: "pending", variables: t, isPaused: i }), await this.#s.config.onMutate?.(
1212
- t,
1213
- this,
1214
- s
1215
- );
1216
- const o = await this.options.onMutate?.(
1217
- t,
1218
- s
1219
- );
1220
- o !== this.state.context && this.#r({
1221
- type: "pending",
1222
- context: o,
1223
- variables: t,
1224
- isPaused: i
1225
- });
1226
- }
1227
- const n = await this.#i.start();
1228
- return await this.#s.config.onSuccess?.(
1229
- n,
1230
- t,
1231
- this.state.context,
1232
- this,
1233
- s
1234
- ), await this.options.onSuccess?.(
1235
- n,
1236
- t,
1237
- this.state.context,
1238
- s
1239
- ), await this.#s.config.onSettled?.(
1240
- n,
1241
- null,
1242
- this.state.variables,
1243
- this.state.context,
1244
- this,
1245
- s
1246
- ), await this.options.onSettled?.(
1247
- n,
1248
- null,
1249
- t,
1250
- this.state.context,
1251
- s
1252
- ), this.#r({ type: "success", data: n }), n;
1253
- } catch (n) {
1254
- try {
1255
- throw await this.#s.config.onError?.(
1256
- n,
1257
- t,
1258
- this.state.context,
1259
- this,
1260
- s
1261
- ), await this.options.onError?.(
1262
- n,
1263
- t,
1264
- this.state.context,
1265
- s
1266
- ), await this.#s.config.onSettled?.(
1267
- void 0,
1268
- n,
1269
- this.state.variables,
1270
- this.state.context,
1271
- this,
1272
- s
1273
- ), await this.options.onSettled?.(
1274
- void 0,
1275
- n,
1276
- t,
1277
- this.state.context,
1278
- s
1279
- ), n;
1280
- } finally {
1281
- this.#r({ type: "error", error: n });
1282
- }
1283
- } finally {
1284
- this.#s.runNext(this);
1285
- }
1286
- }
1287
- #r(t) {
1288
- const e = (s) => {
1289
- switch (t.type) {
1290
- case "failed":
1291
- return {
1292
- ...s,
1293
- failureCount: t.failureCount,
1294
- failureReason: t.error
1295
- };
1296
- case "pause":
1297
- return {
1298
- ...s,
1299
- isPaused: !0
1300
- };
1301
- case "continue":
1302
- return {
1303
- ...s,
1304
- isPaused: !1
1305
- };
1306
- case "pending":
1307
- return {
1308
- ...s,
1309
- context: t.context,
1310
- data: void 0,
1311
- failureCount: 0,
1312
- failureReason: null,
1313
- error: null,
1314
- isPaused: t.isPaused,
1315
- status: "pending",
1316
- variables: t.variables,
1317
- submittedAt: Date.now()
1318
- };
1319
- case "success":
1320
- return {
1321
- ...s,
1322
- data: t.data,
1323
- failureCount: 0,
1324
- failureReason: null,
1325
- error: null,
1326
- status: "success",
1327
- isPaused: !1
1328
- };
1329
- case "error":
1330
- return {
1331
- ...s,
1332
- data: void 0,
1333
- error: t.error,
1334
- failureCount: s.failureCount + 1,
1335
- failureReason: t.error,
1336
- isPaused: !1,
1337
- status: "error"
1338
- };
1339
- }
1340
- };
1341
- this.state = e(this.state), F.batch(() => {
1342
- this.#e.forEach((s) => {
1343
- s.onMutationUpdate(t);
1344
- }), this.#s.notify({
1345
- mutation: this,
1346
- type: "updated",
1347
- action: t
1348
- });
1349
- });
1350
- }
1351
- };
1352
- function he() {
1353
- return {
1354
- context: void 0,
1355
- data: void 0,
1356
- error: null,
1357
- failureCount: 0,
1358
- failureReason: null,
1359
- isPaused: !1,
1360
- status: "idle",
1361
- variables: void 0,
1362
- submittedAt: 0
1363
- };
1364
- }
1365
- var Ve = class extends Z {
1366
- constructor(t = {}) {
1367
- super(), this.config = t, this.#t = /* @__PURE__ */ new Set(), this.#e = /* @__PURE__ */ new Map(), this.#s = 0;
1368
- }
1369
- #t;
1370
- #e;
1371
- #s;
1372
- build(t, e, s) {
1373
- const r = new We({
1374
- client: t,
1375
- mutationCache: this,
1376
- mutationId: ++this.#s,
1377
- options: t.defaultMutationOptions(e),
1378
- state: s
1379
- });
1380
- return this.add(r), r;
1381
- }
1382
- add(t) {
1383
- this.#t.add(t);
1384
- const e = ot(t);
1385
- if (typeof e == "string") {
1386
- const s = this.#e.get(e);
1387
- s ? s.push(t) : this.#e.set(e, [t]);
1388
- }
1389
- this.notify({ type: "added", mutation: t });
1390
- }
1391
- remove(t) {
1392
- if (this.#t.delete(t)) {
1393
- const e = ot(t);
1394
- if (typeof e == "string") {
1395
- const s = this.#e.get(e);
1396
- if (s)
1397
- if (s.length > 1) {
1398
- const r = s.indexOf(t);
1399
- r !== -1 && s.splice(r, 1);
1400
- } else s[0] === t && this.#e.delete(e);
1401
- }
1402
- }
1403
- this.notify({ type: "removed", mutation: t });
1404
- }
1405
- canRun(t) {
1406
- const e = ot(t);
1407
- if (typeof e == "string") {
1408
- const r = this.#e.get(e)?.find(
1409
- (i) => i.state.status === "pending"
1410
- );
1411
- return !r || r === t;
1412
- } else
1413
- return !0;
1414
- }
1415
- runNext(t) {
1416
- const e = ot(t);
1417
- return typeof e == "string" ? this.#e.get(e)?.find((r) => r !== t && r.state.isPaused)?.continue() ?? Promise.resolve() : Promise.resolve();
1418
- }
1419
- clear() {
1420
- F.batch(() => {
1421
- this.#t.forEach((t) => {
1422
- this.notify({ type: "removed", mutation: t });
1423
- }), this.#t.clear(), this.#e.clear();
1424
- });
1425
- }
1426
- getAll() {
1427
- return Array.from(this.#t);
1428
- }
1429
- find(t) {
1430
- const e = { exact: !0, ...t };
1431
- return this.getAll().find(
1432
- (s) => Qt(e, s)
1433
- );
1434
- }
1435
- findAll(t = {}) {
1436
- return this.getAll().filter((e) => Qt(t, e));
1437
- }
1438
- notify(t) {
1439
- F.batch(() => {
1440
- this.listeners.forEach((e) => {
1441
- e(t);
1442
- });
1443
- });
1444
- }
1445
- resumePausedMutations() {
1446
- const t = this.getAll().filter((e) => e.state.isPaused);
1447
- return F.batch(
1448
- () => Promise.all(
1449
- t.map((e) => e.continue().catch(L))
1450
- )
1451
- );
1452
- }
1453
- };
1454
- function ot(t) {
1455
- return t.options.scope?.id;
1456
- }
1457
- var Ye = class extends Z {
1458
- #t;
1459
- #e = void 0;
1460
- #s;
1461
- #i;
1462
- constructor(e, s) {
1463
- super(), this.#t = e, this.setOptions(s), this.bindMethods(), this.#r();
1464
- }
1465
- bindMethods() {
1466
- this.mutate = this.mutate.bind(this), this.reset = this.reset.bind(this);
1467
- }
1468
- setOptions(e) {
1469
- const s = this.options;
1470
- this.options = this.#t.defaultMutationOptions(e), ut(this.options, s) || this.#t.getMutationCache().notify({
1471
- type: "observerOptionsUpdated",
1472
- mutation: this.#s,
1473
- observer: this
1474
- }), s?.mutationKey && this.options.mutationKey && Y(s.mutationKey) !== Y(this.options.mutationKey) ? this.reset() : this.#s?.state.status === "pending" && this.#s.setOptions(this.options);
1475
- }
1476
- onUnsubscribe() {
1477
- this.hasListeners() || this.#s?.removeObserver(this);
1478
- }
1479
- onMutationUpdate(e) {
1480
- this.#r(), this.#a(e);
1481
- }
1482
- getCurrentResult() {
1483
- return this.#e;
1484
- }
1485
- reset() {
1486
- this.#s?.removeObserver(this), this.#s = void 0, this.#r(), this.#a();
1487
- }
1488
- mutate(e, s) {
1489
- return this.#i = s, this.#s?.removeObserver(this), this.#s = this.#t.getMutationCache().build(this.#t, this.options), this.#s.addObserver(this), this.#s.execute(e);
1490
- }
1491
- #r() {
1492
- const e = this.#s?.state ?? he();
1493
- this.#e = {
1494
- ...e,
1495
- isPending: e.status === "pending",
1496
- isSuccess: e.status === "success",
1497
- isError: e.status === "error",
1498
- isIdle: e.status === "idle",
1499
- mutate: this.mutate,
1500
- reset: this.reset
1501
- };
1502
- }
1503
- #a(e) {
1504
- F.batch(() => {
1505
- if (this.#i && this.hasListeners()) {
1506
- const s = this.#e.variables, r = this.#e.context, i = {
1507
- client: this.#t,
1508
- meta: this.options.meta,
1509
- mutationKey: this.options.mutationKey
1510
- };
1511
- e?.type === "success" ? (this.#i.onSuccess?.(
1512
- e.data,
1513
- s,
1514
- r,
1515
- i
1516
- ), this.#i.onSettled?.(
1517
- e.data,
1518
- null,
1519
- s,
1520
- r,
1521
- i
1522
- )) : e?.type === "error" && (this.#i.onError?.(
1523
- e.error,
1524
- s,
1525
- r,
1526
- i
1527
- ), this.#i.onSettled?.(
1528
- void 0,
1529
- e.error,
1530
- s,
1531
- r,
1532
- i
1533
- ));
1534
- }
1535
- this.listeners.forEach((s) => {
1536
- s(this.#e);
1537
- });
1538
- });
1539
- }
1540
- }, Xe = class extends Z {
1541
- constructor(t = {}) {
1542
- super(), this.config = t, this.#t = /* @__PURE__ */ new Map();
1543
- }
1544
- #t;
1545
- build(t, e, s) {
1546
- const r = e.queryKey, i = e.queryHash ?? Et(r, e);
1547
- let n = this.get(i);
1548
- return n || (n = new _e({
1549
- client: t,
1550
- queryKey: r,
1551
- queryHash: i,
1552
- options: t.defaultQueryOptions(e),
1553
- state: s,
1554
- defaultOptions: t.getQueryDefaults(r)
1555
- }), this.add(n)), n;
1556
- }
1557
- add(t) {
1558
- this.#t.has(t.queryHash) || (this.#t.set(t.queryHash, t), this.notify({
1559
- type: "added",
1560
- query: t
1561
- }));
1562
- }
1563
- remove(t) {
1564
- const e = this.#t.get(t.queryHash);
1565
- e && (t.destroy(), e === t && this.#t.delete(t.queryHash), this.notify({ type: "removed", query: t }));
1566
- }
1567
- clear() {
1568
- F.batch(() => {
1569
- this.getAll().forEach((t) => {
1570
- this.remove(t);
1571
- });
1572
- });
1573
- }
1574
- get(t) {
1575
- return this.#t.get(t);
1576
- }
1577
- getAll() {
1578
- return [...this.#t.values()];
1579
- }
1580
- find(t) {
1581
- const e = { exact: !0, ...t };
1582
- return this.getAll().find(
1583
- (s) => Dt(e, s)
1584
- );
1585
- }
1586
- findAll(t = {}) {
1587
- const e = this.getAll();
1588
- return Object.keys(t).length > 0 ? e.filter((s) => Dt(t, s)) : e;
1589
- }
1590
- notify(t) {
1591
- F.batch(() => {
1592
- this.listeners.forEach((e) => {
1593
- e(t);
1594
- });
1595
- });
1596
- }
1597
- onFocus() {
1598
- F.batch(() => {
1599
- this.getAll().forEach((t) => {
1600
- t.onFocus();
1601
- });
1602
- });
1603
- }
1604
- onOnline() {
1605
- F.batch(() => {
1606
- this.getAll().forEach((t) => {
1607
- t.onOnline();
1608
- });
1609
- });
1610
- }
1611
- }, Je = class {
1612
- #t;
1613
- #e;
1614
- #s;
1615
- #i;
1616
- #r;
1617
- #a;
1618
- #o;
1619
- #n;
1620
- constructor(t = {}) {
1621
- this.#t = t.queryCache || new Xe(), this.#e = t.mutationCache || new Ve(), this.#s = t.defaultOptions || {}, this.#i = /* @__PURE__ */ new Map(), this.#r = /* @__PURE__ */ new Map(), this.#a = 0;
1622
- }
1623
- mount() {
1624
- this.#a++, this.#a === 1 && (this.#o = Mt.subscribe(async (t) => {
1625
- t && (await this.resumePausedMutations(), this.#t.onFocus());
1626
- }), this.#n = ht.subscribe(async (t) => {
1627
- t && (await this.resumePausedMutations(), this.#t.onOnline());
1628
- }));
1629
- }
1630
- unmount() {
1631
- this.#a--, this.#a === 0 && (this.#o?.(), this.#o = void 0, this.#n?.(), this.#n = void 0);
1632
- }
1633
- isFetching(t) {
1634
- return this.#t.findAll({ ...t, fetchStatus: "fetching" }).length;
1635
- }
1636
- isMutating(t) {
1637
- return this.#e.findAll({ ...t, status: "pending" }).length;
1638
- }
1639
- /**
1640
- * Imperative (non-reactive) way to retrieve data for a QueryKey.
1641
- * Should only be used in callbacks or functions where reading the latest data is necessary, e.g. for optimistic updates.
1642
- *
1643
- * Hint: Do not use this function inside a component, because it won't receive updates.
1644
- * Use `useQuery` to create a `QueryObserver` that subscribes to changes.
1645
- */
1646
- getQueryData(t) {
1647
- const e = this.defaultQueryOptions({ queryKey: t });
1648
- return this.#t.get(e.queryHash)?.state.data;
1649
- }
1650
- ensureQueryData(t) {
1651
- const e = this.defaultQueryOptions(t), s = this.#t.build(this, e), r = s.state.data;
1652
- return r === void 0 ? this.fetchQuery(t) : (t.revalidateIfStale && s.isStaleByTime(H(e.staleTime, s)) && this.prefetchQuery(e), Promise.resolve(r));
1653
- }
1654
- getQueriesData(t) {
1655
- return this.#t.findAll(t).map(({ queryKey: e, state: s }) => {
1656
- const r = s.data;
1657
- return [e, r];
1658
- });
1659
- }
1660
- setQueryData(t, e, s) {
1661
- const r = this.defaultQueryOptions({ queryKey: t }), n = this.#t.get(
1662
- r.queryHash
1663
- )?.state.data, o = Ie(e, n);
1664
- if (o !== void 0)
1665
- return this.#t.build(this, r).setData(o, { ...s, manual: !0 });
1666
- }
1667
- setQueriesData(t, e, s) {
1668
- return F.batch(
1669
- () => this.#t.findAll(t).map(({ queryKey: r }) => [
1670
- r,
1671
- this.setQueryData(r, e, s)
1672
- ])
1673
- );
1674
- }
1675
- getQueryState(t) {
1676
- const e = this.defaultQueryOptions({ queryKey: t });
1677
- return this.#t.get(
1678
- e.queryHash
1679
- )?.state;
1680
- }
1681
- removeQueries(t) {
1682
- const e = this.#t;
1683
- F.batch(() => {
1684
- e.findAll(t).forEach((s) => {
1685
- e.remove(s);
1686
- });
1687
- });
1688
- }
1689
- resetQueries(t, e) {
1690
- const s = this.#t;
1691
- return F.batch(() => (s.findAll(t).forEach((r) => {
1692
- r.reset();
1693
- }), this.refetchQueries(
1694
- {
1695
- type: "active",
1696
- ...t
1697
- },
1698
- e
1699
- )));
1700
- }
1701
- cancelQueries(t, e = {}) {
1702
- const s = { revert: !0, ...e }, r = F.batch(
1703
- () => this.#t.findAll(t).map((i) => i.cancel(s))
1704
- );
1705
- return Promise.all(r).then(L).catch(L);
1706
- }
1707
- invalidateQueries(t, e = {}) {
1708
- return F.batch(() => (this.#t.findAll(t).forEach((s) => {
1709
- s.invalidate();
1710
- }), t?.refetchType === "none" ? Promise.resolve() : this.refetchQueries(
1711
- {
1712
- ...t,
1713
- type: t?.refetchType ?? t?.type ?? "active"
1714
- },
1715
- e
1716
- )));
1717
- }
1718
- refetchQueries(t, e = {}) {
1719
- const s = {
1720
- ...e,
1721
- cancelRefetch: e.cancelRefetch ?? !0
1722
- }, r = F.batch(
1723
- () => this.#t.findAll(t).filter((i) => !i.isDisabled() && !i.isStatic()).map((i) => {
1724
- let n = i.fetch(void 0, s);
1725
- return s.throwOnError || (n = n.catch(L)), i.state.fetchStatus === "paused" ? Promise.resolve() : n;
1726
- })
1727
- );
1728
- return Promise.all(r).then(L);
1729
- }
1730
- fetchQuery(t) {
1731
- const e = this.defaultQueryOptions(t);
1732
- e.retry === void 0 && (e.retry = !1);
1733
- const s = this.#t.build(this, e);
1734
- return s.isStaleByTime(
1735
- H(e.staleTime, s)
1736
- ) ? s.fetch(e) : Promise.resolve(s.state.data);
1737
- }
1738
- prefetchQuery(t) {
1739
- return this.fetchQuery(t).then(L).catch(L);
1740
- }
1741
- fetchInfiniteQuery(t) {
1742
- return t.behavior = lt(t.pages), this.fetchQuery(t);
1743
- }
1744
- prefetchInfiniteQuery(t) {
1745
- return this.fetchInfiniteQuery(t).then(L).catch(L);
1746
- }
1747
- ensureInfiniteQueryData(t) {
1748
- return t.behavior = lt(t.pages), this.ensureQueryData(t);
1749
- }
1750
- resumePausedMutations() {
1751
- return ht.isOnline() ? this.#e.resumePausedMutations() : Promise.resolve();
1752
- }
1753
- getQueryCache() {
1754
- return this.#t;
1755
- }
1756
- getMutationCache() {
1757
- return this.#e;
1758
- }
1759
- getDefaultOptions() {
1760
- return this.#s;
1761
- }
1762
- setDefaultOptions(t) {
1763
- this.#s = t;
1764
- }
1765
- setQueryDefaults(t, e) {
1766
- this.#i.set(Y(t), {
1767
- queryKey: t,
1768
- defaultOptions: e
1769
- });
1770
- }
1771
- getQueryDefaults(t) {
1772
- const e = [...this.#i.values()], s = {};
1773
- return e.forEach((r) => {
1774
- st(t, r.queryKey) && Object.assign(s, r.defaultOptions);
1775
- }), s;
1776
- }
1777
- setMutationDefaults(t, e) {
1778
- this.#r.set(Y(t), {
1779
- mutationKey: t,
1780
- defaultOptions: e
1781
- });
1782
- }
1783
- getMutationDefaults(t) {
1784
- const e = [...this.#r.values()], s = {};
1785
- return e.forEach((r) => {
1786
- st(t, r.mutationKey) && Object.assign(s, r.defaultOptions);
1787
- }), s;
1788
- }
1789
- defaultQueryOptions(t) {
1790
- if (t._defaulted)
1791
- return t;
1792
- const e = {
1793
- ...this.#s.queries,
1794
- ...this.getQueryDefaults(t.queryKey),
1795
- ...t,
1796
- _defaulted: !0
1797
- };
1798
- return e.queryHash || (e.queryHash = Et(
1799
- e.queryKey,
1800
- e
1801
- )), e.refetchOnReconnect === void 0 && (e.refetchOnReconnect = e.networkMode !== "always"), e.throwOnError === void 0 && (e.throwOnError = !!e.suspense), !e.networkMode && e.persister && (e.networkMode = "offlineFirst"), e.queryFn === Pt && (e.enabled = !1), e;
1802
- }
1803
- defaultMutationOptions(t) {
1804
- return t?._defaulted ? t : {
1805
- ...this.#s.mutations,
1806
- ...t?.mutationKey && this.getMutationDefaults(t.mutationKey),
1807
- ...t,
1808
- _defaulted: !0
1809
- };
1810
- }
1811
- clear() {
1812
- this.#t.clear(), this.#e.clear();
1813
- }
1814
- }, le = f.createContext(
1815
- void 0
1816
- ), Nt = (t) => {
1817
- const e = f.useContext(le);
1818
- if (!e)
1819
- throw new Error("No QueryClient set, use QueryClientProvider to set one");
1820
- return e;
1821
- }, Ze = ({
1822
- client: t,
1823
- children: e
1824
- }) => (f.useEffect(() => (t.mount(), () => {
1825
- t.unmount();
1826
- }), [t]), /* @__PURE__ */ h.jsx(le.Provider, { value: t, children: e })), de = f.createContext(!1), ts = () => f.useContext(de);
1827
- de.Provider;
1828
- function es() {
1829
- let t = !1;
1830
- return {
1831
- clearReset: () => {
1832
- t = !1;
1833
- },
1834
- reset: () => {
1835
- t = !0;
1836
- },
1837
- isReset: () => t
1838
- };
1839
- }
1840
- var ss = f.createContext(es()), rs = () => f.useContext(ss), is = (t, e) => {
1841
- (t.suspense || t.throwOnError || t.experimental_prefetchInRender) && (e.isReset() || (t.retryOnMount = !1));
1842
- }, ns = (t) => {
1843
- f.useEffect(() => {
1844
- t.clearReset();
1845
- }, [t]);
1846
- }, as = ({
1847
- result: t,
1848
- errorResetBoundary: e,
1849
- throwOnError: s,
1850
- query: r,
1851
- suspense: i
1852
- }) => t.isError && !e.isReset() && !t.isFetching && r && (i && t.data === void 0 || re(s, [t.error, r])), os = (t) => {
1853
- if (t.suspense) {
1854
- const s = (i) => i === "static" ? i : Math.max(i ?? 1e3, 1e3), r = t.staleTime;
1855
- t.staleTime = typeof r == "function" ? (...i) => s(r(...i)) : s(r), typeof t.gcTime == "number" && (t.gcTime = Math.max(
1856
- t.gcTime,
1857
- 1e3
1858
- ));
1859
- }
1860
- }, cs = (t, e) => t.isLoading && t.isFetching && !e, us = (t, e) => t?.suspense && e.isPending, zt = (t, e, s) => e.fetchOptimistic(t).catch(() => {
1861
- s.clearReset();
1862
- });
1863
- function fe(t, e, s) {
1864
- const r = ts(), i = rs(), n = Nt(), o = n.defaultQueryOptions(t);
1865
- n.getDefaultOptions().queries?._experimental_beforeQuery?.(
1866
- o
1867
- ), o._optimisticResults = r ? "isRestoring" : "optimistic", os(o), is(o, i), ns(i);
1868
- const a = !n.getQueryCache().get(o.queryHash), [u] = f.useState(
1869
- () => new e(
1870
- n,
1871
- o
1872
- )
1873
- ), l = u.getOptimisticResult(o), c = !r && t.subscribed !== !1;
1874
- if (f.useSyncExternalStore(
1875
- f.useCallback(
1876
- (p) => {
1877
- const d = c ? u.subscribe(F.batchCalls(p)) : L;
1878
- return u.updateResult(), d;
1879
- },
1880
- [u, c]
1881
- ),
1882
- () => u.getCurrentResult(),
1883
- () => u.getCurrentResult()
1884
- ), f.useEffect(() => {
1885
- u.setOptions(o);
1886
- }, [o, u]), us(o, l))
1887
- throw zt(o, u, i);
1888
- if (as({
1889
- result: l,
1890
- errorResetBoundary: i,
1891
- throwOnError: o.throwOnError,
1892
- query: n.getQueryCache().get(o.queryHash),
1893
- suspense: o.suspense
1894
- }))
1895
- throw l.error;
1896
- return n.getDefaultOptions().queries?._experimental_afterQuery?.(
1897
- o,
1898
- l
1899
- ), o.experimental_prefetchInRender && !V && cs(l, r) && (a ? (
1900
- // Fetch immediately on render in order to ensure `.promise` is resolved even if the component is unmounted
1901
- zt(o, u, i)
1902
- ) : (
1903
- // subscribe to the "cache promise" so that we can finalize the currentThenable once data comes in
1904
- n.getQueryCache().get(o.queryHash)?.promise
1905
- ))?.catch(L).finally(() => {
1906
- u.updateResult();
1907
- }), o.notifyOnChangeProps ? l : u.trackResult(l);
1908
- }
1909
- function hs(t, e) {
1910
- return fe(t, ce);
1911
- }
1912
- function ls(t, e) {
1913
- const s = Nt(), [r] = f.useState(
1914
- () => new Ye(
1915
- s,
1916
- t
1917
- )
1918
- );
1919
- f.useEffect(() => {
1920
- r.setOptions(t);
1921
- }, [r, t]);
1922
- const i = f.useSyncExternalStore(
1923
- f.useCallback(
1924
- (o) => r.subscribe(F.batchCalls(o)),
1925
- [r]
1926
- ),
1927
- () => r.getCurrentResult(),
1928
- () => r.getCurrentResult()
1929
- ), n = f.useCallback(
1930
- (o, a) => {
1931
- r.mutate(o, a).catch(L);
1932
- },
1933
- [r]
1934
- );
1935
- if (i.error && re(r.options.throwOnError, [i.error]))
1936
- throw i.error;
1937
- return { ...i, mutate: n, mutateAsync: i.mutate };
1938
- }
1939
- function ds(t, e) {
1940
- return fe(
1941
- t,
1942
- Ge
1943
- );
1944
- }
1945
- const fs = (t) => t.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase(), ps = (t) => t.replace(
1946
- /^([A-Z])|[\s-_]+(\w)/g,
1947
- (e, s, r) => r ? r.toUpperCase() : s.toLowerCase()
1948
- ), Bt = (t) => {
1949
- const e = ps(t);
1950
- return e.charAt(0).toUpperCase() + e.slice(1);
1951
- }, pe = (...t) => t.filter((e, s, r) => !!e && e.trim() !== "" && r.indexOf(e) === s).join(" ").trim(), ms = (t) => {
1952
- for (const e in t)
1953
- if (e.startsWith("aria-") || e === "role" || e === "title")
1954
- return !0;
1955
- };
1956
- var gs = {
1957
- xmlns: "http://www.w3.org/2000/svg",
1958
- width: 24,
1959
- height: 24,
1960
- viewBox: "0 0 24 24",
1961
- fill: "none",
1962
- stroke: "currentColor",
1963
- strokeWidth: 2,
1964
- strokeLinecap: "round",
1965
- strokeLinejoin: "round"
1966
- };
1967
- const ys = f.forwardRef(
1968
- ({
1969
- color: t = "currentColor",
1970
- size: e = 24,
1971
- strokeWidth: s = 2,
1972
- absoluteStrokeWidth: r,
1973
- className: i = "",
1974
- children: n,
1975
- iconNode: o,
1976
- ...a
1977
- }, u) => f.createElement(
1978
- "svg",
1979
- {
1980
- ref: u,
1981
- ...gs,
1982
- width: e,
1983
- height: e,
1984
- stroke: t,
1985
- strokeWidth: r ? Number(s) * 24 / Number(e) : s,
1986
- className: pe("lucide", i),
1987
- ...!n && !ms(a) && { "aria-hidden": "true" },
1988
- ...a
1989
- },
1990
- [
1991
- ...o.map(([l, c]) => f.createElement(l, c)),
1992
- ...Array.isArray(n) ? n : [n]
1993
- ]
1994
- )
1995
- );
1996
- const it = (t, e) => {
1997
- const s = f.forwardRef(
1998
- ({ className: r, ...i }, n) => f.createElement(ys, {
1999
- ref: n,
2000
- iconNode: e,
2001
- className: pe(
2002
- `lucide-${fs(Bt(t))}`,
2003
- `lucide-${t}`,
2004
- r
2005
- ),
2006
- ...i
2007
- })
2008
- );
2009
- return s.displayName = Bt(t), s;
2010
- };
2011
- const vs = [
2012
- ["path", { d: "m5 12 7-7 7 7", key: "hav0vg" }],
2013
- ["path", { d: "M12 19V5", key: "x0mq9r" }]
2014
- ], bs = it("arrow-up", vs);
2015
- const xs = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]], ws = it("chevron-down", xs);
2016
- const Cs = [["path", { d: "M21 12a9 9 0 1 1-6.219-8.56", key: "13zald" }]], Ot = it("loader-circle", Cs);
2017
- const Ss = [
2018
- [
2019
- "path",
2020
- {
2021
- d: "M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z",
2022
- key: "18887p"
2023
- }
2024
- ],
2025
- ["path", { d: "M7 11h10", key: "1twpyw" }],
2026
- ["path", { d: "M7 15h6", key: "d9of3u" }],
2027
- ["path", { d: "M7 7h8", key: "af5zfr" }]
2028
- ], Ht = it("message-square-text", Ss);
2029
- const Os = [
2030
- ["path", { d: "M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8", key: "1p45f6" }],
2031
- ["path", { d: "M21 3v5h-5", key: "1q7to0" }]
2032
- ], Gt = it("rotate-cw", Os), rt = null, { min: W, max: K, abs: Wt, floor: Rs } = Math, me = (t, e, s) => W(s, K(e, t)), ge = (t) => [...t].sort(((e, s) => e - s)), ye = typeof queueMicrotask == "function" ? queueMicrotask : (t) => {
2033
- Promise.resolve().then(t);
2034
- }, Rt = () => {
2035
- let t;
2036
- return [new Promise(((e) => {
2037
- t = e;
2038
- })), t];
2039
- }, ve = (t) => {
2040
- let e;
2041
- return () => (t && (e = t(), t = void 0), e);
2042
- }, et = (t, e, s) => {
2043
- const r = s ? "unshift" : "push";
2044
- for (let i = 0; i < e; i++) t[r](-1);
2045
- return t;
2046
- }, be = (t, e) => {
2047
- const s = t.t[e];
2048
- return s === -1 ? t.o : s;
2049
- }, ks = (t, e, s) => {
2050
- const r = t.t[e] === -1;
2051
- return t.t[e] = s, t.i = W(e, t.i), r;
2052
- }, ct = (t, e) => {
2053
- if (!t.l) return 0;
2054
- if (t.i >= e) return t.u[e];
2055
- t.i < 0 && (t.u[0] = 0, t.i = 0);
2056
- let s = t.i, r = t.u[s];
2057
- for (; s < e; ) r += be(t, s), t.u[++s] = r;
2058
- return t.i = e, r;
2059
- }, X = (t, e, s = 0, r = t.l - 1) => {
2060
- let i = s;
2061
- for (; s <= r; ) {
2062
- const n = Rs((s + r) / 2);
2063
- ct(t, n) <= e ? (i = n, s = n + 1) : r = n - 1;
2064
- }
2065
- return me(i, 0, t.l - 1);
2066
- }, Vt = (t, e, s) => {
2067
- const r = e - t.l;
2068
- return t.i = s ? -1 : W(e - 1, t.i), t.l = e, r > 0 ? (et(t.u, r), et(t.t, r, s), t.o * r) : (t.u.splice(r), (s ? t.t.splice(0, -r) : t.t.splice(r)).reduce(((i, n) => i - (n === -1 ? t.o : n)), 0));
2069
- }, Es = typeof window < "u", Ps = (t) => t.documentElement, Ms = (t) => t.ownerDocument, js = (t) => t.defaultView, xe = /* @__PURE__ */ ve((() => !!/iP(hone|od|ad)/.test(navigator.userAgent) || navigator.platform === "MacIntel" && navigator.maxTouchPoints > 0)), Ns = /* @__PURE__ */ ve((() => "scrollBehavior" in Ps(document).style)), Is = (t) => K(t.h(), t.p()), Ts = (t, e = 40, s = 0, r, i = !1) => {
2070
- let n = !!s, o = 1, a = 0, u = 0, l = 0, c = 0, p = 0, d = 0, S = 0, y = 0, m = rt, v = [0, n ? K(s - 1, 0) : -1], x = 0, P = !1;
2071
- const E = ((w, g, O) => ({ o: g, t: O ? et(O.slice(0, W(w, O.length)), K(0, w - O.length)) : et([], w), l: w, i: -1, u: et([], w + 1) }))(t, r ? r[1] : e, r && r[0]), A = /* @__PURE__ */ new Set(), Q = () => l - u, R = () => Q() + p + c, I = (w, g) => ((O, T, N, k) => {
2072
- if (k = W(k, O.l - 1), ct(O, k) <= T) {
2073
- const b = X(O, N, k);
2074
- return [X(O, T, k, b), b];
2075
- }
2076
- {
2077
- const b = X(O, T, void 0, k);
2078
- return [b, X(O, N, b)];
2079
- }
2080
- })(E, w, g, v[0]), M = () => ct(E, E.l), j = (w, g) => {
2081
- const O = ct(E, w) - p;
2082
- return g ? M() - O - $(w) : O;
2083
- }, $ = (w) => be(E, w), U = (w, g = -1) => E.t[w] === g, B = (w) => {
2084
- w && (xe() && S !== 0 || m && y === 1 ? p += w : c += w);
2085
- };
2086
- return { v: () => {
2087
- A.clear();
2088
- }, m: () => o, _: () => ((w) => [w.t.slice(), w.o])(E), S: (w = 200) => {
2089
- if (!P || n) return v;
2090
- let g, O;
2091
- if (d) [g, O] = v;
2092
- else {
2093
- let T = K(0, R()), N = T + a;
2094
- i || (w = K(0, w), S !== 1 && (T -= w), S !== 2 && (N += w)), [g, O] = v = I(K(0, T), K(0, N)), m && (g = W(g, m[0]), O = K(O, m[1]));
2095
- }
2096
- return [K(g, 0), W(O, E.l - 1)];
2097
- }, $: (w) => X(E, w - u), I: U, k: j, R: $, T: () => E.l, C: () => l, M: () => S !== 0, p: () => a, O: () => u, h: M, H: () => (d = c, c = 0, [d, y === 2]), W: (w, g) => {
2098
- const O = [w, g];
2099
- return A.add(O), () => {
2100
- A.delete(O);
2101
- };
2102
- }, B: (w, g) => {
2103
- let O, T, N = 0;
2104
- switch (w) {
2105
- case 1: {
2106
- if (g === l && y === 0) break;
2107
- const k = d;
2108
- d = 0;
2109
- const b = g - l, D = Wt(b);
2110
- k && D < Wt(k) + 1 || y !== 0 || (S = b < 0 ? 2 : 1), n && (n = !1), l = g, N = 4;
2111
- const z = Q();
2112
- z >= -a && z <= M() && (N += 1, T = D > a);
2113
- break;
2114
- }
2115
- case 2:
2116
- N = 8, S !== 0 && (O = !0, N += 1), S = 0, y = 0, m = rt;
2117
- break;
2118
- case 3: {
2119
- const k = g.filter((([b, D]) => !U(b, D)));
2120
- if (!k.length) break;
2121
- B(k.reduce(((b, [D, z]) => ((y === 2 || (m && y === 1 ? D < m[0] : j(D + (S === 0 && y === 0 ? 1 : 0)) < Q())) && (b += z - $(D)), b)), 0));
2122
- for (const [b, D] of k) {
2123
- const z = $(b), nt = ks(E, b, D);
2124
- i && (x += nt ? D : D - z);
2125
- }
2126
- i && a && x > a && (B(((b, D) => {
2127
- let z = 0;
2128
- const nt = [];
2129
- b.t.forEach(((At, ke) => {
2130
- At !== -1 && (nt.push(At), ke < D && z++);
2131
- })), b.i = -1;
2132
- const at = ge(nt), Ft = at.length, ft = Ft / 2 | 0, Oe = Ft % 2 == 0 ? (at[ft - 1] + at[ft]) / 2 : at[ft], Re = b.o;
2133
- return ((b.o = Oe) - Re) * K(D - z, 0);
2134
- })(E, X(E, R()))), i = !1), N = 3, T = !0;
2135
- break;
2136
- }
2137
- case 4:
2138
- a !== g && (a || (P = T = !0), a = g, N = 3);
2139
- break;
2140
- case 5:
2141
- g[1] ? (B(Vt(E, g[0], !0)), y = 2, N = 1) : (Vt(E, g[0]), N = 1);
2142
- break;
2143
- case 6:
2144
- u = g;
2145
- break;
2146
- case 7:
2147
- y = 1;
2148
- break;
2149
- case 8:
2150
- m = I(g, g + a), N = 1;
2151
- }
2152
- N && (o = 1 + (2147483647 & o), O && p && (c += p, p = 0), A.forEach((([k, b]) => {
2153
- N & k && b(T);
2154
- })));
2155
- } };
2156
- }, It = setTimeout, mt = (t, e) => e ? -t : t, Fs = (t, e, s, r, i, n) => {
2157
- const o = Date.now;
2158
- let a = 0, u = !1, l = !1, c = !1, p = !1;
2159
- const d = (() => {
2160
- let x;
2161
- const P = () => {
2162
- x != rt && clearTimeout(x);
2163
- }, E = () => {
2164
- P(), x = It((() => {
2165
- x = rt, (() => {
2166
- if (u || l) return u = !1, void d();
2167
- c = !1, t.B(2);
2168
- })();
2169
- }), 150);
2170
- };
2171
- return E.J = P, E;
2172
- })(), S = () => {
2173
- a = o(), c && (p = !0), t.B(1, r()), d();
2174
- }, y = (x) => {
2175
- if (u || !t.M() || x.ctrlKey) return;
2176
- const P = o() - a;
2177
- 150 > P && 50 < P && (s ? x.deltaX : x.deltaY) && (u = !0);
2178
- }, m = () => {
2179
- l = !0, c = p = !1;
2180
- }, v = () => {
2181
- l = !1, xe() && (c = !0);
2182
- };
2183
- return e.addEventListener("scroll", S), e.addEventListener("wheel", y, { passive: !0 }), e.addEventListener("touchstart", m, { passive: !0 }), e.addEventListener("touchend", v, { passive: !0 }), { A: () => {
2184
- e.removeEventListener("scroll", S), e.removeEventListener("wheel", y), e.removeEventListener("touchstart", m), e.removeEventListener("touchend", v), d.J();
2185
- }, L: () => {
2186
- const [x, P] = t.H();
2187
- x && (i(x, P, p), p = !1, P && t.p() > t.h() && t.B(1, r()));
2188
- } };
2189
- }, As = (t, e, s) => {
2190
- let r;
2191
- return [async (i, n) => {
2192
- if (!await e()) return;
2193
- r && r();
2194
- const o = () => {
2195
- const [a, u] = Rt();
2196
- return r = () => {
2197
- u(!1);
2198
- }, t.p() && It(r, 150), [a, t.W(2, (() => {
2199
- u(!0);
2200
- }))];
2201
- };
2202
- if (n && Ns()) t.B(8, i()), ye((async () => {
2203
- for (; ; ) {
2204
- let a = !0;
2205
- for (let [c, p] = t.S(); c <= p; c++) if (t.I(c)) {
2206
- a = !1;
2207
- break;
2208
- }
2209
- if (a) break;
2210
- const [u, l] = o();
2211
- try {
2212
- if (!await u) return;
2213
- } finally {
2214
- l();
2215
- }
2216
- }
2217
- t.B(7), s(i(), n);
2218
- }));
2219
- else for (; ; ) {
2220
- const [a, u] = o();
2221
- try {
2222
- if (t.B(7), s(i()), !await a) return;
2223
- } finally {
2224
- u();
2225
- }
2226
- }
2227
- }, () => {
2228
- r && r();
2229
- }];
2230
- }, Ds = (t, e) => {
2231
- let s, r, i = Rt(), n = !1;
2232
- const o = e ? "scrollLeft" : "scrollTop", a = e ? "overflowX" : "overflowY", [u, l] = As(t, (() => i[0]), ((c, p) => {
2233
- c = mt(c, n), p ? s.scrollTo({ [e ? "left" : "top"]: c, behavior: "smooth" }) : s[o] = c;
2234
- }));
2235
- return { N(c) {
2236
- s = c, e && (n = getComputedStyle(c).direction === "rtl"), r = Fs(t, c, e, (() => mt(c[o], n)), ((p, d, S) => {
2237
- if (S) {
2238
- const y = c.style, m = y[a];
2239
- y[a] = "hidden", It((() => {
2240
- y[a] = m;
2241
- }));
2242
- }
2243
- c[o] = mt(t.C() + p, n), d && l();
2244
- })), i[1](!0);
2245
- }, v() {
2246
- r && r.A(), i[1](!1), i = Rt();
2247
- }, P: () => n, V(c) {
2248
- u((() => c));
2249
- }, X(c) {
2250
- c += t.C(), u((() => c));
2251
- }, Y(c, { align: p, smooth: d, offset: S = 0 } = {}) {
2252
- if (c = me(c, 0, t.T() - 1), p === "nearest") {
2253
- const y = t.k(c), m = t.C();
2254
- if (y < m) p = "start";
2255
- else {
2256
- if (!(y + t.R(c) > m + t.p())) return;
2257
- p = "end";
2258
- }
2259
- }
2260
- u((() => S + t.O() + t.k(c) + (p === "end" ? t.R(c) - t.p() : p === "center" ? (t.R(c) - t.p()) / 2 : 0)), d);
2261
- }, q: () => {
2262
- r && r.L();
2263
- } };
2264
- }, Qs = (t) => {
2265
- let e;
2266
- return { D(s) {
2267
- (e || (e = new (js(Ms(s))).ResizeObserver(t))).observe(s);
2268
- }, j(s) {
2269
- e.unobserve(s);
2270
- }, A() {
2271
- e && e.disconnect();
2272
- } };
2273
- }, $s = (t, e) => {
2274
- let s;
2275
- const r = e ? "width" : "height", i = /* @__PURE__ */ new WeakMap(), n = Qs(((o) => {
2276
- const a = [];
2277
- for (const { target: u, contentRect: l } of o) if (u.offsetParent) if (u === s) t.B(4, l[r]);
2278
- else {
2279
- const c = i.get(u);
2280
- c != rt && a.push([c, l[r]]);
2281
- }
2282
- a.length && t.B(3, a);
2283
- }));
2284
- return { G(o) {
2285
- n.D(s = o);
2286
- }, U: (o, a) => (i.set(o, a), n.D(o), () => {
2287
- i.delete(o), n.j(o);
2288
- }), v: n.A };
2289
- }, dt = Es ? f.useLayoutEffect : f.useEffect, q = "current", we = (t, e) => {
2290
- if (Array.isArray(t)) for (const s of t) we(s, e);
2291
- else t == null || typeof t == "boolean" || e.push(t);
2292
- }, Ls = (t, e) => {
2293
- const s = t.key;
2294
- return s ?? "_" + e;
2295
- }, qs = (t) => {
2296
- const e = f.useRef(null);
2297
- return e[q] || (e[q] = t());
2298
- }, Yt = (t) => {
2299
- const e = f.useRef(t);
2300
- return dt((() => {
2301
- e[q] = t;
2302
- }), [t]), e;
2303
- }, Us = /* @__PURE__ */ f.memo((({ Z: t, ee: e, te: s, oe: r, ne: i, re: n, se: o, ie: a }) => {
2304
- const u = f.useRef(null);
2305
- dt((() => e(u[q], s)), [s]);
2306
- const l = f.useMemo((() => {
2307
- const c = { contain: "layout style", position: i && a ? void 0 : "absolute", [o ? "height" : "width"]: "100%", [o ? "top" : "left"]: 0, [o ? "left" : "top"]: r, visibility: !i || a ? void 0 : "hidden" };
2308
- return o && (c.display = "inline-flex"), c;
2309
- }), [r, i, a, o]);
2310
- return h.jsx(n, typeof n == "string" ? { ref: u, style: l, children: t } : { ref: u, style: l, index: s, children: t });
2311
- })), _s = (t, e) => f.useMemo((() => {
2312
- if (typeof t == "function") return [(r) => t(e[r], r), e.length];
2313
- const s = ((r) => {
2314
- const i = [];
2315
- return we(r, i), i;
2316
- })(t);
2317
- return [(r) => s[r], s.length];
2318
- }), [t, e]), Ks = /* @__PURE__ */ f.forwardRef((({ children: t, data: e, bufferSize: s, itemSize: r, shift: i, horizontal: n, keepMounted: o, cache: a, startMargin: u = 0, ssrCount: l, as: c = "div", item: p = "div", scrollRef: d, onScroll: S, onScrollEnd: y }, m) => {
2319
- const [v, x] = _s(t, e), P = f.useRef(null), E = f.useRef(!!l), A = Yt(S), Q = Yt(y), [R, I, M, j] = qs((() => {
2320
- const k = !!n, b = Ts(x, r, l, a, !r);
2321
- return [b, $s(b, k), Ds(b, k), k];
2322
- }));
2323
- x !== R.T() && R.B(5, [x, i]), u !== R.O() && R.B(6, u);
2324
- const [$, U] = f.useReducer(R.m, void 0, R.m), B = R.M(), w = R.h(), g = M.P(), O = !j && g ? "unshift" : "push", T = [], N = (k) => {
2325
- const b = v(k);
2326
- return h.jsx(Us, { ee: I.U, te: k, oe: R.k(k, g), ne: R.I(k), re: p, Z: b, se: j, ie: E[q] }, Ls(b, k));
2327
- };
2328
- if (dt((() => {
2329
- E[q] = !1, R.W(1, ((b) => {
2330
- b ? Ee.flushSync(U) : U();
2331
- })), R.W(4, (() => {
2332
- A[q] && A[q](R.C());
2333
- })), R.W(8, (() => {
2334
- Q[q] && Q[q]();
2335
- }));
2336
- const k = (b) => {
2337
- I.G(b), M.N(b);
2338
- };
2339
- return d ? ye((() => {
2340
- d[q] && k(d[q]);
2341
- })) : k(P[q].parentElement), () => {
2342
- R.v(), I.v(), M.v();
2343
- };
2344
- }), []), dt((() => {
2345
- M.q();
2346
- }), [$]), f.useImperativeHandle(m, (() => ({ get cache() {
2347
- return R._();
2348
- }, get scrollOffset() {
2349
- return R.C();
2350
- }, get scrollSize() {
2351
- return Is(R);
2352
- }, get viewportSize() {
2353
- return R.p();
2354
- }, findItemIndex: R.$, getItemOffset: R.k, getItemSize: R.R, scrollToIndex: M.Y, scrollTo: M.V, scrollBy: M.X })), []), o) {
2355
- const k = new Set(o);
2356
- for (let [b, D] = R.S(s); b <= D; b++) k.add(b);
2357
- ge([...k]).forEach(((b) => {
2358
- T[O](N(b));
2359
- }));
2360
- } else for (let [k, b] = R.S(s); k <= b; k++) T[O](N(k));
2361
- return h.jsx(c, { ref: P, style: { contain: "size style", overflowAnchor: "none", flex: "none", position: "relative", width: j ? w : "100%", height: j ? "100%" : w, pointerEvents: B ? "none" : void 0 }, children: T });
2362
- }));
2363
- async function zs(t, e) {
2364
- return (await kt.get(`/chats/${t}/entries`, {
2365
- params: e
2366
- })).data?.entries ?? [];
2367
- }
2368
- const Xt = 50, Ce = "chat-messages", Bs = (t, e = { limit: Xt }) => {
2369
- const s = e.limit ?? Xt;
2370
- return {
2371
- queryKey: [Ce, t ? Number(t) : null, { limit: s }],
2372
- enabled: t !== null,
2373
- initialPageParam: null,
2374
- refetchInterval: 5e3,
2375
- // Fetch new messages every 5 seconds
2376
- queryFn: async ({ pageParam: r }) => {
2377
- if (!t) throw new Error("Chat ID is required");
2378
- return zs(t, {
2379
- limit: s,
2380
- prev_message: r ? JSON.stringify(r) : void 0
2381
- });
2382
- },
2383
- getNextPageParam: (r) => !r || r.length !== s ? null : r[r.length - 1]
2384
- };
2385
- };
2386
- function Hs(t, e) {
2387
- return ds(Bs(t, e));
2388
- }
2389
- async function Gs(t) {
2390
- try {
2391
- return (await kt.get(`/games/${t}`)).data.game;
2392
- } catch (e) {
2393
- if (e instanceof Zt && e.response?.status === 404)
2394
- return null;
2395
- throw e;
2396
- }
2397
- }
2398
- const Ws = "game", Vs = (t) => ({
2399
- queryKey: [Ws, Number(t)],
2400
- queryFn: async () => Gs(t),
2401
- staleTime: 1 / 0
2402
- });
2403
- function Ys(t) {
2404
- return hs(Vs(t));
2405
- }
2406
- class Se extends Error {
2407
- constructor(e = "You are sending messages too quickly. Please wait a moment.") {
2408
- super(e), this.name = "RateLimitError";
2409
- }
2410
- }
2411
- async function Xs(t) {
2412
- try {
2413
- return (await kt.post(`/chats/${t.chatID}/messages`, {
2414
- chatID: t.chatID,
2415
- content: t.content
2416
- })).data;
2417
- } catch (e) {
2418
- throw e instanceof Zt && e.response?.status === 429 ? new Se() : e;
2419
- }
2420
- }
2421
- function Js(t) {
2422
- const e = Nt(), { onSettled: s, onError: r, ...i } = t ?? {};
2423
- return ls({
2424
- mutationFn: (n) => Xs(n),
2425
- onError: (n, ...o) => {
2426
- n instanceof Se && console.error(n.message), r?.(n, ...o);
2427
- },
2428
- onSettled: (n, ...o) => {
2429
- n && e.invalidateQueries({ queryKey: [Ce, n.entry.ChatID] }), s?.(n, ...o);
2430
- },
2431
- ...i
2432
- });
2433
- }
2434
- const gt = 255;
2435
- function Zs({ chatId: t, onMessageSent: e }) {
2436
- const [s, r] = f.useState(""), i = f.useRef(null), n = pt((v) => v.user), o = pt((v) => v.isAuthenticated), a = pt((v) => v.login), { mutate: u, isPending: l } = Js({
2437
- onSuccess: () => {
2438
- r(""), e?.();
2439
- }
2440
- }), c = () => {
2441
- const v = s.trim();
2442
- if (!(!v || l)) {
2443
- if (!o) {
2444
- a();
2445
- return;
2446
- }
2447
- u({ chatID: t, content: v });
2448
- }
2449
- }, p = (v) => {
2450
- v.key === "Enter" && !v.shiftKey && (v.preventDefault(), c());
2451
- }, d = s.length > gt, S = l || !s.trim() || d, y = n?.SolanaAddress || n?.ID?.toString() || "anonymous", m = n?.ImageURL || `https://api.dicebear.com/7.x/avataaars/svg?seed=${y}`;
2452
- return /* @__PURE__ */ h.jsx("div", { className: "chat-input-container", children: /* @__PURE__ */ h.jsxs("div", { className: "chat-input-wrapper", children: [
2453
- /* @__PURE__ */ h.jsx(
2454
- "textarea",
2455
- {
2456
- ref: i,
2457
- value: s,
2458
- onChange: (v) => r(v.target.value),
2459
- onKeyDown: p,
2460
- placeholder: o ? "Write a message..." : "Login to send messages...",
2461
- className: "chat-input-textarea",
2462
- disabled: l,
2463
- maxLength: gt + 50
2464
- }
2465
- ),
2466
- /* @__PURE__ */ h.jsxs("div", { className: "chat-input-footer", children: [
2467
- o && n && /* @__PURE__ */ h.jsx("div", { className: "chat-input-avatar", children: /* @__PURE__ */ h.jsx("img", { src: m, alt: "You", className: "chat-input-avatar-img" }) }),
2468
- /* @__PURE__ */ h.jsxs("span", { className: `chat-input-counter ${d ? "chat-input-counter--error" : ""}`, children: [
2469
- s.length,
2470
- "/",
2471
- gt
2472
- ] }),
2473
- /* @__PURE__ */ h.jsx("div", { className: "chat-input-divider" }),
2474
- /* @__PURE__ */ h.jsx(
2475
- "button",
2476
- {
2477
- type: "button",
2478
- onClick: c,
2479
- disabled: S,
2480
- className: "chat-input-button",
2481
- "aria-label": o ? "Send message" : "Login to send",
2482
- children: l ? /* @__PURE__ */ h.jsx(Ot, { className: "chat-input-spinner" }) : /* @__PURE__ */ h.jsx(bs, { className: "chat-input-icon" })
2483
- }
2484
- )
2485
- ] })
2486
- ] }) });
2487
- }
2488
- function Jt(t, e = 4) {
2489
- return !t || t.length < e * 2 + 3 ? t : `${t.slice(0, e)}...${t.slice(-e)}`;
2490
- }
2491
- function Tt(t) {
2492
- const e = new Date(t), r = (/* @__PURE__ */ new Date()).getTime() - e.getTime(), i = Math.floor(r / 1e3), n = Math.floor(i / 60), o = Math.floor(n / 60), a = Math.floor(o / 24);
2493
- return i < 60 ? "now" : n < 60 ? `${n}m` : o < 24 ? `${o}h` : a < 7 ? `${a}d` : e.toLocaleDateString();
2494
- }
2495
- function tr({ entry: t }) {
2496
- if (t.EntryType !== "user_message" || !t.UserMessage) return null;
2497
- const { UserMessage: e } = t, s = e.User, r = s.SolanaAddress || s.ID.toString(), i = s.ImageURL || `https://api.dicebear.com/7.x/avataaars/svg?seed=${r}`;
2498
- return /* @__PURE__ */ h.jsxs("div", { className: "chat-message-card", "data-entry-id": t.ID, "data-entry-type": "user_message", children: [
2499
- /* @__PURE__ */ h.jsx("div", { className: "chat-message-avatar", children: /* @__PURE__ */ h.jsx(
2500
- "img",
2501
- {
2502
- src: i,
2503
- alt: Jt(s.SolanaAddress),
2504
- className: "chat-message-avatar-img"
2505
- }
2506
- ) }),
2507
- /* @__PURE__ */ h.jsxs("div", { className: "chat-message-content", children: [
2508
- /* @__PURE__ */ h.jsxs("div", { className: "chat-message-header", children: [
2509
- /* @__PURE__ */ h.jsx("span", { className: "chat-message-username", children: Jt(s.SolanaAddress) }),
2510
- /* @__PURE__ */ h.jsx("span", { className: "chat-message-time", children: Tt(t.CreatedAt) })
2511
- ] }),
2512
- /* @__PURE__ */ h.jsx("p", { className: "chat-message-text", children: e.Content })
2513
- ] })
2514
- ] });
2515
- }
2516
- function er({ entry: t }) {
2517
- if (t.EntryType !== "game_event" || !t.GameEvent) return null;
2518
- const { GameEvent: e } = t, s = e.Game;
2519
- return /* @__PURE__ */ h.jsx(
2520
- "div",
2521
- {
2522
- className: "chat-message-card chat-message-card--event",
2523
- "data-entry-id": t.ID,
2524
- "data-entry-type": "game_event",
2525
- children: /* @__PURE__ */ h.jsxs("div", { className: "chat-message-content", children: [
2526
- /* @__PURE__ */ h.jsxs("div", { className: "chat-message-header", children: [
2527
- s && /* @__PURE__ */ h.jsx("span", { className: "chat-message-username chat-message-username--link", children: e.Title }),
2528
- !s && /* @__PURE__ */ h.jsx("span", { className: "chat-message-username", children: e.Title }),
2529
- /* @__PURE__ */ h.jsx("span", { className: "chat-message-time", children: Tt(t.CreatedAt) })
2530
- ] }),
2531
- /* @__PURE__ */ h.jsxs("div", { className: "chat-message-event-content", children: [
2532
- /* @__PURE__ */ h.jsx("p", { className: "chat-message-text chat-message-text--title", children: e.Title }),
2533
- e.ShortSummary && /* @__PURE__ */ h.jsx("p", { className: "chat-message-text chat-message-text--summary", children: e.ShortSummary }),
2534
- e.Description && /* @__PURE__ */ h.jsx("p", { className: "chat-message-text", children: e.Description })
2535
- ] })
2536
- ] })
2537
- }
2538
- );
2539
- }
2540
- function sr({ entry: t }) {
2541
- if (t.EntryType !== "token_event" || !t.TokenEvent) return null;
2542
- const { TokenEvent: e } = t, s = e.Token;
2543
- return /* @__PURE__ */ h.jsx(
2544
- "div",
2545
- {
2546
- className: "chat-message-card chat-message-card--event",
2547
- "data-entry-id": t.ID,
2548
- "data-entry-type": "token_event",
2549
- children: /* @__PURE__ */ h.jsxs("div", { className: "chat-message-content", children: [
2550
- /* @__PURE__ */ h.jsxs("div", { className: "chat-message-header", children: [
2551
- s && /* @__PURE__ */ h.jsxs("span", { className: "chat-message-username chat-message-username--link", children: [
2552
- e.Title,
2553
- " (",
2554
- e.Token?.Ticker,
2555
- ")"
2556
- ] }),
2557
- !s && /* @__PURE__ */ h.jsx("span", { className: "chat-message-username", children: e.Title }),
2558
- /* @__PURE__ */ h.jsx("span", { className: "chat-message-time", children: Tt(t.CreatedAt) })
2559
- ] }),
2560
- /* @__PURE__ */ h.jsxs("div", { className: "chat-message-event-content", children: [
2561
- /* @__PURE__ */ h.jsx("p", { className: "chat-message-text chat-message-text--title", children: e.Title }),
2562
- e.ShortSummary && /* @__PURE__ */ h.jsx("p", { className: "chat-message-text chat-message-text--summary", children: e.ShortSummary }),
2563
- e.Description && /* @__PURE__ */ h.jsx("p", { className: "chat-message-text", children: e.Description })
2564
- ] })
2565
- ] })
2566
- }
2567
- );
2568
- }
2569
- function rr({ entry: t }) {
2570
- switch (t.EntryType) {
2571
- case "user_message":
2572
- return /* @__PURE__ */ h.jsx(tr, { entry: t });
2573
- case "game_event":
2574
- return /* @__PURE__ */ h.jsx(er, { entry: t });
2575
- case "token_event":
2576
- return /* @__PURE__ */ h.jsx(sr, { entry: t });
2577
- default:
2578
- return null;
2579
- }
2580
- }
2581
- const ir = new Je({
2582
- defaultOptions: {
2583
- queries: {
2584
- staleTime: 1e3 * 60,
2585
- // 1 minute
2586
- refetchOnWindowFocus: !1
2587
- }
2588
- }
2589
- });
2590
- function nr({ gameId: t, onOpenChange: e }) {
2591
- const [s, r] = f.useState(!1), i = f.useRef(!1), n = f.useRef(!1), o = f.useRef(!1), a = f.useRef(!1), u = f.useRef(!0), l = f.useRef(!1), c = f.useRef(null), {
2592
- data: p,
2593
- isLoading: d,
2594
- isError: S,
2595
- error: y,
2596
- refetch: m
2597
- } = Ys(t), v = p?.ChatID ?? null, {
2598
- data: x,
2599
- fetchNextPage: P,
2600
- hasNextPage: E,
2601
- isFetchingNextPage: A,
2602
- isLoading: Q,
2603
- isFetching: R,
2604
- isError: I,
2605
- refetch: M
2606
- } = Hs(v), j = f.useMemo(() => x ? x.pages.flat().reverse() : [], [x]), $ = f.useCallback(() => {
2607
- u.current = !0, n.current = !0;
2608
- }, []), U = f.useCallback(() => {
2609
- i.current || !E || A || (i.current = !0, a.current = !0, P().finally(() => {
2610
- i.current = !1;
2611
- }));
2612
- }, [E, A, P]);
2613
- f.useLayoutEffect(() => {
2614
- a.current = !1;
2615
- }), f.useEffect(() => {
2616
- if (!c.current) return;
2617
- const g = c.current, O = j.length - 1;
2618
- u.current && O >= 0 && g.scrollToIndex(O, { align: "end" });
2619
- }, [j.length]), f.useLayoutEffect(() => {
2620
- if (s && c.current && j.length > 0 && !l.current) {
2621
- const g = c.current, O = j.length - 1;
2622
- g.scrollToIndex(O, { align: "end" }), u.current = !0, l.current = !0;
2623
- }
2624
- s || (l.current = !1);
2625
- }, [s, j.length]), f.useEffect(() => {
2626
- const g = c.current;
2627
- if (!g) return;
2628
- const O = o.current && !R;
2629
- if (n.current && O) {
2630
- const T = j.length - 1;
2631
- T >= 0 && g.scrollToIndex(T, { align: "end" }), n.current = !1;
2632
- }
2633
- o.current = R;
2634
- }, [R, j.length]);
2635
- const B = () => {
2636
- const g = !s;
2637
- r(g), e?.(g);
2638
- }, w = () => d ? /* @__PURE__ */ h.jsxs("div", { className: "chat-empty", children: [
2639
- /* @__PURE__ */ h.jsx("div", { className: "chat-empty-icon", children: /* @__PURE__ */ h.jsx(Ot, { className: "chat-spinner" }) }),
2640
- /* @__PURE__ */ h.jsx("p", { className: "chat-empty-text", children: "Loading game data..." })
2641
- ] }) : S ? /* @__PURE__ */ h.jsxs("div", { className: "chat-empty", children: [
2642
- /* @__PURE__ */ h.jsx("p", { className: "chat-empty-title", children: "Failed to load game" }),
2643
- /* @__PURE__ */ h.jsx("p", { className: "chat-empty-text", children: y instanceof Error ? y.message : "Unknown error occurred" }),
2644
- /* @__PURE__ */ h.jsxs("button", { type: "button", onClick: () => m(), className: "chat-retry-button", children: [
2645
- /* @__PURE__ */ h.jsx(Gt, { className: "chat-retry-icon" }),
2646
- "Retry"
2647
- ] })
2648
- ] }) : v ? Q ? /* @__PURE__ */ h.jsxs("div", { className: "chat-empty", children: [
2649
- /* @__PURE__ */ h.jsx("div", { className: "chat-empty-icon", children: /* @__PURE__ */ h.jsx(Ot, { className: "chat-spinner" }) }),
2650
- /* @__PURE__ */ h.jsx("p", { className: "chat-empty-text", children: "Loading messages..." })
2651
- ] }) : I ? /* @__PURE__ */ h.jsxs("div", { className: "chat-empty", children: [
2652
- /* @__PURE__ */ h.jsx("p", { className: "chat-empty-title", children: "Failed to load messages" }),
2653
- /* @__PURE__ */ h.jsxs("button", { type: "button", onClick: () => M(), className: "chat-retry-button", children: [
2654
- /* @__PURE__ */ h.jsx(Gt, { className: "chat-retry-icon" }),
2655
- "Retry"
2656
- ] })
2657
- ] }) : j.length === 0 ? /* @__PURE__ */ h.jsxs("div", { className: "chat-empty", children: [
2658
- /* @__PURE__ */ h.jsx("div", { className: "chat-empty-icon", children: /* @__PURE__ */ h.jsx(Ht, { className: "chat-empty-svg" }) }),
2659
- /* @__PURE__ */ h.jsx("p", { className: "chat-empty-title", children: "No messages yet" }),
2660
- /* @__PURE__ */ h.jsx("p", { className: "chat-empty-text", children: "Be the first to start the conversation!" })
2661
- ] }) : /* @__PURE__ */ h.jsxs("div", { className: "chat-messages-container", children: [
2662
- /* @__PURE__ */ h.jsx("div", { className: "chat-messages-spacer" }),
2663
- /* @__PURE__ */ h.jsx(
2664
- Ks,
2665
- {
2666
- ref: c,
2667
- shift: a.current,
2668
- onScroll: (g) => {
2669
- c.current && (u.current = g - c.current.scrollSize + c.current.viewportSize >= -1.5, g < 100 && (a.current = !0, U()));
2670
- },
2671
- children: j.map((g) => /* @__PURE__ */ h.jsx(rr, { entry: g }, g.ID))
2672
- }
2673
- )
2674
- ] }) : /* @__PURE__ */ h.jsxs("div", { className: "chat-empty", children: [
2675
- /* @__PURE__ */ h.jsx("p", { className: "chat-empty-title", children: "Chat not available" }),
2676
- /* @__PURE__ */ h.jsx("p", { className: "chat-empty-text", children: "This game does not have a chat configured." })
2677
- ] });
2678
- return s ? /* @__PURE__ */ h.jsxs("div", { className: "chat-widget", children: [
2679
- /* @__PURE__ */ h.jsx("div", { className: "chat-widget-header", children: /* @__PURE__ */ h.jsx(
2680
- "button",
2681
- {
2682
- type: "button",
2683
- className: "chat-widget-header-button",
2684
- onClick: B,
2685
- "aria-label": "Minimize chat",
2686
- children: /* @__PURE__ */ h.jsx(ws, { className: "chat-widget-header-icon" })
2687
- }
2688
- ) }),
2689
- /* @__PURE__ */ h.jsx("div", { className: "chat-widget-body", children: w() }),
2690
- v && /* @__PURE__ */ h.jsx(Zs, { chatId: v, onMessageSent: $ })
2691
- ] }) : /* @__PURE__ */ h.jsx(
2692
- "button",
2693
- {
2694
- type: "button",
2695
- className: "chat-widget-bubble",
2696
- onClick: B,
2697
- "aria-label": "Open chat",
2698
- children: /* @__PURE__ */ h.jsx(Ht, { className: "chat-widget-bubble-icon" })
2699
- }
2700
- );
2701
- }
2702
- function ar(t) {
2703
- return /* @__PURE__ */ h.jsx(Ze, { client: ir, children: /* @__PURE__ */ h.jsx(nr, { ...t }) });
2704
- }
2705
- const or = ":host{--chat-position-offset-x: 20px;--chat-position-offset-y: 20px;position:fixed;z-index:9999;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:14px;line-height:1.5;color:#fffffff2;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;inset:auto}:host:not([data-side]):not([data-vertical]){left:auto;right:var(--chat-position-offset-x, 20px);top:auto;bottom:var(--chat-position-offset-y, 20px)}:host[data-side=left][data-vertical=top]{left:var(--chat-position-offset-x, 20px);right:auto;top:var(--chat-position-offset-y, 20px);bottom:auto}:host[data-side=right][data-vertical=top]{left:auto;right:var(--chat-position-offset-x, 20px);top:var(--chat-position-offset-y, 20px);bottom:auto}:host[data-side=left][data-vertical=bottom]{left:var(--chat-position-offset-x, 20px);right:auto;top:auto;bottom:var(--chat-position-offset-y, 20px)}:host[data-side=right][data-vertical=bottom]{left:auto;right:var(--chat-position-offset-x, 20px);top:auto;bottom:var(--chat-position-offset-y, 20px)}:host[data-side=left]{left:var(--chat-position-offset-x, 20px);right:auto}:host[data-side=right]{left:auto;right:var(--chat-position-offset-x, 20px)}:host[data-vertical=top]{top:var(--chat-position-offset-y, 20px);bottom:auto}:host[data-vertical=bottom]{top:auto;bottom:var(--chat-position-offset-y, 20px)}:host[data-vertical=middle]{top:auto;bottom:var(--chat-position-offset-y, 20px)}:host[data-vertical=middle].chat-widget-open{top:50%;bottom:auto;transform:translateY(-50%)}:host[data-side=left][data-vertical=middle]{left:var(--chat-position-offset-x, 20px);right:auto;top:auto;bottom:var(--chat-position-offset-y, 20px)}:host[data-side=left][data-vertical=middle].chat-widget-open{left:var(--chat-position-offset-x, 20px);right:auto;top:50%;bottom:auto;transform:translateY(-50%)}:host[data-side=right][data-vertical=middle]{left:auto;right:var(--chat-position-offset-x, 20px);top:auto;bottom:var(--chat-position-offset-y, 20px)}:host[data-side=right][data-vertical=middle].chat-widget-open{left:auto;right:var(--chat-position-offset-x, 20px);top:50%;bottom:auto;transform:translateY(-50%)}.chat-widget-bubble{display:flex;align-items:center;justify-content:center;width:56px;height:56px;border-radius:50%;background:#000000a6;background-blend-mode:overlay;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);color:#fffffff2;border:.5px solid rgba(255,255,255,.1);cursor:pointer;box-shadow:0 4px 12px #00000026;will-change:transform;transition:transform .2s ease,box-shadow .2s ease,background .2s ease}.chat-widget-bubble:hover{transform:scale(1.05);box-shadow:0 6px 16px #0003}.chat-widget-bubble:active{transform:scale(.98)}.chat-widget-bubble-icon{width:24px;height:24px}.chat-widget{display:flex;flex-direction:column;width:380px;height:520px;max-width:calc(100vw - 40px);max-height:calc(100vh - 100px);background:transparent;border:none;border-radius:16px;overflow:hidden;animation:chat-widget-open .2s ease-out}@keyframes chat-widget-open{0%{opacity:0;transform:translateY(10px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.chat-widget-header{display:flex;align-items:center;justify-content:flex-end;padding:6px;background:transparent;border-bottom:none}.chat-widget-header-button{display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:50%;background:#000000a6;background-blend-mode:overlay;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);color:#fffffff2;border:.5px solid rgba(255,255,255,.1);cursor:pointer;box-shadow:0 4px 12px #00000026;will-change:transform;transition:transform .2s ease,box-shadow .2s ease,background .2s ease}.chat-widget-header-button:hover{transform:scale(1.05);background:#11111180;box-shadow:0 6px 16px #0003}.chat-widget-header-button:active{transform:scale(.98)}.chat-widget-header-icon{width:20px;height:20px}.chat-widget-body{flex:1;overflow:hidden;display:flex;flex-direction:column}.chat-messages-container{flex:1;overflow-y:auto;overflow-anchor:none;overscroll-behavior:contain;display:flex;flex-direction:column;padding:12px 12px 0}.chat-messages-spacer{flex-grow:1}.chat-message-card{display:flex;align-items:flex-start;gap:10px;padding:10px 12px;margin-bottom:8px;background:#000000a6;background-blend-mode:overlay;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-radius:16px;border:.5px solid rgba(255,255,255,.1)}.chat-message-avatar{flex-shrink:0}.chat-message-avatar-img{width:36px;height:36px;border-radius:50%;background:#ffffff1a;object-fit:cover}.chat-message-content{flex:1;min-width:0}.chat-message-header{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:4px}.chat-message-username{font-size:13px;font-weight:500;color:#ffffffb3}.chat-message-time{font-size:11px;color:#fff9;flex-shrink:0}.chat-message-text{margin:0;font-size:14px;color:#fffffff2;white-space:pre-wrap;word-wrap:break-word;overflow-wrap:break-word}.chat-message-text--title{font-weight:600;margin-bottom:4px}.chat-message-text--summary{color:#ffffffb3;margin-bottom:4px}.chat-message-username--link{cursor:pointer;text-decoration:underline;text-decoration-color:transparent;transition:text-decoration-color .15s ease}.chat-message-username--link:hover{text-decoration-color:currentColor}.chat-message-card--event{padding-left:12px}.chat-message-event-content{display:flex;flex-direction:column;gap:4px}.chat-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;flex:1;padding:32px;text-align:center;margin:12px;background:#000000a6;background-blend-mode:overlay;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-radius:16px;border:.5px solid rgba(255,255,255,.1)}.chat-empty-icon{margin-bottom:12px}.chat-empty-svg{width:40px;height:40px;color:#ffffffb3}.chat-empty-title{margin:0 0 4px;font-size:15px;font-weight:600;color:#fffffff2}.chat-empty-text{margin:0;font-size:13px;color:#ffffffb3}.chat-retry-button{display:inline-flex;align-items:center;gap:6px;margin-top:12px;padding:8px 14px;font-size:13px;font-weight:500;color:#fffffff2;background:#000000a6;background-blend-mode:overlay;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border:.5px solid rgba(255,255,255,.1);border-radius:8px;cursor:pointer;transition:border-color .15s ease}.chat-retry-button:hover{border-color:#fff3}.chat-retry-icon{width:14px;height:14px}.chat-spinner{width:24px;height:24px;color:#fffffff2;animation:chat-spinner-rotate 1s linear infinite}@keyframes chat-spinner-rotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.chat-input-container{border-top:none;background:transparent}.chat-input-wrapper{display:flex;flex-direction:column;background:#000000a6;background-blend-mode:overlay;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border:.5px solid rgba(255,255,255,.1);border-radius:16px;overflow:hidden;transition:border-color .15s ease;min-width:0;max-width:100%}.chat-input-wrapper:focus-within{border-color:#fff3}.chat-input-textarea{width:100%;min-height:80px;max-height:120px;padding:10px 12px;font-size:16px;font-family:inherit;line-height:1.5;color:#fffffff2;background:transparent;border:none;resize:none;outline:none;box-sizing:border-box;overflow-wrap:break-word;word-wrap:break-word;overflow-x:hidden}.chat-input-textarea::placeholder{color:#ffffff80}.chat-input-textarea:disabled{opacity:.6;cursor:not-allowed}.chat-input-footer{display:flex;align-items:center;gap:8px;padding:8px 12px;background:transparent;border-top:1px solid rgba(255,255,255,.1)}.chat-input-avatar{flex-shrink:0}.chat-input-avatar-img{width:28px;height:28px;border-radius:50%;background:#ffffff1a;object-fit:cover}.chat-input-counter{font-size:12px;color:#ffffffb3;margin-left:auto}.chat-input-counter--error{color:#ff5757e6}.chat-input-divider{width:1px;height:16px;background:#ffffff1a}.chat-input-button{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border:none;border-radius:50%;background:#4fff7e;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);color:#000000e6;cursor:pointer;transition:opacity .15s ease,transform .15s ease,background .15s ease}.chat-input-button:hover:not(:disabled){background:#3fe66a;opacity:1}.chat-input-button:active:not(:disabled){transform:scale(.95)}.chat-input-button:disabled{opacity:.5;cursor:not-allowed}.chat-input-icon{width:16px;height:16px}.chat-input-spinner{width:16px;height:16px;animation:chat-spinner-rotate 1s linear infinite}@media(max-width:480px){:host{inset:auto 10px 10px}:host .chat-widget{width:100%;max-width:none;height:calc(100vh - 80px);transform:none;top:auto;bottom:10px}.chat-widget-bubble{width:48px;height:48px}.chat-widget-bubble-icon{width:20px;height:20px}}";
2706
- let J = null, C = null, tt = null;
2707
- function dr(t, e) {
2708
- if (J) {
2709
- console.warn("Chat widget already mounted");
2710
- return;
2711
- }
2712
- C = document.createElement("div"), C.id = "autogames-chat-widget", document.body.appendChild(C);
2713
- const s = e?.position || {}, r = s.side || "right", i = s.vertical || "bottom", n = s.offsetX ?? 20, o = s.offsetY ?? 20, a = C.attachShadow({ mode: "open" });
2714
- C.setAttribute("data-side", r), C.setAttribute("data-vertical", i), C.style.setProperty("--chat-position-offset-x", `${n}px`), C.style.setProperty("--chat-position-offset-y", `${o}px`), C.style.position = "fixed", C.style.zIndex = "9999", C.style.left = "auto", C.style.right = "auto", C.style.top = "auto", C.style.bottom = "auto", r === "left" ? (C.style.left = `${n}px`, C.style.right = "auto") : (C.style.left = "auto", C.style.right = `${n}px`), i === "top" ? (C.style.top = `${o}px`, C.style.bottom = "auto") : (i === "bottom" || i === "middle") && (C.style.top = "auto", C.style.bottom = `${o}px`);
2715
- const u = document.createElement("style");
2716
- u.textContent = or, a.appendChild(u);
2717
- const l = document.createElement("div");
2718
- l.id = "chat-widget-root", a.appendChild(l), tt = l, J = Pe.createRoot(l), J.render(
2719
- /* @__PURE__ */ h.jsx(f.StrictMode, { children: /* @__PURE__ */ h.jsx(
2720
- ar,
2721
- {
2722
- gameId: t,
2723
- onClose: () => cr(),
2724
- onOpenChange: (c) => {
2725
- if (tt && (c ? tt.classList.add("chat-widget-open") : tt.classList.remove("chat-widget-open")), C) {
2726
- if (c)
2727
- C.classList.add("chat-widget-open"), C.getAttribute("data-vertical") === "middle" && (C.style.top = "50%", C.style.bottom = "auto", C.style.transform = "translateY(-50%)");
2728
- else if (C.classList.remove("chat-widget-open"), C.getAttribute("data-vertical") === "middle") {
2729
- const S = C.style.getPropertyValue("--chat-position-offset-y") || "20px";
2730
- C.style.top = "auto", C.style.bottom = S, C.style.transform = "none";
2731
- }
2732
- }
2733
- }
2734
- }
2735
- ) })
2736
- );
2737
- }
2738
- function cr() {
2739
- J && (J.unmount(), J = null), C && (C.remove(), C = null), tt = null;
2740
- }
2741
- export {
2742
- dr as mountChatWidget,
2743
- cr as unmountChatWidget
2744
- };