@tradecanvas/commons 1.63.0 → 1.64.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/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +225 -221
- package/dist/index.js.map +1 -1
- package/dist/types/drawing.d.ts +10 -1
- package/dist/types/drawing.d.ts.map +1 -1
- package/dist/types/rendering.d.ts +6 -0
- package/dist/types/rendering.d.ts.map +1 -1
- package/dist/utils/drawingStyle.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -407,7 +407,7 @@ function Ee(e, t, n) {
|
|
|
407
407
|
}
|
|
408
408
|
//#endregion
|
|
409
409
|
//#region src/utils/timezone.ts
|
|
410
|
-
var h = 6e4,
|
|
410
|
+
var h = 6e4, De = 1440 * h, g = 15 * h, Oe = 8192, ke = 7 * De, Ae = 4096, je = new Set([
|
|
411
411
|
"UTC",
|
|
412
412
|
"Etc/UTC",
|
|
413
413
|
"GMT",
|
|
@@ -418,9 +418,9 @@ var h = 6e4, g = 1440 * h, _ = 15 * h, De = 8192, Oe = 7 * g, ke = 4096, Ae = ne
|
|
|
418
418
|
"Etc/Universal",
|
|
419
419
|
"Zulu",
|
|
420
420
|
"Etc/Zulu"
|
|
421
|
-
]),
|
|
422
|
-
function
|
|
423
|
-
let t =
|
|
421
|
+
]), Me = /* @__PURE__ */ new Map(), _ = /* @__PURE__ */ new Map(), Ne = /* @__PURE__ */ new Map();
|
|
422
|
+
function Pe(e) {
|
|
423
|
+
let t = Me.get(e);
|
|
424
424
|
return t || (t = new Intl.DateTimeFormat("en-US", {
|
|
425
425
|
timeZone: e,
|
|
426
426
|
hourCycle: "h23",
|
|
@@ -430,34 +430,34 @@ function Ne(e) {
|
|
|
430
430
|
hour: "numeric",
|
|
431
431
|
minute: "numeric",
|
|
432
432
|
second: "numeric"
|
|
433
|
-
}),
|
|
433
|
+
}), Me.set(e, t)), t;
|
|
434
434
|
}
|
|
435
|
-
function
|
|
435
|
+
function Fe(e) {
|
|
436
436
|
if (!e) return !1;
|
|
437
437
|
try {
|
|
438
|
-
return
|
|
438
|
+
return Pe(e), !0;
|
|
439
439
|
} catch {
|
|
440
440
|
return !1;
|
|
441
441
|
}
|
|
442
442
|
}
|
|
443
|
-
function
|
|
444
|
-
if (!Number.isFinite(t) ||
|
|
445
|
-
let n =
|
|
446
|
-
n || (n = /* @__PURE__ */ new Map(),
|
|
447
|
-
let r = Math.floor(t /
|
|
448
|
-
return i || (i =
|
|
449
|
-
}
|
|
450
|
-
function
|
|
451
|
-
let n =
|
|
443
|
+
function v(e, t) {
|
|
444
|
+
if (!Number.isFinite(t) || je.has(e)) return 0;
|
|
445
|
+
let n = Ne.get(e);
|
|
446
|
+
n || (n = /* @__PURE__ */ new Map(), Ne.set(e, n));
|
|
447
|
+
let r = Math.floor(t / ke), i = n.get(r);
|
|
448
|
+
return i || (i = Ie(e, r * ke), n.size >= Ae && n.clear(), n.set(r, i)), t < i.change ? i.before : i.after;
|
|
449
|
+
}
|
|
450
|
+
function Ie(e, t) {
|
|
451
|
+
let n = y(e, t), r = t + ke - g, i = y(e, r);
|
|
452
452
|
if (i === n) return {
|
|
453
453
|
before: n,
|
|
454
454
|
change: Infinity,
|
|
455
455
|
after: i
|
|
456
456
|
};
|
|
457
457
|
let a = t;
|
|
458
|
-
for (; r - a >
|
|
459
|
-
let t = a + Math.floor((r - a) /
|
|
460
|
-
|
|
458
|
+
for (; r - a > g;) {
|
|
459
|
+
let t = a + Math.floor((r - a) / g / 2) * g;
|
|
460
|
+
y(e, t) === n ? a = t : r = t;
|
|
461
461
|
}
|
|
462
462
|
return {
|
|
463
463
|
before: n,
|
|
@@ -465,11 +465,11 @@ function Fe(e, t) {
|
|
|
465
465
|
after: i
|
|
466
466
|
};
|
|
467
467
|
}
|
|
468
|
-
function
|
|
469
|
-
let n = Math.floor(t /
|
|
468
|
+
function y(e, t) {
|
|
469
|
+
let n = Math.floor(t / g), r = `${e}|${n}`, i = _.get(r);
|
|
470
470
|
if (i !== void 0) return i;
|
|
471
|
-
let a = n *
|
|
472
|
-
for (let t of
|
|
471
|
+
let a = n * g, o = 1970, s = 1, c = 1, l = 0, u = 0, d = 0;
|
|
472
|
+
for (let t of Pe(e).formatToParts(new Date(a))) {
|
|
473
473
|
let e = Number(t.value);
|
|
474
474
|
switch (t.type) {
|
|
475
475
|
case "year":
|
|
@@ -493,23 +493,23 @@ function b(e, t) {
|
|
|
493
493
|
}
|
|
494
494
|
}
|
|
495
495
|
let ee = Math.round((Date.UTC(o, s - 1, c, l, u, d) - a) / h);
|
|
496
|
-
return
|
|
496
|
+
return _.size >= Oe && _.clear(), _.set(r, ee), ee;
|
|
497
497
|
}
|
|
498
|
-
function
|
|
499
|
-
return e === 0 || typeof e == "string" &&
|
|
498
|
+
function b(e) {
|
|
499
|
+
return e === 0 || typeof e == "string" && je.has(e);
|
|
500
500
|
}
|
|
501
|
-
function
|
|
502
|
-
return e === null ? -new Date(t).getTimezoneOffset() : typeof e == "number" ? e :
|
|
501
|
+
function x(e, t) {
|
|
502
|
+
return e === null ? -new Date(t).getTimezoneOffset() : typeof e == "number" ? e : v(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 Le(e, t) {
|
|
505
|
+
let n = e - x(t, e - De) * h;
|
|
506
|
+
if (n + x(t, n) * h === e) return n;
|
|
507
|
+
let r = e - x(t, e + De) * h;
|
|
508
|
+
return r + x(t, r) * h === e ? r : n;
|
|
509
|
+
}
|
|
510
|
+
var Re = /* @__PURE__ */ new Map();
|
|
511
|
+
function ze(e, t, n) {
|
|
512
|
+
let r = `${e}|${JSON.stringify(t)}|${n === null ? "local" : typeof n == "number" ? `fixed:${n}` : n}`, i = Re.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 Re(e, t, n) {
|
|
|
524
524
|
});
|
|
525
525
|
}
|
|
526
526
|
let s = typeof n == "number" ? n * h : 0;
|
|
527
|
-
return i = (e) => o.format(new Date(e + s)),
|
|
527
|
+
return i = (e) => o.format(new Date(e + s)), Re.set(r, i), i;
|
|
528
528
|
}
|
|
529
529
|
//#endregion
|
|
530
530
|
//#region src/utils/time.ts
|
|
531
|
-
var
|
|
531
|
+
var Be = {
|
|
532
532
|
"1s": 1e3,
|
|
533
533
|
"5s": 5e3,
|
|
534
534
|
"15s": 15e3,
|
|
@@ -555,16 +555,16 @@ var ze = {
|
|
|
555
555
|
"3M": 7776e6,
|
|
556
556
|
"6M": 15552e6,
|
|
557
557
|
"12M": 31536e6
|
|
558
|
-
},
|
|
558
|
+
}, S = {
|
|
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
|
+
}, Ve = /^([1-9]\d*)([smhdwM])$/;
|
|
566
|
+
function C(e) {
|
|
567
|
+
let t = Ve.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 w(e) {
|
|
|
572
572
|
unit: t[2]
|
|
573
573
|
} : null;
|
|
574
574
|
}
|
|
575
|
-
var
|
|
576
|
-
function
|
|
575
|
+
var He = 1e6;
|
|
576
|
+
function Ue(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 <= He ? n : null;
|
|
581
581
|
}
|
|
582
|
-
function
|
|
583
|
-
return
|
|
582
|
+
function We(e) {
|
|
583
|
+
return C(e) !== null;
|
|
584
584
|
}
|
|
585
|
-
function
|
|
586
|
-
let t =
|
|
585
|
+
function w(e) {
|
|
586
|
+
let t = Be[e];
|
|
587
587
|
if (t !== void 0) return t;
|
|
588
|
-
let n =
|
|
589
|
-
return n ? n.count *
|
|
588
|
+
let n = C(e);
|
|
589
|
+
return n ? n.count * S[n.unit] : NaN;
|
|
590
590
|
}
|
|
591
|
-
function
|
|
592
|
-
let n = new Date(e), r =
|
|
591
|
+
function Ge(e, t) {
|
|
592
|
+
let n = new Date(e), r = w(t);
|
|
593
593
|
return r >= 864e5 ? n.toLocaleDateString(void 0, {
|
|
594
594
|
month: "short",
|
|
595
595
|
day: "numeric"
|
|
@@ -602,11 +602,11 @@ function We(e, t) {
|
|
|
602
602
|
second: "2-digit"
|
|
603
603
|
});
|
|
604
604
|
}
|
|
605
|
-
function
|
|
606
|
-
let n =
|
|
605
|
+
function Ke(e, t) {
|
|
606
|
+
let n = w(t);
|
|
607
607
|
return Math.floor(e / n) * n;
|
|
608
608
|
}
|
|
609
|
-
function
|
|
609
|
+
function qe(e, t) {
|
|
610
610
|
if (t === null) {
|
|
611
611
|
let t = new Date(e);
|
|
612
612
|
return {
|
|
@@ -617,7 +617,7 @@ function Ke(e, t) {
|
|
|
617
617
|
minutes: t.getMinutes()
|
|
618
618
|
};
|
|
619
619
|
}
|
|
620
|
-
let n = new Date(e +
|
|
620
|
+
let n = new Date(e + x(t, e) * 6e4);
|
|
621
621
|
return {
|
|
622
622
|
year: n.getUTCFullYear(),
|
|
623
623
|
month: n.getUTCMonth() + 1,
|
|
@@ -626,11 +626,11 @@ function Ke(e, t) {
|
|
|
626
626
|
minutes: n.getUTCMinutes()
|
|
627
627
|
};
|
|
628
628
|
}
|
|
629
|
-
function
|
|
629
|
+
function Je(e) {
|
|
630
630
|
return e.hours === 0 && e.minutes === 0;
|
|
631
631
|
}
|
|
632
|
-
var
|
|
633
|
-
function
|
|
632
|
+
var Ye = 20 * 36e5;
|
|
633
|
+
function Xe(e) {
|
|
634
634
|
let t = Math.min(e.length, 64);
|
|
635
635
|
if (t < 2) return;
|
|
636
636
|
let n = ue(e), r = Infinity;
|
|
@@ -638,59 +638,59 @@ function Ye(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 >= Ye;
|
|
642
642
|
}
|
|
643
|
-
function
|
|
644
|
-
let n =
|
|
643
|
+
function Ze(e, t = Date.now()) {
|
|
644
|
+
let n = x(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 Qe = Date.UTC(1970, 0, 5), $e = S.m, T = S.d, et = 24, tt = {
|
|
648
648
|
count: 1,
|
|
649
649
|
unit: "m"
|
|
650
|
-
},
|
|
651
|
-
function
|
|
652
|
-
let t =
|
|
653
|
-
return t || (t =
|
|
650
|
+
}, nt = 256, E = /* @__PURE__ */ new Map();
|
|
651
|
+
function rt(e) {
|
|
652
|
+
let t = E.get(e);
|
|
653
|
+
return t || (t = C(e) ?? tt, E.size >= nt && E.clear(), E.set(e, t)), t;
|
|
654
654
|
}
|
|
655
|
-
function
|
|
655
|
+
function it({ unit: e }) {
|
|
656
656
|
return e === "d" || e === "w" || e === "M";
|
|
657
657
|
}
|
|
658
|
-
function it(e) {
|
|
659
|
-
return e.unit === "h" ? e.count > 1 && $e % e.count === 0 : rt(e);
|
|
660
|
-
}
|
|
661
658
|
function at(e) {
|
|
662
|
-
return it(
|
|
659
|
+
return e.unit === "h" ? e.count > 1 && et % e.count === 0 : it(e);
|
|
663
660
|
}
|
|
664
661
|
function ot(e) {
|
|
665
|
-
return rt(
|
|
662
|
+
return at(rt(e));
|
|
666
663
|
}
|
|
667
664
|
function st(e) {
|
|
668
|
-
return
|
|
665
|
+
return it(rt(e));
|
|
666
|
+
}
|
|
667
|
+
function ct(e) {
|
|
668
|
+
return e !== void 0 && !b(e);
|
|
669
669
|
}
|
|
670
|
-
function
|
|
671
|
-
let r =
|
|
672
|
-
return !
|
|
670
|
+
function D(e, t, n = 1) {
|
|
671
|
+
let r = rt(t), i = typeof n == "number" ? n : n.weekStartsOn ?? 1, a = typeof n == "number" ? void 0 : n.timeZone;
|
|
672
|
+
return !ct(a) || !at(r) || typeof n == "object" && n.dates && e % T === 0 ? lt(e, r, i) : Le(lt(e + x(a, e) * $e, r, i), a);
|
|
673
673
|
}
|
|
674
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 * S[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 - Qe) / (7 * T));
|
|
684
|
+
return Qe + Math.floor(a / t) * t * 7 * T;
|
|
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
689
|
function ut(e, t, n) {
|
|
690
|
-
return e %
|
|
690
|
+
return e % T === 0 ? 0 : n && D(e, "1d", { timeZone: n }) === e ? n : t;
|
|
691
691
|
}
|
|
692
692
|
function dt(e, t, n) {
|
|
693
|
-
return
|
|
693
|
+
return qe(e, ut(e, t, n));
|
|
694
694
|
}
|
|
695
695
|
//#endregion
|
|
696
696
|
//#region src/utils/precision.ts
|
|
@@ -794,7 +794,7 @@ var kt = 864e5, At = 6e4;
|
|
|
794
794
|
function jt(e, t, n = 1) {
|
|
795
795
|
let r = Mt(e, t, n), i = [], a = null;
|
|
796
796
|
for (let n of e) {
|
|
797
|
-
let e =
|
|
797
|
+
let e = D(n.time, t, r);
|
|
798
798
|
a === null || e !== a.time ? (a = {
|
|
799
799
|
time: e,
|
|
800
800
|
open: n.open,
|
|
@@ -807,29 +807,29 @@ function jt(e, t, n = 1) {
|
|
|
807
807
|
return i;
|
|
808
808
|
}
|
|
809
809
|
function Mt(e, t, n) {
|
|
810
|
-
return typeof n == "number" || n.timeZone === void 0 || n.dates !== void 0 ||
|
|
810
|
+
return typeof n == "number" || n.timeZone === void 0 || n.dates !== void 0 || b(n.timeZone) || !ot(t) ? n : {
|
|
811
811
|
...n,
|
|
812
|
-
dates:
|
|
812
|
+
dates: Xe(e) === !0
|
|
813
813
|
};
|
|
814
814
|
}
|
|
815
815
|
var Nt = (e) => e === "s" || e === "m" || e === "h" || e === "d";
|
|
816
816
|
function Pt(e, t) {
|
|
817
|
-
let n =
|
|
817
|
+
let n = C(e), r = C(t);
|
|
818
818
|
if (!n || !r) return !1;
|
|
819
|
-
let i =
|
|
820
|
-
return n.unit === "d" && n.count > 1 ? !1 : Nt(r.unit) ? Nt(n.unit) &&
|
|
819
|
+
let i = w(e);
|
|
820
|
+
return n.unit === "d" && n.count > 1 ? !1 : Nt(r.unit) ? Nt(n.unit) && w(t) % i === 0 : n.unit === r.unit ? r.count % n.count === 0 : Nt(n.unit) && kt % i === 0;
|
|
821
821
|
}
|
|
822
822
|
function Ft(e, t) {
|
|
823
|
-
let n =
|
|
823
|
+
let n = w(e);
|
|
824
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) => x(t, e) * At % n === 0);
|
|
827
827
|
}
|
|
828
828
|
function It(e, t, n = {}) {
|
|
829
|
-
let { timeZone: r } = n, i = r !== void 0 && !
|
|
829
|
+
let { timeZone: r } = n, i = r !== void 0 && !b(r) && ot(e) ? r : void 0, a = null, o = 0;
|
|
830
830
|
for (let n of t) {
|
|
831
831
|
if (!Pt(n, e) || i !== void 0 && !Ft(n, i)) continue;
|
|
832
|
-
let t =
|
|
832
|
+
let t = w(n);
|
|
833
833
|
t > o && (a = n, o = t);
|
|
834
834
|
}
|
|
835
835
|
return a;
|
|
@@ -886,11 +886,11 @@ function Ut(e, t) {
|
|
|
886
886
|
days: Array.isArray(e.days) ? e.days : null
|
|
887
887
|
}];
|
|
888
888
|
});
|
|
889
|
-
if (!n || !
|
|
889
|
+
if (!n || !Fe(n) || r.length === 0 || !Number.isFinite(t)) return {
|
|
890
890
|
state: "always",
|
|
891
891
|
next: null
|
|
892
892
|
};
|
|
893
|
-
let i =
|
|
893
|
+
let i = v(n, t) * j, a = Math.floor((t + i) / A) * A, o = (e) => e - v(n, e - v(n, e - i) * j) * j, s = [];
|
|
894
894
|
for (let e = -1; e <= Ht; e++) {
|
|
895
895
|
let t = a + e * A, n = (Math.floor(t / A) + 4) % 7;
|
|
896
896
|
for (let e of r) {
|
|
@@ -977,24 +977,28 @@ var $t = [
|
|
|
977
977
|
"left",
|
|
978
978
|
"center",
|
|
979
979
|
"right"
|
|
980
|
+
], cn = [
|
|
981
|
+
"top",
|
|
982
|
+
"middle",
|
|
983
|
+
"bottom"
|
|
980
984
|
];
|
|
981
|
-
function
|
|
985
|
+
function M(e, t, n) {
|
|
982
986
|
return typeof e == "number" && Number.isFinite(e) ? Math.min(n, Math.max(t, e)) : void 0;
|
|
983
987
|
}
|
|
984
|
-
function
|
|
988
|
+
function N(e) {
|
|
985
989
|
return typeof e == "string" && e.length > 0 && e.length <= en ? e : void 0;
|
|
986
990
|
}
|
|
987
991
|
function ln(e) {
|
|
988
992
|
if (typeof e != "object" || !e) return {};
|
|
989
|
-
let t = e, n = {}, r =
|
|
993
|
+
let t = e, n = {}, r = N(t.color);
|
|
990
994
|
r !== void 0 && (n.color = r);
|
|
991
|
-
let i =
|
|
995
|
+
let i = M(t.lineWidth, .5, nn);
|
|
992
996
|
i !== void 0 && (n.lineWidth = i), $t.includes(t.lineStyle) && (n.lineStyle = t.lineStyle);
|
|
993
|
-
let a =
|
|
997
|
+
let a = N(t.fillColor);
|
|
994
998
|
a !== void 0 && (n.fillColor = a);
|
|
995
|
-
let o =
|
|
999
|
+
let o = M(t.fillOpacity, 0, 1);
|
|
996
1000
|
o !== void 0 && (n.fillOpacity = o);
|
|
997
|
-
let s =
|
|
1001
|
+
let s = M(t.fontSize, 6, rn);
|
|
998
1002
|
s !== void 0 && (n.fontSize = s), typeof t.text == "string" && (n.text = t.text.slice(0, tn));
|
|
999
1003
|
for (let e of [
|
|
1000
1004
|
"bold",
|
|
@@ -1002,46 +1006,46 @@ function ln(e) {
|
|
|
1002
1006
|
"textBackground",
|
|
1003
1007
|
"textBorder"
|
|
1004
1008
|
]) typeof t[e] == "boolean" && (n[e] = t[e]);
|
|
1005
|
-
sn.includes(t.textAlign) && (n.textAlign = t.textAlign);
|
|
1006
|
-
let c =
|
|
1009
|
+
sn.includes(t.textAlign) && (n.textAlign = t.textAlign), cn.includes(t.textVAlign) && (n.textVAlign = t.textVAlign);
|
|
1010
|
+
let c = N(t.textColor);
|
|
1007
1011
|
c !== void 0 && (n.textColor = c);
|
|
1008
|
-
let l =
|
|
1012
|
+
let l = N(t.borderColor);
|
|
1009
1013
|
return l !== void 0 && (n.borderColor = l), typeof t.textWrap == "number" && Number.isFinite(t.textWrap) && t.textWrap >= 0 && (n.textWrap = t.textWrap === 0 ? 0 : Math.min(an, Math.max(on, t.textWrap))), n;
|
|
1010
1014
|
}
|
|
1011
1015
|
//#endregion
|
|
1012
1016
|
//#region src/utils/chartTypeOptions.ts
|
|
1013
|
-
var
|
|
1017
|
+
var P = (e) => typeof e == "number" && Number.isFinite(e) && e > 0, un = (e, t, n) => typeof e == "number" && Number.isInteger(e) && e >= t && e <= n, F = (e) => typeof e == "object" && !!e && !Array.isArray(e);
|
|
1014
1018
|
function dn(e) {
|
|
1015
|
-
if (!
|
|
1019
|
+
if (!F(e)) return {};
|
|
1016
1020
|
let t = {};
|
|
1017
|
-
if (
|
|
1021
|
+
if (F(e.renko)) {
|
|
1018
1022
|
let { boxSize: n, atrPeriod: r } = e.renko;
|
|
1019
1023
|
t.renko = {
|
|
1020
|
-
...
|
|
1024
|
+
...P(n) || n === "atr" ? { boxSize: n } : {},
|
|
1021
1025
|
...un(r, 1, 500) ? { atrPeriod: r } : {}
|
|
1022
1026
|
};
|
|
1023
1027
|
}
|
|
1024
|
-
if (
|
|
1028
|
+
if (F(e.lineBreak)) {
|
|
1025
1029
|
let { lines: n } = e.lineBreak;
|
|
1026
1030
|
t.lineBreak = un(n, 1, 10) ? { lines: n } : {};
|
|
1027
1031
|
}
|
|
1028
|
-
if (
|
|
1032
|
+
if (F(e.kagi)) {
|
|
1029
1033
|
let { reversal: n, reversalType: r } = e.kagi;
|
|
1030
1034
|
t.kagi = {
|
|
1031
|
-
...
|
|
1035
|
+
...P(n) ? { reversal: n } : {},
|
|
1032
1036
|
...r === "percent" || r === "price" ? { reversalType: r } : {}
|
|
1033
1037
|
};
|
|
1034
1038
|
}
|
|
1035
|
-
if (
|
|
1039
|
+
if (F(e.pointAndFigure)) {
|
|
1036
1040
|
let { boxSize: n, reversal: r } = e.pointAndFigure;
|
|
1037
1041
|
t.pointAndFigure = {
|
|
1038
|
-
...
|
|
1042
|
+
...P(n) || n === "auto" ? { boxSize: n } : {},
|
|
1039
1043
|
...un(r, 1, 10) ? { reversal: r } : {}
|
|
1040
1044
|
};
|
|
1041
1045
|
}
|
|
1042
|
-
if (
|
|
1046
|
+
if (F(e.rangeBars)) {
|
|
1043
1047
|
let { range: n } = e.rangeBars;
|
|
1044
|
-
t.rangeBars =
|
|
1048
|
+
t.rangeBars = P(n) || n === "auto" ? { range: n } : {};
|
|
1045
1049
|
}
|
|
1046
1050
|
return t;
|
|
1047
1051
|
}
|
|
@@ -1052,7 +1056,7 @@ var fn = "'Cascadia Mono', 'SF Mono', ui-monospace, Menlo, Consolas, monospace",
|
|
|
1052
1056
|
sizeSmall: 11,
|
|
1053
1057
|
sizeMedium: 13,
|
|
1054
1058
|
sizeLarge: 15
|
|
1055
|
-
},
|
|
1059
|
+
}, I = {
|
|
1056
1060
|
amber: "#f2a93b",
|
|
1057
1061
|
up: "#1c9e6d",
|
|
1058
1062
|
down: "#e8505b",
|
|
@@ -1064,10 +1068,10 @@ var fn = "'Cascadia Mono', 'SF Mono', ui-monospace, Menlo, Consolas, monospace",
|
|
|
1064
1068
|
neutral: "#7d8696",
|
|
1065
1069
|
ink: "#131416"
|
|
1066
1070
|
}, hn = .22;
|
|
1067
|
-
function
|
|
1071
|
+
function L(e) {
|
|
1068
1072
|
return p(e, hn);
|
|
1069
1073
|
}
|
|
1070
|
-
var gn = "#fbfaf6",
|
|
1074
|
+
var gn = "#fbfaf6", R = "#1b1d21", _n = "#131416", z = "#e6e3dc", vn = "#1f7a5c", yn = "#b8423f", bn = "#4fae8a", xn = "#e2706b", Sn = "#6a6966", Cn = "#8d8a84", wn = {
|
|
1071
1075
|
ceiling: "#FF00FF",
|
|
1072
1076
|
floor: "#00FFFF",
|
|
1073
1077
|
reference: "#FFD700"
|
|
@@ -1076,15 +1080,15 @@ var gn = "#fbfaf6", L = "#1b1d21", _n = "#131416", R = "#e6e3dc", vn = "#1f7a5c"
|
|
|
1076
1080
|
floor: "#0e7490",
|
|
1077
1081
|
reference: "#8a6a00"
|
|
1078
1082
|
}, En = [
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1083
|
+
I.blue,
|
|
1084
|
+
I.ochre,
|
|
1085
|
+
I.violet,
|
|
1086
|
+
I.cyan,
|
|
1087
|
+
I.rose
|
|
1084
1088
|
], Dn = {
|
|
1085
1089
|
name: "dark",
|
|
1086
1090
|
background: _n,
|
|
1087
|
-
text:
|
|
1091
|
+
text: z,
|
|
1088
1092
|
textSecondary: "#8d8b86",
|
|
1089
1093
|
grid: "#1d1e21",
|
|
1090
1094
|
crosshair: Sn,
|
|
@@ -1092,11 +1096,11 @@ var gn = "#fbfaf6", L = "#1b1d21", _n = "#131416", R = "#e6e3dc", vn = "#1f7a5c"
|
|
|
1092
1096
|
candleDown: xn,
|
|
1093
1097
|
candleUpWick: bn,
|
|
1094
1098
|
candleDownWick: xn,
|
|
1095
|
-
lineColor:
|
|
1096
|
-
areaTopColor: p(
|
|
1097
|
-
areaBottomColor: p(
|
|
1098
|
-
volumeUp: p(
|
|
1099
|
-
volumeDown: p(
|
|
1099
|
+
lineColor: z,
|
|
1100
|
+
areaTopColor: p(z, .14),
|
|
1101
|
+
areaBottomColor: p(z, 0),
|
|
1102
|
+
volumeUp: p(z, .14),
|
|
1103
|
+
volumeDown: p(z, .08),
|
|
1100
1104
|
axisLine: "#2a2b2f",
|
|
1101
1105
|
axisLabel: "#a9a6a0",
|
|
1102
1106
|
axisLabelBackground: "#232427",
|
|
@@ -1105,7 +1109,7 @@ var gn = "#fbfaf6", L = "#1b1d21", _n = "#131416", R = "#e6e3dc", vn = "#1f7a5c"
|
|
|
1105
1109
|
}, On = {
|
|
1106
1110
|
name: "light",
|
|
1107
1111
|
background: gn,
|
|
1108
|
-
text:
|
|
1112
|
+
text: R,
|
|
1109
1113
|
textSecondary: "#6b6f76",
|
|
1110
1114
|
grid: "#ece8df",
|
|
1111
1115
|
crosshair: Cn,
|
|
@@ -1113,17 +1117,17 @@ var gn = "#fbfaf6", L = "#1b1d21", _n = "#131416", R = "#e6e3dc", vn = "#1f7a5c"
|
|
|
1113
1117
|
candleDown: yn,
|
|
1114
1118
|
candleUpWick: vn,
|
|
1115
1119
|
candleDownWick: yn,
|
|
1116
|
-
lineColor:
|
|
1117
|
-
areaTopColor: p(
|
|
1118
|
-
areaBottomColor: p(
|
|
1119
|
-
volumeUp: p(
|
|
1120
|
-
volumeDown: p(
|
|
1120
|
+
lineColor: R,
|
|
1121
|
+
areaTopColor: p(R, .12),
|
|
1122
|
+
areaBottomColor: p(R, 0),
|
|
1123
|
+
volumeUp: p(R, .13),
|
|
1124
|
+
volumeDown: p(R, .08),
|
|
1121
1125
|
axisLine: "#cfcac0",
|
|
1122
1126
|
axisLabel: "#4a4e57",
|
|
1123
1127
|
axisLabelBackground: "#eeebe3",
|
|
1124
1128
|
font: mn,
|
|
1125
1129
|
priceLimits: Tn
|
|
1126
|
-
},
|
|
1130
|
+
}, B = {
|
|
1127
1131
|
name: "terminal",
|
|
1128
1132
|
background: "#0E0E0E",
|
|
1129
1133
|
text: "#C0C0C0",
|
|
@@ -1137,8 +1141,8 @@ var gn = "#fbfaf6", L = "#1b1d21", _n = "#131416", R = "#e6e3dc", vn = "#1f7a5c"
|
|
|
1137
1141
|
lineColor: "#3D8BFD",
|
|
1138
1142
|
areaTopColor: "rgba(61, 139, 253, 0.3)",
|
|
1139
1143
|
areaBottomColor: "rgba(61, 139, 253, 0.0)",
|
|
1140
|
-
volumeUp:
|
|
1141
|
-
volumeDown:
|
|
1144
|
+
volumeUp: L("#00FF87"),
|
|
1145
|
+
volumeDown: L("#FF3B4D"),
|
|
1142
1146
|
axisLine: "#1A1A1A",
|
|
1143
1147
|
axisLabel: "#8A8A8A",
|
|
1144
1148
|
axisLabelBackground: "#1A1A1A",
|
|
@@ -1148,11 +1152,11 @@ var gn = "#fbfaf6", L = "#1b1d21", _n = "#131416", R = "#e6e3dc", vn = "#1f7a5c"
|
|
|
1148
1152
|
sizeMedium: 12,
|
|
1149
1153
|
sizeLarge: 14
|
|
1150
1154
|
}
|
|
1151
|
-
}, kn = new Set([
|
|
1152
|
-
function
|
|
1155
|
+
}, kn = new Set([B.volumeUp, B.volumeDown]);
|
|
1156
|
+
function V(e) {
|
|
1153
1157
|
let t = (e, t) => {
|
|
1154
1158
|
if (!kn.has(e)) return e;
|
|
1155
|
-
let n =
|
|
1159
|
+
let n = L(t);
|
|
1156
1160
|
return n === t ? e : n;
|
|
1157
1161
|
};
|
|
1158
1162
|
return {
|
|
@@ -1171,12 +1175,12 @@ var An = [
|
|
|
1171
1175
|
/^[a-z]{3,30}$/i,
|
|
1172
1176
|
/^(?:rgba?|hsla?|hwb|lab|lch|oklab|oklch|color)\([0-9a-z.,%/\s-]*\)$/i
|
|
1173
1177
|
];
|
|
1174
|
-
function
|
|
1178
|
+
function H(e) {
|
|
1175
1179
|
return typeof e == "string" && e.length <= Mn && Pn.some((t) => t.test(e.trim()));
|
|
1176
1180
|
}
|
|
1177
1181
|
function Fn(e, t) {
|
|
1178
1182
|
switch (e) {
|
|
1179
|
-
case "color": return
|
|
1183
|
+
case "color": return H(t);
|
|
1180
1184
|
case "lineStyle": return An.includes(t);
|
|
1181
1185
|
case "width": return typeof t == "number" && Number.isFinite(t) && t > 0 && t <= jn;
|
|
1182
1186
|
case "boolean": return typeof t == "boolean";
|
|
@@ -1200,8 +1204,8 @@ function Ln(e) {
|
|
|
1200
1204
|
function Rn(e) {
|
|
1201
1205
|
if (typeof e != "object" || !e || Array.isArray(e)) return null;
|
|
1202
1206
|
let { background: t, separator: n } = e, r = {
|
|
1203
|
-
...
|
|
1204
|
-
...
|
|
1207
|
+
...H(t) ? { background: t } : {},
|
|
1208
|
+
...H(n) ? { separator: n } : {}
|
|
1205
1209
|
};
|
|
1206
1210
|
return Object.keys(r).length > 0 ? r : null;
|
|
1207
1211
|
}
|
|
@@ -1235,7 +1239,7 @@ function Hn(e, t, n) {
|
|
|
1235
1239
|
bottom: r("bottomColor") ?? t("series.area.bottomColor") ?? e.areaBottomColor
|
|
1236
1240
|
};
|
|
1237
1241
|
}
|
|
1238
|
-
function
|
|
1242
|
+
function U(e, t, n) {
|
|
1239
1243
|
return {
|
|
1240
1244
|
visible: e(`${t}.visible`) ?? n.visible,
|
|
1241
1245
|
color: e(`${t}.color`) ?? n.color,
|
|
@@ -1251,13 +1255,13 @@ function Un(e, t, n) {
|
|
|
1251
1255
|
title: l("panes.titleColor", i.textSecondary)
|
|
1252
1256
|
},
|
|
1253
1257
|
grid: {
|
|
1254
|
-
horizontal:
|
|
1258
|
+
horizontal: U(o, "grid.horizontal", {
|
|
1255
1259
|
visible: !0,
|
|
1256
1260
|
color: i.grid,
|
|
1257
1261
|
style: "solid",
|
|
1258
1262
|
width: 1
|
|
1259
1263
|
}),
|
|
1260
|
-
vertical:
|
|
1264
|
+
vertical: U(o, "grid.vertical", {
|
|
1261
1265
|
visible: !0,
|
|
1262
1266
|
color: i.grid,
|
|
1263
1267
|
style: "solid",
|
|
@@ -1265,13 +1269,13 @@ function Un(e, t, n) {
|
|
|
1265
1269
|
})
|
|
1266
1270
|
},
|
|
1267
1271
|
crosshair: {
|
|
1268
|
-
horizontal:
|
|
1272
|
+
horizontal: U(o, "crosshair.horizontal", {
|
|
1269
1273
|
visible: !0,
|
|
1270
1274
|
color: i.crosshair,
|
|
1271
1275
|
style: "solid",
|
|
1272
1276
|
width: 1
|
|
1273
1277
|
}),
|
|
1274
|
-
vertical:
|
|
1278
|
+
vertical: U(o, "crosshair.vertical", {
|
|
1275
1279
|
visible: !0,
|
|
1276
1280
|
color: i.crosshair,
|
|
1277
1281
|
style: "solid",
|
|
@@ -1362,8 +1366,8 @@ var Wn = {
|
|
|
1362
1366
|
"lastPrice.downColor": (e, t) => t.lastPrice.down,
|
|
1363
1367
|
"lastPrice.style": (e, t) => t.lastPrice.style,
|
|
1364
1368
|
"lastPrice.width": (e, t) => t.lastPrice.width,
|
|
1365
|
-
"volume.upColor": (e) =>
|
|
1366
|
-
"volume.downColor": (e) =>
|
|
1369
|
+
"volume.upColor": (e) => V(e).up,
|
|
1370
|
+
"volume.downColor": (e) => V(e).down,
|
|
1367
1371
|
"sessionBreaks.color": (e, t) => t.sessionBreaks.color,
|
|
1368
1372
|
"sessionBreaks.style": (e, t) => t.sessionBreaks.style,
|
|
1369
1373
|
"sessionBreaks.width": (e, t) => t.sessionBreaks.width,
|
|
@@ -1484,7 +1488,7 @@ function or(e, t, n = 1) {
|
|
|
1484
1488
|
}
|
|
1485
1489
|
//#endregion
|
|
1486
1490
|
//#region src/i18n/en.ts
|
|
1487
|
-
var
|
|
1491
|
+
var W = {
|
|
1488
1492
|
candlestick: "Candlestick",
|
|
1489
1493
|
line: "Line",
|
|
1490
1494
|
area: "Area",
|
|
@@ -1690,29 +1694,29 @@ var U = {
|
|
|
1690
1694
|
error: "Lỗi",
|
|
1691
1695
|
numberDecimalSeparator: ",",
|
|
1692
1696
|
numberGroupSeparator: "."
|
|
1693
|
-
},
|
|
1697
|
+
}, G = new Map([["en", W], ["vi", sr]]), K = "en", cr = W;
|
|
1694
1698
|
function lr(e) {
|
|
1695
|
-
|
|
1699
|
+
K = e, cr = G.get(e) ?? W;
|
|
1696
1700
|
}
|
|
1697
1701
|
function ur() {
|
|
1698
|
-
return
|
|
1702
|
+
return K;
|
|
1699
1703
|
}
|
|
1700
1704
|
function dr(e) {
|
|
1701
|
-
return cr[e] ??
|
|
1705
|
+
return cr[e] ?? W[e] ?? e;
|
|
1702
1706
|
}
|
|
1703
1707
|
function fr(e, t) {
|
|
1704
|
-
|
|
1708
|
+
G.set(e, t);
|
|
1705
1709
|
}
|
|
1706
1710
|
function pr(e) {
|
|
1707
|
-
return
|
|
1711
|
+
return G.get(e ?? K) ?? W;
|
|
1708
1712
|
}
|
|
1709
|
-
function
|
|
1710
|
-
let r =
|
|
1713
|
+
function q(e, t = 2, n) {
|
|
1714
|
+
let r = G.get(n ?? K) ?? W, i = r.numberDecimalSeparator, a = r.numberGroupSeparator, [o, s] = e.toFixed(t).split("."), c = o.startsWith("-"), l = c ? o.slice(1) : o, u = "";
|
|
1711
1715
|
for (let e = l.length - 1, t = 0; e >= 0; e--, t++) t > 0 && t % 3 == 0 && (u = a + u), u = l[e] + u;
|
|
1712
1716
|
return c && (u = "-" + u), s ? u + i + s : u;
|
|
1713
1717
|
}
|
|
1714
1718
|
function mr(e) {
|
|
1715
|
-
return
|
|
1719
|
+
return q(e, 0, "vi");
|
|
1716
1720
|
}
|
|
1717
1721
|
var hr = [
|
|
1718
1722
|
[0xe8d4a51000, "조"],
|
|
@@ -1726,29 +1730,29 @@ function _r(e, t, n) {
|
|
|
1726
1730
|
try {
|
|
1727
1731
|
return k(e, t, n);
|
|
1728
1732
|
} catch {
|
|
1729
|
-
return
|
|
1733
|
+
return q(e, t, "en");
|
|
1730
1734
|
}
|
|
1731
1735
|
}
|
|
1732
1736
|
function vr(e, t) {
|
|
1733
|
-
let n = t ??
|
|
1737
|
+
let n = t ?? K;
|
|
1734
1738
|
if (!Number.isFinite(e)) return String(e);
|
|
1735
1739
|
if (gr(n)) {
|
|
1736
|
-
for (let [t, r] of hr) if (Math.round(e / t * 100) >= 100) return
|
|
1737
|
-
return
|
|
1740
|
+
for (let [t, r] of hr) if (Math.round(e / t * 100) >= 100) return q(e / t, 2, n) + r;
|
|
1741
|
+
return q(e, 0, n);
|
|
1738
1742
|
}
|
|
1739
|
-
let r =
|
|
1743
|
+
let r = G.has(n) ? (e, t) => q(e, t, n) : (e, t) => _r(e, t, n);
|
|
1740
1744
|
return e >= 1e9 ? r(e / 1e9, 2) + "B" : e >= 1e6 ? r(e / 1e6, 2) + "M" : e >= 1e3 ? r(e / 1e3, 2) + "K" : r(e, 0);
|
|
1741
1745
|
}
|
|
1742
1746
|
//#endregion
|
|
1743
1747
|
//#region src/market/presets.ts
|
|
1744
|
-
var
|
|
1748
|
+
var J = {
|
|
1745
1749
|
up: "#22C55E",
|
|
1746
1750
|
down: "#EF4444",
|
|
1747
1751
|
unchanged: "#EAB308",
|
|
1748
1752
|
ceiling: "#D946EF",
|
|
1749
1753
|
floor: "#06B6D4",
|
|
1750
1754
|
reference: "#EAB308"
|
|
1751
|
-
},
|
|
1755
|
+
}, Y = "Asia/Ho_Chi_Minh", yr = {
|
|
1752
1756
|
up: "#E8313F",
|
|
1753
1757
|
down: "#2F6FEB",
|
|
1754
1758
|
unchanged: "#8B8F99",
|
|
@@ -2028,14 +2032,14 @@ var q = {
|
|
|
2028
2032
|
step: .1
|
|
2029
2033
|
}
|
|
2030
2034
|
],
|
|
2031
|
-
timeZone:
|
|
2035
|
+
timeZone: Y,
|
|
2032
2036
|
priceLimits: {
|
|
2033
2037
|
enabled: !0,
|
|
2034
2038
|
ceilingPercent: 7,
|
|
2035
2039
|
floorPercent: 7
|
|
2036
2040
|
},
|
|
2037
2041
|
sessions: xr,
|
|
2038
|
-
colorScheme:
|
|
2042
|
+
colorScheme: J
|
|
2039
2043
|
}, Ar = {
|
|
2040
2044
|
...kr,
|
|
2041
2045
|
priceSteps: void 0
|
|
@@ -2046,14 +2050,14 @@ var q = {
|
|
|
2046
2050
|
pricePrecision: 1,
|
|
2047
2051
|
volumeUnit: 100,
|
|
2048
2052
|
priceStep: .1,
|
|
2049
|
-
timeZone:
|
|
2053
|
+
timeZone: Y,
|
|
2050
2054
|
priceLimits: {
|
|
2051
2055
|
enabled: !0,
|
|
2052
2056
|
ceilingPercent: 10,
|
|
2053
2057
|
floorPercent: 10
|
|
2054
2058
|
},
|
|
2055
2059
|
sessions: Sr,
|
|
2056
|
-
colorScheme:
|
|
2060
|
+
colorScheme: J
|
|
2057
2061
|
}, Mr = {
|
|
2058
2062
|
type: "stock",
|
|
2059
2063
|
exchange: "UPCOM",
|
|
@@ -2061,14 +2065,14 @@ var q = {
|
|
|
2061
2065
|
pricePrecision: 1,
|
|
2062
2066
|
volumeUnit: 100,
|
|
2063
2067
|
priceStep: .1,
|
|
2064
|
-
timeZone:
|
|
2068
|
+
timeZone: Y,
|
|
2065
2069
|
priceLimits: {
|
|
2066
2070
|
enabled: !0,
|
|
2067
2071
|
ceilingPercent: 15,
|
|
2068
2072
|
floorPercent: 15
|
|
2069
2073
|
},
|
|
2070
2074
|
sessions: Cr,
|
|
2071
|
-
colorScheme:
|
|
2075
|
+
colorScheme: J
|
|
2072
2076
|
}, Nr = {
|
|
2073
2077
|
type: "futures",
|
|
2074
2078
|
exchange: "HNX",
|
|
@@ -2077,14 +2081,14 @@ var q = {
|
|
|
2077
2081
|
volumeUnit: 1,
|
|
2078
2082
|
priceStep: .1,
|
|
2079
2083
|
contractMultiplier: 1e5,
|
|
2080
|
-
timeZone:
|
|
2084
|
+
timeZone: Y,
|
|
2081
2085
|
priceLimits: {
|
|
2082
2086
|
enabled: !0,
|
|
2083
2087
|
ceilingPercent: 7,
|
|
2084
2088
|
floorPercent: 7
|
|
2085
2089
|
},
|
|
2086
2090
|
sessions: wr,
|
|
2087
|
-
colorScheme:
|
|
2091
|
+
colorScheme: J
|
|
2088
2092
|
}, Pr = {
|
|
2089
2093
|
type: "stock",
|
|
2090
2094
|
exchange: "KRX",
|
|
@@ -2150,7 +2154,7 @@ var q = {
|
|
|
2150
2154
|
]
|
|
2151
2155
|
};
|
|
2152
2156
|
function zr(e) {
|
|
2153
|
-
return Br(e,
|
|
2157
|
+
return Br(e, J);
|
|
2154
2158
|
}
|
|
2155
2159
|
function Br(e, t) {
|
|
2156
2160
|
return {
|
|
@@ -2161,33 +2165,33 @@ function Br(e, t) {
|
|
|
2161
2165
|
candleDownWick: t.down
|
|
2162
2166
|
};
|
|
2163
2167
|
}
|
|
2164
|
-
var
|
|
2165
|
-
function
|
|
2168
|
+
var X = 1e-9;
|
|
2169
|
+
function Vr(e, t) {
|
|
2166
2170
|
let n = t.priceStep;
|
|
2167
|
-
for (let r of t.priceSteps ?? []) e +
|
|
2171
|
+
for (let r of t.priceSteps ?? []) e + X >= r.from && (n = r.step);
|
|
2168
2172
|
return n !== void 0 && n > 0 ? n : void 0;
|
|
2169
2173
|
}
|
|
2170
|
-
function
|
|
2174
|
+
function Hr(e, t) {
|
|
2171
2175
|
let n = t.priceStep;
|
|
2172
|
-
for (let r of t.priceSteps ?? []) e -
|
|
2176
|
+
for (let r of t.priceSteps ?? []) e - X > r.from && (n = r.step);
|
|
2173
2177
|
return n !== void 0 && n > 0 ? n : void 0;
|
|
2174
2178
|
}
|
|
2175
2179
|
function Z(e, t, n = "nearest") {
|
|
2176
|
-
let r =
|
|
2180
|
+
let r = Vr(e, t);
|
|
2177
2181
|
if (r === void 0 || !Number.isFinite(e)) return e;
|
|
2178
|
-
let i = e / r, a = n === "down" ? Math.floor(i +
|
|
2182
|
+
let i = e / r, a = n === "down" ? Math.floor(i + X) : n === "up" ? Math.ceil(i - X) : Math.round(i);
|
|
2179
2183
|
return Number((a * r).toFixed(zt(r)));
|
|
2180
2184
|
}
|
|
2181
|
-
function
|
|
2185
|
+
function Ur(e, t) {
|
|
2182
2186
|
if (!t.priceLimits?.enabled || !t.priceLimits.ceilingPercent) return null;
|
|
2183
|
-
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 =
|
|
2187
|
+
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 = Vr(i, t);
|
|
2184
2188
|
if (s === void 0) return {
|
|
2185
2189
|
ceiling: a,
|
|
2186
2190
|
floor: o,
|
|
2187
2191
|
reference: i
|
|
2188
2192
|
};
|
|
2189
2193
|
let c = Z(i + s, t);
|
|
2190
|
-
if (Math.abs(i - s) <
|
|
2194
|
+
if (Math.abs(i - s) < X) return {
|
|
2191
2195
|
ceiling: c,
|
|
2192
2196
|
floor: i,
|
|
2193
2197
|
reference: i
|
|
@@ -2201,14 +2205,14 @@ function Hr(e, t) {
|
|
|
2201
2205
|
};
|
|
2202
2206
|
l = Z(i + Z(i * n, e, "down"), t, "down"), u = Z(i - Z(i * r, e, "down"), t, "down");
|
|
2203
2207
|
} else l = Z(a, t, "down"), u = Z(o, t, "up");
|
|
2204
|
-
return l <= i && (l = c), u >= i && (u = Z(i - (
|
|
2208
|
+
return l <= i && (l = c), u >= i && (u = Z(i - (Hr(i, t) ?? s), t)), u <= 0 && (u = i), {
|
|
2205
2209
|
ceiling: l,
|
|
2206
2210
|
floor: u,
|
|
2207
2211
|
reference: i
|
|
2208
2212
|
};
|
|
2209
2213
|
}
|
|
2210
2214
|
var Q = (e, t) => Math.round(e * t * 1e9) / 1e9;
|
|
2211
|
-
function
|
|
2215
|
+
function Wr(e, t) {
|
|
2212
2216
|
let n = Math.round(Math.log10(t));
|
|
2213
2217
|
return {
|
|
2214
2218
|
...e,
|
|
@@ -2224,11 +2228,11 @@ function Ur(e, t) {
|
|
|
2224
2228
|
}
|
|
2225
2229
|
};
|
|
2226
2230
|
}
|
|
2227
|
-
var
|
|
2228
|
-
function
|
|
2231
|
+
var Gr = 6e4, Kr = 864e5;
|
|
2232
|
+
function qr(e, t) {
|
|
2229
2233
|
let n, r;
|
|
2230
2234
|
if (t) {
|
|
2231
|
-
let i = new Date(e +
|
|
2235
|
+
let i = new Date(e + v(t, e) * Gr);
|
|
2232
2236
|
n = i.getUTCHours(), r = i.getUTCMinutes();
|
|
2233
2237
|
} else {
|
|
2234
2238
|
let t = new Date(e);
|
|
@@ -2236,31 +2240,31 @@ function Kr(e, t) {
|
|
|
2236
2240
|
}
|
|
2237
2241
|
return `${String(n).padStart(2, "0")}:${String(r).padStart(2, "0")}`;
|
|
2238
2242
|
}
|
|
2239
|
-
function
|
|
2240
|
-
if (n !== void 0 && !
|
|
2241
|
-
let r =
|
|
2243
|
+
function Jr(e, t = Date.now(), n) {
|
|
2244
|
+
if (n !== void 0 && !Fe(n)) return null;
|
|
2245
|
+
let r = qr(t, n);
|
|
2242
2246
|
for (let t of e) if (r >= t.startTime && r < t.endTime) return t;
|
|
2243
2247
|
return null;
|
|
2244
2248
|
}
|
|
2245
|
-
var $ = (e) => String(e).padStart(2, "0"),
|
|
2249
|
+
var $ = (e) => String(e).padStart(2, "0"), Yr = (e) => {
|
|
2246
2250
|
let t = new Date(e);
|
|
2247
2251
|
return `${t.getUTCFullYear()}-${$(t.getUTCMonth() + 1)}-${$(t.getUTCDate())}`;
|
|
2248
|
-
},
|
|
2249
|
-
function
|
|
2250
|
-
let r = Date.UTC(e, t - 1, 1), i = 1 + (
|
|
2252
|
+
}, Xr = 4, Zr = 7 * 36e5;
|
|
2253
|
+
function Qr(e, t, n) {
|
|
2254
|
+
let r = Date.UTC(e, t - 1, 1), i = 1 + (Xr - new Date(r).getUTCDay() + 7) % 7, a = Date.UTC(e, t - 1, i + 14), o = (e) => {
|
|
2251
2255
|
let t = new Date(e).getUTCDay();
|
|
2252
|
-
return t === 0 || t === 6 || (n?.(
|
|
2256
|
+
return t === 0 || t === 6 || (n?.(Yr(e)) ?? !1);
|
|
2253
2257
|
};
|
|
2254
|
-
for (; o(a);) a -=
|
|
2255
|
-
return
|
|
2258
|
+
for (; o(a);) a -= Kr;
|
|
2259
|
+
return Yr(a);
|
|
2256
2260
|
}
|
|
2257
|
-
function
|
|
2258
|
-
let n =
|
|
2261
|
+
function $r(e, t) {
|
|
2262
|
+
let n = Yr(e + Zr), r = (e, n) => ({
|
|
2259
2263
|
symbol: `VN30F${$(e % 100)}${$(n)}`,
|
|
2260
2264
|
year: e,
|
|
2261
2265
|
month: n,
|
|
2262
|
-
lastTradingDay:
|
|
2263
|
-
}), i = (e) => e.month === 12 ? r(e.year + 1, 1) : r(e.year, e.month + 1), a = new Date(e +
|
|
2266
|
+
lastTradingDay: Qr(e, n, t)
|
|
2267
|
+
}), i = (e) => e.month === 12 ? r(e.year + 1, 1) : r(e.year, e.month + 1), a = new Date(e + Zr), o = r(a.getUTCFullYear(), a.getUTCMonth() + 1);
|
|
2264
2268
|
n > o.lastTradingDay && (o = i(o));
|
|
2265
2269
|
let s = [o, i(o)], c = i(s[1]);
|
|
2266
2270
|
for (; s.length < 4;) c.month % 3 == 0 && s.push(c), c = i(c);
|
|
@@ -2268,7 +2272,7 @@ function Qr(e, t) {
|
|
|
2268
2272
|
}
|
|
2269
2273
|
//#endregion
|
|
2270
2274
|
//#region src/icons/iconSet.ts
|
|
2271
|
-
var
|
|
2275
|
+
var ei = {
|
|
2272
2276
|
cursor: { d: "M6 3.5L18.5 12.5L12.6 13.6L9.7 19.4z" },
|
|
2273
2277
|
trendingUp: { d: "M3 17L9 11L13 14.5L21 6.5M15 6.5H21V12.5" },
|
|
2274
2278
|
trendingDown: { d: "M3 7L9 13L13 9.5L21 17.5M15 17.5H21V11.5" },
|
|
@@ -2402,7 +2406,7 @@ var $r = {
|
|
|
2402
2406
|
]
|
|
2403
2407
|
] },
|
|
2404
2408
|
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" }
|
|
2405
|
-
},
|
|
2409
|
+
}, ti = {
|
|
2406
2410
|
trendLine: {
|
|
2407
2411
|
d: "M5 18L19 6",
|
|
2408
2412
|
dots: [[5, 18], [19, 6]]
|
|
@@ -2755,7 +2759,7 @@ var $r = {
|
|
|
2755
2759
|
],
|
|
2756
2760
|
dash: "M12 3V21"
|
|
2757
2761
|
}
|
|
2758
|
-
},
|
|
2762
|
+
}, ni = {
|
|
2759
2763
|
candlestick: {
|
|
2760
2764
|
d: "M8 3.5V7M8 16V20.5M16 5V8.5M16 15.5V19",
|
|
2761
2765
|
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"]
|
|
@@ -2822,21 +2826,21 @@ var $r = {
|
|
|
2822
2826
|
"M16 4.5h3v6h-3z"
|
|
2823
2827
|
]
|
|
2824
2828
|
}
|
|
2825
|
-
},
|
|
2826
|
-
function
|
|
2827
|
-
let t =
|
|
2829
|
+
}, ri = 1.75, ii = .22, ai = /* @__PURE__ */ new WeakMap();
|
|
2830
|
+
function oi(e) {
|
|
2831
|
+
let t = ai.get(e);
|
|
2828
2832
|
if (t) return t;
|
|
2829
2833
|
let n = "";
|
|
2830
|
-
e.soft && (n += `<path d="${e.soft}" fill="currentColor" fill-opacity="${
|
|
2834
|
+
e.soft && (n += `<path d="${e.soft}" fill="currentColor" fill-opacity="${ii}" stroke="none"/>`);
|
|
2831
2835
|
for (let t of e.fills ?? []) n += `<path d="${t}" fill="currentColor" stroke="none"/>`;
|
|
2832
2836
|
e.d && (n += `<path d="${e.d}"/>`), e.dash && (n += `<path d="${e.dash}" stroke-dasharray="2 2.5"/>`);
|
|
2833
|
-
for (let [t, r, i =
|
|
2834
|
-
return
|
|
2837
|
+
for (let [t, r, i = ri] of e.dots ?? []) n += `<circle cx="${t}" cy="${r}" r="${i}" fill="currentColor" stroke="none"/>`;
|
|
2838
|
+
return ai.set(e, n), n;
|
|
2835
2839
|
}
|
|
2836
|
-
function
|
|
2837
|
-
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">${
|
|
2840
|
+
function si(e, t) {
|
|
2841
|
+
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">${oi(e)}</svg>`;
|
|
2838
2842
|
}
|
|
2839
2843
|
//#endregion
|
|
2840
|
-
export { t as CHART_STYLE_KEYS,
|
|
2844
|
+
export { t as CHART_STYLE_KEYS, ni as CHART_TYPE_ICONS, wn as DARK_PRICE_LIMITS, B as DARK_TERMINAL, Dn as DARK_THEME, $n as DEFAULT_BAR_SPACING, Qn as DEFAULT_BAR_WIDTH, qn as DEFAULT_CHART_OPTIONS, n as DEFAULT_DRAWING_STYLE, fn as DEFAULT_FONT_FAMILY, rr as DEFAULT_PANEL_HEIGHT, o as DEFAULT_RECONNECT, i as DEFAULT_SIGNAL_STYLE, s as DEFAULT_STREAM_CONFIG, Zn as DEFAULT_TIMEFRAME_FAVORITES, a as DEFAULT_TRADE_ZONE_STYLE, r as DEFAULT_TRADING_CONFIG, ti as DRAWING_TOOL_ICONS, ar as FIBONACCI, Sr as HNX_SESSIONS, xr as HOSE_SESSIONS, ri as ICON_DOT_RADIUS, ii as ICON_SOFT_OPACITY, Tr as KRX_SESSIONS, yr as KR_COLORS, Tn as LIGHT_PRICE_LIMITS, On as LIGHT_THEME, e as LayerType, Lr as MARKET_CRYPTO, jr as MARKET_HNX, kr as MARKET_HOSE, Ar as MARKET_HOSE_ETF, Pr as MARKET_KRX, Fr as MARKET_NXT, Rr as MARKET_NYSE, Ir as MARKET_UPBIT_KRW, Mr as MARKET_UPCOM, Nr as MARKET_VN30F, nr as MIN_PANEL_HEIGHT, le as MS_TIME_THRESHOLD, Er as NXT_SESSIONS, ir as PHI, er as PRICE_AXIS_WIDTH, Ct as PRICE_SOURCES, pn as SANS_FONT_FAMILY, I as TC_PALETTE, En as TC_SERIES_COLORS, Jn as TIMEFRAMES_CRYPTO, Xn as TIMEFRAMES_FOREX, Yn as TIMEFRAMES_STOCK, tr as TIME_AXIS_HEIGHT, ei as UI_ICONS, Cr as UPCOM_SESSIONS, wr as VN30F_SESSIONS, J as VN_COLORS, hn as VOLUME_ALPHA, Ke as alignToTimeframe, ht as autoPricePrecision, dt as barDateParts, ut as barDateZone, ue as barTimeUnit, Xe as barsAreDaily, Kn as chartStyleValue, re as clamp, Ur as computePriceLimits, _e as computePriceRange, ce as computeTickStep, m as contrastRatio, Br as createMarketTheme, zr as createVNTheme, St as detectPrecision, Zt as drawingOption, W as en, me as findBarIndex, ge as fitPriceRange, vt as formatFraction, q as formatNumber, k as formatPrice, _t as formatPriceScaleLabel, Ge as formatTimestamp, mr as formatVND, xt as formatVolume, vr as formatVolumeLoc, yt as fractionTick, Jr as getCurrentSession, ur as getLocale, pr as getLocaleStrings, ye as hexToRgba, si as iconSvg, Dt as indicatorSource, Ee as inkOn, ae as inverseLerp, Je as isDateOnly, wt as isPriceSource, We as isTimeFrame, b as isUtcTimeZone, Fe as isValidTimeZone, ie as lerp, Se as lerpColor, Vn as lineDash, Ut as marketStatus, ve as mergeBar, se as niceNumber, fe as normalizeBar, de as normalizeBarTime, x as offsetAt, he as padPriceRange, Ot as parseIndicatorSource, C as parseTimeframe, or as phiStep, It as pickBaseTimeframe, bt as priceFormatterFor, Vr as priceStepAt, mt as priceTagText, Rt as rankSymbols, Ln as readChartStyleOverrides, dn as readChartTypeOptions, Bn as readIndicatorPlotStyles, ne as readNews, Rn as readPaneStyle, l as readQuote, Te as readableOn, fr as registerLocale, jt as resampleBars, Un as resolveChartTheme, Qt as resolveDrawingOptions, V as resolveVolumeColors, Z as roundToPriceStep, oe as roundToStep, Yt as sanitizeDrawingOptions, ln as sanitizeDrawingStyle, Wr as scaleMarketPrices, Vt as sessionMinute, lr as setLocale, pe as sliceVisibleData, Tt as sourcePrice, zt as stepDecimals, Bt as symbolTimeZone, dr as t, Ue as tickBarCount, qe as timeParts, D as timeframeBucketStart, ot as timeframeFollowsDays, st as timeframeSpansDays, w as timeframeToMs, Ze as tzLabel, gr as usesKoreanUnits, sr as vi, $r as vn30fContracts, Qr as vn30fLastTradingDay, L as volumeColor, Le as wallToUtc, p as withAlpha, v as zoneOffsetMinutes, ze as zonedDateFormatter };
|
|
2841
2845
|
|
|
2842
2846
|
//# sourceMappingURL=index.js.map
|