@tradecanvas/commons 1.19.1 → 1.20.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 +437 -261
- package/dist/index.js.map +1 -1
- package/dist/market/index.d.ts +2 -2
- package/dist/market/index.d.ts.map +1 -1
- package/dist/market/presets.d.ts +53 -2
- package/dist/market/presets.d.ts.map +1 -1
- package/dist/market/types.d.ts +26 -2
- package/dist/market/types.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -356,7 +356,7 @@ function xe(e) {
|
|
|
356
356
|
second: "numeric"
|
|
357
357
|
}), ye.set(e, t)), t;
|
|
358
358
|
}
|
|
359
|
-
function
|
|
359
|
+
function b(e) {
|
|
360
360
|
if (!e) return !1;
|
|
361
361
|
try {
|
|
362
362
|
return xe(e), !0;
|
|
@@ -364,15 +364,15 @@ function Se(e) {
|
|
|
364
364
|
return !1;
|
|
365
365
|
}
|
|
366
366
|
}
|
|
367
|
-
function
|
|
367
|
+
function x(e, t) {
|
|
368
368
|
if (!Number.isFinite(t) || ve.has(e)) return 0;
|
|
369
369
|
let n = be.get(e);
|
|
370
370
|
n || (n = /* @__PURE__ */ new Map(), be.set(e, n));
|
|
371
371
|
let r = Math.floor(t / v), i = n.get(r);
|
|
372
|
-
return i || (i =
|
|
372
|
+
return i || (i = Se(e, r * v), n.size >= _e && n.clear(), n.set(r, i)), t < i.change ? i.before : i.after;
|
|
373
373
|
}
|
|
374
|
-
function
|
|
375
|
-
let n =
|
|
374
|
+
function Se(e, t) {
|
|
375
|
+
let n = S(e, t), r = t + v - _, i = S(e, r);
|
|
376
376
|
if (i === n) return {
|
|
377
377
|
before: n,
|
|
378
378
|
change: Infinity,
|
|
@@ -381,7 +381,7 @@ function Ce(e, t) {
|
|
|
381
381
|
let a = t;
|
|
382
382
|
for (; r - a > _;) {
|
|
383
383
|
let t = a + Math.floor((r - a) / _ / 2) * _;
|
|
384
|
-
|
|
384
|
+
S(e, t) === n ? a = t : r = t;
|
|
385
385
|
}
|
|
386
386
|
return {
|
|
387
387
|
before: n,
|
|
@@ -389,7 +389,7 @@ function Ce(e, t) {
|
|
|
389
389
|
after: i
|
|
390
390
|
};
|
|
391
391
|
}
|
|
392
|
-
function
|
|
392
|
+
function S(e, t) {
|
|
393
393
|
let n = Math.floor(t / _), r = `${e}|${n}`, i = y.get(r);
|
|
394
394
|
if (i !== void 0) return i;
|
|
395
395
|
let a = n * _, o = 1970, s = 1, c = 1, l = 0, u = 0, d = 0;
|
|
@@ -419,18 +419,18 @@ function x(e, t) {
|
|
|
419
419
|
let f = Math.round((Date.UTC(o, s - 1, c, l, u, d) - a) / h);
|
|
420
420
|
return y.size >= ge && y.clear(), y.set(r, f), f;
|
|
421
421
|
}
|
|
422
|
-
function
|
|
423
|
-
return e === null ? -new Date(t).getTimezoneOffset() : typeof e == "number" ? e :
|
|
424
|
-
}
|
|
425
|
-
function we(e, t) {
|
|
426
|
-
let n = e - S(t, e - g) * h;
|
|
427
|
-
if (n + S(t, n) * h === e) return n;
|
|
428
|
-
let r = e - S(t, e + g) * h;
|
|
429
|
-
return r + S(t, r) * h === e ? r : n;
|
|
422
|
+
function C(e, t) {
|
|
423
|
+
return e === null ? -new Date(t).getTimezoneOffset() : typeof e == "number" ? e : x(e, t);
|
|
430
424
|
}
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
425
|
+
function Ce(e, t) {
|
|
426
|
+
let n = e - C(t, e - g) * h;
|
|
427
|
+
if (n + C(t, n) * h === e) return n;
|
|
428
|
+
let r = e - C(t, e + g) * h;
|
|
429
|
+
return r + C(t, r) * h === e ? r : n;
|
|
430
|
+
}
|
|
431
|
+
var we = /* @__PURE__ */ new Map();
|
|
432
|
+
function Te(e, t, n) {
|
|
433
|
+
let r = `${e}|${JSON.stringify(t)}|${n === null ? "local" : typeof n == "number" ? `fixed:${n}` : n}`, i = we.get(r);
|
|
434
434
|
if (i) return i;
|
|
435
435
|
let a = n === null ? void 0 : typeof n == "number" ? "UTC" : n, o;
|
|
436
436
|
try {
|
|
@@ -445,11 +445,11 @@ function Ee(e, t, n) {
|
|
|
445
445
|
});
|
|
446
446
|
}
|
|
447
447
|
let s = typeof n == "number" ? n * h : 0;
|
|
448
|
-
return i = (e) => o.format(new Date(e + s)),
|
|
448
|
+
return i = (e) => o.format(new Date(e + s)), we.set(r, i), i;
|
|
449
449
|
}
|
|
450
450
|
//#endregion
|
|
451
451
|
//#region src/utils/time.ts
|
|
452
|
-
var
|
|
452
|
+
var Ee = {
|
|
453
453
|
"1s": 1e3,
|
|
454
454
|
"5s": 5e3,
|
|
455
455
|
"15s": 15e3,
|
|
@@ -476,16 +476,16 @@ var De = {
|
|
|
476
476
|
"3M": 7776e6,
|
|
477
477
|
"6M": 15552e6,
|
|
478
478
|
"12M": 31536e6
|
|
479
|
-
},
|
|
479
|
+
}, w = {
|
|
480
480
|
s: 1e3,
|
|
481
481
|
m: 6e4,
|
|
482
482
|
h: 36e5,
|
|
483
483
|
d: 864e5,
|
|
484
484
|
w: 6048e5,
|
|
485
485
|
M: 2592e6
|
|
486
|
-
},
|
|
487
|
-
function
|
|
488
|
-
let t =
|
|
486
|
+
}, De = /^([1-9]\d*)([smhdwM])$/;
|
|
487
|
+
function T(e) {
|
|
488
|
+
let t = De.exec(e);
|
|
489
489
|
if (!t) return null;
|
|
490
490
|
let n = Number(t[1]);
|
|
491
491
|
return Number.isSafeInteger(n) ? {
|
|
@@ -493,24 +493,24 @@ function w(e) {
|
|
|
493
493
|
unit: t[2]
|
|
494
494
|
} : null;
|
|
495
495
|
}
|
|
496
|
-
var
|
|
497
|
-
function
|
|
496
|
+
var Oe = 1e6;
|
|
497
|
+
function ke(e) {
|
|
498
498
|
let t = /^([1-9]\d*)T$/.exec(e);
|
|
499
499
|
if (!t) return null;
|
|
500
500
|
let n = Number(t[1]);
|
|
501
|
-
return Number.isSafeInteger(n) && n <=
|
|
501
|
+
return Number.isSafeInteger(n) && n <= Oe ? n : null;
|
|
502
502
|
}
|
|
503
|
-
function
|
|
504
|
-
return
|
|
503
|
+
function Ae(e) {
|
|
504
|
+
return T(e) !== null;
|
|
505
505
|
}
|
|
506
|
-
function
|
|
507
|
-
let t =
|
|
506
|
+
function E(e) {
|
|
507
|
+
let t = Ee[e];
|
|
508
508
|
if (t !== void 0) return t;
|
|
509
|
-
let n =
|
|
510
|
-
return n ? n.count *
|
|
509
|
+
let n = T(e);
|
|
510
|
+
return n ? n.count * w[n.unit] : NaN;
|
|
511
511
|
}
|
|
512
|
-
function
|
|
513
|
-
let n = new Date(e), r =
|
|
512
|
+
function je(e, t) {
|
|
513
|
+
let n = new Date(e), r = E(t);
|
|
514
514
|
return r >= 864e5 ? n.toLocaleDateString(void 0, {
|
|
515
515
|
month: "short",
|
|
516
516
|
day: "numeric"
|
|
@@ -523,11 +523,11 @@ function Me(e, t) {
|
|
|
523
523
|
second: "2-digit"
|
|
524
524
|
});
|
|
525
525
|
}
|
|
526
|
-
function
|
|
527
|
-
let n =
|
|
526
|
+
function Me(e, t) {
|
|
527
|
+
let n = E(t);
|
|
528
528
|
return Math.floor(e / n) * n;
|
|
529
529
|
}
|
|
530
|
-
function
|
|
530
|
+
function Ne(e, t) {
|
|
531
531
|
if (t === null) {
|
|
532
532
|
let t = new Date(e);
|
|
533
533
|
return {
|
|
@@ -538,7 +538,7 @@ function Pe(e, t) {
|
|
|
538
538
|
minutes: t.getMinutes()
|
|
539
539
|
};
|
|
540
540
|
}
|
|
541
|
-
let n = new Date(e +
|
|
541
|
+
let n = new Date(e + C(t, e) * 6e4);
|
|
542
542
|
return {
|
|
543
543
|
year: n.getUTCFullYear(),
|
|
544
544
|
month: n.getUTCMonth() + 1,
|
|
@@ -547,11 +547,11 @@ function Pe(e, t) {
|
|
|
547
547
|
minutes: n.getUTCMinutes()
|
|
548
548
|
};
|
|
549
549
|
}
|
|
550
|
-
function
|
|
550
|
+
function Pe(e) {
|
|
551
551
|
return e.hours === 0 && e.minutes === 0;
|
|
552
552
|
}
|
|
553
|
-
var
|
|
554
|
-
function
|
|
553
|
+
var Fe = 20 * 36e5;
|
|
554
|
+
function Ie(e) {
|
|
555
555
|
let t = Math.min(e.length, 64);
|
|
556
556
|
if (t < 2) return;
|
|
557
557
|
let n = (e) => e > 0xe8d4a51000 ? e : e * 1e3, r = Infinity;
|
|
@@ -559,44 +559,44 @@ function Le(e) {
|
|
|
559
559
|
let t = Math.abs(n(e[i].time) - n(e[i - 1].time));
|
|
560
560
|
t > 0 && t < r && (r = t);
|
|
561
561
|
}
|
|
562
|
-
return r === Infinity ? void 0 : r >=
|
|
562
|
+
return r === Infinity ? void 0 : r >= Fe;
|
|
563
563
|
}
|
|
564
|
-
function
|
|
565
|
-
let n =
|
|
564
|
+
function Le(e, t = Date.now()) {
|
|
565
|
+
let n = C(e, t), r = n >= 0 ? "+" : "-", i = Math.abs(n), a = Math.floor(i / 60), o = i % 60;
|
|
566
566
|
return o === 0 ? `UTC${r}${a}` : `UTC${r}${a}:${String(o).padStart(2, "0")}`;
|
|
567
567
|
}
|
|
568
|
-
var
|
|
569
|
-
function
|
|
570
|
-
let { count: r, unit: i } =
|
|
568
|
+
var Re = Date.UTC(1970, 0, 5);
|
|
569
|
+
function ze(e, t, n = 1) {
|
|
570
|
+
let { count: r, unit: i } = T(t) ?? {
|
|
571
571
|
count: 1,
|
|
572
572
|
unit: "m"
|
|
573
573
|
};
|
|
574
574
|
if (i === "s" || i === "m" || i === "h" || i === "d") {
|
|
575
|
-
let t = r *
|
|
575
|
+
let t = r * w[i];
|
|
576
576
|
return Math.floor(e / t) * t;
|
|
577
577
|
}
|
|
578
578
|
let a = new Date(e);
|
|
579
579
|
if (i === "w") {
|
|
580
|
-
let e =
|
|
580
|
+
let e = w.d, t = (a.getUTCDay() - n + 7) % 7, i = Date.UTC(a.getUTCFullYear(), a.getUTCMonth(), a.getUTCDate() - t);
|
|
581
581
|
if (r <= 1) return i;
|
|
582
|
-
let o = Math.floor((i -
|
|
583
|
-
return
|
|
582
|
+
let o = Math.floor((i - Re) / (7 * e));
|
|
583
|
+
return Re + Math.floor(o / r) * r * 7 * e;
|
|
584
584
|
}
|
|
585
585
|
let o = a.getUTCFullYear() * 12 + a.getUTCMonth(), s = Math.floor(o / r) * r;
|
|
586
586
|
return Date.UTC(Math.floor(s / 12), s % 12, 1);
|
|
587
587
|
}
|
|
588
588
|
//#endregion
|
|
589
589
|
//#region src/utils/precision.ts
|
|
590
|
-
var
|
|
591
|
-
function
|
|
592
|
-
let n = `${e}|${t}`, r =
|
|
593
|
-
return r || (
|
|
590
|
+
var Be = 64, D = /* @__PURE__ */ new Map();
|
|
591
|
+
function Ve(e, t) {
|
|
592
|
+
let n = `${e}|${t}`, r = D.get(n);
|
|
593
|
+
return r || (D.size >= Be && D.clear(), r = new Intl.NumberFormat(e, {
|
|
594
594
|
minimumFractionDigits: t,
|
|
595
595
|
maximumFractionDigits: t
|
|
596
|
-
}),
|
|
596
|
+
}), D.set(n, r)), r;
|
|
597
597
|
}
|
|
598
|
-
function
|
|
599
|
-
return
|
|
598
|
+
function He(e, t = 2, n = "en-US") {
|
|
599
|
+
return Ve(n, t).format(e);
|
|
600
600
|
}
|
|
601
601
|
function Ue(e, t) {
|
|
602
602
|
if (!(t > e) || !Number.isFinite(e) || !Number.isFinite(t)) return 2;
|
|
@@ -609,9 +609,9 @@ function We(e, t, n, r = 2, i = "en-US") {
|
|
|
609
609
|
let t = (e / n - 1) * 100;
|
|
610
610
|
return `${t > 0 ? "+" : ""}${t.toFixed(2)}%`;
|
|
611
611
|
}
|
|
612
|
-
return
|
|
612
|
+
return He(e / n * 100, 2, i);
|
|
613
613
|
}
|
|
614
|
-
return
|
|
614
|
+
return He(e, r, i);
|
|
615
615
|
}
|
|
616
616
|
function Ge(e, t, n = 1) {
|
|
617
617
|
let r = Number.isInteger(n) && n > 1 ? n : 1;
|
|
@@ -683,7 +683,7 @@ var nt = 864e5;
|
|
|
683
683
|
function rt(e, t, n = 1) {
|
|
684
684
|
let r = [], i = null;
|
|
685
685
|
for (let a of e) {
|
|
686
|
-
let e =
|
|
686
|
+
let e = ze(a.time, t, n);
|
|
687
687
|
i === null || e !== i.time ? (i = {
|
|
688
688
|
time: e,
|
|
689
689
|
open: a.open,
|
|
@@ -695,37 +695,37 @@ function rt(e, t, n = 1) {
|
|
|
695
695
|
}
|
|
696
696
|
return r;
|
|
697
697
|
}
|
|
698
|
-
var
|
|
699
|
-
function
|
|
700
|
-
let n =
|
|
698
|
+
var it = (e) => e === "s" || e === "m" || e === "h" || e === "d";
|
|
699
|
+
function at(e, t) {
|
|
700
|
+
let n = T(e), r = T(t);
|
|
701
701
|
if (!n || !r) return !1;
|
|
702
|
-
let i =
|
|
703
|
-
return n.unit === "d" && n.count > 1 ? !1 :
|
|
702
|
+
let i = E(e);
|
|
703
|
+
return n.unit === "d" && n.count > 1 ? !1 : it(r.unit) ? it(n.unit) && E(t) % i === 0 : n.unit === r.unit ? r.count % n.count === 0 : it(n.unit) && nt % i === 0;
|
|
704
704
|
}
|
|
705
|
-
function
|
|
705
|
+
function ot(e, t) {
|
|
706
706
|
let n = null, r = 0;
|
|
707
707
|
for (let i of t) {
|
|
708
|
-
if (!
|
|
709
|
-
let t =
|
|
708
|
+
if (!at(i, e)) continue;
|
|
709
|
+
let t = E(i);
|
|
710
710
|
t > r && (n = i, r = t);
|
|
711
711
|
}
|
|
712
712
|
return n;
|
|
713
713
|
}
|
|
714
714
|
//#endregion
|
|
715
715
|
//#region src/utils/symbols.ts
|
|
716
|
-
function
|
|
716
|
+
function st(e, t) {
|
|
717
717
|
if (!e) return 0;
|
|
718
718
|
if (e === t) return 1e3;
|
|
719
719
|
if (e.startsWith(t)) return 600 - Math.min(100, e.length - t.length);
|
|
720
720
|
let n = e.indexOf(t);
|
|
721
721
|
return n >= 0 ? 300 - Math.min(100, n) : 0;
|
|
722
722
|
}
|
|
723
|
-
function
|
|
723
|
+
function ct(e, t, n = 50, r) {
|
|
724
724
|
let i = t.trim().toUpperCase();
|
|
725
725
|
if (!i) return e.slice(0, n);
|
|
726
726
|
let a = [];
|
|
727
727
|
for (let t of e) {
|
|
728
|
-
let e = Math.max(
|
|
728
|
+
let e = Math.max(st(t.symbol.toUpperCase(), i), st((t.description ?? "").toUpperCase(), i) * .8);
|
|
729
729
|
e > 0 && a.push({
|
|
730
730
|
info: t,
|
|
731
731
|
score: e + (r?.(t) ?? 0)
|
|
@@ -733,7 +733,7 @@ function st(e, t, n = 50, r) {
|
|
|
733
733
|
}
|
|
734
734
|
return a.sort((e, t) => t.score - e.score || e.info.symbol.localeCompare(t.info.symbol)), a.slice(0, n).map((e) => e.info);
|
|
735
735
|
}
|
|
736
|
-
function
|
|
736
|
+
function lt(e) {
|
|
737
737
|
let t = typeof e == "number" ? e : Number(e);
|
|
738
738
|
if (!Number.isFinite(t) || t <= 0) return 0;
|
|
739
739
|
for (let e = 0; e <= 12; e++) {
|
|
@@ -742,7 +742,7 @@ function ct(e) {
|
|
|
742
742
|
}
|
|
743
743
|
return 12;
|
|
744
744
|
}
|
|
745
|
-
function
|
|
745
|
+
function ut(e) {
|
|
746
746
|
let t = /^(\d{1,2}):(\d{2})$/.exec(e.trim());
|
|
747
747
|
if (!t) return null;
|
|
748
748
|
let n = Number(t[1]), r = Number(t[2]);
|
|
@@ -750,26 +750,26 @@ function k(e) {
|
|
|
750
750
|
}
|
|
751
751
|
//#endregion
|
|
752
752
|
//#region src/utils/marketStatus.ts
|
|
753
|
-
var
|
|
754
|
-
function
|
|
753
|
+
var O = 864e5, k = 6e4, dt = 8;
|
|
754
|
+
function ft(e, t) {
|
|
755
755
|
let n = e?.timezone, r = (e?.sessions ?? []).flatMap((e) => {
|
|
756
|
-
let t =
|
|
756
|
+
let t = ut(e.start), n = ut(e.end);
|
|
757
757
|
return t === null || n === null || t === n ? [] : [{
|
|
758
758
|
start: t,
|
|
759
759
|
end: n,
|
|
760
760
|
days: Array.isArray(e.days) ? e.days : null
|
|
761
761
|
}];
|
|
762
762
|
});
|
|
763
|
-
if (!n || !
|
|
763
|
+
if (!n || !b(n) || r.length === 0 || !Number.isFinite(t)) return {
|
|
764
764
|
state: "always",
|
|
765
765
|
next: null
|
|
766
766
|
};
|
|
767
|
-
let i =
|
|
768
|
-
for (let e = -1; e <=
|
|
769
|
-
let t = a + e *
|
|
767
|
+
let i = x(n, t) * k, a = Math.floor((t + i) / O) * O, o = (e) => e - x(n, e - x(n, e - i) * k) * k, s = [];
|
|
768
|
+
for (let e = -1; e <= dt; e++) {
|
|
769
|
+
let t = a + e * O, n = (Math.floor(t / O) + 4) % 7;
|
|
770
770
|
for (let e of r) {
|
|
771
771
|
if (e.days && !e.days.includes(n)) continue;
|
|
772
|
-
let r = t + e.start *
|
|
772
|
+
let r = t + e.start * k, i = (e.end > e.start ? t : t + O) + e.end * k;
|
|
773
773
|
s.push([o(r), o(i)]);
|
|
774
774
|
}
|
|
775
775
|
}
|
|
@@ -792,15 +792,15 @@ function ut(e, t) {
|
|
|
792
792
|
}
|
|
793
793
|
//#endregion
|
|
794
794
|
//#region src/utils/drawingOptions.ts
|
|
795
|
-
var
|
|
796
|
-
function
|
|
795
|
+
var pt = 48, mt = 2e3, ht = 1e4;
|
|
796
|
+
function gt(e) {
|
|
797
797
|
if (!Array.isArray(e)) return;
|
|
798
798
|
let t = [];
|
|
799
799
|
for (let n of e) {
|
|
800
|
-
if (t.length >=
|
|
800
|
+
if (t.length >= pt) break;
|
|
801
801
|
if (typeof n != "object" || !n) continue;
|
|
802
802
|
let { value: e, visible: r, color: i } = n;
|
|
803
|
-
if (typeof e != "number" || !Number.isFinite(e) || Math.abs(e) >
|
|
803
|
+
if (typeof e != "number" || !Number.isFinite(e) || Math.abs(e) > ht || r !== void 0 && typeof r != "boolean") continue;
|
|
804
804
|
let a = {
|
|
805
805
|
value: e,
|
|
806
806
|
visible: r ?? !0
|
|
@@ -809,109 +809,109 @@ function mt(e) {
|
|
|
809
809
|
}
|
|
810
810
|
return t;
|
|
811
811
|
}
|
|
812
|
-
function
|
|
812
|
+
function _t(e, t) {
|
|
813
813
|
switch (e.kind) {
|
|
814
814
|
case "boolean": return typeof t == "boolean" ? t : void 0;
|
|
815
815
|
case "number": return typeof t != "number" || !Number.isFinite(t) ? void 0 : Math.min(e.max ?? Infinity, Math.max(e.min ?? -Infinity, t));
|
|
816
816
|
case "choice": return typeof t == "string" && e.choices.some((e) => e.value === t) ? t : void 0;
|
|
817
|
-
case "levels": return
|
|
818
|
-
case "text": return typeof t == "string" ? t.slice(0,
|
|
817
|
+
case "levels": return gt(t);
|
|
818
|
+
case "text": return typeof t == "string" ? t.slice(0, mt) : void 0;
|
|
819
819
|
}
|
|
820
820
|
}
|
|
821
|
-
function
|
|
821
|
+
function vt(e, t) {
|
|
822
822
|
if (!e || typeof t != "object" || !t) return {};
|
|
823
823
|
let n = {};
|
|
824
824
|
for (let [r, i] of Object.entries(t)) {
|
|
825
825
|
let t = e[r];
|
|
826
826
|
if (!t) continue;
|
|
827
|
-
let a =
|
|
827
|
+
let a = _t(t, i);
|
|
828
828
|
a !== void 0 && (n[r] = a);
|
|
829
829
|
}
|
|
830
830
|
return n;
|
|
831
831
|
}
|
|
832
|
-
function
|
|
832
|
+
function yt(e) {
|
|
833
833
|
return Array.isArray(e) ? e.map((e) => ({ ...e })) : e;
|
|
834
834
|
}
|
|
835
|
-
function
|
|
835
|
+
function bt(e, t, n) {
|
|
836
836
|
let r = e?.[n];
|
|
837
|
-
return r ?
|
|
837
|
+
return r ? yt((t && n in t ? _t(r, t[n]) : void 0) ?? r.default) : t?.[n];
|
|
838
838
|
}
|
|
839
|
-
function
|
|
839
|
+
function xt(e, t) {
|
|
840
840
|
let n = {};
|
|
841
|
-
for (let r of Object.keys(e ?? {})) n[r] =
|
|
841
|
+
for (let r of Object.keys(e ?? {})) n[r] = bt(e, t, r);
|
|
842
842
|
return n;
|
|
843
843
|
}
|
|
844
844
|
//#endregion
|
|
845
845
|
//#region src/utils/drawingStyle.ts
|
|
846
|
-
var
|
|
846
|
+
var St = [
|
|
847
847
|
"solid",
|
|
848
848
|
"dashed",
|
|
849
849
|
"dotted"
|
|
850
|
-
],
|
|
851
|
-
function
|
|
850
|
+
], Ct = 64, wt = 2e3, Tt = 20, Et = 200;
|
|
851
|
+
function A(e, t, n) {
|
|
852
852
|
return typeof e == "number" && Number.isFinite(e) ? Math.min(n, Math.max(t, e)) : void 0;
|
|
853
853
|
}
|
|
854
|
-
function
|
|
855
|
-
return typeof e == "string" && e.length > 0 && e.length <=
|
|
854
|
+
function Dt(e) {
|
|
855
|
+
return typeof e == "string" && e.length > 0 && e.length <= Ct ? e : void 0;
|
|
856
856
|
}
|
|
857
|
-
function
|
|
857
|
+
function Ot(e) {
|
|
858
858
|
if (typeof e != "object" || !e) return {};
|
|
859
|
-
let t = e, n = {}, r =
|
|
859
|
+
let t = e, n = {}, r = Dt(t.color);
|
|
860
860
|
r !== void 0 && (n.color = r);
|
|
861
|
-
let i =
|
|
862
|
-
i !== void 0 && (n.lineWidth = i),
|
|
863
|
-
let a =
|
|
861
|
+
let i = A(t.lineWidth, .5, Tt);
|
|
862
|
+
i !== void 0 && (n.lineWidth = i), St.includes(t.lineStyle) && (n.lineStyle = t.lineStyle);
|
|
863
|
+
let a = Dt(t.fillColor);
|
|
864
864
|
a !== void 0 && (n.fillColor = a);
|
|
865
|
-
let o =
|
|
865
|
+
let o = A(t.fillOpacity, 0, 1);
|
|
866
866
|
o !== void 0 && (n.fillOpacity = o);
|
|
867
|
-
let s =
|
|
868
|
-
return s !== void 0 && (n.fontSize = s), typeof t.text == "string" && (n.text = t.text.slice(0,
|
|
867
|
+
let s = A(t.fontSize, 6, Et);
|
|
868
|
+
return s !== void 0 && (n.fontSize = s), typeof t.text == "string" && (n.text = t.text.slice(0, wt)), n;
|
|
869
869
|
}
|
|
870
870
|
//#endregion
|
|
871
871
|
//#region src/utils/chartTypeOptions.ts
|
|
872
|
-
var
|
|
873
|
-
function
|
|
874
|
-
if (!
|
|
872
|
+
var j = (e) => typeof e == "number" && Number.isFinite(e) && e > 0, M = (e, t, n) => typeof e == "number" && Number.isInteger(e) && e >= t && e <= n, N = (e) => typeof e == "object" && !!e && !Array.isArray(e);
|
|
873
|
+
function kt(e) {
|
|
874
|
+
if (!N(e)) return {};
|
|
875
875
|
let t = {};
|
|
876
|
-
if (
|
|
876
|
+
if (N(e.renko)) {
|
|
877
877
|
let { boxSize: n, atrPeriod: r } = e.renko;
|
|
878
878
|
t.renko = {
|
|
879
|
-
...
|
|
880
|
-
...
|
|
879
|
+
...j(n) || n === "atr" ? { boxSize: n } : {},
|
|
880
|
+
...M(r, 1, 500) ? { atrPeriod: r } : {}
|
|
881
881
|
};
|
|
882
882
|
}
|
|
883
|
-
if (
|
|
883
|
+
if (N(e.lineBreak)) {
|
|
884
884
|
let { lines: n } = e.lineBreak;
|
|
885
|
-
t.lineBreak =
|
|
885
|
+
t.lineBreak = M(n, 1, 10) ? { lines: n } : {};
|
|
886
886
|
}
|
|
887
|
-
if (
|
|
887
|
+
if (N(e.kagi)) {
|
|
888
888
|
let { reversal: n, reversalType: r } = e.kagi;
|
|
889
889
|
t.kagi = {
|
|
890
|
-
...
|
|
890
|
+
...j(n) ? { reversal: n } : {},
|
|
891
891
|
...r === "percent" || r === "price" ? { reversalType: r } : {}
|
|
892
892
|
};
|
|
893
893
|
}
|
|
894
|
-
if (
|
|
894
|
+
if (N(e.pointAndFigure)) {
|
|
895
895
|
let { boxSize: n, reversal: r } = e.pointAndFigure;
|
|
896
896
|
t.pointAndFigure = {
|
|
897
|
-
...
|
|
898
|
-
...
|
|
897
|
+
...j(n) || n === "auto" ? { boxSize: n } : {},
|
|
898
|
+
...M(r, 1, 10) ? { reversal: r } : {}
|
|
899
899
|
};
|
|
900
900
|
}
|
|
901
|
-
if (
|
|
901
|
+
if (N(e.rangeBars)) {
|
|
902
902
|
let { range: n } = e.rangeBars;
|
|
903
|
-
t.rangeBars =
|
|
903
|
+
t.rangeBars = j(n) || n === "auto" ? { range: n } : {};
|
|
904
904
|
}
|
|
905
905
|
return t;
|
|
906
906
|
}
|
|
907
907
|
//#endregion
|
|
908
908
|
//#region src/constants/themes.ts
|
|
909
|
-
var
|
|
910
|
-
family:
|
|
909
|
+
var At = "-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif", jt = {
|
|
910
|
+
family: At,
|
|
911
911
|
sizeSmall: 10,
|
|
912
912
|
sizeMedium: 12,
|
|
913
913
|
sizeLarge: 14
|
|
914
|
-
},
|
|
914
|
+
}, P = {
|
|
915
915
|
amber: "#f2a93b",
|
|
916
916
|
up: "#1fa874",
|
|
917
917
|
down: "#e8505b",
|
|
@@ -922,37 +922,37 @@ var Ot = "-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif",
|
|
|
922
922
|
rose: "#e25592",
|
|
923
923
|
neutral: "#7d8696",
|
|
924
924
|
ink: "#0c1016"
|
|
925
|
-
},
|
|
926
|
-
function
|
|
927
|
-
return me(e,
|
|
928
|
-
}
|
|
929
|
-
var
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
],
|
|
925
|
+
}, Mt = .22;
|
|
926
|
+
function F(e) {
|
|
927
|
+
return me(e, Mt);
|
|
928
|
+
}
|
|
929
|
+
var I = "#2eb88a", L = "#e85a67", Nt = [
|
|
930
|
+
P.blue,
|
|
931
|
+
P.ochre,
|
|
932
|
+
P.violet,
|
|
933
|
+
P.cyan,
|
|
934
|
+
P.rose
|
|
935
|
+
], R = {
|
|
936
936
|
name: "dark",
|
|
937
|
-
background:
|
|
937
|
+
background: P.ink,
|
|
938
938
|
text: "#d9dde4",
|
|
939
939
|
textSecondary: "#7d8696",
|
|
940
940
|
grid: "#161b23",
|
|
941
941
|
crosshair: "#8a93a3",
|
|
942
|
-
candleUp:
|
|
943
|
-
candleDown:
|
|
944
|
-
candleUpWick:
|
|
945
|
-
candleDownWick:
|
|
946
|
-
lineColor:
|
|
942
|
+
candleUp: I,
|
|
943
|
+
candleDown: L,
|
|
944
|
+
candleUpWick: I,
|
|
945
|
+
candleDownWick: L,
|
|
946
|
+
lineColor: P.amber,
|
|
947
947
|
areaTopColor: "rgba(242, 169, 59, 0.32)",
|
|
948
948
|
areaBottomColor: "rgba(242, 169, 59, 0.0)",
|
|
949
|
-
volumeUp:
|
|
950
|
-
volumeDown: L
|
|
949
|
+
volumeUp: F(I),
|
|
950
|
+
volumeDown: F(L),
|
|
951
951
|
axisLine: "#1f2630",
|
|
952
952
|
axisLabel: "#9aa3b2",
|
|
953
953
|
axisLabelBackground: "#1f2630",
|
|
954
|
-
font:
|
|
955
|
-
},
|
|
954
|
+
font: jt
|
|
955
|
+
}, z = {
|
|
956
956
|
name: "light",
|
|
957
957
|
background: "#ffffff",
|
|
958
958
|
text: "#0f131a",
|
|
@@ -966,13 +966,13 @@ var R = "#2eb88a", z = "#e85a67", jt = [
|
|
|
966
966
|
lineColor: "#c77a0a",
|
|
967
967
|
areaTopColor: "rgba(199, 122, 10, 0.24)",
|
|
968
968
|
areaBottomColor: "rgba(199, 122, 10, 0.0)",
|
|
969
|
-
volumeUp:
|
|
970
|
-
volumeDown:
|
|
969
|
+
volumeUp: F("#16a36a"),
|
|
970
|
+
volumeDown: F("#d9414f"),
|
|
971
971
|
axisLine: "#dde1e7",
|
|
972
972
|
axisLabel: "#5b6472",
|
|
973
973
|
axisLabelBackground: "#eef0f3",
|
|
974
|
-
font:
|
|
975
|
-
},
|
|
974
|
+
font: jt
|
|
975
|
+
}, B = {
|
|
976
976
|
name: "terminal",
|
|
977
977
|
background: "#0E0E0E",
|
|
978
978
|
text: "#C0C0C0",
|
|
@@ -997,18 +997,18 @@ var R = "#2eb88a", z = "#e85a67", jt = [
|
|
|
997
997
|
sizeMedium: 12,
|
|
998
998
|
sizeLarge: 14
|
|
999
999
|
}
|
|
1000
|
-
},
|
|
1000
|
+
}, Pt = new Set([
|
|
1001
|
+
R.volumeUp,
|
|
1002
|
+
R.volumeDown,
|
|
1003
|
+
z.volumeUp,
|
|
1004
|
+
z.volumeDown,
|
|
1001
1005
|
B.volumeUp,
|
|
1002
|
-
B.volumeDown
|
|
1003
|
-
V.volumeUp,
|
|
1004
|
-
V.volumeDown,
|
|
1005
|
-
H.volumeUp,
|
|
1006
|
-
H.volumeDown
|
|
1006
|
+
B.volumeDown
|
|
1007
1007
|
]);
|
|
1008
|
-
function
|
|
1008
|
+
function V(e) {
|
|
1009
1009
|
let t = (e, t) => {
|
|
1010
|
-
if (!
|
|
1011
|
-
let n =
|
|
1010
|
+
if (!Pt.has(e)) return e;
|
|
1011
|
+
let n = F(t);
|
|
1012
1012
|
return n === t ? e : n;
|
|
1013
1013
|
};
|
|
1014
1014
|
return {
|
|
@@ -1018,67 +1018,67 @@ function U(e) {
|
|
|
1018
1018
|
}
|
|
1019
1019
|
//#endregion
|
|
1020
1020
|
//#region src/utils/chartStyle.ts
|
|
1021
|
-
var
|
|
1021
|
+
var Ft = [
|
|
1022
1022
|
"solid",
|
|
1023
1023
|
"dashed",
|
|
1024
1024
|
"dotted"
|
|
1025
|
-
],
|
|
1025
|
+
], It = 20, Lt = 64, Rt = 2, zt = [
|
|
1026
1026
|
/^#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i,
|
|
1027
1027
|
/^[a-z]{3,30}$/i,
|
|
1028
1028
|
/^(?:rgba?|hsla?|hwb|lab|lch|oklab|oklch|color)\([0-9a-z.,%/\s-]*\)$/i
|
|
1029
1029
|
];
|
|
1030
|
-
function
|
|
1031
|
-
return typeof e == "string" && e.length <=
|
|
1030
|
+
function H(e) {
|
|
1031
|
+
return typeof e == "string" && e.length <= Lt && zt.some((t) => t.test(e.trim()));
|
|
1032
1032
|
}
|
|
1033
|
-
function
|
|
1033
|
+
function Bt(e, t) {
|
|
1034
1034
|
switch (e) {
|
|
1035
|
-
case "color": return
|
|
1036
|
-
case "lineStyle": return
|
|
1037
|
-
case "width": return typeof t == "number" && Number.isFinite(t) && t > 0 && t <=
|
|
1035
|
+
case "color": return H(t);
|
|
1036
|
+
case "lineStyle": return Ft.includes(t);
|
|
1037
|
+
case "width": return typeof t == "number" && Number.isFinite(t) && t > 0 && t <= It;
|
|
1038
1038
|
case "boolean": return typeof t == "boolean";
|
|
1039
1039
|
}
|
|
1040
1040
|
}
|
|
1041
|
-
function
|
|
1041
|
+
function Vt(e) {
|
|
1042
1042
|
return Object.prototype.hasOwnProperty.call(t, e);
|
|
1043
1043
|
}
|
|
1044
|
-
function
|
|
1044
|
+
function Ht(e) {
|
|
1045
1045
|
let n = {}, r = [];
|
|
1046
1046
|
if (typeof e != "object" || !e || Array.isArray(e)) return {
|
|
1047
1047
|
overrides: {},
|
|
1048
1048
|
rejected: r
|
|
1049
1049
|
};
|
|
1050
|
-
for (let [i, a] of Object.entries(e))
|
|
1050
|
+
for (let [i, a] of Object.entries(e)) Vt(i) ? a === null ? n[i] = null : Bt(t[i], a) ? n[i] = a : r.push(i) : r.push(i);
|
|
1051
1051
|
return {
|
|
1052
1052
|
overrides: n,
|
|
1053
1053
|
rejected: r
|
|
1054
1054
|
};
|
|
1055
1055
|
}
|
|
1056
|
-
function
|
|
1056
|
+
function Ut(e) {
|
|
1057
1057
|
if (typeof e != "object" || !e || Array.isArray(e)) return null;
|
|
1058
1058
|
let { background: t, separator: n } = e, r = {
|
|
1059
|
-
...
|
|
1060
|
-
...
|
|
1059
|
+
...H(t) ? { background: t } : {},
|
|
1060
|
+
...H(n) ? { separator: n } : {}
|
|
1061
1061
|
};
|
|
1062
1062
|
return Object.keys(r).length > 0 ? r : null;
|
|
1063
1063
|
}
|
|
1064
|
-
var
|
|
1065
|
-
function
|
|
1064
|
+
var Wt = /^[A-Za-z0-9_]{1,32}$/;
|
|
1065
|
+
function Gt(e) {
|
|
1066
1066
|
if (typeof e != "object" || !e || Array.isArray(e)) return;
|
|
1067
1067
|
let t = {};
|
|
1068
1068
|
for (let [n, r] of Object.entries(e)) {
|
|
1069
|
-
if (!
|
|
1069
|
+
if (!Wt.test(n) || typeof r != "object" || !r) continue;
|
|
1070
1070
|
let { lineStyle: e, visible: i } = r, a = {
|
|
1071
|
-
...
|
|
1071
|
+
...Ft.includes(e) ? { lineStyle: e } : {},
|
|
1072
1072
|
...typeof i == "boolean" ? { visible: i } : {}
|
|
1073
1073
|
};
|
|
1074
1074
|
Object.keys(a).length > 0 && (t[n] = a);
|
|
1075
1075
|
}
|
|
1076
1076
|
return Object.keys(t).length > 0 ? t : void 0;
|
|
1077
1077
|
}
|
|
1078
|
-
function
|
|
1078
|
+
function Kt(e, t, n = 1) {
|
|
1079
1079
|
return e === "solid" ? [] : e === "dotted" ? [n, n * 2] : [...t];
|
|
1080
1080
|
}
|
|
1081
|
-
function
|
|
1081
|
+
function qt(e, t, n) {
|
|
1082
1082
|
let r = (e) => t(`series.${n}.${e}`), i = r("upColor") ?? t("series.candlestick.upColor"), a = r("downColor") ?? t("series.candlestick.downColor"), o = i ?? e.candleUp, s = a ?? e.candleDown;
|
|
1083
1083
|
return {
|
|
1084
1084
|
up: o,
|
|
@@ -1086,12 +1086,12 @@ function Gt(e, t, n) {
|
|
|
1086
1086
|
wickUp: r("wickUpColor") ?? t("series.candlestick.wickUpColor") ?? (i === void 0 ? e.candleUpWick : o),
|
|
1087
1087
|
wickDown: r("wickDownColor") ?? t("series.candlestick.wickDownColor") ?? (a === void 0 ? e.candleDownWick : s),
|
|
1088
1088
|
line: r("color") ?? r("lineColor") ?? t("series.line.color") ?? e.lineColor,
|
|
1089
|
-
lineWidth: r("lineWidth") ?? t("series.line.lineWidth") ??
|
|
1089
|
+
lineWidth: r("lineWidth") ?? t("series.line.lineWidth") ?? Rt,
|
|
1090
1090
|
top: r("topColor") ?? t("series.area.topColor") ?? e.areaTopColor,
|
|
1091
1091
|
bottom: r("bottomColor") ?? t("series.area.bottomColor") ?? e.areaBottomColor
|
|
1092
1092
|
};
|
|
1093
1093
|
}
|
|
1094
|
-
function
|
|
1094
|
+
function U(e, t, n) {
|
|
1095
1095
|
return {
|
|
1096
1096
|
visible: e(`${t}.visible`) ?? n.visible,
|
|
1097
1097
|
color: e(`${t}.color`) ?? n.color,
|
|
@@ -1099,21 +1099,21 @@ function G(e, t, n) {
|
|
|
1099
1099
|
width: e(`${t}.width`) ?? n.width
|
|
1100
1100
|
};
|
|
1101
1101
|
}
|
|
1102
|
-
function
|
|
1103
|
-
let { style: r, ...i } = e, a = n, o = (e) => a[e], s =
|
|
1102
|
+
function Jt(e, t, n) {
|
|
1103
|
+
let { style: r, ...i } = e, a = n, o = (e) => a[e], s = qt(i, o, t), c = o("background.color") ?? i.background, l = (e, t) => o(e) ?? t, u = (e) => o(e) ?? null, d = {
|
|
1104
1104
|
panes: {
|
|
1105
1105
|
background: l("panes.background", c),
|
|
1106
1106
|
separator: l("panes.separatorColor", i.axisLine),
|
|
1107
1107
|
title: l("panes.titleColor", i.textSecondary)
|
|
1108
1108
|
},
|
|
1109
1109
|
grid: {
|
|
1110
|
-
horizontal:
|
|
1110
|
+
horizontal: U(o, "grid.horizontal", {
|
|
1111
1111
|
visible: !0,
|
|
1112
1112
|
color: i.grid,
|
|
1113
1113
|
style: "solid",
|
|
1114
1114
|
width: 1
|
|
1115
1115
|
}),
|
|
1116
|
-
vertical:
|
|
1116
|
+
vertical: U(o, "grid.vertical", {
|
|
1117
1117
|
visible: !0,
|
|
1118
1118
|
color: i.grid,
|
|
1119
1119
|
style: "solid",
|
|
@@ -1121,13 +1121,13 @@ function Kt(e, t, n) {
|
|
|
1121
1121
|
})
|
|
1122
1122
|
},
|
|
1123
1123
|
crosshair: {
|
|
1124
|
-
horizontal:
|
|
1124
|
+
horizontal: U(o, "crosshair.horizontal", {
|
|
1125
1125
|
visible: !0,
|
|
1126
1126
|
color: i.crosshair,
|
|
1127
1127
|
style: "dashed",
|
|
1128
1128
|
width: 1
|
|
1129
1129
|
}),
|
|
1130
|
-
vertical:
|
|
1130
|
+
vertical: U(o, "crosshair.vertical", {
|
|
1131
1131
|
visible: !0,
|
|
1132
1132
|
color: i.crosshair,
|
|
1133
1133
|
style: "dashed",
|
|
@@ -1199,7 +1199,7 @@ function Kt(e, t, n) {
|
|
|
1199
1199
|
style: d
|
|
1200
1200
|
};
|
|
1201
1201
|
}
|
|
1202
|
-
var
|
|
1202
|
+
var Yt = {
|
|
1203
1203
|
"background.color": (e) => e.background,
|
|
1204
1204
|
"panes.background": (e, t) => t.panes.background,
|
|
1205
1205
|
"panes.separatorColor": (e, t) => t.panes.separator,
|
|
@@ -1218,8 +1218,8 @@ var qt = {
|
|
|
1218
1218
|
"lastPrice.downColor": (e, t) => t.lastPrice.down,
|
|
1219
1219
|
"lastPrice.style": (e, t) => t.lastPrice.style,
|
|
1220
1220
|
"lastPrice.width": (e, t) => t.lastPrice.width,
|
|
1221
|
-
"volume.upColor": (e) =>
|
|
1222
|
-
"volume.downColor": (e) =>
|
|
1221
|
+
"volume.upColor": (e) => V(e).up,
|
|
1222
|
+
"volume.downColor": (e) => V(e).down,
|
|
1223
1223
|
"sessionBreaks.color": (e, t) => t.sessionBreaks.color,
|
|
1224
1224
|
"sessionBreaks.style": (e, t) => t.sessionBreaks.style,
|
|
1225
1225
|
"sessionBreaks.width": (e, t) => t.sessionBreaks.width,
|
|
@@ -1236,16 +1236,16 @@ var qt = {
|
|
|
1236
1236
|
"tradeZones.lossColor": (e, t) => t.tradeZones.loss,
|
|
1237
1237
|
"tradeZones.activeColor": (e, t) => t.tradeZones.active,
|
|
1238
1238
|
"drawings.handleColor": (e, t) => t.drawings.handle
|
|
1239
|
-
},
|
|
1239
|
+
}, Xt = {
|
|
1240
1240
|
visible: "visible",
|
|
1241
1241
|
color: "color",
|
|
1242
1242
|
style: "style",
|
|
1243
1243
|
width: "width"
|
|
1244
1244
|
};
|
|
1245
|
-
function
|
|
1245
|
+
function Zt(e, t, n, r = "candlestick") {
|
|
1246
1246
|
let i = n.split(".");
|
|
1247
1247
|
if (i[0] === "series") {
|
|
1248
|
-
let n =
|
|
1248
|
+
let n = qt(e, (e) => t[e], i[1]);
|
|
1249
1249
|
switch (i[2]) {
|
|
1250
1250
|
case "upColor": return n.up;
|
|
1251
1251
|
case "downColor": return n.down;
|
|
@@ -1258,12 +1258,12 @@ function Yt(e, t, n, r = "candlestick") {
|
|
|
1258
1258
|
case "bottomColor": return n.bottom;
|
|
1259
1259
|
}
|
|
1260
1260
|
}
|
|
1261
|
-
let a =
|
|
1262
|
-
return i[0] === "grid" || i[0] === "crosshair" && (i[1] === "horizontal" || i[1] === "vertical") ? (i[0] === "grid" ? o.grid : o.crosshair)[i[1]][
|
|
1261
|
+
let a = Jt(e, r, t), o = a.style;
|
|
1262
|
+
return i[0] === "grid" || i[0] === "crosshair" && (i[1] === "horizontal" || i[1] === "vertical") ? (i[0] === "grid" ? o.grid : o.crosshair)[i[1]][Xt[i[2]]] : Yt[n]?.(a, o) ?? null;
|
|
1263
1263
|
}
|
|
1264
1264
|
//#endregion
|
|
1265
1265
|
//#region src/constants/defaults.ts
|
|
1266
|
-
var
|
|
1266
|
+
var Qt = {
|
|
1267
1267
|
autoScale: !0,
|
|
1268
1268
|
rightMargin: 5,
|
|
1269
1269
|
minBarSpacing: 2,
|
|
@@ -1274,7 +1274,7 @@ var Xt = {
|
|
|
1274
1274
|
vLineStyle: "solid"
|
|
1275
1275
|
},
|
|
1276
1276
|
crosshair: { mode: "magnet" }
|
|
1277
|
-
},
|
|
1277
|
+
}, $t = [
|
|
1278
1278
|
"1s",
|
|
1279
1279
|
"1m",
|
|
1280
1280
|
"3m",
|
|
@@ -1291,7 +1291,7 @@ var Xt = {
|
|
|
1291
1291
|
"3d",
|
|
1292
1292
|
"1w",
|
|
1293
1293
|
"1M"
|
|
1294
|
-
],
|
|
1294
|
+
], en = [
|
|
1295
1295
|
"1m",
|
|
1296
1296
|
"5m",
|
|
1297
1297
|
"15m",
|
|
@@ -1305,7 +1305,7 @@ var Xt = {
|
|
|
1305
1305
|
"3M",
|
|
1306
1306
|
"6M",
|
|
1307
1307
|
"12M"
|
|
1308
|
-
],
|
|
1308
|
+
], tn = [
|
|
1309
1309
|
"1m",
|
|
1310
1310
|
"5m",
|
|
1311
1311
|
"15m",
|
|
@@ -1315,7 +1315,7 @@ var Xt = {
|
|
|
1315
1315
|
"1d",
|
|
1316
1316
|
"1w",
|
|
1317
1317
|
"1M"
|
|
1318
|
-
],
|
|
1318
|
+
], nn = [
|
|
1319
1319
|
"1m",
|
|
1320
1320
|
"5m",
|
|
1321
1321
|
"15m",
|
|
@@ -1323,7 +1323,7 @@ var Xt = {
|
|
|
1323
1323
|
"4h",
|
|
1324
1324
|
"1d",
|
|
1325
1325
|
"1w"
|
|
1326
|
-
],
|
|
1326
|
+
], rn = 8, an = 2, on = 70, sn = 30, cn = 60, ln = 120, W = {
|
|
1327
1327
|
candlestick: "Candlestick",
|
|
1328
1328
|
line: "Line",
|
|
1329
1329
|
area: "Area",
|
|
@@ -1426,7 +1426,7 @@ var Xt = {
|
|
|
1426
1426
|
error: "Error",
|
|
1427
1427
|
numberDecimalSeparator: ".",
|
|
1428
1428
|
numberGroupSeparator: ","
|
|
1429
|
-
},
|
|
1429
|
+
}, un = {
|
|
1430
1430
|
candlestick: "Nến",
|
|
1431
1431
|
line: "Đường",
|
|
1432
1432
|
area: "Vùng",
|
|
@@ -1529,43 +1529,43 @@ var Xt = {
|
|
|
1529
1529
|
error: "Lỗi",
|
|
1530
1530
|
numberDecimalSeparator: ",",
|
|
1531
1531
|
numberGroupSeparator: "."
|
|
1532
|
-
},
|
|
1533
|
-
function
|
|
1534
|
-
|
|
1532
|
+
}, G = new Map([["en", W], ["vi", un]]), K = "en", dn = W;
|
|
1533
|
+
function fn(e) {
|
|
1534
|
+
K = e, dn = G.get(e) ?? W;
|
|
1535
1535
|
}
|
|
1536
|
-
function
|
|
1537
|
-
return
|
|
1536
|
+
function pn() {
|
|
1537
|
+
return K;
|
|
1538
1538
|
}
|
|
1539
|
-
function
|
|
1540
|
-
return
|
|
1539
|
+
function mn(e) {
|
|
1540
|
+
return dn[e] ?? W[e] ?? e;
|
|
1541
1541
|
}
|
|
1542
|
-
function
|
|
1543
|
-
|
|
1542
|
+
function hn(e, t) {
|
|
1543
|
+
G.set(e, t);
|
|
1544
1544
|
}
|
|
1545
|
-
function
|
|
1546
|
-
return
|
|
1545
|
+
function gn(e) {
|
|
1546
|
+
return G.get(e ?? K) ?? W;
|
|
1547
1547
|
}
|
|
1548
|
-
function
|
|
1549
|
-
let r =
|
|
1548
|
+
function q(e, t = 2, n) {
|
|
1549
|
+
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 = "";
|
|
1550
1550
|
for (let e = l.length - 1, t = 0; e >= 0; e--, t++) t > 0 && t % 3 == 0 && (u = a + u), u = l[e] + u;
|
|
1551
1551
|
return c && (u = "-" + u), s ? u + i + s : u;
|
|
1552
1552
|
}
|
|
1553
|
-
function
|
|
1554
|
-
return
|
|
1553
|
+
function _n(e) {
|
|
1554
|
+
return q(e, 0, "vi");
|
|
1555
1555
|
}
|
|
1556
|
-
function
|
|
1557
|
-
return e >= 1e9 ?
|
|
1556
|
+
function vn(e, t) {
|
|
1557
|
+
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);
|
|
1558
1558
|
}
|
|
1559
1559
|
//#endregion
|
|
1560
1560
|
//#region src/market/presets.ts
|
|
1561
|
-
var
|
|
1562
|
-
up: "#
|
|
1563
|
-
down: "#
|
|
1564
|
-
unchanged: "#
|
|
1565
|
-
ceiling: "#
|
|
1566
|
-
floor: "#
|
|
1567
|
-
reference: "#
|
|
1568
|
-
},
|
|
1561
|
+
var J = {
|
|
1562
|
+
up: "#22C55E",
|
|
1563
|
+
down: "#EF4444",
|
|
1564
|
+
unchanged: "#EAB308",
|
|
1565
|
+
ceiling: "#D946EF",
|
|
1566
|
+
floor: "#06B6D4",
|
|
1567
|
+
reference: "#EAB308"
|
|
1568
|
+
}, Y = "Asia/Ho_Chi_Minh", yn = [
|
|
1569
1569
|
{
|
|
1570
1570
|
name: "ATO",
|
|
1571
1571
|
startTime: "09:00",
|
|
@@ -1596,7 +1596,63 @@ var Z = {
|
|
|
1596
1596
|
endTime: "14:45",
|
|
1597
1597
|
type: "preClose"
|
|
1598
1598
|
}
|
|
1599
|
-
],
|
|
1599
|
+
], bn = [
|
|
1600
|
+
{
|
|
1601
|
+
name: "Phiên 1",
|
|
1602
|
+
startTime: "09:15",
|
|
1603
|
+
endTime: "11:30",
|
|
1604
|
+
type: "continuous"
|
|
1605
|
+
},
|
|
1606
|
+
{
|
|
1607
|
+
name: "Nghỉ trưa",
|
|
1608
|
+
startTime: "11:30",
|
|
1609
|
+
endTime: "13:00",
|
|
1610
|
+
type: "closed"
|
|
1611
|
+
},
|
|
1612
|
+
{
|
|
1613
|
+
name: "Phiên 2",
|
|
1614
|
+
startTime: "13:00",
|
|
1615
|
+
endTime: "14:30",
|
|
1616
|
+
type: "continuous"
|
|
1617
|
+
},
|
|
1618
|
+
{
|
|
1619
|
+
name: "ATC",
|
|
1620
|
+
startTime: "14:30",
|
|
1621
|
+
endTime: "14:45",
|
|
1622
|
+
type: "preClose"
|
|
1623
|
+
},
|
|
1624
|
+
{
|
|
1625
|
+
name: "PLO",
|
|
1626
|
+
startTime: "14:45",
|
|
1627
|
+
endTime: "15:00",
|
|
1628
|
+
type: "postClose"
|
|
1629
|
+
}
|
|
1630
|
+
], xn = [
|
|
1631
|
+
{
|
|
1632
|
+
name: "Phiên 1",
|
|
1633
|
+
startTime: "09:15",
|
|
1634
|
+
endTime: "11:30",
|
|
1635
|
+
type: "continuous"
|
|
1636
|
+
},
|
|
1637
|
+
{
|
|
1638
|
+
name: "Nghỉ trưa",
|
|
1639
|
+
startTime: "11:30",
|
|
1640
|
+
endTime: "13:00",
|
|
1641
|
+
type: "closed"
|
|
1642
|
+
},
|
|
1643
|
+
{
|
|
1644
|
+
name: "Phiên 2",
|
|
1645
|
+
startTime: "13:00",
|
|
1646
|
+
endTime: "14:30",
|
|
1647
|
+
type: "continuous"
|
|
1648
|
+
}
|
|
1649
|
+
], Sn = [
|
|
1650
|
+
{
|
|
1651
|
+
name: "ATO",
|
|
1652
|
+
startTime: "08:45",
|
|
1653
|
+
endTime: "09:00",
|
|
1654
|
+
type: "preOpen"
|
|
1655
|
+
},
|
|
1600
1656
|
{
|
|
1601
1657
|
name: "Phiên 1",
|
|
1602
1658
|
startTime: "09:00",
|
|
@@ -1621,59 +1677,96 @@ var Z = {
|
|
|
1621
1677
|
endTime: "14:45",
|
|
1622
1678
|
type: "preClose"
|
|
1623
1679
|
}
|
|
1624
|
-
],
|
|
1680
|
+
], Cn = {
|
|
1625
1681
|
type: "stock",
|
|
1626
1682
|
exchange: "HOSE",
|
|
1627
1683
|
currency: "VND",
|
|
1628
1684
|
pricePrecision: 2,
|
|
1629
|
-
volumeUnit:
|
|
1630
|
-
priceStep: .
|
|
1685
|
+
volumeUnit: 100,
|
|
1686
|
+
priceStep: .01,
|
|
1687
|
+
priceSteps: [
|
|
1688
|
+
{
|
|
1689
|
+
from: 0,
|
|
1690
|
+
step: .01
|
|
1691
|
+
},
|
|
1692
|
+
{
|
|
1693
|
+
from: 10,
|
|
1694
|
+
step: .05
|
|
1695
|
+
},
|
|
1696
|
+
{
|
|
1697
|
+
from: 50,
|
|
1698
|
+
step: .1
|
|
1699
|
+
}
|
|
1700
|
+
],
|
|
1701
|
+
timeZone: Y,
|
|
1631
1702
|
priceLimits: {
|
|
1632
1703
|
enabled: !0,
|
|
1633
1704
|
ceilingPercent: 7,
|
|
1634
1705
|
floorPercent: 7
|
|
1635
1706
|
},
|
|
1636
|
-
sessions:
|
|
1637
|
-
colorScheme:
|
|
1638
|
-
},
|
|
1707
|
+
sessions: yn,
|
|
1708
|
+
colorScheme: J
|
|
1709
|
+
}, wn = {
|
|
1710
|
+
...Cn,
|
|
1711
|
+
priceSteps: void 0
|
|
1712
|
+
}, Tn = {
|
|
1639
1713
|
type: "stock",
|
|
1640
1714
|
exchange: "HNX",
|
|
1641
1715
|
currency: "VND",
|
|
1642
1716
|
pricePrecision: 1,
|
|
1643
1717
|
volumeUnit: 100,
|
|
1644
1718
|
priceStep: .1,
|
|
1719
|
+
timeZone: Y,
|
|
1645
1720
|
priceLimits: {
|
|
1646
1721
|
enabled: !0,
|
|
1647
1722
|
ceilingPercent: 10,
|
|
1648
1723
|
floorPercent: 10
|
|
1649
1724
|
},
|
|
1650
|
-
sessions:
|
|
1651
|
-
colorScheme:
|
|
1652
|
-
},
|
|
1725
|
+
sessions: bn,
|
|
1726
|
+
colorScheme: J
|
|
1727
|
+
}, En = {
|
|
1653
1728
|
type: "stock",
|
|
1654
1729
|
exchange: "UPCOM",
|
|
1655
1730
|
currency: "VND",
|
|
1656
1731
|
pricePrecision: 1,
|
|
1657
1732
|
volumeUnit: 100,
|
|
1658
1733
|
priceStep: .1,
|
|
1734
|
+
timeZone: Y,
|
|
1659
1735
|
priceLimits: {
|
|
1660
1736
|
enabled: !0,
|
|
1661
1737
|
ceilingPercent: 15,
|
|
1662
1738
|
floorPercent: 15
|
|
1663
1739
|
},
|
|
1664
|
-
sessions:
|
|
1665
|
-
colorScheme:
|
|
1666
|
-
},
|
|
1740
|
+
sessions: xn,
|
|
1741
|
+
colorScheme: J
|
|
1742
|
+
}, Dn = {
|
|
1743
|
+
type: "futures",
|
|
1744
|
+
exchange: "HNX",
|
|
1745
|
+
currency: "VND",
|
|
1746
|
+
pricePrecision: 1,
|
|
1747
|
+
volumeUnit: 1,
|
|
1748
|
+
priceStep: .1,
|
|
1749
|
+
contractMultiplier: 1e5,
|
|
1750
|
+
timeZone: Y,
|
|
1751
|
+
priceLimits: {
|
|
1752
|
+
enabled: !0,
|
|
1753
|
+
ceilingPercent: 7,
|
|
1754
|
+
floorPercent: 7
|
|
1755
|
+
},
|
|
1756
|
+
sessions: Sn,
|
|
1757
|
+
colorScheme: J
|
|
1758
|
+
}, On = {
|
|
1667
1759
|
type: "crypto",
|
|
1668
1760
|
currency: "USDT",
|
|
1669
1761
|
pricePrecision: 2,
|
|
1670
1762
|
priceLimits: { enabled: !1 }
|
|
1671
|
-
},
|
|
1763
|
+
}, kn = {
|
|
1672
1764
|
type: "stock",
|
|
1673
1765
|
exchange: "NYSE",
|
|
1674
1766
|
currency: "USD",
|
|
1675
1767
|
pricePrecision: 2,
|
|
1676
1768
|
priceStep: .01,
|
|
1769
|
+
timeZone: "America/New_York",
|
|
1677
1770
|
priceLimits: { enabled: !1 },
|
|
1678
1771
|
sessions: [
|
|
1679
1772
|
{
|
|
@@ -1692,36 +1785,119 @@ var Z = {
|
|
|
1692
1785
|
name: "After-Hours",
|
|
1693
1786
|
startTime: "16:00",
|
|
1694
1787
|
endTime: "20:00",
|
|
1695
|
-
type: "
|
|
1788
|
+
type: "postClose"
|
|
1696
1789
|
}
|
|
1697
1790
|
]
|
|
1698
1791
|
};
|
|
1699
|
-
function
|
|
1792
|
+
function An(e) {
|
|
1700
1793
|
return {
|
|
1701
1794
|
...e,
|
|
1702
|
-
candleUp:
|
|
1703
|
-
candleDown:
|
|
1704
|
-
candleUpWick:
|
|
1705
|
-
candleDownWick:
|
|
1706
|
-
volumeUp:
|
|
1707
|
-
volumeDown:
|
|
1795
|
+
candleUp: J.up,
|
|
1796
|
+
candleDown: J.down,
|
|
1797
|
+
candleUpWick: J.up,
|
|
1798
|
+
candleDownWick: J.down,
|
|
1799
|
+
volumeUp: F(J.up),
|
|
1800
|
+
volumeDown: F(J.down)
|
|
1708
1801
|
};
|
|
1709
1802
|
}
|
|
1710
|
-
|
|
1803
|
+
var X = 1e-9;
|
|
1804
|
+
function jn(e, t) {
|
|
1805
|
+
let n = t.priceStep;
|
|
1806
|
+
for (let r of t.priceSteps ?? []) e + X >= r.from && (n = r.step);
|
|
1807
|
+
return n !== void 0 && n > 0 ? n : void 0;
|
|
1808
|
+
}
|
|
1809
|
+
function Mn(e, t) {
|
|
1810
|
+
let n = t.priceStep;
|
|
1811
|
+
for (let r of t.priceSteps ?? []) e - X > r.from && (n = r.step);
|
|
1812
|
+
return n !== void 0 && n > 0 ? n : void 0;
|
|
1813
|
+
}
|
|
1814
|
+
function Z(e, t, n = "nearest") {
|
|
1815
|
+
let r = jn(e, t);
|
|
1816
|
+
if (r === void 0 || !Number.isFinite(e)) return e;
|
|
1817
|
+
let i = e / r, a = n === "down" ? Math.floor(i + X) : n === "up" ? Math.ceil(i - X) : Math.round(i);
|
|
1818
|
+
return Number((a * r).toFixed(lt(r)));
|
|
1819
|
+
}
|
|
1820
|
+
function Nn(e, t) {
|
|
1711
1821
|
if (!t.priceLimits?.enabled || !t.priceLimits.ceilingPercent) return null;
|
|
1712
|
-
let n = t.priceLimits.ceilingPercent / 100, r = (t.priceLimits.floorPercent ?? t.priceLimits.ceilingPercent) / 100;
|
|
1822
|
+
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 = jn(i, t);
|
|
1823
|
+
if (s === void 0) return {
|
|
1824
|
+
ceiling: a,
|
|
1825
|
+
floor: o,
|
|
1826
|
+
reference: i
|
|
1827
|
+
};
|
|
1828
|
+
let c = Z(i + s, t);
|
|
1829
|
+
if (Math.abs(i - s) < X) return {
|
|
1830
|
+
ceiling: c,
|
|
1831
|
+
floor: i,
|
|
1832
|
+
reference: i
|
|
1833
|
+
};
|
|
1834
|
+
let l = Z(a, t, "down"), u = Z(o, t, "up");
|
|
1835
|
+
return l <= i && (l = c), u >= i && (u = Z(i - (Mn(i, t) ?? s), t)), u <= 0 && (u = i), {
|
|
1836
|
+
ceiling: l,
|
|
1837
|
+
floor: u,
|
|
1838
|
+
reference: i
|
|
1839
|
+
};
|
|
1840
|
+
}
|
|
1841
|
+
var Q = (e, t) => Math.round(e * t * 1e9) / 1e9;
|
|
1842
|
+
function Pn(e, t) {
|
|
1843
|
+
let n = Math.round(Math.log10(t));
|
|
1713
1844
|
return {
|
|
1714
|
-
|
|
1715
|
-
|
|
1716
|
-
|
|
1845
|
+
...e,
|
|
1846
|
+
pricePrecision: e.pricePrecision === void 0 ? void 0 : Math.max(0, e.pricePrecision - n),
|
|
1847
|
+
priceStep: e.priceStep === void 0 ? void 0 : Q(e.priceStep, t),
|
|
1848
|
+
priceSteps: e.priceSteps?.map((e) => ({
|
|
1849
|
+
from: Q(e.from, t),
|
|
1850
|
+
step: Q(e.step, t)
|
|
1851
|
+
})),
|
|
1852
|
+
priceLimits: e.priceLimits && {
|
|
1853
|
+
...e.priceLimits,
|
|
1854
|
+
referencePrice: e.priceLimits.referencePrice === void 0 ? void 0 : Q(e.priceLimits.referencePrice, t)
|
|
1855
|
+
}
|
|
1717
1856
|
};
|
|
1718
1857
|
}
|
|
1719
|
-
|
|
1720
|
-
|
|
1721
|
-
|
|
1858
|
+
var Fn = 6e4, In = 864e5;
|
|
1859
|
+
function Ln(e, t) {
|
|
1860
|
+
let n, r;
|
|
1861
|
+
if (t) {
|
|
1862
|
+
let i = new Date(e + x(t, e) * Fn);
|
|
1863
|
+
n = i.getUTCHours(), r = i.getUTCMinutes();
|
|
1864
|
+
} else {
|
|
1865
|
+
let t = new Date(e);
|
|
1866
|
+
n = t.getHours(), r = t.getMinutes();
|
|
1867
|
+
}
|
|
1868
|
+
return `${String(n).padStart(2, "0")}:${String(r).padStart(2, "0")}`;
|
|
1869
|
+
}
|
|
1870
|
+
function Rn(e, t = Date.now(), n) {
|
|
1871
|
+
if (n !== void 0 && !b(n)) return null;
|
|
1872
|
+
let r = Ln(t, n);
|
|
1873
|
+
for (let t of e) if (r >= t.startTime && r < t.endTime) return t;
|
|
1722
1874
|
return null;
|
|
1723
1875
|
}
|
|
1876
|
+
var $ = (e) => String(e).padStart(2, "0"), zn = (e) => {
|
|
1877
|
+
let t = new Date(e);
|
|
1878
|
+
return `${t.getUTCFullYear()}-${$(t.getUTCMonth() + 1)}-${$(t.getUTCDate())}`;
|
|
1879
|
+
}, Bn = 4, Vn = 7 * 36e5;
|
|
1880
|
+
function Hn(e, t, n) {
|
|
1881
|
+
let r = Date.UTC(e, t - 1, 1), i = 1 + (Bn - new Date(r).getUTCDay() + 7) % 7, a = Date.UTC(e, t - 1, i + 14), o = (e) => {
|
|
1882
|
+
let t = new Date(e).getUTCDay();
|
|
1883
|
+
return t === 0 || t === 6 || (n?.(zn(e)) ?? !1);
|
|
1884
|
+
};
|
|
1885
|
+
for (; o(a);) a -= In;
|
|
1886
|
+
return zn(a);
|
|
1887
|
+
}
|
|
1888
|
+
function Un(e, t) {
|
|
1889
|
+
let n = zn(e + Vn), r = (e, n) => ({
|
|
1890
|
+
symbol: `VN30F${$(e % 100)}${$(n)}`,
|
|
1891
|
+
year: e,
|
|
1892
|
+
month: n,
|
|
1893
|
+
lastTradingDay: Hn(e, n, t)
|
|
1894
|
+
}), i = (e) => e.month === 12 ? r(e.year + 1, 1) : r(e.year, e.month + 1), a = new Date(e + Vn), o = r(a.getUTCFullYear(), a.getUTCMonth() + 1);
|
|
1895
|
+
n > o.lastTradingDay && (o = i(o));
|
|
1896
|
+
let s = [o, i(o)], c = i(s[1]);
|
|
1897
|
+
for (; s.length < 4;) c.month % 3 == 0 && s.push(c), c = i(c);
|
|
1898
|
+
return s;
|
|
1899
|
+
}
|
|
1724
1900
|
//#endregion
|
|
1725
|
-
export { t as CHART_STYLE_KEYS,
|
|
1901
|
+
export { t as CHART_STYLE_KEYS, B as DARK_TERMINAL, R as DARK_THEME, an as DEFAULT_BAR_SPACING, rn as DEFAULT_BAR_WIDTH, Qt as DEFAULT_CHART_OPTIONS, n as DEFAULT_DRAWING_STYLE, At as DEFAULT_FONT_FAMILY, ln as DEFAULT_PANEL_HEIGHT, o as DEFAULT_RECONNECT, i as DEFAULT_SIGNAL_STYLE, s as DEFAULT_STREAM_CONFIG, nn as DEFAULT_TIMEFRAME_FAVORITES, a as DEFAULT_TRADE_ZONE_STYLE, r as DEFAULT_TRADING_CONFIG, bn as HNX_SESSIONS, yn as HOSE_SESSIONS, z as LIGHT_THEME, e as LayerType, On as MARKET_CRYPTO, Tn as MARKET_HNX, Cn as MARKET_HOSE, wn as MARKET_HOSE_ETF, kn as MARKET_NYSE, En as MARKET_UPCOM, Dn as MARKET_VN30F, cn as MIN_PANEL_HEIGHT, on as PRICE_AXIS_WIDTH, Xe as PRICE_SOURCES, P as TC_PALETTE, Nt as TC_SERIES_COLORS, $t as TIMEFRAMES_CRYPTO, tn as TIMEFRAMES_FOREX, en as TIMEFRAMES_STOCK, sn as TIME_AXIS_HEIGHT, xn as UPCOM_SESSIONS, Sn as VN30F_SESSIONS, J as VN_COLORS, Mt as VOLUME_ALPHA, Me as alignToTimeframe, Ue as autoPricePrecision, Ie as barsAreDaily, Zt as chartStyleValue, ne as clamp, Nn as computePriceLimits, de as computePriceRange, oe as computeTickStep, An as createVNTheme, Ye as detectPrecision, bt as drawingOption, W as en, ue as findBarIndex, Ge as formatFraction, q as formatNumber, He as formatPrice, We as formatPriceScaleLabel, je as formatTimestamp, _n as formatVND, Je as formatVolume, vn as formatVolumeLoc, Ke as fractionTick, Rn as getCurrentSession, pn as getLocale, gn as getLocaleStrings, pe as hexToRgba, et as indicatorSource, ie as inverseLerp, Pe as isDateOnly, Ze as isPriceSource, Ae as isTimeFrame, b as isValidTimeZone, re as lerp, he as lerpColor, Kt as lineDash, ft as marketStatus, fe as mergeBar, m as niceNumber, ce as normalizeBar, se as normalizeBarTime, C as offsetAt, tt as parseIndicatorSource, T as parseTimeframe, ot as pickBaseTimeframe, qe as priceFormatterFor, jn as priceStepAt, ct as rankSymbols, Ht as readChartStyleOverrides, kt as readChartTypeOptions, Gt as readIndicatorPlotStyles, te as readNews, Ut as readPaneStyle, l as readQuote, hn as registerLocale, rt as resampleBars, Jt as resolveChartTheme, xt as resolveDrawingOptions, V as resolveVolumeColors, Z as roundToPriceStep, ae as roundToStep, vt as sanitizeDrawingOptions, Ot as sanitizeDrawingStyle, Pn as scaleMarketPrices, ut as sessionMinute, fn as setLocale, le as sliceVisibleData, Qe as sourcePrice, lt as stepDecimals, mn as t, ke as tickBarCount, Ne as timeParts, ze as timeframeBucketStart, E as timeframeToMs, Le as tzLabel, un as vi, Un as vn30fContracts, Hn as vn30fLastTradingDay, F as volumeColor, Ce as wallToUtc, me as withAlpha, x as zoneOffsetMinutes, Te as zonedDateFormatter };
|
|
1726
1902
|
|
|
1727
1903
|
//# sourceMappingURL=index.js.map
|