@endge/utils 0.24.10 → 0.24.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -360,6 +360,9 @@ export declare function getDateOnlyDiffFactor(d1: Date, d2: Date): {
360
360
 
361
361
  export declare function getDayOfWeek(date: any): string;
362
362
 
363
+ /** Returns the shared document-scoped keyboard snapshot, installing one tracker lazily. */
364
+ export declare function getKeyboardStateSnapshot(target: Document): KeyboardStateSnapshot;
365
+
363
366
  export declare function getOnDeserializedMethod<T>(instance: T): (() => void) | null;
364
367
 
365
368
  export declare function getTimezoneOffsetMs(timezone: string): number;
@@ -607,6 +610,9 @@ export declare interface ISerializable {
607
610
 
608
611
  export declare function isNullOrUndefined<T>(value: T | null | undefined): value is null | undefined;
609
612
 
613
+ /** Formats a DateTime as `HH:mm` in the configured IANA timezone or browser-local timezone. */
614
+ export declare function isoDateTimeToTimeInput(value: unknown, timezone?: unknown): string;
615
+
610
616
  export declare function IsOptionalTransformed(validationOptions?: ValidationOptions): (object: object, propertyName: string) => void;
611
617
 
612
618
  export declare function isoToDateInput(value: unknown): string;
@@ -626,6 +632,24 @@ export declare function Json(): PropertyDecorator;
626
632
 
627
633
  export declare function JsonString(): PropertyDecorator;
628
634
 
635
+ export declare type KeyboardStatePlatform = 'macos' | 'windows' | 'linux' | 'unknown';
636
+
637
+ export declare interface KeyboardStateSnapshot {
638
+ platform: KeyboardStatePlatform;
639
+ modifiers: {
640
+ ctrl: boolean;
641
+ shift: boolean;
642
+ alt: boolean;
643
+ meta: boolean;
644
+ mod: boolean;
645
+ altGraph: boolean;
646
+ };
647
+ held: {
648
+ key: string[];
649
+ code: string[];
650
+ };
651
+ }
652
+
629
653
  export declare interface KeyCombo {
630
654
  ctrl?: boolean;
631
655
  alt?: boolean;
@@ -654,6 +678,9 @@ export declare type Maybe<T> = T | null | undefined;
654
678
  */
655
679
  export declare type MaybeArray<T> = T | Array<T>;
656
680
 
681
+ /** Replaces only hours and minutes while preserving the DateTime calendar date in the selected timezone. */
682
+ export declare function mergeTimeIntoDateTime(value: unknown, time: unknown, timezone?: unknown): string | null;
683
+
657
684
  /**
658
685
  * Описывает ответственность NamedExecutor в архитектуре проекта.
659
686
  */
@@ -1037,6 +1064,9 @@ export declare class Subscribable {
1037
1064
  notify(): void;
1038
1065
  }
1039
1066
 
1067
+ /** Subscribes to the shared document-scoped keyboard state and immediately emits its snapshot. */
1068
+ export declare function subscribeKeyboardState(target: Document, listener: (snapshot: KeyboardStateSnapshot) => void): () => void;
1069
+
1040
1070
  export declare const SystemClock: {
1041
1071
  DateTime: typeof DateTime;
1042
1072
  toDateTime(jsDate: Date): DateTime;
package/dist/utils.js CHANGED
@@ -1,36 +1,36 @@
1
- var z = Object.defineProperty;
2
- var P = (r, t, e) => t in r ? z(r, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : r[t] = e;
3
- var o = (r, t, e) => P(r, typeof t != "symbol" ? t + "" : t, e);
4
- import { ref as g, watch as C, triggerRef as $, onScopeDispose as R, reactive as H } from "vue";
5
- import { parse as U, serialize as E } from "cookie-es";
6
- import { destr as j } from "destr";
7
- import { plainToInstance as S, instanceToPlain as _, Transform as f, TransformationType as d, Expose as B } from "class-transformer";
8
- import { IsOptional as J } from "class-validator";
1
+ var W = Object.defineProperty;
2
+ var Y = (r, t, e) => t in r ? W(r, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : r[t] = e;
3
+ var o = (r, t, e) => Y(r, typeof t != "symbol" ? t + "" : t, e);
4
+ import { ref as b, watch as H, triggerRef as R, onScopeDispose as q, reactive as Q } from "vue";
5
+ import { parse as X, serialize as k } from "cookie-es";
6
+ import { destr as v } from "destr";
7
+ import { plainToInstance as w, instanceToPlain as x, Transform as f, TransformationType as m, Expose as tt } from "class-transformer";
8
+ import { IsOptional as et } from "class-validator";
9
9
  import "reflect-metadata";
10
- import K from "lodash/debounce.js";
11
- import { v4 as V } from "uuid";
12
- import { DateTime as Z } from "ts-luxon";
13
- import { differenceInSeconds as M, format as T, differenceInCalendarDays as G, isAfter as D, isEqual as W, isBefore as F, startOfDay as p, endOfDay as Y } from "date-fns";
14
- import { utcToZonedTime as q, getTimezoneOffset as x } from "date-fns-tz";
15
- import { fetchEventSource as Q, EventStreamContentType as X } from "@microsoft/fetch-event-source";
16
- import { defineStore as v } from "pinia";
17
- const tt = {
10
+ import rt from "lodash/debounce.js";
11
+ import { v4 as nt } from "uuid";
12
+ import { DateTime as it } from "ts-luxon";
13
+ import { differenceInSeconds as U, format as S, differenceInCalendarDays as st, isAfter as E, isEqual as ot, isBefore as K, startOfDay as g, endOfDay as at } from "date-fns";
14
+ import { utcToZonedTime as A, getTimezoneOffset as D, zonedTimeToUtc as ct } from "date-fns-tz";
15
+ import { fetchEventSource as lt, EventStreamContentType as ut } from "@microsoft/fetch-event-source";
16
+ import { defineStore as ft } from "pinia";
17
+ const dt = {
18
18
  path: "/",
19
19
  watch: !0,
20
- decode: (r) => j(decodeURIComponent(r)),
20
+ decode: (r) => v(decodeURIComponent(r)),
21
21
  encode: (r) => encodeURIComponent(typeof r == "string" ? r : JSON.stringify(r))
22
- }, It = (r, t) => {
22
+ }, Ut = (r, t) => {
23
23
  var s;
24
- const e = { ...tt, ...t || {} }, n = U(document.cookie, e), i = g(n[r] ?? ((s = e.default) == null ? void 0 : s.call(e)));
25
- return C(i, () => {
26
- document.cookie = et(r, i.value, e);
24
+ const e = { ...dt, ...t || {} }, n = X(document.cookie, e), i = b(n[r] ?? ((s = e.default) == null ? void 0 : s.call(e)));
25
+ return H(i, () => {
26
+ document.cookie = ht(r, i.value, e);
27
27
  }), i;
28
28
  };
29
- function et(r, t, e = {}) {
30
- return t == null ? E(r, t, { ...e, maxAge: -1 }) : E(r, t, e);
29
+ function ht(r, t, e = {}) {
30
+ return t == null ? k(r, t, { ...e, maxAge: -1 }) : k(r, t, e);
31
31
  }
32
- var m = /* @__PURE__ */ ((r) => (r.Add = "add", r.Remove = "remove", r.Update = "update", r.IndexCreate = "indexCreate", r))(m || {});
33
- class N {
32
+ var y = /* @__PURE__ */ ((r) => (r.Add = "add", r.Remove = "remove", r.Update = "update", r.IndexCreate = "indexCreate", r))(y || {});
33
+ class j {
34
34
  /**
35
35
  * Создает экземпляр EventBus и подготавливает базовое состояние.
36
36
  */
@@ -156,8 +156,8 @@ class N {
156
156
  t ? (e = this.listeners.get(t)) == null || e.clear() : this.listeners.clear();
157
157
  }
158
158
  }
159
- const Et = new N(Object.keys({}));
160
- class L {
159
+ const Kt = new j(Object.keys({}));
160
+ class B {
161
161
  constructor() {
162
162
  o(this, "subscribers", /* @__PURE__ */ new Set());
163
163
  }
@@ -178,18 +178,18 @@ class L {
178
178
  this.subscribers.forEach((t) => t());
179
179
  }
180
180
  }
181
- const At = (r) => {
182
- const t = g(r), e = r.subscribe(() => {
183
- $(t);
181
+ const jt = (r) => {
182
+ const t = b(r), e = r.subscribe(() => {
183
+ R(t);
184
184
  });
185
185
  return { refObj: t, unsubscribe: e };
186
- }, Ot = (r) => {
187
- const t = g(r), e = r.subscribe(() => $(t));
188
- return R(() => {
186
+ }, Bt = (r) => {
187
+ const t = b(r), e = r.subscribe(() => R(t));
188
+ return q(() => {
189
189
  e();
190
190
  }), t;
191
191
  };
192
- class Ct extends L {
192
+ class Jt extends B {
193
193
  /**
194
194
  * Создает экземпляр Collection и подготавливает базовое состояние.
195
195
  */
@@ -199,7 +199,7 @@ class Ct extends L {
199
199
  o(this, "indices", /* @__PURE__ */ new Map());
200
200
  o(this, "rootIds", /* @__PURE__ */ new Set());
201
201
  o(this, "bus");
202
- this.bus = new N(Object.values(m)), e.length && this.add(e), this.createIndex("id");
202
+ this.bus = new j(Object.values(y)), e.length && this.add(e), this.createIndex("id");
203
203
  }
204
204
  /**
205
205
  * Выполняет действие add в рамках ответственности Collection.
@@ -210,7 +210,7 @@ class Ct extends L {
210
210
  this.items.push(i), this.indices.forEach((s, a) => {
211
211
  s.set(i[a], i);
212
212
  }), i.parentId || this.rootIds.add(i.id);
213
- }), n != null && n.length && (this.bus.emit(m.Add, n), this.notify());
213
+ }), n != null && n.length && (this.bus.emit(y.Add, n), this.notify());
214
214
  }
215
215
  /**
216
216
  * Удаляет сущность из runtime-коллекции Collection.
@@ -218,14 +218,14 @@ class Ct extends L {
218
218
  remove(e) {
219
219
  const n = Array.isArray(e) ? e : [e], i = [];
220
220
  n.forEach((s) => {
221
- const a = typeof s == "string" ? s : s.id, l = this.items.findIndex((c) => c.id === a);
222
- if (l !== -1) {
223
- const [c] = this.items.splice(l, 1);
224
- this.indices.forEach((u, y) => {
225
- u.delete(c[y]);
226
- }), c.parentId || this.rootIds.delete(c.id), i.push(c);
221
+ const a = typeof s == "string" ? s : s.id, u = this.items.findIndex((l) => l.id === a);
222
+ if (u !== -1) {
223
+ const [l] = this.items.splice(u, 1);
224
+ this.indices.forEach((c, h) => {
225
+ c.delete(l[h]);
226
+ }), l.parentId || this.rootIds.delete(l.id), i.push(l);
227
227
  }
228
- }), i.length && (this.bus.emit(m.Remove, i), this.notify());
228
+ }), i.length && (this.bus.emit(y.Remove, i), this.notify());
229
229
  }
230
230
  /**
231
231
  * Обновляет runtime-состояние Collection.
@@ -234,10 +234,10 @@ class Ct extends L {
234
234
  const n = Array.isArray(e) ? e : [e];
235
235
  n.forEach((i) => {
236
236
  const s = this.get(i.id);
237
- s && (Object.assign(s, i), this.indices.forEach((a, l) => {
238
- a.set(i[l], s);
237
+ s && (Object.assign(s, i), this.indices.forEach((a, u) => {
238
+ a.set(i[u], s);
239
239
  }));
240
- }), n != null && n.length && (this.bus.emit(m.Update, n), this.notify());
240
+ }), n != null && n.length && (this.bus.emit(y.Update, n), this.notify());
241
241
  }
242
242
  /**
243
243
  * Возвращает значение состояния Collection.
@@ -258,7 +258,7 @@ class Ct extends L {
258
258
  const n = /* @__PURE__ */ new Map();
259
259
  this.items.forEach((i) => {
260
260
  n.set(i[e], i);
261
- }), this.indices.set(e, n), this.bus.emit(m.IndexCreate, e);
261
+ }), this.indices.set(e, n), this.bus.emit(y.IndexCreate, e);
262
262
  }
263
263
  /**
264
264
  * Возвращает реактивный массив всех элементов.
@@ -286,7 +286,7 @@ class Ct extends L {
286
286
  this.bus.off(e, n);
287
287
  }
288
288
  }
289
- class $t {
289
+ class Vt {
290
290
  /**
291
291
  * Создает экземпляр IndexedCollection и подготавливает базовое состояние.
292
292
  */
@@ -516,7 +516,7 @@ class $t {
516
516
  this.list.pop(), this.indexById.delete(t);
517
517
  }
518
518
  }
519
- class Mt {
519
+ class Gt {
520
520
  constructor(t) {
521
521
  o(this, "_cap");
522
522
  o(this, "_buf");
@@ -547,7 +547,7 @@ class Mt {
547
547
  return t;
548
548
  }
549
549
  }
550
- class Ft {
550
+ class Zt {
551
551
  constructor(t) {
552
552
  o(this, "baseUrl");
553
553
  this.baseUrl = t.baseUrl.replace(/\/+$/, "");
@@ -619,7 +619,7 @@ class Ft {
619
619
  return await n.json().catch(() => ({}));
620
620
  }
621
621
  }
622
- class Nt {
622
+ class Wt {
623
623
  /**
624
624
  * Создает экземпляр DelayedExecutor и подготавливает базовое состояние.
625
625
  */
@@ -659,14 +659,14 @@ class Nt {
659
659
  this.delayTimer && clearTimeout(this.delayTimer), this.maxTimer && clearTimeout(this.maxTimer), this.delayTimer = null, this.maxTimer = null;
660
660
  }
661
661
  }
662
- function w(r) {
662
+ function I(r) {
663
663
  var t;
664
664
  return r == null ? String(r) : typeof r == "string" ? `string(${r.length})` : typeof r != "object" ? `${typeof r}(${String(r)})` : Array.isArray(r) ? `Array(${r.length})` : r instanceof Map ? `Map(${r.size})` : r instanceof Set ? `Set(${r.size})` : ((t = r.constructor) == null ? void 0 : t.name) || "Object";
665
665
  }
666
- function b(r) {
667
- return r instanceof Error ? `${r.name}: ${r.message}` : w(r);
666
+ function T(r) {
667
+ return r instanceof Error ? `${r.name}: ${r.message}` : I(r);
668
668
  }
669
- class Lt {
669
+ class Yt {
670
670
  /**
671
671
  * Создает экземпляр NamedExecutor и подготавливает базовое состояние.
672
672
  */
@@ -703,7 +703,7 @@ class Lt {
703
703
  const e = this.callbacks.get(t);
704
704
  e && e();
705
705
  } catch (e) {
706
- console.error(`[NamedExecutor] flush error: ${b(e)}`);
706
+ console.error(`[NamedExecutor] flush error: ${T(e)}`);
707
707
  }
708
708
  this.clear(t);
709
709
  }
@@ -727,73 +727,73 @@ class Lt {
727
727
  clearTimeout(this.delayTimers.get(t)), clearTimeout(this.maxTimers.get(t)), this.delayTimers.delete(t), this.maxTimers.delete(t), this.callbacks.delete(t), this.firstCallTime.delete(t);
728
728
  }
729
729
  }
730
- function kt(r, t) {
731
- return S(r, t, {
730
+ function qt(r, t) {
731
+ return w(r, t, {
732
732
  exposeDefaultValues: !0,
733
733
  excludeExtraneousValues: !0
734
734
  });
735
735
  }
736
- function zt(r) {
737
- return _(r, {
736
+ function Qt(r) {
737
+ return x(r, {
738
738
  exposeUnsetFields: !1
739
739
  });
740
740
  }
741
- function Pt(r) {
741
+ function Xt(r) {
742
742
  return function(t, e) {
743
- B(r)(t, e), Reflect.defineMetadata("genericExpose", r.name, t, e);
743
+ tt(r)(t, e), Reflect.defineMetadata("genericExpose", r.name, t, e);
744
744
  };
745
745
  }
746
- const rt = Symbol("beforeSerialize");
747
- function Rt() {
746
+ const mt = Symbol("beforeSerialize");
747
+ function vt() {
748
748
  return function(r, t, e) {
749
- Reflect.defineMetadata(rt, t, r);
749
+ Reflect.defineMetadata(mt, t, r);
750
750
  };
751
751
  }
752
- function Ht(r, t, e) {
752
+ function te(r, t, e) {
753
753
  r.__afterDeserializeMethods__ || (r.__afterDeserializeMethods__ = []), r.__afterDeserializeMethods__.push(t);
754
754
  }
755
- function Ut(r) {
755
+ function ee(r) {
756
756
  return function(t, e) {
757
- f(({ value: n }) => n === null ? void 0 : n, { toPlainOnly: !0 })(t, e), J(r)(t, e);
757
+ f(({ value: n }) => n === null ? void 0 : n, { toPlainOnly: !0 })(t, e), et(r)(t, e);
758
758
  };
759
759
  }
760
- function jt() {
761
- return f(({ value: r, type: t }) => t === d.PLAIN_TO_CLASS ? r == null ? void 0 : r.id : r);
760
+ function re() {
761
+ return f(({ value: r, type: t }) => t === m.PLAIN_TO_CLASS ? r == null ? void 0 : r.id : r);
762
762
  }
763
- function Bt(r) {
764
- return f(({ value: t, type: e }) => e === d.PLAIN_TO_CLASS ? t == null ? void 0 : t.map((n) => n == null ? void 0 : n[r]) : t);
763
+ function ne(r) {
764
+ return f(({ value: t, type: e }) => e === m.PLAIN_TO_CLASS ? t == null ? void 0 : t.map((n) => n == null ? void 0 : n[r]) : t);
765
765
  }
766
- function Jt() {
767
- return f(({ value: r, type: t }) => t === d.CLASS_TO_PLAIN && (r == null ? void 0 : r.id) || r);
766
+ function ie() {
767
+ return f(({ value: r, type: t }) => t === m.CLASS_TO_PLAIN && (r == null ? void 0 : r.id) || r);
768
768
  }
769
- function Kt() {
770
- return f(({ value: r, type: t }) => t === d.CLASS_TO_PLAIN ? r.map((e) => e.id) : r);
769
+ function se() {
770
+ return f(({ value: r, type: t }) => t === m.CLASS_TO_PLAIN ? r.map((e) => e.id) : r);
771
771
  }
772
- function Vt() {
772
+ function oe() {
773
773
  return f(({ value: r, type: t }) => t === "classToPlain" ? void 0 : r, { toPlainOnly: !0 });
774
774
  }
775
- function Zt(r) {
775
+ function ae(r) {
776
776
  return r == null;
777
777
  }
778
- const k = Symbol("onDeserialized");
779
- function Gt() {
778
+ const J = Symbol("onDeserialized");
779
+ function ce() {
780
780
  return function(r, t) {
781
- Reflect.defineMetadata(k, t, r);
781
+ Reflect.defineMetadata(J, t, r);
782
782
  };
783
783
  }
784
- function nt(r) {
784
+ function yt(r) {
785
785
  const t = Reflect.getMetadata(
786
- k,
786
+ J,
787
787
  r
788
788
  );
789
789
  return t ? r[t].bind(r) : null;
790
790
  }
791
- class Wt {
791
+ class le {
792
792
  /**
793
793
  * Выполняет действие toPlain в рамках ответственности Serialize.
794
794
  */
795
795
  static toPlain(t) {
796
- return _(t, {
796
+ return x(t, {
797
797
  exposeDefaultValues: !0,
798
798
  excludeExtraneousValues: !0
799
799
  });
@@ -802,14 +802,14 @@ class Wt {
802
802
  * Выполняет действие fromJSON в рамках ответственности Serialize.
803
803
  */
804
804
  static fromJSON(t, e) {
805
- const n = S(t, e, {
805
+ const n = w(t, e, {
806
806
  exposeDefaultValues: !0,
807
807
  excludeExtraneousValues: !0
808
- }), i = nt(n);
808
+ }), i = yt(n);
809
809
  return i && i(), n;
810
810
  }
811
811
  }
812
- function Yt() {
812
+ function ue() {
813
813
  return function(r, t) {
814
814
  f(
815
815
  ({ value: e }) => {
@@ -834,7 +834,7 @@ function Yt() {
834
834
  )(r, t);
835
835
  };
836
836
  }
837
- function qt() {
837
+ function fe() {
838
838
  return function(r, t) {
839
839
  f(
840
840
  ({ value: e }) => {
@@ -865,7 +865,7 @@ function qt() {
865
865
  )(r, t);
866
866
  };
867
867
  }
868
- function Qt() {
868
+ function de() {
869
869
  return function(r, t) {
870
870
  f(
871
871
  ({ value: e }) => typeof e == "string" ? e.trim() : String(e ?? ""),
@@ -876,10 +876,10 @@ function Qt() {
876
876
  )(r, t);
877
877
  };
878
878
  }
879
- function Xt(r, t) {
880
- return f(({ value: e, type: n }) => e ? n === d.PLAIN_TO_CLASS ? Array.isArray(e) ? t ? new Map(
879
+ function he(r, t) {
880
+ return f(({ value: e, type: n }) => e ? n === m.PLAIN_TO_CLASS ? Array.isArray(e) ? t ? new Map(
881
881
  e.map((i) => {
882
- const s = S(r, i);
882
+ const s = w(r, i);
883
883
  return [s[t], s];
884
884
  })
885
885
  ) : (console.warn(
@@ -889,70 +889,70 @@ function Xt(r, t) {
889
889
  const a = new r();
890
890
  return Object.assign(a, s), [i, a];
891
891
  })
892
- ) : (console.warn(`[TypeMap] Expected object or array, got ${w(e)}`), /* @__PURE__ */ new Map()) : n === d.CLASS_TO_PLAIN ? e instanceof Map ? Array.from(e.values()).map((i) => _(i)) : (console.warn(`[TypeMap] Expected Map, got ${w(e)}`), t ? [] : {}) : (console.warn(`[TypeMap] Unexpected transformation type: ${String(n)}`), e) : /* @__PURE__ */ new Map());
892
+ ) : (console.warn(`[TypeMap] Expected object or array, got ${I(e)}`), /* @__PURE__ */ new Map()) : n === m.CLASS_TO_PLAIN ? e instanceof Map ? Array.from(e.values()).map((i) => x(i)) : (console.warn(`[TypeMap] Expected Map, got ${I(e)}`), t ? [] : {}) : (console.warn(`[TypeMap] Unexpected transformation type: ${String(n)}`), e) : /* @__PURE__ */ new Map());
893
893
  }
894
- function vt(r) {
894
+ function me(r) {
895
895
  return f(({ value: t, type: e }) => {
896
896
  if (!t || typeof t != "object") return {};
897
- if (e === d.PLAIN_TO_CLASS) {
897
+ if (e === m.PLAIN_TO_CLASS) {
898
898
  const n = {};
899
899
  for (const i of Object.keys(t))
900
- n[i] = S(r, t[i]);
900
+ n[i] = w(r, t[i]);
901
901
  return n;
902
902
  }
903
- if (e === d.CLASS_TO_PLAIN) {
903
+ if (e === m.CLASS_TO_PLAIN) {
904
904
  const n = {};
905
905
  for (const i of Object.keys(t))
906
- n[i] = _(t[i]);
906
+ n[i] = x(t[i]);
907
907
  return n;
908
908
  }
909
909
  return t;
910
910
  });
911
911
  }
912
- function te(r, t, e = (s) => s, n = (s) => s, i = 300) {
912
+ function ye(r, t, e = (s) => s, n = (s) => s, i = 300) {
913
913
  let s = t;
914
914
  const a = localStorage.getItem(r);
915
915
  if (a)
916
916
  try {
917
- const u = JSON.parse(a);
918
- s = e(u);
919
- } catch (u) {
920
- console.error(`[useStorageDebounced] Failed to parse "${r}" (${a.length} chars): ${b(u)}`);
917
+ const c = JSON.parse(a);
918
+ s = e(c);
919
+ } catch (c) {
920
+ console.error(`[useStorageDebounced] Failed to parse "${r}" (${a.length} chars): ${T(c)}`);
921
921
  }
922
- const l = g(s), c = K(() => {
922
+ const u = b(s), l = rt(() => {
923
923
  try {
924
- const u = JSON.stringify(n(l.value));
925
- localStorage.setItem(r, u);
926
- } catch (u) {
927
- console.error(`[useStorageDebounced] Failed to save "${r}": ${b(u)}`);
924
+ const c = JSON.stringify(n(u.value));
925
+ localStorage.setItem(r, c);
926
+ } catch (c) {
927
+ console.error(`[useStorageDebounced] Failed to save "${r}": ${T(c)}`);
928
928
  }
929
929
  }, i);
930
- return C(
931
- () => l.value,
930
+ return H(
931
+ () => u.value,
932
932
  () => {
933
- c();
933
+ l();
934
934
  },
935
935
  { deep: !0 }
936
- ), l;
936
+ ), u;
937
937
  }
938
- function ee(r, t) {
938
+ function pe(r, t) {
939
939
  return r < t ? -1 : r > t ? 1 : 0;
940
940
  }
941
- const it = process.env.NODE_ENV !== "production";
942
- function re(r, t) {
943
- if (!it) return t();
941
+ const pt = process.env.NODE_ENV !== "production";
942
+ function ge(r, t) {
943
+ if (!pt) return t();
944
944
  console.groupCollapsed(`⏳ ${r}`);
945
945
  const e = performance.now(), n = t(), i = performance.now();
946
946
  return console.log(`${r}: ${Math.round(i - e)} ms`), console.groupEnd(), n;
947
947
  }
948
- const ne = () => V(), A = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
949
- function ie(r) {
948
+ const be = () => nt(), F = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
949
+ function Se(r) {
950
950
  let t = "";
951
951
  for (let e = 0; e < r; ++e)
952
- t += A[Math.floor(A.length * Math.random())];
952
+ t += F[Math.floor(F.length * Math.random())];
953
953
  return t;
954
954
  }
955
- class se {
955
+ class Te {
956
956
  /**
957
957
  * Создает экземпляр HotkeyManager и подготавливает базовое состояние.
958
958
  */
@@ -1033,14 +1033,117 @@ class se {
1033
1033
  this.clear(), this.target.removeEventListener("keydown", this.handleBound);
1034
1034
  }
1035
1035
  }
1036
- function oe(r, t) {
1036
+ function we(r, t) {
1037
1037
  return t != null && t.key ? r.some((e) => {
1038
- var c, u;
1039
- const n = e.ctrl === void 0 || t.ctrlKey === e.ctrl, i = e.alt === void 0 || t.altKey === e.alt, s = e.shift === void 0 || t.shiftKey === e.shift, a = e.meta === void 0 || t.metaKey === e.meta, l = t.key && e.key && ((c = t.key) == null ? void 0 : c.toLowerCase()) === ((u = e.key) == null ? void 0 : u.toLowerCase());
1040
- return n && i && s && a && l;
1038
+ var l, c;
1039
+ const n = e.ctrl === void 0 || t.ctrlKey === e.ctrl, i = e.alt === void 0 || t.altKey === e.alt, s = e.shift === void 0 || t.shiftKey === e.shift, a = e.meta === void 0 || t.metaKey === e.meta, u = t.key && e.key && ((l = t.key) == null ? void 0 : l.toLowerCase()) === ((c = e.key) == null ? void 0 : c.toLowerCase());
1040
+ return n && i && s && a && u;
1041
1041
  }) : !1;
1042
1042
  }
1043
- class ae extends L {
1043
+ const N = /* @__PURE__ */ new WeakMap(), gt = /* @__PURE__ */ new Set([
1044
+ "Alt",
1045
+ "AltGraph",
1046
+ "CapsLock",
1047
+ "Control",
1048
+ "Fn",
1049
+ "FnLock",
1050
+ "Hyper",
1051
+ "Meta",
1052
+ "NumLock",
1053
+ "OS",
1054
+ "ScrollLock",
1055
+ "Shift",
1056
+ "Super",
1057
+ "Symbol",
1058
+ "SymbolLock"
1059
+ ]);
1060
+ function xe(r) {
1061
+ return O(V(r).snapshot);
1062
+ }
1063
+ function _e(r, t) {
1064
+ const e = V(r);
1065
+ return e.subscribers.add(t), t(O(e.snapshot)), () => e.subscribers.delete(t);
1066
+ }
1067
+ function V(r) {
1068
+ var a, u, l;
1069
+ const t = N.get(r);
1070
+ if (t)
1071
+ return t;
1072
+ const e = bt((a = r.defaultView) == null ? void 0 : a.navigator), n = {
1073
+ snapshot: L(e),
1074
+ entries: /* @__PURE__ */ new Map(),
1075
+ subscribers: /* @__PURE__ */ new Set()
1076
+ }, i = (c) => {
1077
+ var M;
1078
+ const h = c ? {
1079
+ ctrl: c.ctrlKey,
1080
+ shift: c.shiftKey,
1081
+ alt: c.altKey,
1082
+ meta: c.metaKey,
1083
+ mod: e === "macos" ? c.metaKey : e === "windows" || e === "linux" ? c.ctrlKey : c.ctrlKey || c.metaKey,
1084
+ altGraph: ((M = c.getModifierState) == null ? void 0 : M.call(c, "AltGraph")) === !0
1085
+ } : L(e).modifiers, $ = [...n.entries.values()], _ = {
1086
+ platform: e,
1087
+ modifiers: h,
1088
+ held: {
1089
+ key: [...new Set($.map((p) => p.key))].sort(),
1090
+ code: [...new Set($.map((p) => p.code).filter(Boolean))].sort()
1091
+ }
1092
+ };
1093
+ if (!St(n.snapshot, _)) {
1094
+ n.snapshot = _;
1095
+ for (const p of n.subscribers)
1096
+ p(O(_));
1097
+ }
1098
+ }, s = () => {
1099
+ n.entries.clear(), i();
1100
+ };
1101
+ return r.addEventListener("keydown", (c) => {
1102
+ if (!gt.has(c.key)) {
1103
+ const h = c.key.toLowerCase();
1104
+ n.entries.set(c.code || `key:${h}`, { key: h, code: c.code });
1105
+ }
1106
+ i(c);
1107
+ }, !0), r.addEventListener("keyup", (c) => {
1108
+ const h = c.key.toLowerCase();
1109
+ n.entries.delete(c.code || `key:${h}`), i(c);
1110
+ }, !0), r.addEventListener("visibilitychange", () => {
1111
+ r.visibilityState === "hidden" && s();
1112
+ }), (u = r.defaultView) == null || u.addEventListener("blur", s), (l = r.defaultView) == null || l.addEventListener("pagehide", s), N.set(r, n), n;
1113
+ }
1114
+ function L(r) {
1115
+ return {
1116
+ platform: r,
1117
+ modifiers: {
1118
+ ctrl: !1,
1119
+ shift: !1,
1120
+ alt: !1,
1121
+ meta: !1,
1122
+ mod: !1,
1123
+ altGraph: !1
1124
+ },
1125
+ held: { key: [], code: [] }
1126
+ };
1127
+ }
1128
+ function bt(r) {
1129
+ var n;
1130
+ const t = r, e = String(((n = t == null ? void 0 : t.userAgentData) == null ? void 0 : n.platform) ?? (t == null ? void 0 : t.platform) ?? (t == null ? void 0 : t.userAgent) ?? "").toLowerCase();
1131
+ return e.includes("mac") || e.includes("darwin") || e.includes("iphone") || e.includes("ipad") ? "macos" : e.includes("win") ? "windows" : e.includes("linux") || e.includes("x11") || e.includes("cros") ? "linux" : "unknown";
1132
+ }
1133
+ function St(r, t) {
1134
+ return r.platform === t.platform && r.modifiers.ctrl === t.modifiers.ctrl && r.modifiers.shift === t.modifiers.shift && r.modifiers.alt === t.modifiers.alt && r.modifiers.meta === t.modifiers.meta && r.modifiers.mod === t.modifiers.mod && r.modifiers.altGraph === t.modifiers.altGraph && z(r.held.key, t.held.key) && z(r.held.code, t.held.code);
1135
+ }
1136
+ function z(r, t) {
1137
+ return r.length === t.length && r.every((e, n) => e === t[n]);
1138
+ }
1139
+ function O(r) {
1140
+ return {
1141
+ platform: r.platform,
1142
+ modifiers: { ...r.modifiers },
1143
+ held: { key: [...r.held.key], code: [...r.held.code] }
1144
+ };
1145
+ }
1146
+ class De extends B {
1044
1147
  constructor() {
1045
1148
  super(...arguments);
1046
1149
  /** Массив всех логов */
@@ -1191,27 +1294,27 @@ class ae extends L {
1191
1294
  this.logs = [], this.notify();
1192
1295
  }
1193
1296
  }
1194
- function st(r) {
1297
+ function Tt(r) {
1195
1298
  try {
1196
1299
  return new new Proxy(r, { construct: () => ({}) })(), !0;
1197
1300
  } catch {
1198
1301
  return !1;
1199
1302
  }
1200
1303
  }
1201
- function ce(r, ...t) {
1202
- if (st(r)) {
1304
+ function Ie(r, ...t) {
1305
+ if (Tt(r)) {
1203
1306
  const e = r;
1204
1307
  return new e(...t);
1205
1308
  } else
1206
1309
  return r(...t);
1207
1310
  }
1208
- const ot = /* @__PURE__ */ new WeakMap();
1209
- function le(r) {
1311
+ const wt = /* @__PURE__ */ new WeakMap();
1312
+ function Ee(r) {
1210
1313
  let t;
1211
- return () => (t || (t = r(), ot.set(r, t)), t);
1314
+ return () => (t || (t = r(), wt.set(r, t)), t);
1212
1315
  }
1213
- const at = {
1214
- DateTime: Z,
1316
+ const xt = {
1317
+ DateTime: it,
1215
1318
  toDateTime(r) {
1216
1319
  return this.DateTime.fromJSDate(r);
1217
1320
  },
@@ -1239,25 +1342,25 @@ const at = {
1239
1342
  getZone() {
1240
1343
  return this.DateTime.now().zone;
1241
1344
  }
1242
- }, ue = (r) => at.toDateTime(r);
1243
- function fe(r) {
1345
+ }, Ae = (r) => xt.toDateTime(r);
1346
+ function Oe(r) {
1244
1347
  return String(r).charAt(0).toUpperCase() + String(r).slice(1);
1245
1348
  }
1246
- function he(r, t) {
1247
- return D(r, t) || W(r, t);
1349
+ function Ce(r, t) {
1350
+ return E(r, t) || ot(r, t);
1248
1351
  }
1249
- function de(r, t, e, n) {
1250
- const i = p(r), s = p(t), a = p(e), l = p(n);
1251
- return !F(s, a) && !D(i, l);
1352
+ function $e(r, t, e, n) {
1353
+ const i = g(r), s = g(t), a = g(e), u = g(n);
1354
+ return !K(s, a) && !E(i, u);
1252
1355
  }
1253
- function me(r, t, e) {
1254
- return !F(r, p(t)) && !D(r, Y(e));
1356
+ function Me(r, t, e) {
1357
+ return !K(r, g(t)) && !E(r, at(e));
1255
1358
  }
1256
- const pe = (r) => r && new Date(r);
1257
- function ge(r, t = "HH:mm dd.MM.yyyy", e = {}) {
1258
- return r && T(r, t, e);
1359
+ const ke = (r) => r && new Date(r);
1360
+ function Fe(r, t = "HH:mm dd.MM.yyyy", e = {}) {
1361
+ return r && S(r, t, e);
1259
1362
  }
1260
- function ct(r, t = "HH:mm dd.MM.yyyy", e = {}, n = !0) {
1363
+ function _t(r, t = "HH:mm dd.MM.yyyy", e = {}, n = !0) {
1261
1364
  if (!r || !r || r === "")
1262
1365
  return "";
1263
1366
  if (typeof r == "string")
@@ -1267,39 +1370,39 @@ function ct(r, t = "HH:mm dd.MM.yyyy", e = {}, n = !0) {
1267
1370
  return "";
1268
1371
  } else
1269
1372
  r = new Date(r.toString());
1270
- return n ? T(r, t, e) : T(q(r, "utc"), t, e);
1373
+ return n ? S(r, t, e) : S(A(r, "utc"), t, e);
1271
1374
  }
1272
- function ye(r) {
1375
+ function Ne(r) {
1273
1376
  const t = { weekday: "short" }, e = new Intl.DateTimeFormat("ru-RU", t).format(r);
1274
1377
  return e.charAt(0).toUpperCase() + e.slice(1);
1275
1378
  }
1276
- function Te(r) {
1379
+ function Le(r) {
1277
1380
  const t = new Date(r), e = t.getTime() + t.getTimezoneOffset() * 6e3, n = new Date(e + 180 * 6e3), i = String(n.getDate()).padStart(2, "0"), s = String(n.getMonth() + 1).padStart(2, "0"), a = n.getFullYear();
1278
1381
  return `${i}.${s}.${a}`;
1279
1382
  }
1280
- function be(r, t = !0) {
1281
- return ct(r, "HH:mm", {}, t);
1383
+ function ze(r, t = !0) {
1384
+ return _t(r, "HH:mm", {}, t);
1282
1385
  }
1283
- function Se(r) {
1386
+ function Pe(r) {
1284
1387
  const t = Array.from(r), e = Math.min(...t.map((i) => i.getTime())), n = Math.max(...t.map((i) => i.getTime()));
1285
1388
  return {
1286
1389
  minDate: new Date(e),
1287
1390
  maxDate: new Date(n)
1288
1391
  };
1289
1392
  }
1290
- function _e(r, t) {
1291
- const e = M(r, t), { hours: n, minutes: i } = I(e);
1292
- return n || i ? `${e > 0 ? "-" : "+"}${h(n)}:${h(i)}` : "";
1393
+ function He(r, t) {
1394
+ const e = U(r, t), { hours: n, minutes: i } = C(e);
1395
+ return n || i ? `${e > 0 ? "-" : "+"}${d(n)}:${d(i)}` : "";
1293
1396
  }
1294
- function xe(r, t) {
1295
- const e = M(r, t), { hours: n, minutes: i } = I(e);
1296
- return n || i ? `${e > 0 ? "-" : ""}${h(n)}:${h(i)}` : "";
1397
+ function Re(r, t) {
1398
+ const e = U(r, t), { hours: n, minutes: i } = C(e);
1399
+ return n || i ? `${e > 0 ? "-" : ""}${d(n)}:${d(i)}` : "";
1297
1400
  }
1298
- function O(r = /* @__PURE__ */ new Date()) {
1401
+ function P(r = /* @__PURE__ */ new Date()) {
1299
1402
  return new Date(r.getFullYear(), r.getMonth(), r.getDate());
1300
1403
  }
1301
- function we(r, t) {
1302
- const e = G(O(r), O(t));
1404
+ function Ue(r, t) {
1405
+ const e = st(P(r), P(t));
1303
1406
  return e ? e > 7 ? {
1304
1407
  variant: "red",
1305
1408
  value: ">7"
@@ -1314,40 +1417,66 @@ function we(r, t) {
1314
1417
  value: `${e}`
1315
1418
  } : null;
1316
1419
  }
1317
- function De(r) {
1420
+ function Ke(r) {
1318
1421
  const e = String(r ?? "").trim().match(/^(\d{4})-(\d{2})-(\d{2})$/);
1319
1422
  if (!e)
1320
1423
  return null;
1321
1424
  const n = Number(e[1]), i = Number(e[2]) - 1, s = Number(e[3]), a = new Date(Date.UTC(n, i, s, 0, 0, 0, 0));
1322
1425
  return Number.isNaN(a.getTime()) ? null : a.toISOString();
1323
1426
  }
1324
- function Ie(r) {
1427
+ function je(r) {
1325
1428
  const t = String(r ?? "").trim();
1326
1429
  if (!t)
1327
1430
  return null;
1328
1431
  const e = t.match(/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2})(?::(\d{2}))?$/);
1329
1432
  if (e) {
1330
- const i = Number(e[1]), s = Number(e[2]) - 1, a = Number(e[3]), l = Number(e[4]), c = Number(e[5]), u = e[6] != null ? Number(e[6]) : 0, y = new Date(i, s, a, l, c, u, 0);
1331
- return Number.isNaN(y.getTime()) ? null : y.toISOString();
1433
+ const i = Number(e[1]), s = Number(e[2]) - 1, a = Number(e[3]), u = Number(e[4]), l = Number(e[5]), c = e[6] != null ? Number(e[6]) : 0, h = new Date(i, s, a, u, l, c, 0);
1434
+ return Number.isNaN(h.getTime()) ? null : h.toISOString();
1332
1435
  }
1333
1436
  const n = new Date(t);
1334
1437
  return Number.isNaN(n.getTime()) ? null : n.toISOString();
1335
1438
  }
1336
- function Ee(r) {
1439
+ function Be(r) {
1337
1440
  const t = String(r ?? "").trim();
1338
1441
  return t ? t.slice(0, 10) : "";
1339
1442
  }
1340
- function Ae(r) {
1443
+ function Je(r) {
1341
1444
  const t = String(r ?? "").trim();
1342
1445
  if (!t)
1343
1446
  return "";
1344
1447
  const e = new Date(t);
1345
1448
  if (Number.isNaN(e.getTime()))
1346
1449
  return t.slice(0, 16);
1347
- const n = e.getFullYear(), i = h(e.getMonth() + 1), s = h(e.getDate()), a = h(e.getHours()), l = h(e.getMinutes());
1348
- return `${n}-${i}-${s}T${a}:${l}`;
1450
+ const n = e.getFullYear(), i = d(e.getMonth() + 1), s = d(e.getDate()), a = d(e.getHours()), u = d(e.getMinutes());
1451
+ return `${n}-${i}-${s}T${a}:${u}`;
1349
1452
  }
1350
- function Oe(r) {
1453
+ function Ve(r, t) {
1454
+ const e = G(r);
1455
+ if (e)
1456
+ return e;
1457
+ const n = new Date(String(r ?? "").trim());
1458
+ if (Number.isNaN(n.getTime()))
1459
+ return "";
1460
+ const i = Z(t), s = i ? A(n, i) : n;
1461
+ return `${d(s.getHours())}:${d(s.getMinutes())}`;
1462
+ }
1463
+ function Ge(r, t, e) {
1464
+ const n = G(t).match(/^(\d{2}):(\d{2})$/);
1465
+ if (!n)
1466
+ return null;
1467
+ const i = new Date(String(r ?? "").trim());
1468
+ if (Number.isNaN(i.getTime()))
1469
+ return null;
1470
+ const s = Number(n[1]), a = Number(n[2]);
1471
+ if (s > 23 || a > 59)
1472
+ return null;
1473
+ const u = Z(e);
1474
+ if (!u)
1475
+ return i.setHours(s, a, 0, 0), i.toISOString();
1476
+ const l = A(i, u);
1477
+ return l.setHours(s, a, 0, 0), ct(l, u).toISOString();
1478
+ }
1479
+ function G(r) {
1351
1480
  if (r == null)
1352
1481
  return "";
1353
1482
  const t = String(r).trim();
@@ -1359,7 +1488,17 @@ function Oe(r) {
1359
1488
  const n = t.match(/^(\d{2}):(\d{2})$/);
1360
1489
  return n ? `${n[1]}:${n[2]}` : "";
1361
1490
  }
1362
- function Ce(r) {
1491
+ function Z(r) {
1492
+ const t = String(r ?? "").trim();
1493
+ if (!t || t === "local")
1494
+ return null;
1495
+ try {
1496
+ return new Intl.DateTimeFormat("en", { timeZone: t }).format(), t;
1497
+ } catch {
1498
+ return null;
1499
+ }
1500
+ }
1501
+ function Ze(r) {
1363
1502
  if (r == null)
1364
1503
  return null;
1365
1504
  const t = String(r).trim();
@@ -1371,31 +1510,31 @@ function Ce(r) {
1371
1510
  const n = t.match(/^(\d{2}):(\d{2})$/);
1372
1511
  return n ? `${n[1]}:${n[2]}:00` : null;
1373
1512
  }
1374
- function $e(r) {
1375
- const t = ut(r), e = Math.sign(t) >= 0 ? "" : "-", { hours: n, minutes: i } = I(t);
1376
- return `${e}${h(n)}:${h(i)}`;
1513
+ function We(r) {
1514
+ const t = It(r), e = Math.sign(t) >= 0 ? "" : "-", { hours: n, minutes: i } = C(t);
1515
+ return `${e}${d(n)}:${d(i)}`;
1377
1516
  }
1378
- function Me(r = null, t = "dd", e = {}) {
1379
- const n = lt(r);
1517
+ function Ye(r = null, t = "dd", e = {}) {
1518
+ const n = Dt(r);
1380
1519
  if (!n)
1381
1520
  return "";
1382
1521
  const i = /* @__PURE__ */ new Date(), s = new Date(n);
1383
- return i.setHours(0, 0, 0, 0), s.setHours(0, 0, 0, 0), s.toDateString() === i.toDateString() ? "" : `/${T(n, t, e)}`;
1522
+ return i.setHours(0, 0, 0, 0), s.setHours(0, 0, 0, 0), s.toDateString() === i.toDateString() ? "" : `/${S(n, t, e)}`;
1384
1523
  }
1385
- function lt(r) {
1524
+ function Dt(r) {
1386
1525
  if (!r || r === "")
1387
1526
  return null;
1388
1527
  const t = typeof r == "string" ? new Date(r) : r instanceof Date ? r : new Date(r.toString());
1389
1528
  return Number.isNaN(t.getTime()) ? null : t;
1390
1529
  }
1391
- function I(r) {
1530
+ function C(r) {
1392
1531
  const t = Math.abs(r);
1393
1532
  return {
1394
1533
  hours: Math.floor(t / 3600) % 24,
1395
1534
  minutes: Math.floor(t / 60) % 60
1396
1535
  };
1397
1536
  }
1398
- function ut(r) {
1537
+ function It(r) {
1399
1538
  const t = String(r ?? "").trim();
1400
1539
  if (!t)
1401
1540
  return 0;
@@ -1404,30 +1543,30 @@ function ut(r) {
1404
1543
  return (e[1] ? -1 : 1) * (Number(e[2]) * 3600 + Number(e[3]) * 60 + Number(e[4] ?? 0));
1405
1544
  const n = t.match(/^(-)?P(?:(\d+(?:\.\d+)?)D)?(?:T(?:(\d+(?:\.\d+)?)H)?(?:(\d+(?:\.\d+)?)M)?(?:(\d+(?:\.\d+)?)S)?)?$/i);
1406
1545
  if (n) {
1407
- const i = n[1] ? -1 : 1, s = Number(n[2] ?? 0), a = Number(n[3] ?? 0), l = Number(n[4] ?? 0), c = Number(n[5] ?? 0);
1408
- return i * (s * 86400 + a * 3600 + l * 60 + c);
1546
+ const i = n[1] ? -1 : 1, s = Number(n[2] ?? 0), a = Number(n[3] ?? 0), u = Number(n[4] ?? 0), l = Number(n[5] ?? 0);
1547
+ return i * (s * 86400 + a * 3600 + u * 60 + l);
1409
1548
  }
1410
1549
  return 0;
1411
1550
  }
1412
- function h(r) {
1551
+ function d(r) {
1413
1552
  return String(r).padStart(2, "0");
1414
1553
  }
1415
- function Fe(r) {
1554
+ function qe(r) {
1416
1555
  const t = /* @__PURE__ */ new Date();
1417
1556
  try {
1418
- const e = x(r, t), n = Intl.supportedValuesOf("timeZone");
1557
+ const e = D(r, t), n = Intl.supportedValuesOf("timeZone");
1419
1558
  for (const i of n)
1420
- if (x(i, t) === e)
1559
+ if (D(i, t) === e)
1421
1560
  return i;
1422
1561
  } catch {
1423
1562
  return null;
1424
1563
  }
1425
1564
  return null;
1426
1565
  }
1427
- function Ne(r) {
1428
- return x(r, /* @__PURE__ */ new Date());
1566
+ function Qe(r) {
1567
+ return D(r, /* @__PURE__ */ new Date());
1429
1568
  }
1430
- class Le {
1569
+ class Xe {
1431
1570
  constructor(t) {
1432
1571
  o(this, "_url");
1433
1572
  o(this, "_retryInterval");
@@ -1458,15 +1597,15 @@ class Le {
1458
1597
  async _connect() {
1459
1598
  var t, e, n;
1460
1599
  try {
1461
- await Q(this._url, {
1600
+ await lt(this._url, {
1462
1601
  method: "GET",
1463
1602
  headers: await this._buildHeaders(),
1464
1603
  signal: (t = this._abortController) == null ? void 0 : t.signal,
1465
1604
  openWhenHidden: !0,
1466
1605
  onopen: (i) => {
1467
- var a, l;
1468
- if (i.ok && i.headers.get("content-type") === X) {
1469
- this._isConnected = !0, (l = (a = this._options).onOpen) == null || l.call(a);
1606
+ var a, u;
1607
+ if (i.ok && i.headers.get("content-type") === ut) {
1608
+ this._isConnected = !0, (u = (a = this._options).onOpen) == null || u.call(a);
1470
1609
  return;
1471
1610
  }
1472
1611
  throw new Error(`Unexpected response: ${i.status}`);
@@ -1475,7 +1614,7 @@ class Le {
1475
1614
  try {
1476
1615
  this._options.onEvent(JSON.parse(i.data));
1477
1616
  } catch (s) {
1478
- console.warn(`[SSEManager] Failed to parse message: ${b(s)}`);
1617
+ console.warn(`[SSEManager] Failed to parse message: ${T(s)}`);
1479
1618
  }
1480
1619
  },
1481
1620
  onclose: () => {
@@ -1496,7 +1635,7 @@ class Le {
1496
1635
  return this._isConnected;
1497
1636
  }
1498
1637
  }
1499
- class ke {
1638
+ class ve {
1500
1639
  constructor() {
1501
1640
  o(this, "_currentCount", 0);
1502
1641
  o(this, "_lastResetTime", Date.now());
@@ -1513,27 +1652,27 @@ class ke {
1513
1652
  this._currentCount = 0, this._lastEventsPerSecond = 0, this._lastResetTime = Date.now();
1514
1653
  }
1515
1654
  }
1516
- const ze = v("tooltip", () => {
1517
- const r = H({}), t = g(null);
1518
- function e(c) {
1519
- r[c.id] = {
1520
- ...c,
1655
+ const tr = ft("tooltip", () => {
1656
+ const r = Q({}), t = b(null);
1657
+ function e(l) {
1658
+ r[l.id] = {
1659
+ ...l,
1521
1660
  visible: !1
1522
1661
  };
1523
1662
  }
1524
- function n(c) {
1525
- delete r[c];
1663
+ function n(l) {
1664
+ delete r[l];
1526
1665
  }
1527
- function i(c) {
1528
- r[c] && (t.value = c, r[c].active = !0);
1666
+ function i(l) {
1667
+ r[l] && (t.value = l, r[l].active = !0);
1529
1668
  }
1530
- function s(c) {
1531
- r[c] && (r[c].active = !1, t.value === c && (t.value = null));
1669
+ function s(l) {
1670
+ r[l] && (r[l].active = !1, t.value === l && (t.value = null));
1532
1671
  }
1533
- function a(c) {
1534
- i(c);
1672
+ function a(l) {
1673
+ i(l);
1535
1674
  }
1536
- function l() {
1675
+ function u() {
1537
1676
  t.value && s(t.value);
1538
1677
  }
1539
1678
  return {
@@ -1544,92 +1683,96 @@ const ze = v("tooltip", () => {
1544
1683
  showTooltip: i,
1545
1684
  hideTooltip: s,
1546
1685
  setActiveTooltipId: a,
1547
- clearActiveTooltipId: l
1686
+ clearActiveTooltipId: u
1548
1687
  };
1549
1688
  });
1550
- function Pe(r, t) {
1689
+ function er(r, t) {
1551
1690
  var e;
1552
1691
  return r("div", {}, (e = t.slots) != null && e.default ? t.slots.default() : []);
1553
1692
  }
1554
- const Re = "x-collection-tooltip-id";
1693
+ const rr = "x-collection-tooltip-id";
1555
1694
  export {
1556
- Ht as AfterDeserialize,
1557
- Et as AppBus,
1558
- Rt as BeforeSerialize,
1559
- Ct as Collection,
1560
- Nt as DelayedExecutor,
1561
- Bt as DeserializeArrayField,
1562
- jt as DeserializeId,
1563
- N as EventBus,
1564
- m as Events,
1565
- Pt as GenericExpose,
1566
- se as HotkeyManager,
1567
- it as IS_DEBUG,
1568
- Vt as IgnoreToPlain,
1569
- $t as IndexedCollection,
1570
- Ut as IsOptionalTransformed,
1571
- Yt as Json,
1572
- qt as JsonString,
1573
- Lt as NamedExecutor,
1574
- Ft as PayloadHttpClient,
1575
- Mt as RingBuffer,
1576
- Le as SSEManager,
1577
- Qt as Script,
1578
- Wt as Serialize,
1579
- Jt as SerializeId,
1580
- Kt as SerializeIds,
1581
- ae as StructuredLogger,
1582
- L as Subscribable,
1583
- at as SystemClock,
1584
- Re as TooltipAttribute,
1585
- Pe as TooltipRegistrator,
1586
- Xt as TypeMap,
1587
- vt as TypeRecord,
1588
- ke as UPSMeter_Service,
1589
- fe as capitalize,
1590
- ee as compareNumber,
1591
- b as consoleErrorSummary,
1592
- w as consoleValueSummary,
1593
- ce as createInstance,
1594
- _e as diffDuration,
1595
- xe as diffDurationTable,
1596
- ue as dt,
1597
- be as extractTime,
1598
- Se as findMinMaxDates,
1599
- Te as formatDateToMSK,
1600
- ge as formatDatetime,
1601
- ct as formatDatetimeTZ,
1602
- Me as formatDatetimeTZSpecial,
1603
- ne as generateUUID,
1604
- we as getDateOnlyDiffFactor,
1605
- ye as getDayOfWeek,
1606
- nt as getOnDeserializedMethod,
1607
- Ne as getTimezoneOffsetMs,
1608
- le as globalState,
1609
- he as isAfterOrEqual,
1610
- oe as isAnyKeyComboActive,
1611
- st as isConstructor,
1612
- me as isDateInRange,
1613
- de as isDateRangeOverlap,
1614
- Zt as isNullOrUndefined,
1615
- Ee as isoToDateInput,
1616
- Ae as isoToDateTimeLocalInput,
1617
- Gt as onDeserialized,
1618
- pe as parseDate,
1619
- $e as parseDuration,
1620
- Fe as parseOffsetToTimezone,
1621
- re as profile,
1622
- ie as randomString,
1623
- O as removeTime,
1624
- Oe as timeToTimeInput,
1625
- kt as toInstance,
1626
- De as toIsoZDate,
1627
- Ie as toIsoZDateTime,
1628
- zt as toPlain,
1629
- Ce as toTimeHHMMSS,
1630
- It as useCookie,
1631
- te as useStorageDebounced,
1632
- At as useSubscribableRef,
1633
- Ot as useSubscribableRefAuto,
1634
- ze as useTooltipStore
1695
+ te as AfterDeserialize,
1696
+ Kt as AppBus,
1697
+ vt as BeforeSerialize,
1698
+ Jt as Collection,
1699
+ Wt as DelayedExecutor,
1700
+ ne as DeserializeArrayField,
1701
+ re as DeserializeId,
1702
+ j as EventBus,
1703
+ y as Events,
1704
+ Xt as GenericExpose,
1705
+ Te as HotkeyManager,
1706
+ pt as IS_DEBUG,
1707
+ oe as IgnoreToPlain,
1708
+ Vt as IndexedCollection,
1709
+ ee as IsOptionalTransformed,
1710
+ ue as Json,
1711
+ fe as JsonString,
1712
+ Yt as NamedExecutor,
1713
+ Zt as PayloadHttpClient,
1714
+ Gt as RingBuffer,
1715
+ Xe as SSEManager,
1716
+ de as Script,
1717
+ le as Serialize,
1718
+ ie as SerializeId,
1719
+ se as SerializeIds,
1720
+ De as StructuredLogger,
1721
+ B as Subscribable,
1722
+ xt as SystemClock,
1723
+ rr as TooltipAttribute,
1724
+ er as TooltipRegistrator,
1725
+ he as TypeMap,
1726
+ me as TypeRecord,
1727
+ ve as UPSMeter_Service,
1728
+ Oe as capitalize,
1729
+ pe as compareNumber,
1730
+ T as consoleErrorSummary,
1731
+ I as consoleValueSummary,
1732
+ Ie as createInstance,
1733
+ He as diffDuration,
1734
+ Re as diffDurationTable,
1735
+ Ae as dt,
1736
+ ze as extractTime,
1737
+ Pe as findMinMaxDates,
1738
+ Le as formatDateToMSK,
1739
+ Fe as formatDatetime,
1740
+ _t as formatDatetimeTZ,
1741
+ Ye as formatDatetimeTZSpecial,
1742
+ be as generateUUID,
1743
+ Ue as getDateOnlyDiffFactor,
1744
+ Ne as getDayOfWeek,
1745
+ xe as getKeyboardStateSnapshot,
1746
+ yt as getOnDeserializedMethod,
1747
+ Qe as getTimezoneOffsetMs,
1748
+ Ee as globalState,
1749
+ Ce as isAfterOrEqual,
1750
+ we as isAnyKeyComboActive,
1751
+ Tt as isConstructor,
1752
+ Me as isDateInRange,
1753
+ $e as isDateRangeOverlap,
1754
+ ae as isNullOrUndefined,
1755
+ Ve as isoDateTimeToTimeInput,
1756
+ Be as isoToDateInput,
1757
+ Je as isoToDateTimeLocalInput,
1758
+ Ge as mergeTimeIntoDateTime,
1759
+ ce as onDeserialized,
1760
+ ke as parseDate,
1761
+ We as parseDuration,
1762
+ qe as parseOffsetToTimezone,
1763
+ ge as profile,
1764
+ Se as randomString,
1765
+ P as removeTime,
1766
+ _e as subscribeKeyboardState,
1767
+ G as timeToTimeInput,
1768
+ qt as toInstance,
1769
+ Ke as toIsoZDate,
1770
+ je as toIsoZDateTime,
1771
+ Qt as toPlain,
1772
+ Ze as toTimeHHMMSS,
1773
+ Ut as useCookie,
1774
+ ye as useStorageDebounced,
1775
+ jt as useSubscribableRef,
1776
+ Bt as useSubscribableRefAuto,
1777
+ tr as useTooltipStore
1635
1778
  };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@endge/utils",
3
3
  "private": false,
4
- "version": "0.24.10",
4
+ "version": "0.24.12",
5
5
  "type": "module",
6
6
  "module": "./dist/utils.js",
7
7
  "types": "./dist/index.d.ts",
@@ -18,7 +18,6 @@
18
18
  "scripts": {
19
19
  "clean": "rimraf dist tsconfig.tsbuildinfo",
20
20
  "dev": "vite build --watch",
21
- "dev:watch": "vite build --watch",
22
21
  "build": "vite build",
23
22
  "test": "vitest"
24
23
  },