@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 +30 -0
- package/dist/utils.js +435 -292
- package/package.json +1 -2
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
|
|
2
|
-
var
|
|
3
|
-
var o = (r, t, e) =>
|
|
4
|
-
import { ref as
|
|
5
|
-
import { parse as
|
|
6
|
-
import { destr as
|
|
7
|
-
import { plainToInstance as
|
|
8
|
-
import { IsOptional as
|
|
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
|
|
11
|
-
import { v4 as
|
|
12
|
-
import { DateTime as
|
|
13
|
-
import { differenceInSeconds as
|
|
14
|
-
import { utcToZonedTime as
|
|
15
|
-
import { fetchEventSource as
|
|
16
|
-
import { defineStore as
|
|
17
|
-
const
|
|
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) =>
|
|
20
|
+
decode: (r) => v(decodeURIComponent(r)),
|
|
21
21
|
encode: (r) => encodeURIComponent(typeof r == "string" ? r : JSON.stringify(r))
|
|
22
|
-
},
|
|
22
|
+
}, Ut = (r, t) => {
|
|
23
23
|
var s;
|
|
24
|
-
const e = { ...
|
|
25
|
-
return
|
|
26
|
-
document.cookie =
|
|
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
|
|
30
|
-
return t == null ?
|
|
29
|
+
function ht(r, t, e = {}) {
|
|
30
|
+
return t == null ? k(r, t, { ...e, maxAge: -1 }) : k(r, t, e);
|
|
31
31
|
}
|
|
32
|
-
var
|
|
33
|
-
class
|
|
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
|
|
160
|
-
class
|
|
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
|
|
182
|
-
const t =
|
|
183
|
-
|
|
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
|
-
},
|
|
187
|
-
const t =
|
|
188
|
-
return
|
|
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
|
|
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
|
|
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(
|
|
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,
|
|
222
|
-
if (
|
|
223
|
-
const [
|
|
224
|
-
this.indices.forEach((
|
|
225
|
-
|
|
226
|
-
}),
|
|
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(
|
|
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,
|
|
238
|
-
a.set(i[
|
|
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(
|
|
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(
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
667
|
-
return r instanceof Error ? `${r.name}: ${r.message}` :
|
|
666
|
+
function T(r) {
|
|
667
|
+
return r instanceof Error ? `${r.name}: ${r.message}` : I(r);
|
|
668
668
|
}
|
|
669
|
-
class
|
|
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: ${
|
|
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
|
|
731
|
-
return
|
|
730
|
+
function qt(r, t) {
|
|
731
|
+
return w(r, t, {
|
|
732
732
|
exposeDefaultValues: !0,
|
|
733
733
|
excludeExtraneousValues: !0
|
|
734
734
|
});
|
|
735
735
|
}
|
|
736
|
-
function
|
|
737
|
-
return
|
|
736
|
+
function Qt(r) {
|
|
737
|
+
return x(r, {
|
|
738
738
|
exposeUnsetFields: !1
|
|
739
739
|
});
|
|
740
740
|
}
|
|
741
|
-
function
|
|
741
|
+
function Xt(r) {
|
|
742
742
|
return function(t, e) {
|
|
743
|
-
|
|
743
|
+
tt(r)(t, e), Reflect.defineMetadata("genericExpose", r.name, t, e);
|
|
744
744
|
};
|
|
745
745
|
}
|
|
746
|
-
const
|
|
747
|
-
function
|
|
746
|
+
const mt = Symbol("beforeSerialize");
|
|
747
|
+
function vt() {
|
|
748
748
|
return function(r, t, e) {
|
|
749
|
-
Reflect.defineMetadata(
|
|
749
|
+
Reflect.defineMetadata(mt, t, r);
|
|
750
750
|
};
|
|
751
751
|
}
|
|
752
|
-
function
|
|
752
|
+
function te(r, t, e) {
|
|
753
753
|
r.__afterDeserializeMethods__ || (r.__afterDeserializeMethods__ = []), r.__afterDeserializeMethods__.push(t);
|
|
754
754
|
}
|
|
755
|
-
function
|
|
755
|
+
function ee(r) {
|
|
756
756
|
return function(t, e) {
|
|
757
|
-
f(({ value: n }) => n === null ? void 0 : n, { toPlainOnly: !0 })(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
|
|
761
|
-
return f(({ value: r, type: t }) => t ===
|
|
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
|
|
764
|
-
return f(({ value: t, type: e }) => e ===
|
|
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
|
|
767
|
-
return f(({ value: r, type: t }) => t ===
|
|
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
|
|
770
|
-
return f(({ value: r, type: t }) => t ===
|
|
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
|
|
772
|
+
function oe() {
|
|
773
773
|
return f(({ value: r, type: t }) => t === "classToPlain" ? void 0 : r, { toPlainOnly: !0 });
|
|
774
774
|
}
|
|
775
|
-
function
|
|
775
|
+
function ae(r) {
|
|
776
776
|
return r == null;
|
|
777
777
|
}
|
|
778
|
-
const
|
|
779
|
-
function
|
|
778
|
+
const J = Symbol("onDeserialized");
|
|
779
|
+
function ce() {
|
|
780
780
|
return function(r, t) {
|
|
781
|
-
Reflect.defineMetadata(
|
|
781
|
+
Reflect.defineMetadata(J, t, r);
|
|
782
782
|
};
|
|
783
783
|
}
|
|
784
|
-
function
|
|
784
|
+
function yt(r) {
|
|
785
785
|
const t = Reflect.getMetadata(
|
|
786
|
-
|
|
786
|
+
J,
|
|
787
787
|
r
|
|
788
788
|
);
|
|
789
789
|
return t ? r[t].bind(r) : null;
|
|
790
790
|
}
|
|
791
|
-
class
|
|
791
|
+
class le {
|
|
792
792
|
/**
|
|
793
793
|
* Выполняет действие toPlain в рамках ответственности Serialize.
|
|
794
794
|
*/
|
|
795
795
|
static toPlain(t) {
|
|
796
|
-
return
|
|
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 =
|
|
805
|
+
const n = w(t, e, {
|
|
806
806
|
exposeDefaultValues: !0,
|
|
807
807
|
excludeExtraneousValues: !0
|
|
808
|
-
}), i =
|
|
808
|
+
}), i = yt(n);
|
|
809
809
|
return i && i(), n;
|
|
810
810
|
}
|
|
811
811
|
}
|
|
812
|
-
function
|
|
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
|
|
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
|
|
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
|
|
880
|
-
return f(({ value: e, type: n }) => e ? n ===
|
|
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 =
|
|
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 ${
|
|
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
|
|
894
|
+
function me(r) {
|
|
895
895
|
return f(({ value: t, type: e }) => {
|
|
896
896
|
if (!t || typeof t != "object") return {};
|
|
897
|
-
if (e ===
|
|
897
|
+
if (e === m.PLAIN_TO_CLASS) {
|
|
898
898
|
const n = {};
|
|
899
899
|
for (const i of Object.keys(t))
|
|
900
|
-
n[i] =
|
|
900
|
+
n[i] = w(r, t[i]);
|
|
901
901
|
return n;
|
|
902
902
|
}
|
|
903
|
-
if (e ===
|
|
903
|
+
if (e === m.CLASS_TO_PLAIN) {
|
|
904
904
|
const n = {};
|
|
905
905
|
for (const i of Object.keys(t))
|
|
906
|
-
n[i] =
|
|
906
|
+
n[i] = x(t[i]);
|
|
907
907
|
return n;
|
|
908
908
|
}
|
|
909
909
|
return t;
|
|
910
910
|
});
|
|
911
911
|
}
|
|
912
|
-
function
|
|
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
|
|
918
|
-
s = e(
|
|
919
|
-
} catch (
|
|
920
|
-
console.error(`[useStorageDebounced] Failed to parse "${r}" (${a.length} chars): ${
|
|
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
|
|
922
|
+
const u = b(s), l = rt(() => {
|
|
923
923
|
try {
|
|
924
|
-
const
|
|
925
|
-
localStorage.setItem(r,
|
|
926
|
-
} catch (
|
|
927
|
-
console.error(`[useStorageDebounced] Failed to save "${r}": ${
|
|
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
|
|
931
|
-
() =>
|
|
930
|
+
return H(
|
|
931
|
+
() => u.value,
|
|
932
932
|
() => {
|
|
933
|
-
|
|
933
|
+
l();
|
|
934
934
|
},
|
|
935
935
|
{ deep: !0 }
|
|
936
|
-
),
|
|
936
|
+
), u;
|
|
937
937
|
}
|
|
938
|
-
function
|
|
938
|
+
function pe(r, t) {
|
|
939
939
|
return r < t ? -1 : r > t ? 1 : 0;
|
|
940
940
|
}
|
|
941
|
-
const
|
|
942
|
-
function
|
|
943
|
-
if (!
|
|
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
|
|
949
|
-
function
|
|
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 +=
|
|
952
|
+
t += F[Math.floor(F.length * Math.random())];
|
|
953
953
|
return t;
|
|
954
954
|
}
|
|
955
|
-
class
|
|
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
|
|
1036
|
+
function we(r, t) {
|
|
1037
1037
|
return t != null && t.key ? r.some((e) => {
|
|
1038
|
-
var
|
|
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,
|
|
1040
|
-
return n && i && s && a &&
|
|
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
|
-
|
|
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
|
|
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
|
|
1202
|
-
if (
|
|
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
|
|
1209
|
-
function
|
|
1311
|
+
const wt = /* @__PURE__ */ new WeakMap();
|
|
1312
|
+
function Ee(r) {
|
|
1210
1313
|
let t;
|
|
1211
|
-
return () => (t || (t = r(),
|
|
1314
|
+
return () => (t || (t = r(), wt.set(r, t)), t);
|
|
1212
1315
|
}
|
|
1213
|
-
const
|
|
1214
|
-
DateTime:
|
|
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
|
-
},
|
|
1243
|
-
function
|
|
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
|
|
1247
|
-
return
|
|
1349
|
+
function Ce(r, t) {
|
|
1350
|
+
return E(r, t) || ot(r, t);
|
|
1248
1351
|
}
|
|
1249
|
-
function
|
|
1250
|
-
const i =
|
|
1251
|
-
return !
|
|
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
|
|
1254
|
-
return !
|
|
1356
|
+
function Me(r, t, e) {
|
|
1357
|
+
return !K(r, g(t)) && !E(r, at(e));
|
|
1255
1358
|
}
|
|
1256
|
-
const
|
|
1257
|
-
function
|
|
1258
|
-
return r &&
|
|
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
|
|
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 ?
|
|
1373
|
+
return n ? S(r, t, e) : S(A(r, "utc"), t, e);
|
|
1271
1374
|
}
|
|
1272
|
-
function
|
|
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
|
|
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
|
|
1281
|
-
return
|
|
1383
|
+
function ze(r, t = !0) {
|
|
1384
|
+
return _t(r, "HH:mm", {}, t);
|
|
1282
1385
|
}
|
|
1283
|
-
function
|
|
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
|
|
1291
|
-
const e =
|
|
1292
|
-
return n || i ? `${e > 0 ? "-" : "+"}${
|
|
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
|
|
1295
|
-
const e =
|
|
1296
|
-
return n || i ? `${e > 0 ? "-" : ""}${
|
|
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
|
|
1401
|
+
function P(r = /* @__PURE__ */ new Date()) {
|
|
1299
1402
|
return new Date(r.getFullYear(), r.getMonth(), r.getDate());
|
|
1300
1403
|
}
|
|
1301
|
-
function
|
|
1302
|
-
const e =
|
|
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
|
|
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
|
|
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]),
|
|
1331
|
-
return Number.isNaN(
|
|
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
|
|
1439
|
+
function Be(r) {
|
|
1337
1440
|
const t = String(r ?? "").trim();
|
|
1338
1441
|
return t ? t.slice(0, 10) : "";
|
|
1339
1442
|
}
|
|
1340
|
-
function
|
|
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 =
|
|
1348
|
-
return `${n}-${i}-${s}T${a}:${
|
|
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
|
|
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
|
|
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
|
|
1375
|
-
const t =
|
|
1376
|
-
return `${e}${
|
|
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
|
|
1379
|
-
const n =
|
|
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() ? "" : `/${
|
|
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
|
|
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
|
|
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
|
|
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),
|
|
1408
|
-
return i * (s * 86400 + a * 3600 +
|
|
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
|
|
1551
|
+
function d(r) {
|
|
1413
1552
|
return String(r).padStart(2, "0");
|
|
1414
1553
|
}
|
|
1415
|
-
function
|
|
1554
|
+
function qe(r) {
|
|
1416
1555
|
const t = /* @__PURE__ */ new Date();
|
|
1417
1556
|
try {
|
|
1418
|
-
const e =
|
|
1557
|
+
const e = D(r, t), n = Intl.supportedValuesOf("timeZone");
|
|
1419
1558
|
for (const i of n)
|
|
1420
|
-
if (
|
|
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
|
|
1428
|
-
return
|
|
1566
|
+
function Qe(r) {
|
|
1567
|
+
return D(r, /* @__PURE__ */ new Date());
|
|
1429
1568
|
}
|
|
1430
|
-
class
|
|
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
|
|
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,
|
|
1468
|
-
if (i.ok && i.headers.get("content-type") ===
|
|
1469
|
-
this._isConnected = !0, (
|
|
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: ${
|
|
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
|
|
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
|
|
1517
|
-
const r =
|
|
1518
|
-
function e(
|
|
1519
|
-
r[
|
|
1520
|
-
...
|
|
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(
|
|
1525
|
-
delete r[
|
|
1663
|
+
function n(l) {
|
|
1664
|
+
delete r[l];
|
|
1526
1665
|
}
|
|
1527
|
-
function i(
|
|
1528
|
-
r[
|
|
1666
|
+
function i(l) {
|
|
1667
|
+
r[l] && (t.value = l, r[l].active = !0);
|
|
1529
1668
|
}
|
|
1530
|
-
function s(
|
|
1531
|
-
r[
|
|
1669
|
+
function s(l) {
|
|
1670
|
+
r[l] && (r[l].active = !1, t.value === l && (t.value = null));
|
|
1532
1671
|
}
|
|
1533
|
-
function a(
|
|
1534
|
-
i(
|
|
1672
|
+
function a(l) {
|
|
1673
|
+
i(l);
|
|
1535
1674
|
}
|
|
1536
|
-
function
|
|
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:
|
|
1686
|
+
clearActiveTooltipId: u
|
|
1548
1687
|
};
|
|
1549
1688
|
});
|
|
1550
|
-
function
|
|
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
|
|
1693
|
+
const rr = "x-collection-tooltip-id";
|
|
1555
1694
|
export {
|
|
1556
|
-
|
|
1557
|
-
|
|
1558
|
-
|
|
1559
|
-
|
|
1560
|
-
|
|
1561
|
-
|
|
1562
|
-
|
|
1563
|
-
|
|
1564
|
-
|
|
1565
|
-
|
|
1566
|
-
|
|
1567
|
-
|
|
1568
|
-
|
|
1569
|
-
|
|
1570
|
-
|
|
1571
|
-
|
|
1572
|
-
|
|
1573
|
-
|
|
1574
|
-
|
|
1575
|
-
|
|
1576
|
-
|
|
1577
|
-
|
|
1578
|
-
|
|
1579
|
-
|
|
1580
|
-
|
|
1581
|
-
|
|
1582
|
-
|
|
1583
|
-
|
|
1584
|
-
|
|
1585
|
-
|
|
1586
|
-
|
|
1587
|
-
|
|
1588
|
-
|
|
1589
|
-
|
|
1590
|
-
|
|
1591
|
-
|
|
1592
|
-
|
|
1593
|
-
|
|
1594
|
-
|
|
1595
|
-
|
|
1596
|
-
|
|
1597
|
-
|
|
1598
|
-
|
|
1599
|
-
|
|
1600
|
-
|
|
1601
|
-
|
|
1602
|
-
|
|
1603
|
-
|
|
1604
|
-
|
|
1605
|
-
|
|
1606
|
-
|
|
1607
|
-
|
|
1608
|
-
|
|
1609
|
-
|
|
1610
|
-
|
|
1611
|
-
|
|
1612
|
-
|
|
1613
|
-
|
|
1614
|
-
|
|
1615
|
-
|
|
1616
|
-
|
|
1617
|
-
|
|
1618
|
-
|
|
1619
|
-
|
|
1620
|
-
|
|
1621
|
-
|
|
1622
|
-
|
|
1623
|
-
|
|
1624
|
-
|
|
1625
|
-
|
|
1626
|
-
|
|
1627
|
-
|
|
1628
|
-
|
|
1629
|
-
|
|
1630
|
-
|
|
1631
|
-
|
|
1632
|
-
|
|
1633
|
-
|
|
1634
|
-
|
|
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.
|
|
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
|
},
|