@tradecanvas/commons 1.56.0 → 1.57.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/i18n/index.d.ts +1 -0
- package/dist/i18n/index.d.ts.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +390 -192
- package/dist/index.js.map +1 -1
- package/dist/market/index.d.ts +1 -1
- package/dist/market/index.d.ts.map +1 -1
- package/dist/market/presets.d.ts +30 -0
- package/dist/market/presets.d.ts.map +1 -1
- package/dist/market/types.d.ts +8 -1
- package/dist/market/types.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -198,11 +198,11 @@ function u(e) {
|
|
|
198
198
|
}
|
|
199
199
|
//#endregion
|
|
200
200
|
//#region src/types/news.ts
|
|
201
|
-
var d = 300,
|
|
201
|
+
var d = 300, ee = 1e3, f = (e, t) => {
|
|
202
202
|
if (typeof e != "string") return;
|
|
203
203
|
let n = e.trim();
|
|
204
204
|
return n ? n.slice(0, t) : void 0;
|
|
205
|
-
},
|
|
205
|
+
}, te = (e) => {
|
|
206
206
|
if (typeof e == "string") try {
|
|
207
207
|
let t = new URL(e);
|
|
208
208
|
return t.protocol === "https:" || t.protocol === "http:" ? t.href : void 0;
|
|
@@ -210,47 +210,47 @@ var d = 300, f = 1e3, p = (e, t) => {
|
|
|
210
210
|
return;
|
|
211
211
|
}
|
|
212
212
|
};
|
|
213
|
-
function
|
|
213
|
+
function ne(e, t = 20) {
|
|
214
214
|
if (!Array.isArray(e)) return [];
|
|
215
215
|
let n = [];
|
|
216
216
|
for (let t of e) {
|
|
217
217
|
if (!t || typeof t != "object") continue;
|
|
218
|
-
let e = t, r =
|
|
218
|
+
let e = t, r = f(e.title, d);
|
|
219
219
|
if (!r || typeof e.time != "number" || !Number.isFinite(e.time)) continue;
|
|
220
220
|
let i = {
|
|
221
221
|
title: r,
|
|
222
222
|
time: e.time
|
|
223
|
-
}, a =
|
|
223
|
+
}, a = te(e.url);
|
|
224
224
|
a && (i.url = a);
|
|
225
|
-
let o =
|
|
225
|
+
let o = f(e.source, d);
|
|
226
226
|
o && (i.source = o);
|
|
227
|
-
let s =
|
|
227
|
+
let s = f(e.summary, ee);
|
|
228
228
|
s && (i.summary = s);
|
|
229
|
-
let c =
|
|
229
|
+
let c = f(e.id, d);
|
|
230
230
|
c && (i.id = c), n.push(i);
|
|
231
231
|
}
|
|
232
232
|
return n.sort((e, t) => t.time - e.time).slice(0, Math.max(0, t));
|
|
233
233
|
}
|
|
234
234
|
//#endregion
|
|
235
235
|
//#region src/utils/math.ts
|
|
236
|
-
function
|
|
236
|
+
function re(e, t, n) {
|
|
237
237
|
return Math.max(t, Math.min(n, e));
|
|
238
238
|
}
|
|
239
|
-
function
|
|
239
|
+
function ie(e, t, n) {
|
|
240
240
|
return e + (t - e) * n;
|
|
241
241
|
}
|
|
242
|
-
function
|
|
242
|
+
function ae(e, t, n) {
|
|
243
243
|
return e === t ? 0 : (n - e) / (t - e);
|
|
244
244
|
}
|
|
245
|
-
function
|
|
245
|
+
function oe(e, t) {
|
|
246
246
|
return Math.round(e / t) * t;
|
|
247
247
|
}
|
|
248
|
-
function
|
|
248
|
+
function p(e, t) {
|
|
249
249
|
let n = Math.floor(Math.log10(e)), r = e / 10 ** n, i;
|
|
250
250
|
return i = t ? r < 1.5 ? 1 : r < 3 ? 2 : r < 7 ? 5 : 10 : r <= 1 ? 1 : r <= 2 ? 2 : r <= 5 ? 5 : 10, i * 10 ** n;
|
|
251
251
|
}
|
|
252
252
|
function se(e, t, n) {
|
|
253
|
-
return
|
|
253
|
+
return p(p(t - e, !1) / (n - 1), !0);
|
|
254
254
|
}
|
|
255
255
|
//#endregion
|
|
256
256
|
//#region src/utils/data.ts
|
|
@@ -432,7 +432,7 @@ function Me(e) {
|
|
|
432
432
|
second: "numeric"
|
|
433
433
|
}), Ae.set(e, t)), t;
|
|
434
434
|
}
|
|
435
|
-
function
|
|
435
|
+
function Ne(e) {
|
|
436
436
|
if (!e) return !1;
|
|
437
437
|
try {
|
|
438
438
|
return Me(e), !0;
|
|
@@ -440,15 +440,15 @@ function b(e) {
|
|
|
440
440
|
return !1;
|
|
441
441
|
}
|
|
442
442
|
}
|
|
443
|
-
function
|
|
443
|
+
function b(e, t) {
|
|
444
444
|
if (!Number.isFinite(t) || ke.has(e)) return 0;
|
|
445
445
|
let n = je.get(e);
|
|
446
446
|
n || (n = /* @__PURE__ */ new Map(), je.set(e, n));
|
|
447
447
|
let r = Math.floor(t / De), i = n.get(r);
|
|
448
|
-
return i || (i =
|
|
448
|
+
return i || (i = Pe(e, r * De), n.size >= Oe && n.clear(), n.set(r, i)), t < i.change ? i.before : i.after;
|
|
449
449
|
}
|
|
450
|
-
function
|
|
451
|
-
let n =
|
|
450
|
+
function Pe(e, t) {
|
|
451
|
+
let n = Fe(e, t), r = t + De - v, i = Fe(e, r);
|
|
452
452
|
if (i === n) return {
|
|
453
453
|
before: n,
|
|
454
454
|
change: Infinity,
|
|
@@ -457,7 +457,7 @@ function Ne(e, t) {
|
|
|
457
457
|
let a = t;
|
|
458
458
|
for (; r - a > v;) {
|
|
459
459
|
let t = a + Math.floor((r - a) / v / 2) * v;
|
|
460
|
-
|
|
460
|
+
Fe(e, t) === n ? a = t : r = t;
|
|
461
461
|
}
|
|
462
462
|
return {
|
|
463
463
|
before: n,
|
|
@@ -465,7 +465,7 @@ function Ne(e, t) {
|
|
|
465
465
|
after: i
|
|
466
466
|
};
|
|
467
467
|
}
|
|
468
|
-
function
|
|
468
|
+
function Fe(e, t) {
|
|
469
469
|
let n = Math.floor(t / v), r = `${e}|${n}`, i = y.get(r);
|
|
470
470
|
if (i !== void 0) return i;
|
|
471
471
|
let a = n * v, o = 1970, s = 1, c = 1, l = 0, u = 0, d = 0;
|
|
@@ -492,24 +492,24 @@ function Pe(e, t) {
|
|
|
492
492
|
break;
|
|
493
493
|
}
|
|
494
494
|
}
|
|
495
|
-
let
|
|
496
|
-
return y.size >= Ee && y.clear(), y.set(r,
|
|
495
|
+
let ee = Math.round((Date.UTC(o, s - 1, c, l, u, d) - a) / _);
|
|
496
|
+
return y.size >= Ee && y.clear(), y.set(r, ee), ee;
|
|
497
497
|
}
|
|
498
|
-
function
|
|
498
|
+
function x(e) {
|
|
499
499
|
return e === 0 || typeof e == "string" && ke.has(e);
|
|
500
500
|
}
|
|
501
|
-
function
|
|
502
|
-
return e === null ? -new Date(t).getTimezoneOffset() : typeof e == "number" ? e :
|
|
501
|
+
function S(e, t) {
|
|
502
|
+
return e === null ? -new Date(t).getTimezoneOffset() : typeof e == "number" ? e : b(e, t);
|
|
503
503
|
}
|
|
504
|
-
function
|
|
505
|
-
let n = e -
|
|
506
|
-
if (n +
|
|
507
|
-
let r = e -
|
|
508
|
-
return r +
|
|
509
|
-
}
|
|
510
|
-
var
|
|
511
|
-
function
|
|
512
|
-
let r = `${e}|${JSON.stringify(t)}|${n === null ? "local" : typeof n == "number" ? `fixed:${n}` : n}`, i =
|
|
504
|
+
function Ie(e, t) {
|
|
505
|
+
let n = e - S(t, e - Te) * _;
|
|
506
|
+
if (n + S(t, n) * _ === e) return n;
|
|
507
|
+
let r = e - S(t, e + Te) * _;
|
|
508
|
+
return r + S(t, r) * _ === e ? r : n;
|
|
509
|
+
}
|
|
510
|
+
var Le = /* @__PURE__ */ new Map();
|
|
511
|
+
function Re(e, t, n) {
|
|
512
|
+
let r = `${e}|${JSON.stringify(t)}|${n === null ? "local" : typeof n == "number" ? `fixed:${n}` : n}`, i = Le.get(r);
|
|
513
513
|
if (i) return i;
|
|
514
514
|
let a = n === null ? void 0 : typeof n == "number" ? "UTC" : n, o;
|
|
515
515
|
try {
|
|
@@ -524,11 +524,11 @@ function Le(e, t, n) {
|
|
|
524
524
|
});
|
|
525
525
|
}
|
|
526
526
|
let s = typeof n == "number" ? n * _ : 0;
|
|
527
|
-
return i = (e) => o.format(new Date(e + s)),
|
|
527
|
+
return i = (e) => o.format(new Date(e + s)), Le.set(r, i), i;
|
|
528
528
|
}
|
|
529
529
|
//#endregion
|
|
530
530
|
//#region src/utils/time.ts
|
|
531
|
-
var
|
|
531
|
+
var ze = {
|
|
532
532
|
"1s": 1e3,
|
|
533
533
|
"5s": 5e3,
|
|
534
534
|
"15s": 15e3,
|
|
@@ -555,16 +555,16 @@ var Re = {
|
|
|
555
555
|
"3M": 7776e6,
|
|
556
556
|
"6M": 15552e6,
|
|
557
557
|
"12M": 31536e6
|
|
558
|
-
},
|
|
558
|
+
}, C = {
|
|
559
559
|
s: 1e3,
|
|
560
560
|
m: 6e4,
|
|
561
561
|
h: 36e5,
|
|
562
562
|
d: 864e5,
|
|
563
563
|
w: 6048e5,
|
|
564
564
|
M: 2592e6
|
|
565
|
-
},
|
|
566
|
-
function
|
|
567
|
-
let t =
|
|
565
|
+
}, Be = /^([1-9]\d*)([smhdwM])$/;
|
|
566
|
+
function w(e) {
|
|
567
|
+
let t = Be.exec(e);
|
|
568
568
|
if (!t) return null;
|
|
569
569
|
let n = Number(t[1]);
|
|
570
570
|
return Number.isSafeInteger(n) ? {
|
|
@@ -572,24 +572,24 @@ function T(e) {
|
|
|
572
572
|
unit: t[2]
|
|
573
573
|
} : null;
|
|
574
574
|
}
|
|
575
|
-
var
|
|
576
|
-
function
|
|
575
|
+
var Ve = 1e6;
|
|
576
|
+
function He(e) {
|
|
577
577
|
let t = /^([1-9]\d*)T$/.exec(e);
|
|
578
578
|
if (!t) return null;
|
|
579
579
|
let n = Number(t[1]);
|
|
580
|
-
return Number.isSafeInteger(n) && n <=
|
|
580
|
+
return Number.isSafeInteger(n) && n <= Ve ? n : null;
|
|
581
581
|
}
|
|
582
|
-
function
|
|
583
|
-
return
|
|
582
|
+
function Ue(e) {
|
|
583
|
+
return w(e) !== null;
|
|
584
584
|
}
|
|
585
|
-
function
|
|
586
|
-
let t =
|
|
585
|
+
function T(e) {
|
|
586
|
+
let t = ze[e];
|
|
587
587
|
if (t !== void 0) return t;
|
|
588
|
-
let n =
|
|
589
|
-
return n ? n.count *
|
|
588
|
+
let n = w(e);
|
|
589
|
+
return n ? n.count * C[n.unit] : NaN;
|
|
590
590
|
}
|
|
591
|
-
function
|
|
592
|
-
let n = new Date(e), r =
|
|
591
|
+
function We(e, t) {
|
|
592
|
+
let n = new Date(e), r = T(t);
|
|
593
593
|
return r >= 864e5 ? n.toLocaleDateString(void 0, {
|
|
594
594
|
month: "short",
|
|
595
595
|
day: "numeric"
|
|
@@ -602,11 +602,11 @@ function Ue(e, t) {
|
|
|
602
602
|
second: "2-digit"
|
|
603
603
|
});
|
|
604
604
|
}
|
|
605
|
-
function
|
|
606
|
-
let n =
|
|
605
|
+
function Ge(e, t) {
|
|
606
|
+
let n = T(t);
|
|
607
607
|
return Math.floor(e / n) * n;
|
|
608
608
|
}
|
|
609
|
-
function
|
|
609
|
+
function Ke(e, t) {
|
|
610
610
|
if (t === null) {
|
|
611
611
|
let t = new Date(e);
|
|
612
612
|
return {
|
|
@@ -617,7 +617,7 @@ function Ge(e, t) {
|
|
|
617
617
|
minutes: t.getMinutes()
|
|
618
618
|
};
|
|
619
619
|
}
|
|
620
|
-
let n = new Date(e +
|
|
620
|
+
let n = new Date(e + S(t, e) * 6e4);
|
|
621
621
|
return {
|
|
622
622
|
year: n.getUTCFullYear(),
|
|
623
623
|
month: n.getUTCMonth() + 1,
|
|
@@ -626,11 +626,11 @@ function Ge(e, t) {
|
|
|
626
626
|
minutes: n.getUTCMinutes()
|
|
627
627
|
};
|
|
628
628
|
}
|
|
629
|
-
function
|
|
629
|
+
function qe(e) {
|
|
630
630
|
return e.hours === 0 && e.minutes === 0;
|
|
631
631
|
}
|
|
632
|
-
var
|
|
633
|
-
function
|
|
632
|
+
var Je = 20 * 36e5;
|
|
633
|
+
function Ye(e) {
|
|
634
634
|
let t = Math.min(e.length, 64);
|
|
635
635
|
if (t < 2) return;
|
|
636
636
|
let n = le(e), r = Infinity;
|
|
@@ -638,110 +638,110 @@ function Je(e) {
|
|
|
638
638
|
let t = Math.abs(e[i].time - e[i - 1].time) * n;
|
|
639
639
|
t > 0 && t < r && (r = t);
|
|
640
640
|
}
|
|
641
|
-
return r === Infinity ? void 0 : r >=
|
|
641
|
+
return r === Infinity ? void 0 : r >= Je;
|
|
642
642
|
}
|
|
643
|
-
function
|
|
644
|
-
let n =
|
|
643
|
+
function Xe(e, t = Date.now()) {
|
|
644
|
+
let n = S(e, t), r = n >= 0 ? "+" : "-", i = Math.abs(n), a = Math.floor(i / 60), o = i % 60;
|
|
645
645
|
return o === 0 ? `UTC${r}${a}` : `UTC${r}${a}:${String(o).padStart(2, "0")}`;
|
|
646
646
|
}
|
|
647
|
-
var
|
|
647
|
+
var Ze = Date.UTC(1970, 0, 5), Qe = C.m, E = C.d, $e = 24, et = {
|
|
648
648
|
count: 1,
|
|
649
649
|
unit: "m"
|
|
650
|
-
},
|
|
651
|
-
function
|
|
652
|
-
let t =
|
|
653
|
-
return t || (t =
|
|
650
|
+
}, tt = 256, D = /* @__PURE__ */ new Map();
|
|
651
|
+
function nt(e) {
|
|
652
|
+
let t = D.get(e);
|
|
653
|
+
return t || (t = w(e) ?? et, D.size >= tt && D.clear(), D.set(e, t)), t;
|
|
654
654
|
}
|
|
655
|
-
function
|
|
655
|
+
function rt({ unit: e }) {
|
|
656
656
|
return e === "d" || e === "w" || e === "M";
|
|
657
657
|
}
|
|
658
|
-
function rt(e) {
|
|
659
|
-
return e.unit === "h" ? e.count > 1 && Qe % e.count === 0 : nt(e);
|
|
660
|
-
}
|
|
661
658
|
function it(e) {
|
|
662
|
-
return rt(
|
|
659
|
+
return e.unit === "h" ? e.count > 1 && $e % e.count === 0 : rt(e);
|
|
663
660
|
}
|
|
664
661
|
function at(e) {
|
|
665
|
-
return nt(
|
|
662
|
+
return it(nt(e));
|
|
666
663
|
}
|
|
667
664
|
function ot(e) {
|
|
668
|
-
return
|
|
665
|
+
return rt(nt(e));
|
|
669
666
|
}
|
|
670
|
-
function st(e
|
|
671
|
-
|
|
672
|
-
return !ot(a) || !rt(r) || typeof n == "object" && n.dates && e % D === 0 ? ct(e, r, i) : Fe(ct(e + C(a, e) * Ze, r, i), a);
|
|
667
|
+
function st(e) {
|
|
668
|
+
return e !== void 0 && !x(e);
|
|
673
669
|
}
|
|
674
|
-
function ct(e,
|
|
670
|
+
function ct(e, t, n = 1) {
|
|
671
|
+
let r = nt(t), i = typeof n == "number" ? n : n.weekStartsOn ?? 1, a = typeof n == "number" ? void 0 : n.timeZone;
|
|
672
|
+
return !st(a) || !it(r) || typeof n == "object" && n.dates && e % E === 0 ? lt(e, r, i) : Ie(lt(e + S(a, e) * Qe, r, i), a);
|
|
673
|
+
}
|
|
674
|
+
function lt(e, { count: t, unit: n }, r) {
|
|
675
675
|
if (n === "s" || n === "m" || n === "h" || n === "d") {
|
|
676
|
-
let r = t *
|
|
676
|
+
let r = t * C[n];
|
|
677
677
|
return Math.floor(e / r) * r;
|
|
678
678
|
}
|
|
679
679
|
let i = new Date(e);
|
|
680
680
|
if (n === "w") {
|
|
681
681
|
let e = (i.getUTCDay() - r + 7) % 7, n = Date.UTC(i.getUTCFullYear(), i.getUTCMonth(), i.getUTCDate() - e);
|
|
682
682
|
if (t <= 1) return n;
|
|
683
|
-
let a = Math.floor((n -
|
|
684
|
-
return
|
|
683
|
+
let a = Math.floor((n - Ze) / (7 * E));
|
|
684
|
+
return Ze + Math.floor(a / t) * t * 7 * E;
|
|
685
685
|
}
|
|
686
686
|
let a = i.getUTCFullYear() * 12 + i.getUTCMonth(), o = Math.floor(a / t) * t;
|
|
687
687
|
return Date.UTC(Math.floor(o / 12), o % 12, 1);
|
|
688
688
|
}
|
|
689
|
-
function lt(e, t, n) {
|
|
690
|
-
return e % D === 0 ? 0 : n && st(e, "1d", { timeZone: n }) === e ? n : t;
|
|
691
|
-
}
|
|
692
689
|
function ut(e, t, n) {
|
|
693
|
-
return
|
|
690
|
+
return e % E === 0 ? 0 : n && ct(e, "1d", { timeZone: n }) === e ? n : t;
|
|
691
|
+
}
|
|
692
|
+
function dt(e, t, n) {
|
|
693
|
+
return Ke(e, ut(e, t, n));
|
|
694
694
|
}
|
|
695
695
|
//#endregion
|
|
696
696
|
//#region src/utils/precision.ts
|
|
697
|
-
var
|
|
698
|
-
function
|
|
699
|
-
let n = `${e}|${t}`, r =
|
|
700
|
-
return r || (
|
|
697
|
+
var ft = 64, O = /* @__PURE__ */ new Map();
|
|
698
|
+
function pt(e, t) {
|
|
699
|
+
let n = `${e}|${t}`, r = O.get(n);
|
|
700
|
+
return r || (O.size >= ft && O.clear(), r = new Intl.NumberFormat(e, {
|
|
701
701
|
minimumFractionDigits: t,
|
|
702
702
|
maximumFractionDigits: t
|
|
703
|
-
}),
|
|
703
|
+
}), O.set(n, r)), r;
|
|
704
704
|
}
|
|
705
|
-
function
|
|
706
|
-
return t.formatPrice ? t.formatPrice(e) :
|
|
705
|
+
function mt(e, t, n) {
|
|
706
|
+
return t.formatPrice ? t.formatPrice(e) : k(e, n ?? t.pricePrecision ?? ht(t.priceRange.min, t.priceRange.max), t.numberLocale ?? "en-US");
|
|
707
707
|
}
|
|
708
|
-
function
|
|
709
|
-
return
|
|
708
|
+
function k(e, t = 2, n = "en-US") {
|
|
709
|
+
return pt(n, t).format(e);
|
|
710
710
|
}
|
|
711
|
-
function
|
|
711
|
+
function ht(e, t) {
|
|
712
712
|
if (!(t > e) || !Number.isFinite(e) || !Number.isFinite(t)) return 2;
|
|
713
713
|
let n = se(e, t, 8);
|
|
714
714
|
return n > 0 && n < 1 ? Math.ceil(-Math.log10(n)) + 1 : 2;
|
|
715
715
|
}
|
|
716
|
-
var
|
|
717
|
-
function
|
|
716
|
+
var gt = 2;
|
|
717
|
+
function _t(e, t, n, r = 2, i = "en-US") {
|
|
718
718
|
if ((t === "percentage" || t === "indexedTo100") && n && n !== 0) {
|
|
719
719
|
if (t === "percentage") {
|
|
720
|
-
let t = (e / n - 1) * 100, r =
|
|
721
|
-
return `${r ===
|
|
720
|
+
let t = (e / n - 1) * 100, r = k(Math.abs(t), gt, i);
|
|
721
|
+
return `${r === k(0, gt, i) ? "" : t > 0 ? "+" : "-"}${r}%`;
|
|
722
722
|
}
|
|
723
|
-
return
|
|
723
|
+
return k(e / n * 100, 2, i);
|
|
724
724
|
}
|
|
725
|
-
return
|
|
725
|
+
return k(e, r, i);
|
|
726
726
|
}
|
|
727
|
-
function
|
|
727
|
+
function vt(e, t, n = 1) {
|
|
728
728
|
let r = Number.isInteger(n) && n > 1 ? n : 1;
|
|
729
729
|
if (!Number.isFinite(e) || !Number.isInteger(t) || t < 2) return String(e);
|
|
730
730
|
let i = t * r, a = Math.round(Math.abs(e) * i), o = Math.floor(a / i), s = a - o * i, c = Math.floor(s / r), l = String(t - 1).length, u = r > 1 ? String(Math.floor((s - c * r) / r * 10)) : "";
|
|
731
731
|
return `${e < 0 && a > 0 ? "-" : ""}${o}'${String(c).padStart(l, "0")}${u}`;
|
|
732
732
|
}
|
|
733
|
-
function
|
|
733
|
+
function yt(e) {
|
|
734
734
|
if (!Number.isInteger(e.denominator) || e.denominator < 2) return null;
|
|
735
735
|
let t = Number.isInteger(e.subDenominator) && (e.subDenominator ?? 0) > 1 ? e.subDenominator : 1;
|
|
736
736
|
return 1 / (e.denominator * t);
|
|
737
737
|
}
|
|
738
|
-
function yt(e) {
|
|
739
|
-
return e ? typeof e == "function" ? e : vt(e) === null ? null : (t) => _t(t, e.denominator, e.subDenominator) : null;
|
|
740
|
-
}
|
|
741
738
|
function bt(e) {
|
|
742
|
-
return e
|
|
739
|
+
return e ? typeof e == "function" ? e : yt(e) === null ? null : (t) => vt(t, e.denominator, e.subDenominator) : null;
|
|
743
740
|
}
|
|
744
741
|
function xt(e) {
|
|
742
|
+
return e >= 1e9 ? (e / 1e9).toFixed(2) + "B" : e >= 1e6 ? (e / 1e6).toFixed(2) + "M" : e >= 1e3 ? (e / 1e3).toFixed(2) + "K" : e.toFixed(0);
|
|
743
|
+
}
|
|
744
|
+
function St(e) {
|
|
745
745
|
let t = 0;
|
|
746
746
|
for (let n of e) {
|
|
747
747
|
let e = n.toString(), r = e.indexOf(".");
|
|
@@ -751,7 +751,7 @@ function xt(e) {
|
|
|
751
751
|
}
|
|
752
752
|
//#endregion
|
|
753
753
|
//#region src/utils/priceSource.ts
|
|
754
|
-
var
|
|
754
|
+
var Ct = [
|
|
755
755
|
"close",
|
|
756
756
|
"open",
|
|
757
757
|
"high",
|
|
@@ -761,10 +761,10 @@ var St = [
|
|
|
761
761
|
"ohlc4",
|
|
762
762
|
"hlcc4"
|
|
763
763
|
];
|
|
764
|
-
function
|
|
765
|
-
return typeof e == "string" &&
|
|
764
|
+
function wt(e) {
|
|
765
|
+
return typeof e == "string" && Ct.includes(e);
|
|
766
766
|
}
|
|
767
|
-
function
|
|
767
|
+
function Tt(e, t) {
|
|
768
768
|
switch (t) {
|
|
769
769
|
case "open": return e.open;
|
|
770
770
|
case "high": return e.high;
|
|
@@ -776,13 +776,13 @@ function wt(e, t) {
|
|
|
776
776
|
default: return e.close;
|
|
777
777
|
}
|
|
778
778
|
}
|
|
779
|
-
var
|
|
780
|
-
function
|
|
779
|
+
var Et = /^ind:([^:]+):(.+)$/;
|
|
780
|
+
function Dt(e, t) {
|
|
781
781
|
return `ind:${e}:${t}`;
|
|
782
782
|
}
|
|
783
|
-
function
|
|
783
|
+
function Ot(e) {
|
|
784
784
|
if (typeof e != "string") return null;
|
|
785
|
-
let t =
|
|
785
|
+
let t = Et.exec(e);
|
|
786
786
|
return t ? {
|
|
787
787
|
instanceId: t[1],
|
|
788
788
|
key: t[2]
|
|
@@ -790,11 +790,11 @@ function Dt(e) {
|
|
|
790
790
|
}
|
|
791
791
|
//#endregion
|
|
792
792
|
//#region src/utils/resample.ts
|
|
793
|
-
var
|
|
794
|
-
function
|
|
795
|
-
let r =
|
|
793
|
+
var kt = 864e5, At = 6e4;
|
|
794
|
+
function jt(e, t, n = 1) {
|
|
795
|
+
let r = Mt(e, t, n), i = [], a = null;
|
|
796
796
|
for (let n of e) {
|
|
797
|
-
let e =
|
|
797
|
+
let e = ct(n.time, t, r);
|
|
798
798
|
a === null || e !== a.time ? (a = {
|
|
799
799
|
time: e,
|
|
800
800
|
open: n.open,
|
|
@@ -806,30 +806,30 @@ function At(e, t, n = 1) {
|
|
|
806
806
|
}
|
|
807
807
|
return i;
|
|
808
808
|
}
|
|
809
|
-
function
|
|
810
|
-
return typeof n == "number" || n.timeZone === void 0 || n.dates !== void 0 ||
|
|
809
|
+
function Mt(e, t, n) {
|
|
810
|
+
return typeof n == "number" || n.timeZone === void 0 || n.dates !== void 0 || x(n.timeZone) || !at(t) ? n : {
|
|
811
811
|
...n,
|
|
812
|
-
dates:
|
|
812
|
+
dates: Ye(e) === !0
|
|
813
813
|
};
|
|
814
814
|
}
|
|
815
|
-
var
|
|
815
|
+
var A = (e) => e === "s" || e === "m" || e === "h" || e === "d";
|
|
816
816
|
function Nt(e, t) {
|
|
817
|
-
let n =
|
|
817
|
+
let n = w(e), r = w(t);
|
|
818
818
|
if (!n || !r) return !1;
|
|
819
|
-
let i =
|
|
820
|
-
return n.unit === "d" && n.count > 1 ? !1 :
|
|
819
|
+
let i = T(e);
|
|
820
|
+
return n.unit === "d" && n.count > 1 ? !1 : A(r.unit) ? A(n.unit) && T(t) % i === 0 : n.unit === r.unit ? r.count % n.count === 0 : A(n.unit) && kt % i === 0;
|
|
821
821
|
}
|
|
822
822
|
function Pt(e, t) {
|
|
823
|
-
let n =
|
|
824
|
-
if (!(n <
|
|
823
|
+
let n = T(e);
|
|
824
|
+
if (!(n < kt)) return !0;
|
|
825
825
|
let r = (/* @__PURE__ */ new Date()).getUTCFullYear();
|
|
826
|
-
return [Date.UTC(r, 0, 1), Date.UTC(r, 6, 1)].every((e) =>
|
|
826
|
+
return [Date.UTC(r, 0, 1), Date.UTC(r, 6, 1)].every((e) => S(t, e) * At % n === 0);
|
|
827
827
|
}
|
|
828
828
|
function Ft(e, t, n = {}) {
|
|
829
|
-
let { timeZone: r } = n, i = r !== void 0 && !
|
|
829
|
+
let { timeZone: r } = n, i = r !== void 0 && !x(r) && at(e) ? r : void 0, a = null, o = 0;
|
|
830
830
|
for (let n of t) {
|
|
831
831
|
if (!Nt(n, e) || i !== void 0 && !Pt(n, i)) continue;
|
|
832
|
-
let t =
|
|
832
|
+
let t = T(n);
|
|
833
833
|
t > o && (a = n, o = t);
|
|
834
834
|
}
|
|
835
835
|
return a;
|
|
@@ -886,11 +886,11 @@ function Vt(e, t) {
|
|
|
886
886
|
days: Array.isArray(e.days) ? e.days : null
|
|
887
887
|
}];
|
|
888
888
|
});
|
|
889
|
-
if (!n || !
|
|
889
|
+
if (!n || !Ne(n) || r.length === 0 || !Number.isFinite(t)) return {
|
|
890
890
|
state: "always",
|
|
891
891
|
next: null
|
|
892
892
|
};
|
|
893
|
-
let i =
|
|
893
|
+
let i = b(n, t) * N, a = Math.floor((t + i) / M) * M, o = (e) => e - b(n, e - b(n, e - i) * N) * N, s = [];
|
|
894
894
|
for (let e = -1; e <= Bt; e++) {
|
|
895
895
|
let t = a + e * M, n = (Math.floor(t / M) + 4) % 7;
|
|
896
896
|
for (let e of r) {
|
|
@@ -1699,7 +1699,17 @@ function q(e, t = 2, n) {
|
|
|
1699
1699
|
function ur(e) {
|
|
1700
1700
|
return q(e, 0, "vi");
|
|
1701
1701
|
}
|
|
1702
|
-
|
|
1702
|
+
var dr = [
|
|
1703
|
+
[0xe8d4a51000, "조"],
|
|
1704
|
+
[1e8, "억"],
|
|
1705
|
+
[1e4, "만"]
|
|
1706
|
+
];
|
|
1707
|
+
function fr(e, t) {
|
|
1708
|
+
let n = t ?? K;
|
|
1709
|
+
if (/^ko([-_]|$)/i.test(n)) {
|
|
1710
|
+
for (let [t, r] of dr) if (Math.round(e / t * 100) >= 100) return q(e / t, 2, n) + r;
|
|
1711
|
+
return q(e, 0, n);
|
|
1712
|
+
}
|
|
1703
1713
|
return e >= 1e9 ? q(e / 1e9, 2, t ?? K) + "B" : e >= 1e6 ? q(e / 1e6, 2, t ?? K) + "M" : e >= 1e3 ? q(e / 1e3, 2, t ?? K) + "K" : q(e, 0, t ?? K);
|
|
1704
1714
|
}
|
|
1705
1715
|
//#endregion
|
|
@@ -1711,7 +1721,14 @@ var J = {
|
|
|
1711
1721
|
ceiling: "#D946EF",
|
|
1712
1722
|
floor: "#06B6D4",
|
|
1713
1723
|
reference: "#EAB308"
|
|
1714
|
-
}, Y = "Asia/Ho_Chi_Minh",
|
|
1724
|
+
}, Y = "Asia/Ho_Chi_Minh", pr = {
|
|
1725
|
+
up: "#E8313F",
|
|
1726
|
+
down: "#2F6FEB",
|
|
1727
|
+
unchanged: "#8B8F99",
|
|
1728
|
+
ceiling: "#C2121F",
|
|
1729
|
+
floor: "#1E4FC2",
|
|
1730
|
+
reference: "#8B8F99"
|
|
1731
|
+
}, mr = "Asia/Seoul", hr = [
|
|
1715
1732
|
{
|
|
1716
1733
|
name: "ATO",
|
|
1717
1734
|
startTime: "09:00",
|
|
@@ -1742,7 +1759,7 @@ var J = {
|
|
|
1742
1759
|
endTime: "14:45",
|
|
1743
1760
|
type: "preClose"
|
|
1744
1761
|
}
|
|
1745
|
-
],
|
|
1762
|
+
], gr = [
|
|
1746
1763
|
{
|
|
1747
1764
|
name: "Phiên 1",
|
|
1748
1765
|
startTime: "09:15",
|
|
@@ -1773,7 +1790,7 @@ var J = {
|
|
|
1773
1790
|
endTime: "15:00",
|
|
1774
1791
|
type: "postClose"
|
|
1775
1792
|
}
|
|
1776
|
-
],
|
|
1793
|
+
], _r = [
|
|
1777
1794
|
{
|
|
1778
1795
|
name: "Phiên 1",
|
|
1779
1796
|
startTime: "09:15",
|
|
@@ -1792,7 +1809,7 @@ var J = {
|
|
|
1792
1809
|
endTime: "14:30",
|
|
1793
1810
|
type: "continuous"
|
|
1794
1811
|
}
|
|
1795
|
-
],
|
|
1812
|
+
], vr = [
|
|
1796
1813
|
{
|
|
1797
1814
|
name: "ATO",
|
|
1798
1815
|
startTime: "08:45",
|
|
@@ -1823,7 +1840,147 @@ var J = {
|
|
|
1823
1840
|
endTime: "14:45",
|
|
1824
1841
|
type: "preClose"
|
|
1825
1842
|
}
|
|
1826
|
-
],
|
|
1843
|
+
], yr = [
|
|
1844
|
+
{
|
|
1845
|
+
name: "장전 동시호가",
|
|
1846
|
+
startTime: "08:30",
|
|
1847
|
+
endTime: "09:00",
|
|
1848
|
+
type: "preOpen"
|
|
1849
|
+
},
|
|
1850
|
+
{
|
|
1851
|
+
name: "정규장",
|
|
1852
|
+
startTime: "09:00",
|
|
1853
|
+
endTime: "15:20",
|
|
1854
|
+
type: "continuous"
|
|
1855
|
+
},
|
|
1856
|
+
{
|
|
1857
|
+
name: "장마감 동시호가",
|
|
1858
|
+
startTime: "15:20",
|
|
1859
|
+
endTime: "15:30",
|
|
1860
|
+
type: "preClose"
|
|
1861
|
+
},
|
|
1862
|
+
{
|
|
1863
|
+
name: "장후 시간외",
|
|
1864
|
+
startTime: "15:40",
|
|
1865
|
+
endTime: "16:00",
|
|
1866
|
+
type: "postClose"
|
|
1867
|
+
},
|
|
1868
|
+
{
|
|
1869
|
+
name: "애프터마켓",
|
|
1870
|
+
startTime: "16:00",
|
|
1871
|
+
endTime: "20:00",
|
|
1872
|
+
type: "postClose"
|
|
1873
|
+
}
|
|
1874
|
+
], br = [
|
|
1875
|
+
{
|
|
1876
|
+
name: "프리마켓",
|
|
1877
|
+
startTime: "08:00",
|
|
1878
|
+
endTime: "08:50",
|
|
1879
|
+
type: "preOpen"
|
|
1880
|
+
},
|
|
1881
|
+
{
|
|
1882
|
+
name: "메인마켓",
|
|
1883
|
+
startTime: "09:00",
|
|
1884
|
+
endTime: "15:20",
|
|
1885
|
+
type: "continuous"
|
|
1886
|
+
},
|
|
1887
|
+
{
|
|
1888
|
+
name: "애프터마켓",
|
|
1889
|
+
startTime: "15:40",
|
|
1890
|
+
endTime: "20:00",
|
|
1891
|
+
type: "postClose"
|
|
1892
|
+
}
|
|
1893
|
+
], xr = [
|
|
1894
|
+
{
|
|
1895
|
+
from: 0,
|
|
1896
|
+
step: 1
|
|
1897
|
+
},
|
|
1898
|
+
{
|
|
1899
|
+
from: 2e3,
|
|
1900
|
+
step: 5
|
|
1901
|
+
},
|
|
1902
|
+
{
|
|
1903
|
+
from: 5e3,
|
|
1904
|
+
step: 10
|
|
1905
|
+
},
|
|
1906
|
+
{
|
|
1907
|
+
from: 2e4,
|
|
1908
|
+
step: 50
|
|
1909
|
+
},
|
|
1910
|
+
{
|
|
1911
|
+
from: 5e4,
|
|
1912
|
+
step: 100
|
|
1913
|
+
},
|
|
1914
|
+
{
|
|
1915
|
+
from: 2e5,
|
|
1916
|
+
step: 500
|
|
1917
|
+
},
|
|
1918
|
+
{
|
|
1919
|
+
from: 5e5,
|
|
1920
|
+
step: 1e3
|
|
1921
|
+
}
|
|
1922
|
+
], Sr = [
|
|
1923
|
+
{
|
|
1924
|
+
from: 0,
|
|
1925
|
+
step: 1e-8
|
|
1926
|
+
},
|
|
1927
|
+
{
|
|
1928
|
+
from: 1e-5,
|
|
1929
|
+
step: 1e-7
|
|
1930
|
+
},
|
|
1931
|
+
{
|
|
1932
|
+
from: 1e-4,
|
|
1933
|
+
step: 1e-6
|
|
1934
|
+
},
|
|
1935
|
+
{
|
|
1936
|
+
from: .001,
|
|
1937
|
+
step: 1e-5
|
|
1938
|
+
},
|
|
1939
|
+
{
|
|
1940
|
+
from: .01,
|
|
1941
|
+
step: 1e-4
|
|
1942
|
+
},
|
|
1943
|
+
{
|
|
1944
|
+
from: .1,
|
|
1945
|
+
step: .001
|
|
1946
|
+
},
|
|
1947
|
+
{
|
|
1948
|
+
from: 1,
|
|
1949
|
+
step: .01
|
|
1950
|
+
},
|
|
1951
|
+
{
|
|
1952
|
+
from: 10,
|
|
1953
|
+
step: .1
|
|
1954
|
+
},
|
|
1955
|
+
{
|
|
1956
|
+
from: 100,
|
|
1957
|
+
step: 1
|
|
1958
|
+
},
|
|
1959
|
+
{
|
|
1960
|
+
from: 5e3,
|
|
1961
|
+
step: 5
|
|
1962
|
+
},
|
|
1963
|
+
{
|
|
1964
|
+
from: 1e4,
|
|
1965
|
+
step: 10
|
|
1966
|
+
},
|
|
1967
|
+
{
|
|
1968
|
+
from: 5e4,
|
|
1969
|
+
step: 50
|
|
1970
|
+
},
|
|
1971
|
+
{
|
|
1972
|
+
from: 1e5,
|
|
1973
|
+
step: 100
|
|
1974
|
+
},
|
|
1975
|
+
{
|
|
1976
|
+
from: 5e5,
|
|
1977
|
+
step: 500
|
|
1978
|
+
},
|
|
1979
|
+
{
|
|
1980
|
+
from: 1e6,
|
|
1981
|
+
step: 1e3
|
|
1982
|
+
}
|
|
1983
|
+
], Cr = {
|
|
1827
1984
|
type: "stock",
|
|
1828
1985
|
exchange: "HOSE",
|
|
1829
1986
|
currency: "VND",
|
|
@@ -1850,12 +2007,12 @@ var J = {
|
|
|
1850
2007
|
ceilingPercent: 7,
|
|
1851
2008
|
floorPercent: 7
|
|
1852
2009
|
},
|
|
1853
|
-
sessions:
|
|
2010
|
+
sessions: hr,
|
|
1854
2011
|
colorScheme: J
|
|
1855
|
-
},
|
|
1856
|
-
...
|
|
2012
|
+
}, wr = {
|
|
2013
|
+
...Cr,
|
|
1857
2014
|
priceSteps: void 0
|
|
1858
|
-
},
|
|
2015
|
+
}, Tr = {
|
|
1859
2016
|
type: "stock",
|
|
1860
2017
|
exchange: "HNX",
|
|
1861
2018
|
currency: "VND",
|
|
@@ -1868,9 +2025,9 @@ var J = {
|
|
|
1868
2025
|
ceilingPercent: 10,
|
|
1869
2026
|
floorPercent: 10
|
|
1870
2027
|
},
|
|
1871
|
-
sessions:
|
|
2028
|
+
sessions: gr,
|
|
1872
2029
|
colorScheme: J
|
|
1873
|
-
},
|
|
2030
|
+
}, Er = {
|
|
1874
2031
|
type: "stock",
|
|
1875
2032
|
exchange: "UPCOM",
|
|
1876
2033
|
currency: "VND",
|
|
@@ -1883,9 +2040,9 @@ var J = {
|
|
|
1883
2040
|
ceilingPercent: 15,
|
|
1884
2041
|
floorPercent: 15
|
|
1885
2042
|
},
|
|
1886
|
-
sessions:
|
|
2043
|
+
sessions: _r,
|
|
1887
2044
|
colorScheme: J
|
|
1888
|
-
},
|
|
2045
|
+
}, Dr = {
|
|
1889
2046
|
type: "futures",
|
|
1890
2047
|
exchange: "HNX",
|
|
1891
2048
|
currency: "VND",
|
|
@@ -1899,14 +2056,44 @@ var J = {
|
|
|
1899
2056
|
ceilingPercent: 7,
|
|
1900
2057
|
floorPercent: 7
|
|
1901
2058
|
},
|
|
1902
|
-
sessions:
|
|
2059
|
+
sessions: vr,
|
|
1903
2060
|
colorScheme: J
|
|
1904
|
-
},
|
|
2061
|
+
}, Or = {
|
|
2062
|
+
type: "stock",
|
|
2063
|
+
exchange: "KRX",
|
|
2064
|
+
currency: "KRW",
|
|
2065
|
+
pricePrecision: 0,
|
|
2066
|
+
volumeUnit: 1,
|
|
2067
|
+
priceStep: 1,
|
|
2068
|
+
priceSteps: xr,
|
|
2069
|
+
timeZone: mr,
|
|
2070
|
+
priceLimits: {
|
|
2071
|
+
enabled: !0,
|
|
2072
|
+
ceilingPercent: 30,
|
|
2073
|
+
floorPercent: 30,
|
|
2074
|
+
roundMove: !0
|
|
2075
|
+
},
|
|
2076
|
+
sessions: yr,
|
|
2077
|
+
colorScheme: pr
|
|
2078
|
+
}, kr = {
|
|
2079
|
+
...Or,
|
|
2080
|
+
exchange: "NXT",
|
|
2081
|
+
sessions: br
|
|
2082
|
+
}, Ar = {
|
|
2083
|
+
type: "crypto",
|
|
2084
|
+
exchange: "UPBIT",
|
|
2085
|
+
currency: "KRW",
|
|
2086
|
+
priceStep: 1e-8,
|
|
2087
|
+
priceSteps: Sr,
|
|
2088
|
+
timeZone: mr,
|
|
2089
|
+
priceLimits: { enabled: !1 },
|
|
2090
|
+
colorScheme: pr
|
|
2091
|
+
}, jr = {
|
|
1905
2092
|
type: "crypto",
|
|
1906
2093
|
currency: "USDT",
|
|
1907
2094
|
pricePrecision: 2,
|
|
1908
2095
|
priceLimits: { enabled: !1 }
|
|
1909
|
-
},
|
|
2096
|
+
}, Mr = {
|
|
1910
2097
|
type: "stock",
|
|
1911
2098
|
exchange: "NYSE",
|
|
1912
2099
|
currency: "USD",
|
|
@@ -1935,35 +2122,38 @@ var J = {
|
|
|
1935
2122
|
}
|
|
1936
2123
|
]
|
|
1937
2124
|
};
|
|
1938
|
-
function
|
|
2125
|
+
function Nr(e) {
|
|
2126
|
+
return Pr(e, J);
|
|
2127
|
+
}
|
|
2128
|
+
function Pr(e, t) {
|
|
1939
2129
|
return {
|
|
1940
2130
|
...e,
|
|
1941
|
-
candleUp:
|
|
1942
|
-
candleDown:
|
|
1943
|
-
candleUpWick:
|
|
1944
|
-
candleDownWick:
|
|
2131
|
+
candleUp: t.up,
|
|
2132
|
+
candleDown: t.down,
|
|
2133
|
+
candleUpWick: t.up,
|
|
2134
|
+
candleDownWick: t.down
|
|
1945
2135
|
};
|
|
1946
2136
|
}
|
|
1947
2137
|
var X = 1e-9;
|
|
1948
|
-
function
|
|
2138
|
+
function Fr(e, t) {
|
|
1949
2139
|
let n = t.priceStep;
|
|
1950
2140
|
for (let r of t.priceSteps ?? []) e + X >= r.from && (n = r.step);
|
|
1951
2141
|
return n !== void 0 && n > 0 ? n : void 0;
|
|
1952
2142
|
}
|
|
1953
|
-
function
|
|
2143
|
+
function Ir(e, t) {
|
|
1954
2144
|
let n = t.priceStep;
|
|
1955
2145
|
for (let r of t.priceSteps ?? []) e - X > r.from && (n = r.step);
|
|
1956
2146
|
return n !== void 0 && n > 0 ? n : void 0;
|
|
1957
2147
|
}
|
|
1958
2148
|
function Z(e, t, n = "nearest") {
|
|
1959
|
-
let r =
|
|
2149
|
+
let r = Fr(e, t);
|
|
1960
2150
|
if (r === void 0 || !Number.isFinite(e)) return e;
|
|
1961
2151
|
let i = e / r, a = n === "down" ? Math.floor(i + X) : n === "up" ? Math.ceil(i - X) : Math.round(i);
|
|
1962
2152
|
return Number((a * r).toFixed(Rt(r)));
|
|
1963
2153
|
}
|
|
1964
|
-
function
|
|
2154
|
+
function Lr(e, t) {
|
|
1965
2155
|
if (!t.priceLimits?.enabled || !t.priceLimits.ceilingPercent) return null;
|
|
1966
|
-
let n = t.priceLimits.ceilingPercent / 100, r = (t.priceLimits.floorPercent ?? t.priceLimits.ceilingPercent) / 100, i = e, a = i * (1 + n), o = i * (1 - r), s =
|
|
2156
|
+
let n = t.priceLimits.ceilingPercent / 100, r = (t.priceLimits.floorPercent ?? t.priceLimits.ceilingPercent) / 100, i = e, a = i * (1 + n), o = i * (1 - r), s = Fr(i, t);
|
|
1967
2157
|
if (s === void 0) return {
|
|
1968
2158
|
ceiling: a,
|
|
1969
2159
|
floor: o,
|
|
@@ -1975,15 +2165,23 @@ function Er(e, t) {
|
|
|
1975
2165
|
floor: i,
|
|
1976
2166
|
reference: i
|
|
1977
2167
|
};
|
|
1978
|
-
let l
|
|
1979
|
-
|
|
2168
|
+
let l, u;
|
|
2169
|
+
if (t.priceLimits.roundMove) {
|
|
2170
|
+
let e = {
|
|
2171
|
+
...t,
|
|
2172
|
+
priceStep: s,
|
|
2173
|
+
priceSteps: void 0
|
|
2174
|
+
};
|
|
2175
|
+
l = Z(i + Z(i * n, e, "down"), t, "down"), u = Z(i - Z(i * r, e, "down"), t, "down");
|
|
2176
|
+
} else l = Z(a, t, "down"), u = Z(o, t, "up");
|
|
2177
|
+
return l <= i && (l = c), u >= i && (u = Z(i - (Ir(i, t) ?? s), t)), u <= 0 && (u = i), {
|
|
1980
2178
|
ceiling: l,
|
|
1981
2179
|
floor: u,
|
|
1982
2180
|
reference: i
|
|
1983
2181
|
};
|
|
1984
2182
|
}
|
|
1985
2183
|
var Q = (e, t) => Math.round(e * t * 1e9) / 1e9;
|
|
1986
|
-
function
|
|
2184
|
+
function Rr(e, t) {
|
|
1987
2185
|
let n = Math.round(Math.log10(t));
|
|
1988
2186
|
return {
|
|
1989
2187
|
...e,
|
|
@@ -1999,11 +2197,11 @@ function Dr(e, t) {
|
|
|
1999
2197
|
}
|
|
2000
2198
|
};
|
|
2001
2199
|
}
|
|
2002
|
-
var
|
|
2003
|
-
function
|
|
2200
|
+
var zr = 6e4, Br = 864e5;
|
|
2201
|
+
function Vr(e, t) {
|
|
2004
2202
|
let n, r;
|
|
2005
2203
|
if (t) {
|
|
2006
|
-
let i = new Date(e +
|
|
2204
|
+
let i = new Date(e + b(t, e) * zr);
|
|
2007
2205
|
n = i.getUTCHours(), r = i.getUTCMinutes();
|
|
2008
2206
|
} else {
|
|
2009
2207
|
let t = new Date(e);
|
|
@@ -2011,31 +2209,31 @@ function Ar(e, t) {
|
|
|
2011
2209
|
}
|
|
2012
2210
|
return `${String(n).padStart(2, "0")}:${String(r).padStart(2, "0")}`;
|
|
2013
2211
|
}
|
|
2014
|
-
function
|
|
2015
|
-
if (n !== void 0 && !
|
|
2016
|
-
let r =
|
|
2212
|
+
function Hr(e, t = Date.now(), n) {
|
|
2213
|
+
if (n !== void 0 && !Ne(n)) return null;
|
|
2214
|
+
let r = Vr(t, n);
|
|
2017
2215
|
for (let t of e) if (r >= t.startTime && r < t.endTime) return t;
|
|
2018
2216
|
return null;
|
|
2019
2217
|
}
|
|
2020
|
-
var $ = (e) => String(e).padStart(2, "0"),
|
|
2218
|
+
var $ = (e) => String(e).padStart(2, "0"), Ur = (e) => {
|
|
2021
2219
|
let t = new Date(e);
|
|
2022
2220
|
return `${t.getUTCFullYear()}-${$(t.getUTCMonth() + 1)}-${$(t.getUTCDate())}`;
|
|
2023
|
-
},
|
|
2024
|
-
function
|
|
2025
|
-
let r = Date.UTC(e, t - 1, 1), i = 1 + (
|
|
2221
|
+
}, Wr = 4, Gr = 7 * 36e5;
|
|
2222
|
+
function Kr(e, t, n) {
|
|
2223
|
+
let r = Date.UTC(e, t - 1, 1), i = 1 + (Wr - new Date(r).getUTCDay() + 7) % 7, a = Date.UTC(e, t - 1, i + 14), o = (e) => {
|
|
2026
2224
|
let t = new Date(e).getUTCDay();
|
|
2027
|
-
return t === 0 || t === 6 || (n?.(
|
|
2225
|
+
return t === 0 || t === 6 || (n?.(Ur(e)) ?? !1);
|
|
2028
2226
|
};
|
|
2029
|
-
for (; o(a);) a -=
|
|
2030
|
-
return
|
|
2227
|
+
for (; o(a);) a -= Br;
|
|
2228
|
+
return Ur(a);
|
|
2031
2229
|
}
|
|
2032
|
-
function
|
|
2033
|
-
let n =
|
|
2230
|
+
function qr(e, t) {
|
|
2231
|
+
let n = Ur(e + Gr), r = (e, n) => ({
|
|
2034
2232
|
symbol: `VN30F${$(e % 100)}${$(n)}`,
|
|
2035
2233
|
year: e,
|
|
2036
2234
|
month: n,
|
|
2037
|
-
lastTradingDay:
|
|
2038
|
-
}), i = (e) => e.month === 12 ? r(e.year + 1, 1) : r(e.year, e.month + 1), a = new Date(e +
|
|
2235
|
+
lastTradingDay: Kr(e, n, t)
|
|
2236
|
+
}), i = (e) => e.month === 12 ? r(e.year + 1, 1) : r(e.year, e.month + 1), a = new Date(e + Gr), o = r(a.getUTCFullYear(), a.getUTCMonth() + 1);
|
|
2039
2237
|
n > o.lastTradingDay && (o = i(o));
|
|
2040
2238
|
let s = [o, i(o)], c = i(s[1]);
|
|
2041
2239
|
for (; s.length < 4;) c.month % 3 == 0 && s.push(c), c = i(c);
|
|
@@ -2043,7 +2241,7 @@ function Ir(e, t) {
|
|
|
2043
2241
|
}
|
|
2044
2242
|
//#endregion
|
|
2045
2243
|
//#region src/icons/iconSet.ts
|
|
2046
|
-
var
|
|
2244
|
+
var Jr = {
|
|
2047
2245
|
cursor: { d: "M6 3.5L18.5 12.5L12.6 13.6L9.7 19.4z" },
|
|
2048
2246
|
trendingUp: { d: "M3 17L9 11L13 14.5L21 6.5M15 6.5H21V12.5" },
|
|
2049
2247
|
trendingDown: { d: "M3 7L9 13L13 9.5L21 17.5M15 17.5H21V11.5" },
|
|
@@ -2177,7 +2375,7 @@ var Lr = {
|
|
|
2177
2375
|
]
|
|
2178
2376
|
] },
|
|
2179
2377
|
layoutGrid: { d: "M5 4.5h4.5a.5.5 0 0 1 .5.5v4.5a.5.5 0 0 1-.5.5H5a.5.5 0 0 1-.5-.5V5a.5.5 0 0 1 .5-.5zM14.5 4.5H19a.5.5 0 0 1 .5.5v4.5a.5.5 0 0 1-.5.5h-4.5a.5.5 0 0 1-.5-.5V5a.5.5 0 0 1 .5-.5zM5 14h4.5a.5.5 0 0 1 .5.5V19a.5.5 0 0 1-.5.5H5a.5.5 0 0 1-.5-.5v-4.5A.5.5 0 0 1 5 14zM14.5 14H19a.5.5 0 0 1 .5.5V19a.5.5 0 0 1-.5.5h-4.5a.5.5 0 0 1-.5-.5v-4.5a.5.5 0 0 1 .5-.5z" }
|
|
2180
|
-
},
|
|
2378
|
+
}, Yr = {
|
|
2181
2379
|
trendLine: {
|
|
2182
2380
|
d: "M5 18L19 6",
|
|
2183
2381
|
dots: [[5, 18], [19, 6]]
|
|
@@ -2530,7 +2728,7 @@ var Lr = {
|
|
|
2530
2728
|
],
|
|
2531
2729
|
dash: "M12 3V21"
|
|
2532
2730
|
}
|
|
2533
|
-
},
|
|
2731
|
+
}, Xr = {
|
|
2534
2732
|
candlestick: {
|
|
2535
2733
|
d: "M8 3.5V7M8 16V20.5M16 5V8.5M16 15.5V19",
|
|
2536
2734
|
fills: ["M6.5 7h3a1 1 0 0 1 1 1v7a1 1 0 0 1-1 1h-3a1 1 0 0 1-1-1V8a1 1 0 0 1 1-1z", "M14.5 8.5h3a1 1 0 0 1 1 1v5a1 1 0 0 1-1 1h-3a1 1 0 0 1-1-1v-5a1 1 0 0 1 1-1z"]
|
|
@@ -2597,21 +2795,21 @@ var Lr = {
|
|
|
2597
2795
|
"M16 4.5h3v6h-3z"
|
|
2598
2796
|
]
|
|
2599
2797
|
}
|
|
2600
|
-
},
|
|
2601
|
-
function
|
|
2602
|
-
let t =
|
|
2798
|
+
}, Zr = 1.75, Qr = .22, $r = /* @__PURE__ */ new WeakMap();
|
|
2799
|
+
function ei(e) {
|
|
2800
|
+
let t = $r.get(e);
|
|
2603
2801
|
if (t) return t;
|
|
2604
2802
|
let n = "";
|
|
2605
|
-
e.soft && (n += `<path d="${e.soft}" fill="currentColor" fill-opacity="${
|
|
2803
|
+
e.soft && (n += `<path d="${e.soft}" fill="currentColor" fill-opacity="${Qr}" stroke="none"/>`);
|
|
2606
2804
|
for (let t of e.fills ?? []) n += `<path d="${t}" fill="currentColor" stroke="none"/>`;
|
|
2607
2805
|
e.d && (n += `<path d="${e.d}"/>`), e.dash && (n += `<path d="${e.dash}" stroke-dasharray="2 2.5"/>`);
|
|
2608
|
-
for (let [t, r, i =
|
|
2609
|
-
return
|
|
2806
|
+
for (let [t, r, i = Zr] of e.dots ?? []) n += `<circle cx="${t}" cy="${r}" r="${i}" fill="currentColor" stroke="none"/>`;
|
|
2807
|
+
return $r.set(e, n), n;
|
|
2610
2808
|
}
|
|
2611
|
-
function
|
|
2612
|
-
return `<svg xmlns="http://www.w3.org/2000/svg" width="${t}" height="${t}" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false">${
|
|
2809
|
+
function ti(e, t) {
|
|
2810
|
+
return `<svg xmlns="http://www.w3.org/2000/svg" width="${t}" height="${t}" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false">${ei(e)}</svg>`;
|
|
2613
2811
|
}
|
|
2614
2812
|
//#endregion
|
|
2615
|
-
export { t as CHART_STYLE_KEYS,
|
|
2813
|
+
export { t as CHART_STYLE_KEYS, Xr as CHART_TYPE_ICONS, bn as DARK_PRICE_LIMITS, B as DARK_TERMINAL, Cn as DARK_THEME, Yn as DEFAULT_BAR_SPACING, Jn as DEFAULT_BAR_WIDTH, Un as DEFAULT_CHART_OPTIONS, n as DEFAULT_DRAWING_STYLE, cn as DEFAULT_FONT_FAMILY, $n as DEFAULT_PANEL_HEIGHT, o as DEFAULT_RECONNECT, i as DEFAULT_SIGNAL_STYLE, s as DEFAULT_STREAM_CONFIG, qn as DEFAULT_TIMEFRAME_FAVORITES, a as DEFAULT_TRADE_ZONE_STYLE, r as DEFAULT_TRADING_CONFIG, Yr as DRAWING_TOOL_ICONS, tr as FIBONACCI, gr as HNX_SESSIONS, hr as HOSE_SESSIONS, Zr as ICON_DOT_RADIUS, Qr as ICON_SOFT_OPACITY, yr as KRX_SESSIONS, pr as KR_COLORS, xn as LIGHT_PRICE_LIMITS, wn as LIGHT_THEME, e as LayerType, jr as MARKET_CRYPTO, Tr as MARKET_HNX, Cr as MARKET_HOSE, wr as MARKET_HOSE_ETF, Or as MARKET_KRX, kr as MARKET_NXT, Mr as MARKET_NYSE, Ar as MARKET_UPBIT_KRW, Er as MARKET_UPCOM, Dr as MARKET_VN30F, Qn as MIN_PANEL_HEIGHT, ce as MS_TIME_THRESHOLD, br as NXT_SESSIONS, er as PHI, Xn as PRICE_AXIS_WIDTH, Ct as PRICE_SOURCES, ln as SANS_FONT_FAMILY, I as TC_PALETTE, Sn as TC_SERIES_COLORS, Wn as TIMEFRAMES_CRYPTO, Kn as TIMEFRAMES_FOREX, Gn as TIMEFRAMES_STOCK, Zn as TIME_AXIS_HEIGHT, Jr as UI_ICONS, _r as UPCOM_SESSIONS, vr as VN30F_SESSIONS, J as VN_COLORS, dn as VOLUME_ALPHA, Ge as alignToTimeframe, ht as autoPricePrecision, dt as barDateParts, ut as barDateZone, le as barTimeUnit, Ye as barsAreDaily, Hn as chartStyleValue, re as clamp, Lr as computePriceLimits, ge as computePriceRange, se as computeTickStep, g as contrastRatio, Pr as createMarketTheme, Nr as createVNTheme, St as detectPrecision, Yt as drawingOption, W as en, pe as findBarIndex, he as fitPriceRange, vt as formatFraction, q as formatNumber, k as formatPrice, _t as formatPriceScaleLabel, We as formatTimestamp, ur as formatVND, xt as formatVolume, fr as formatVolumeLoc, yt as fractionTick, Hr as getCurrentSession, or as getLocale, lr as getLocaleStrings, ve as hexToRgba, ti as iconSvg, Dt as indicatorSource, we as inkOn, ae as inverseLerp, qe as isDateOnly, wt as isPriceSource, Ue as isTimeFrame, x as isUtcTimeZone, Ne as isValidTimeZone, ie as lerp, be as lerpColor, Ln as lineDash, Vt as marketStatus, _e as mergeBar, p as niceNumber, de as normalizeBar, ue as normalizeBarTime, S as offsetAt, me as padPriceRange, Ot as parseIndicatorSource, w as parseTimeframe, nr as phiStep, Ft as pickBaseTimeframe, bt as priceFormatterFor, Fr as priceStepAt, mt as priceTagText, Lt as rankSymbols, Nn as readChartStyleOverrides, sn as readChartTypeOptions, In as readIndicatorPlotStyles, ne as readNews, Pn as readPaneStyle, l as readQuote, Ce as readableOn, cr as registerLocale, jt as resampleBars, zn as resolveChartTheme, Xt as resolveDrawingOptions, V as resolveVolumeColors, Z as roundToPriceStep, oe as roundToStep, qt as sanitizeDrawingOptions, an as sanitizeDrawingStyle, Rr as scaleMarketPrices, j as sessionMinute, ar as setLocale, fe as sliceVisibleData, Tt as sourcePrice, Rt as stepDecimals, zt as symbolTimeZone, sr as t, He as tickBarCount, Ke as timeParts, ct as timeframeBucketStart, at as timeframeFollowsDays, ot as timeframeSpansDays, T as timeframeToMs, Xe as tzLabel, rr as vi, qr as vn30fContracts, Kr as vn30fLastTradingDay, L as volumeColor, Ie as wallToUtc, m as withAlpha, b as zoneOffsetMinutes, Re as zonedDateFormatter };
|
|
2616
2814
|
|
|
2617
2815
|
//# sourceMappingURL=index.js.map
|