@tradecanvas/commons 1.49.1 → 1.50.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/constants/themes.d.ts +7 -0
- package/dist/constants/themes.d.ts.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +298 -298
- package/dist/index.js.map +1 -1
- package/dist/types/chart.d.ts +19 -0
- package/dist/types/chart.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -359,7 +359,7 @@ function ve(e, t, n) {
|
|
|
359
359
|
}
|
|
360
360
|
//#endregion
|
|
361
361
|
//#region src/utils/timezone.ts
|
|
362
|
-
var g = 6e4,
|
|
362
|
+
var g = 6e4, _ = 1440 * g, v = 15 * g, ye = 8192, y = 7 * _, be = 4096, xe = new Set([
|
|
363
363
|
"UTC",
|
|
364
364
|
"Etc/UTC",
|
|
365
365
|
"GMT",
|
|
@@ -370,9 +370,9 @@ var g = 6e4, ye = 1440 * g, _ = 15 * g, be = 8192, xe = 7 * ye, Se = 4096, Ce =
|
|
|
370
370
|
"Etc/Universal",
|
|
371
371
|
"Zulu",
|
|
372
372
|
"Etc/Zulu"
|
|
373
|
-
]),
|
|
374
|
-
function
|
|
375
|
-
let t =
|
|
373
|
+
]), Se = /* @__PURE__ */ new Map(), b = /* @__PURE__ */ new Map(), Ce = /* @__PURE__ */ new Map();
|
|
374
|
+
function we(e) {
|
|
375
|
+
let t = Se.get(e);
|
|
376
376
|
return t || (t = new Intl.DateTimeFormat("en-US", {
|
|
377
377
|
timeZone: e,
|
|
378
378
|
hourCycle: "h23",
|
|
@@ -382,34 +382,34 @@ function Ee(e) {
|
|
|
382
382
|
hour: "numeric",
|
|
383
383
|
minute: "numeric",
|
|
384
384
|
second: "numeric"
|
|
385
|
-
}),
|
|
385
|
+
}), Se.set(e, t)), t;
|
|
386
386
|
}
|
|
387
|
-
function
|
|
387
|
+
function x(e) {
|
|
388
388
|
if (!e) return !1;
|
|
389
389
|
try {
|
|
390
|
-
return
|
|
390
|
+
return we(e), !0;
|
|
391
391
|
} catch {
|
|
392
392
|
return !1;
|
|
393
393
|
}
|
|
394
394
|
}
|
|
395
|
-
function
|
|
396
|
-
if (!Number.isFinite(t) ||
|
|
397
|
-
let n =
|
|
398
|
-
n || (n = /* @__PURE__ */ new Map(),
|
|
399
|
-
let r = Math.floor(t /
|
|
400
|
-
return i || (i =
|
|
401
|
-
}
|
|
402
|
-
function
|
|
403
|
-
let n =
|
|
395
|
+
function S(e, t) {
|
|
396
|
+
if (!Number.isFinite(t) || xe.has(e)) return 0;
|
|
397
|
+
let n = Ce.get(e);
|
|
398
|
+
n || (n = /* @__PURE__ */ new Map(), Ce.set(e, n));
|
|
399
|
+
let r = Math.floor(t / y), i = n.get(r);
|
|
400
|
+
return i || (i = Te(e, r * y), n.size >= be && n.clear(), n.set(r, i)), t < i.change ? i.before : i.after;
|
|
401
|
+
}
|
|
402
|
+
function Te(e, t) {
|
|
403
|
+
let n = C(e, t), r = t + y - v, i = C(e, r);
|
|
404
404
|
if (i === n) return {
|
|
405
405
|
before: n,
|
|
406
406
|
change: Infinity,
|
|
407
407
|
after: i
|
|
408
408
|
};
|
|
409
409
|
let a = t;
|
|
410
|
-
for (; r - a >
|
|
411
|
-
let t = a + Math.floor((r - a) /
|
|
412
|
-
|
|
410
|
+
for (; r - a > v;) {
|
|
411
|
+
let t = a + Math.floor((r - a) / v / 2) * v;
|
|
412
|
+
C(e, t) === n ? a = t : r = t;
|
|
413
413
|
}
|
|
414
414
|
return {
|
|
415
415
|
before: n,
|
|
@@ -417,11 +417,11 @@ function De(e, t) {
|
|
|
417
417
|
after: i
|
|
418
418
|
};
|
|
419
419
|
}
|
|
420
|
-
function
|
|
421
|
-
let n = Math.floor(t /
|
|
420
|
+
function C(e, t) {
|
|
421
|
+
let n = Math.floor(t / v), r = `${e}|${n}`, i = b.get(r);
|
|
422
422
|
if (i !== void 0) return i;
|
|
423
|
-
let a = n *
|
|
424
|
-
for (let t of
|
|
423
|
+
let a = n * v, o = 1970, s = 1, c = 1, l = 0, u = 0, d = 0;
|
|
424
|
+
for (let t of we(e).formatToParts(new Date(a))) {
|
|
425
425
|
let e = Number(t.value);
|
|
426
426
|
switch (t.type) {
|
|
427
427
|
case "year":
|
|
@@ -445,20 +445,20 @@ function x(e, t) {
|
|
|
445
445
|
}
|
|
446
446
|
}
|
|
447
447
|
let f = Math.round((Date.UTC(o, s - 1, c, l, u, d) - a) / g);
|
|
448
|
-
return
|
|
448
|
+
return b.size >= ye && b.clear(), b.set(r, f), f;
|
|
449
449
|
}
|
|
450
|
-
function
|
|
451
|
-
return e === null ? -new Date(t).getTimezoneOffset() : typeof e == "number" ? e :
|
|
450
|
+
function w(e, t) {
|
|
451
|
+
return e === null ? -new Date(t).getTimezoneOffset() : typeof e == "number" ? e : S(e, t);
|
|
452
452
|
}
|
|
453
|
-
function
|
|
454
|
-
let n = e -
|
|
455
|
-
if (n +
|
|
456
|
-
let r = e -
|
|
457
|
-
return r +
|
|
453
|
+
function Ee(e, t) {
|
|
454
|
+
let n = e - w(t, e - _) * g;
|
|
455
|
+
if (n + w(t, n) * g === e) return n;
|
|
456
|
+
let r = e - w(t, e + _) * g;
|
|
457
|
+
return r + w(t, r) * g === e ? r : n;
|
|
458
458
|
}
|
|
459
|
-
var
|
|
460
|
-
function
|
|
461
|
-
let r = `${e}|${JSON.stringify(t)}|${n === null ? "local" : typeof n == "number" ? `fixed:${n}` : n}`, i =
|
|
459
|
+
var De = /* @__PURE__ */ new Map();
|
|
460
|
+
function Oe(e, t, n) {
|
|
461
|
+
let r = `${e}|${JSON.stringify(t)}|${n === null ? "local" : typeof n == "number" ? `fixed:${n}` : n}`, i = De.get(r);
|
|
462
462
|
if (i) return i;
|
|
463
463
|
let a = n === null ? void 0 : typeof n == "number" ? "UTC" : n, o;
|
|
464
464
|
try {
|
|
@@ -473,11 +473,11 @@ function Ae(e, t, n) {
|
|
|
473
473
|
});
|
|
474
474
|
}
|
|
475
475
|
let s = typeof n == "number" ? n * g : 0;
|
|
476
|
-
return i = (e) => o.format(new Date(e + s)),
|
|
476
|
+
return i = (e) => o.format(new Date(e + s)), De.set(r, i), i;
|
|
477
477
|
}
|
|
478
478
|
//#endregion
|
|
479
479
|
//#region src/utils/time.ts
|
|
480
|
-
var
|
|
480
|
+
var ke = {
|
|
481
481
|
"1s": 1e3,
|
|
482
482
|
"5s": 5e3,
|
|
483
483
|
"15s": 15e3,
|
|
@@ -504,16 +504,16 @@ var je = {
|
|
|
504
504
|
"3M": 7776e6,
|
|
505
505
|
"6M": 15552e6,
|
|
506
506
|
"12M": 31536e6
|
|
507
|
-
},
|
|
507
|
+
}, Ae = {
|
|
508
508
|
s: 1e3,
|
|
509
509
|
m: 6e4,
|
|
510
510
|
h: 36e5,
|
|
511
511
|
d: 864e5,
|
|
512
512
|
w: 6048e5,
|
|
513
513
|
M: 2592e6
|
|
514
|
-
},
|
|
515
|
-
function
|
|
516
|
-
let t =
|
|
514
|
+
}, je = /^([1-9]\d*)([smhdwM])$/;
|
|
515
|
+
function T(e) {
|
|
516
|
+
let t = je.exec(e);
|
|
517
517
|
if (!t) return null;
|
|
518
518
|
let n = Number(t[1]);
|
|
519
519
|
return Number.isSafeInteger(n) ? {
|
|
@@ -521,24 +521,24 @@ function w(e) {
|
|
|
521
521
|
unit: t[2]
|
|
522
522
|
} : null;
|
|
523
523
|
}
|
|
524
|
-
var
|
|
525
|
-
function
|
|
524
|
+
var Me = 1e6;
|
|
525
|
+
function Ne(e) {
|
|
526
526
|
let t = /^([1-9]\d*)T$/.exec(e);
|
|
527
527
|
if (!t) return null;
|
|
528
528
|
let n = Number(t[1]);
|
|
529
|
-
return Number.isSafeInteger(n) && n <=
|
|
529
|
+
return Number.isSafeInteger(n) && n <= Me ? n : null;
|
|
530
530
|
}
|
|
531
|
-
function
|
|
532
|
-
return
|
|
531
|
+
function Pe(e) {
|
|
532
|
+
return T(e) !== null;
|
|
533
533
|
}
|
|
534
|
-
function
|
|
535
|
-
let t =
|
|
534
|
+
function E(e) {
|
|
535
|
+
let t = ke[e];
|
|
536
536
|
if (t !== void 0) return t;
|
|
537
|
-
let n =
|
|
538
|
-
return n ? n.count *
|
|
537
|
+
let n = T(e);
|
|
538
|
+
return n ? n.count * Ae[n.unit] : NaN;
|
|
539
539
|
}
|
|
540
|
-
function
|
|
541
|
-
let n = new Date(e), r =
|
|
540
|
+
function Fe(e, t) {
|
|
541
|
+
let n = new Date(e), r = E(t);
|
|
542
542
|
return r >= 864e5 ? n.toLocaleDateString(void 0, {
|
|
543
543
|
month: "short",
|
|
544
544
|
day: "numeric"
|
|
@@ -551,11 +551,11 @@ function Ie(e, t) {
|
|
|
551
551
|
second: "2-digit"
|
|
552
552
|
});
|
|
553
553
|
}
|
|
554
|
-
function
|
|
555
|
-
let n =
|
|
554
|
+
function Ie(e, t) {
|
|
555
|
+
let n = E(t);
|
|
556
556
|
return Math.floor(e / n) * n;
|
|
557
557
|
}
|
|
558
|
-
function
|
|
558
|
+
function Le(e, t) {
|
|
559
559
|
if (t === null) {
|
|
560
560
|
let t = new Date(e);
|
|
561
561
|
return {
|
|
@@ -566,7 +566,7 @@ function Re(e, t) {
|
|
|
566
566
|
minutes: t.getMinutes()
|
|
567
567
|
};
|
|
568
568
|
}
|
|
569
|
-
let n = new Date(e +
|
|
569
|
+
let n = new Date(e + w(t, e) * 6e4);
|
|
570
570
|
return {
|
|
571
571
|
year: n.getUTCFullYear(),
|
|
572
572
|
month: n.getUTCMonth() + 1,
|
|
@@ -575,11 +575,11 @@ function Re(e, t) {
|
|
|
575
575
|
minutes: n.getUTCMinutes()
|
|
576
576
|
};
|
|
577
577
|
}
|
|
578
|
-
function
|
|
578
|
+
function Re(e) {
|
|
579
579
|
return e.hours === 0 && e.minutes === 0;
|
|
580
580
|
}
|
|
581
|
-
var
|
|
582
|
-
function
|
|
581
|
+
var ze = 20 * 36e5;
|
|
582
|
+
function Be(e) {
|
|
583
583
|
let t = Math.min(e.length, 64);
|
|
584
584
|
if (t < 2) return;
|
|
585
585
|
let n = ce(e), r = Infinity;
|
|
@@ -587,81 +587,81 @@ function Ve(e) {
|
|
|
587
587
|
let t = Math.abs(e[i].time - e[i - 1].time) * n;
|
|
588
588
|
t > 0 && t < r && (r = t);
|
|
589
589
|
}
|
|
590
|
-
return r === Infinity ? void 0 : r >=
|
|
590
|
+
return r === Infinity ? void 0 : r >= ze;
|
|
591
591
|
}
|
|
592
|
-
function
|
|
593
|
-
let n =
|
|
592
|
+
function Ve(e, t = Date.now()) {
|
|
593
|
+
let n = w(e, t), r = n >= 0 ? "+" : "-", i = Math.abs(n), a = Math.floor(i / 60), o = i % 60;
|
|
594
594
|
return o === 0 ? `UTC${r}${a}` : `UTC${r}${a}:${String(o).padStart(2, "0")}`;
|
|
595
595
|
}
|
|
596
|
-
var
|
|
597
|
-
function
|
|
598
|
-
let { count: r, unit: i } =
|
|
596
|
+
var He = Date.UTC(1970, 0, 5);
|
|
597
|
+
function Ue(e, t, n = 1) {
|
|
598
|
+
let { count: r, unit: i } = T(t) ?? {
|
|
599
599
|
count: 1,
|
|
600
600
|
unit: "m"
|
|
601
601
|
};
|
|
602
602
|
if (i === "s" || i === "m" || i === "h" || i === "d") {
|
|
603
|
-
let t = r *
|
|
603
|
+
let t = r * Ae[i];
|
|
604
604
|
return Math.floor(e / t) * t;
|
|
605
605
|
}
|
|
606
606
|
let a = new Date(e);
|
|
607
607
|
if (i === "w") {
|
|
608
|
-
let e =
|
|
608
|
+
let e = Ae.d, t = (a.getUTCDay() - n + 7) % 7, i = Date.UTC(a.getUTCFullYear(), a.getUTCMonth(), a.getUTCDate() - t);
|
|
609
609
|
if (r <= 1) return i;
|
|
610
|
-
let o = Math.floor((i -
|
|
611
|
-
return
|
|
610
|
+
let o = Math.floor((i - He) / (7 * e));
|
|
611
|
+
return He + Math.floor(o / r) * r * 7 * e;
|
|
612
612
|
}
|
|
613
613
|
let o = a.getUTCFullYear() * 12 + a.getUTCMonth(), s = Math.floor(o / r) * r;
|
|
614
614
|
return Date.UTC(Math.floor(s / 12), s % 12, 1);
|
|
615
615
|
}
|
|
616
616
|
//#endregion
|
|
617
617
|
//#region src/utils/precision.ts
|
|
618
|
-
var
|
|
619
|
-
function
|
|
620
|
-
let n = `${e}|${t}`, r =
|
|
621
|
-
return r || (
|
|
618
|
+
var We = 64, D = /* @__PURE__ */ new Map();
|
|
619
|
+
function Ge(e, t) {
|
|
620
|
+
let n = `${e}|${t}`, r = D.get(n);
|
|
621
|
+
return r || (D.size >= We && D.clear(), r = new Intl.NumberFormat(e, {
|
|
622
622
|
minimumFractionDigits: t,
|
|
623
623
|
maximumFractionDigits: t
|
|
624
|
-
}),
|
|
624
|
+
}), D.set(n, r)), r;
|
|
625
625
|
}
|
|
626
|
-
function
|
|
627
|
-
return t.formatPrice ? t.formatPrice(e) :
|
|
626
|
+
function Ke(e, t, n) {
|
|
627
|
+
return t.formatPrice ? t.formatPrice(e) : O(e, n ?? qe(t.priceRange.min, t.priceRange.max), t.numberLocale ?? "en-US");
|
|
628
628
|
}
|
|
629
|
-
function
|
|
630
|
-
return
|
|
629
|
+
function O(e, t = 2, n = "en-US") {
|
|
630
|
+
return Ge(n, t).format(e);
|
|
631
631
|
}
|
|
632
|
-
function
|
|
632
|
+
function qe(e, t) {
|
|
633
633
|
if (!(t > e) || !Number.isFinite(e) || !Number.isFinite(t)) return 2;
|
|
634
634
|
let n = oe(e, t, 8);
|
|
635
635
|
return n > 0 && n < 1 ? Math.ceil(-Math.log10(n)) + 1 : 2;
|
|
636
636
|
}
|
|
637
|
-
function
|
|
637
|
+
function Je(e, t, n, r = 2, i = "en-US") {
|
|
638
638
|
if ((t === "percentage" || t === "indexedTo100") && n && n !== 0) {
|
|
639
639
|
if (t === "percentage") {
|
|
640
640
|
let t = (e / n - 1) * 100;
|
|
641
641
|
return `${t > 0 ? "+" : ""}${t.toFixed(2)}%`;
|
|
642
642
|
}
|
|
643
|
-
return
|
|
643
|
+
return O(e / n * 100, 2, i);
|
|
644
644
|
}
|
|
645
|
-
return
|
|
645
|
+
return O(e, r, i);
|
|
646
646
|
}
|
|
647
|
-
function
|
|
647
|
+
function Ye(e, t, n = 1) {
|
|
648
648
|
let r = Number.isInteger(n) && n > 1 ? n : 1;
|
|
649
649
|
if (!Number.isFinite(e) || !Number.isInteger(t) || t < 2) return String(e);
|
|
650
650
|
let i = t * r, a = Math.round(Math.abs(e) * i), o = Math.floor(a / i), s = a - o * i, c = Math.floor(s / r), l = String(t - 1).length, u = r > 1 ? String(Math.floor((s - c * r) / r * 10)) : "";
|
|
651
651
|
return `${e < 0 && a > 0 ? "-" : ""}${o}'${String(c).padStart(l, "0")}${u}`;
|
|
652
652
|
}
|
|
653
|
-
function
|
|
653
|
+
function Xe(e) {
|
|
654
654
|
if (!Number.isInteger(e.denominator) || e.denominator < 2) return null;
|
|
655
655
|
let t = Number.isInteger(e.subDenominator) && (e.subDenominator ?? 0) > 1 ? e.subDenominator : 1;
|
|
656
656
|
return 1 / (e.denominator * t);
|
|
657
657
|
}
|
|
658
|
-
function
|
|
659
|
-
return e ? typeof e == "function" ? e :
|
|
658
|
+
function Ze(e) {
|
|
659
|
+
return e ? typeof e == "function" ? e : Xe(e) === null ? null : (t) => Ye(t, e.denominator, e.subDenominator) : null;
|
|
660
660
|
}
|
|
661
|
-
function
|
|
661
|
+
function Qe(e) {
|
|
662
662
|
return e >= 1e9 ? (e / 1e9).toFixed(2) + "B" : e >= 1e6 ? (e / 1e6).toFixed(2) + "M" : e >= 1e3 ? (e / 1e3).toFixed(2) + "K" : e.toFixed(0);
|
|
663
663
|
}
|
|
664
|
-
function
|
|
664
|
+
function $e(e) {
|
|
665
665
|
let t = 0;
|
|
666
666
|
for (let n of e) {
|
|
667
667
|
let e = n.toString(), r = e.indexOf(".");
|
|
@@ -671,7 +671,7 @@ function et(e) {
|
|
|
671
671
|
}
|
|
672
672
|
//#endregion
|
|
673
673
|
//#region src/utils/priceSource.ts
|
|
674
|
-
var
|
|
674
|
+
var et = [
|
|
675
675
|
"close",
|
|
676
676
|
"open",
|
|
677
677
|
"high",
|
|
@@ -681,10 +681,10 @@ var tt = [
|
|
|
681
681
|
"ohlc4",
|
|
682
682
|
"hlcc4"
|
|
683
683
|
];
|
|
684
|
-
function
|
|
685
|
-
return typeof e == "string" &&
|
|
684
|
+
function tt(e) {
|
|
685
|
+
return typeof e == "string" && et.includes(e);
|
|
686
686
|
}
|
|
687
|
-
function
|
|
687
|
+
function nt(e, t) {
|
|
688
688
|
switch (t) {
|
|
689
689
|
case "open": return e.open;
|
|
690
690
|
case "high": return e.high;
|
|
@@ -696,13 +696,13 @@ function rt(e, t) {
|
|
|
696
696
|
default: return e.close;
|
|
697
697
|
}
|
|
698
698
|
}
|
|
699
|
-
var
|
|
700
|
-
function
|
|
699
|
+
var rt = /^ind:([^:]+):(.+)$/;
|
|
700
|
+
function it(e, t) {
|
|
701
701
|
return `ind:${e}:${t}`;
|
|
702
702
|
}
|
|
703
|
-
function
|
|
703
|
+
function at(e) {
|
|
704
704
|
if (typeof e != "string") return null;
|
|
705
|
-
let t =
|
|
705
|
+
let t = rt.exec(e);
|
|
706
706
|
return t ? {
|
|
707
707
|
instanceId: t[1],
|
|
708
708
|
key: t[2]
|
|
@@ -710,11 +710,11 @@ function ot(e) {
|
|
|
710
710
|
}
|
|
711
711
|
//#endregion
|
|
712
712
|
//#region src/utils/resample.ts
|
|
713
|
-
var
|
|
714
|
-
function
|
|
713
|
+
var ot = 864e5;
|
|
714
|
+
function st(e, t, n = 1) {
|
|
715
715
|
let r = [], i = null;
|
|
716
716
|
for (let a of e) {
|
|
717
|
-
let e =
|
|
717
|
+
let e = Ue(a.time, t, n);
|
|
718
718
|
i === null || e !== i.time ? (i = {
|
|
719
719
|
time: e,
|
|
720
720
|
open: a.open,
|
|
@@ -726,37 +726,37 @@ function ct(e, t, n = 1) {
|
|
|
726
726
|
}
|
|
727
727
|
return r;
|
|
728
728
|
}
|
|
729
|
-
var
|
|
730
|
-
function
|
|
731
|
-
let n =
|
|
729
|
+
var k = (e) => e === "s" || e === "m" || e === "h" || e === "d";
|
|
730
|
+
function ct(e, t) {
|
|
731
|
+
let n = T(e), r = T(t);
|
|
732
732
|
if (!n || !r) return !1;
|
|
733
|
-
let i =
|
|
734
|
-
return n.unit === "d" && n.count > 1 ? !1 :
|
|
733
|
+
let i = E(e);
|
|
734
|
+
return n.unit === "d" && n.count > 1 ? !1 : k(r.unit) ? k(n.unit) && E(t) % i === 0 : n.unit === r.unit ? r.count % n.count === 0 : k(n.unit) && ot % i === 0;
|
|
735
735
|
}
|
|
736
|
-
function
|
|
736
|
+
function lt(e, t) {
|
|
737
737
|
let n = null, r = 0;
|
|
738
738
|
for (let i of t) {
|
|
739
|
-
if (!
|
|
740
|
-
let t =
|
|
739
|
+
if (!ct(i, e)) continue;
|
|
740
|
+
let t = E(i);
|
|
741
741
|
t > r && (n = i, r = t);
|
|
742
742
|
}
|
|
743
743
|
return n;
|
|
744
744
|
}
|
|
745
745
|
//#endregion
|
|
746
746
|
//#region src/utils/symbols.ts
|
|
747
|
-
function
|
|
747
|
+
function ut(e, t) {
|
|
748
748
|
if (!e) return 0;
|
|
749
749
|
if (e === t) return 1e3;
|
|
750
750
|
if (e.startsWith(t)) return 600 - Math.min(100, e.length - t.length);
|
|
751
751
|
let n = e.indexOf(t);
|
|
752
752
|
return n >= 0 ? 300 - Math.min(100, n) : 0;
|
|
753
753
|
}
|
|
754
|
-
function
|
|
754
|
+
function dt(e, t, n = 50, r) {
|
|
755
755
|
let i = t.trim().toUpperCase();
|
|
756
756
|
if (!i) return e.slice(0, n);
|
|
757
757
|
let a = [];
|
|
758
758
|
for (let t of e) {
|
|
759
|
-
let e = Math.max(
|
|
759
|
+
let e = Math.max(ut(t.symbol.toUpperCase(), i), ut((t.description ?? "").toUpperCase(), i) * .8);
|
|
760
760
|
e > 0 && a.push({
|
|
761
761
|
info: t,
|
|
762
762
|
score: e + (r?.(t) ?? 0)
|
|
@@ -764,7 +764,7 @@ function ft(e, t, n = 50, r) {
|
|
|
764
764
|
}
|
|
765
765
|
return a.sort((e, t) => t.score - e.score || e.info.symbol.localeCompare(t.info.symbol)), a.slice(0, n).map((e) => e.info);
|
|
766
766
|
}
|
|
767
|
-
function
|
|
767
|
+
function ft(e) {
|
|
768
768
|
let t = typeof e == "number" ? e : Number(e);
|
|
769
769
|
if (!Number.isFinite(t) || t <= 0) return 0;
|
|
770
770
|
for (let e = 0; e <= 12; e++) {
|
|
@@ -773,10 +773,10 @@ function pt(e) {
|
|
|
773
773
|
}
|
|
774
774
|
return 12;
|
|
775
775
|
}
|
|
776
|
-
function
|
|
776
|
+
function pt(e) {
|
|
777
777
|
return e?.timeZone ?? e?.timezone;
|
|
778
778
|
}
|
|
779
|
-
function
|
|
779
|
+
function A(e) {
|
|
780
780
|
let t = /^(\d{1,2}):(\d{2})$/.exec(e.trim());
|
|
781
781
|
if (!t) return null;
|
|
782
782
|
let n = Number(t[1]), r = Number(t[2]);
|
|
@@ -784,26 +784,26 @@ function k(e) {
|
|
|
784
784
|
}
|
|
785
785
|
//#endregion
|
|
786
786
|
//#region src/utils/marketStatus.ts
|
|
787
|
-
var
|
|
788
|
-
function
|
|
789
|
-
let n =
|
|
790
|
-
let t =
|
|
787
|
+
var j = 864e5, M = 6e4, mt = 8;
|
|
788
|
+
function ht(e, t) {
|
|
789
|
+
let n = pt(e), r = (e?.sessions ?? []).flatMap((e) => {
|
|
790
|
+
let t = A(e.start), n = A(e.end);
|
|
791
791
|
return t === null || n === null || t === n ? [] : [{
|
|
792
792
|
start: t,
|
|
793
793
|
end: n,
|
|
794
794
|
days: Array.isArray(e.days) ? e.days : null
|
|
795
795
|
}];
|
|
796
796
|
});
|
|
797
|
-
if (!n || !
|
|
797
|
+
if (!n || !x(n) || r.length === 0 || !Number.isFinite(t)) return {
|
|
798
798
|
state: "always",
|
|
799
799
|
next: null
|
|
800
800
|
};
|
|
801
|
-
let i =
|
|
802
|
-
for (let e = -1; e <=
|
|
803
|
-
let t = a + e *
|
|
801
|
+
let i = S(n, t) * M, a = Math.floor((t + i) / j) * j, o = (e) => e - S(n, e - S(n, e - i) * M) * M, s = [];
|
|
802
|
+
for (let e = -1; e <= mt; e++) {
|
|
803
|
+
let t = a + e * j, n = (Math.floor(t / j) + 4) % 7;
|
|
804
804
|
for (let e of r) {
|
|
805
805
|
if (e.days && !e.days.includes(n)) continue;
|
|
806
|
-
let r = t + e.start *
|
|
806
|
+
let r = t + e.start * M, i = (e.end > e.start ? t : t + j) + e.end * M;
|
|
807
807
|
s.push([o(r), o(i)]);
|
|
808
808
|
}
|
|
809
809
|
}
|
|
@@ -826,15 +826,15 @@ function gt(e, t) {
|
|
|
826
826
|
}
|
|
827
827
|
//#endregion
|
|
828
828
|
//#region src/utils/drawingOptions.ts
|
|
829
|
-
var
|
|
830
|
-
function
|
|
829
|
+
var gt = 48, _t = 2e3, vt = 1e4;
|
|
830
|
+
function yt(e) {
|
|
831
831
|
if (!Array.isArray(e)) return;
|
|
832
832
|
let t = [];
|
|
833
833
|
for (let n of e) {
|
|
834
|
-
if (t.length >=
|
|
834
|
+
if (t.length >= gt) break;
|
|
835
835
|
if (typeof n != "object" || !n) continue;
|
|
836
836
|
let { value: e, visible: r, color: i } = n;
|
|
837
|
-
if (typeof e != "number" || !Number.isFinite(e) || Math.abs(e) >
|
|
837
|
+
if (typeof e != "number" || !Number.isFinite(e) || Math.abs(e) > vt || r !== void 0 && typeof r != "boolean") continue;
|
|
838
838
|
let a = {
|
|
839
839
|
value: e,
|
|
840
840
|
visible: r ?? !0
|
|
@@ -843,109 +843,109 @@ function bt(e) {
|
|
|
843
843
|
}
|
|
844
844
|
return t;
|
|
845
845
|
}
|
|
846
|
-
function
|
|
846
|
+
function bt(e, t) {
|
|
847
847
|
switch (e.kind) {
|
|
848
848
|
case "boolean": return typeof t == "boolean" ? t : void 0;
|
|
849
849
|
case "number": return typeof t != "number" || !Number.isFinite(t) ? void 0 : Math.min(e.max ?? Infinity, Math.max(e.min ?? -Infinity, t));
|
|
850
850
|
case "choice": return typeof t == "string" && e.choices.some((e) => e.value === t) ? t : void 0;
|
|
851
|
-
case "levels": return
|
|
852
|
-
case "text": return typeof t == "string" ? t.slice(0,
|
|
851
|
+
case "levels": return yt(t);
|
|
852
|
+
case "text": return typeof t == "string" ? t.slice(0, _t) : void 0;
|
|
853
853
|
}
|
|
854
854
|
}
|
|
855
|
-
function
|
|
855
|
+
function xt(e, t) {
|
|
856
856
|
if (!e || typeof t != "object" || !t) return {};
|
|
857
857
|
let n = {};
|
|
858
858
|
for (let [r, i] of Object.entries(t)) {
|
|
859
859
|
let t = e[r];
|
|
860
860
|
if (!t) continue;
|
|
861
|
-
let a =
|
|
861
|
+
let a = bt(t, i);
|
|
862
862
|
a !== void 0 && (n[r] = a);
|
|
863
863
|
}
|
|
864
864
|
return n;
|
|
865
865
|
}
|
|
866
|
-
function
|
|
866
|
+
function St(e) {
|
|
867
867
|
return Array.isArray(e) ? e.map((e) => ({ ...e })) : e;
|
|
868
868
|
}
|
|
869
|
-
function
|
|
869
|
+
function Ct(e, t, n) {
|
|
870
870
|
let r = e?.[n];
|
|
871
|
-
return r ?
|
|
871
|
+
return r ? St((t && n in t ? bt(r, t[n]) : void 0) ?? r.default) : t?.[n];
|
|
872
872
|
}
|
|
873
|
-
function
|
|
873
|
+
function wt(e, t) {
|
|
874
874
|
let n = {};
|
|
875
|
-
for (let r of Object.keys(e ?? {})) n[r] =
|
|
875
|
+
for (let r of Object.keys(e ?? {})) n[r] = Ct(e, t, r);
|
|
876
876
|
return n;
|
|
877
877
|
}
|
|
878
878
|
//#endregion
|
|
879
879
|
//#region src/utils/drawingStyle.ts
|
|
880
|
-
var
|
|
880
|
+
var Tt = [
|
|
881
881
|
"solid",
|
|
882
882
|
"dashed",
|
|
883
883
|
"dotted"
|
|
884
|
-
],
|
|
885
|
-
function
|
|
884
|
+
], Et = 64, Dt = 2e3, Ot = 20, kt = 200;
|
|
885
|
+
function N(e, t, n) {
|
|
886
886
|
return typeof e == "number" && Number.isFinite(e) ? Math.min(n, Math.max(t, e)) : void 0;
|
|
887
887
|
}
|
|
888
|
-
function
|
|
889
|
-
return typeof e == "string" && e.length > 0 && e.length <=
|
|
888
|
+
function At(e) {
|
|
889
|
+
return typeof e == "string" && e.length > 0 && e.length <= Et ? e : void 0;
|
|
890
890
|
}
|
|
891
|
-
function
|
|
891
|
+
function jt(e) {
|
|
892
892
|
if (typeof e != "object" || !e) return {};
|
|
893
|
-
let t = e, n = {}, r =
|
|
893
|
+
let t = e, n = {}, r = At(t.color);
|
|
894
894
|
r !== void 0 && (n.color = r);
|
|
895
|
-
let i =
|
|
896
|
-
i !== void 0 && (n.lineWidth = i),
|
|
897
|
-
let a =
|
|
895
|
+
let i = N(t.lineWidth, .5, Ot);
|
|
896
|
+
i !== void 0 && (n.lineWidth = i), Tt.includes(t.lineStyle) && (n.lineStyle = t.lineStyle);
|
|
897
|
+
let a = At(t.fillColor);
|
|
898
898
|
a !== void 0 && (n.fillColor = a);
|
|
899
|
-
let o =
|
|
899
|
+
let o = N(t.fillOpacity, 0, 1);
|
|
900
900
|
o !== void 0 && (n.fillOpacity = o);
|
|
901
|
-
let s =
|
|
902
|
-
return s !== void 0 && (n.fontSize = s), typeof t.text == "string" && (n.text = t.text.slice(0,
|
|
901
|
+
let s = N(t.fontSize, 6, kt);
|
|
902
|
+
return s !== void 0 && (n.fontSize = s), typeof t.text == "string" && (n.text = t.text.slice(0, Dt)), n;
|
|
903
903
|
}
|
|
904
904
|
//#endregion
|
|
905
905
|
//#region src/utils/chartTypeOptions.ts
|
|
906
|
-
var
|
|
907
|
-
function
|
|
908
|
-
if (!
|
|
906
|
+
var P = (e) => typeof e == "number" && Number.isFinite(e) && e > 0, F = (e, t, n) => typeof e == "number" && Number.isInteger(e) && e >= t && e <= n, I = (e) => typeof e == "object" && !!e && !Array.isArray(e);
|
|
907
|
+
function Mt(e) {
|
|
908
|
+
if (!I(e)) return {};
|
|
909
909
|
let t = {};
|
|
910
|
-
if (
|
|
910
|
+
if (I(e.renko)) {
|
|
911
911
|
let { boxSize: n, atrPeriod: r } = e.renko;
|
|
912
912
|
t.renko = {
|
|
913
|
-
...
|
|
914
|
-
...
|
|
913
|
+
...P(n) || n === "atr" ? { boxSize: n } : {},
|
|
914
|
+
...F(r, 1, 500) ? { atrPeriod: r } : {}
|
|
915
915
|
};
|
|
916
916
|
}
|
|
917
|
-
if (
|
|
917
|
+
if (I(e.lineBreak)) {
|
|
918
918
|
let { lines: n } = e.lineBreak;
|
|
919
|
-
t.lineBreak =
|
|
919
|
+
t.lineBreak = F(n, 1, 10) ? { lines: n } : {};
|
|
920
920
|
}
|
|
921
|
-
if (
|
|
921
|
+
if (I(e.kagi)) {
|
|
922
922
|
let { reversal: n, reversalType: r } = e.kagi;
|
|
923
923
|
t.kagi = {
|
|
924
|
-
...
|
|
924
|
+
...P(n) ? { reversal: n } : {},
|
|
925
925
|
...r === "percent" || r === "price" ? { reversalType: r } : {}
|
|
926
926
|
};
|
|
927
927
|
}
|
|
928
|
-
if (
|
|
928
|
+
if (I(e.pointAndFigure)) {
|
|
929
929
|
let { boxSize: n, reversal: r } = e.pointAndFigure;
|
|
930
930
|
t.pointAndFigure = {
|
|
931
|
-
...
|
|
932
|
-
...
|
|
931
|
+
...P(n) || n === "auto" ? { boxSize: n } : {},
|
|
932
|
+
...F(r, 1, 10) ? { reversal: r } : {}
|
|
933
933
|
};
|
|
934
934
|
}
|
|
935
|
-
if (
|
|
935
|
+
if (I(e.rangeBars)) {
|
|
936
936
|
let { range: n } = e.rangeBars;
|
|
937
|
-
t.rangeBars =
|
|
937
|
+
t.rangeBars = P(n) || n === "auto" ? { range: n } : {};
|
|
938
938
|
}
|
|
939
939
|
return t;
|
|
940
940
|
}
|
|
941
941
|
//#endregion
|
|
942
942
|
//#region src/constants/themes.ts
|
|
943
|
-
var
|
|
944
|
-
family:
|
|
943
|
+
var Nt = "'Cascadia Mono', 'SF Mono', ui-monospace, Menlo, Consolas, monospace", Pt = "-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif", Ft = {
|
|
944
|
+
family: Nt,
|
|
945
945
|
sizeSmall: 11,
|
|
946
946
|
sizeMedium: 13,
|
|
947
947
|
sizeLarge: 15
|
|
948
|
-
},
|
|
948
|
+
}, L = {
|
|
949
949
|
amber: "#f2a93b",
|
|
950
950
|
up: "#1c9e6d",
|
|
951
951
|
down: "#e8505b",
|
|
@@ -957,19 +957,19 @@ var Pt = "'Cascadia Mono', 'SF Mono', ui-monospace, Menlo, Consolas, monospace",
|
|
|
957
957
|
neutral: "#7d8696",
|
|
958
958
|
ink: "#131416"
|
|
959
959
|
}, It = .22;
|
|
960
|
-
function
|
|
960
|
+
function R(e) {
|
|
961
961
|
return h(e, It);
|
|
962
962
|
}
|
|
963
|
-
var Lt = "#fbfaf6",
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
963
|
+
var Lt = "#fbfaf6", z = "#1b1d21", Rt = "#131416", B = "#e6e3dc", zt = "#1f7a5c", Bt = "#b8423f", Vt = "#4fae8a", Ht = "#e2706b", Ut = "#6a6966", Wt = "#8d8a84", Gt = [
|
|
964
|
+
L.blue,
|
|
965
|
+
L.ochre,
|
|
966
|
+
L.violet,
|
|
967
|
+
L.cyan,
|
|
968
|
+
L.rose
|
|
969
969
|
], Kt = {
|
|
970
970
|
name: "dark",
|
|
971
971
|
background: Rt,
|
|
972
|
-
text:
|
|
972
|
+
text: B,
|
|
973
973
|
textSecondary: "#8d8b86",
|
|
974
974
|
grid: "#1d1e21",
|
|
975
975
|
crosshair: Ut,
|
|
@@ -977,11 +977,11 @@ var Lt = "#fbfaf6", R = "#1b1d21", Rt = "#131416", z = "#e6e3dc", zt = "#1f7a5c"
|
|
|
977
977
|
candleDown: Ht,
|
|
978
978
|
candleUpWick: Vt,
|
|
979
979
|
candleDownWick: Ht,
|
|
980
|
-
lineColor:
|
|
981
|
-
areaTopColor: h(
|
|
982
|
-
areaBottomColor: h(
|
|
983
|
-
volumeUp: h(
|
|
984
|
-
volumeDown: h(
|
|
980
|
+
lineColor: B,
|
|
981
|
+
areaTopColor: h(B, .14),
|
|
982
|
+
areaBottomColor: h(B, 0),
|
|
983
|
+
volumeUp: h(B, .14),
|
|
984
|
+
volumeDown: h(B, .08),
|
|
985
985
|
axisLine: "#2a2b2f",
|
|
986
986
|
axisLabel: "#a9a6a0",
|
|
987
987
|
axisLabelBackground: "#232427",
|
|
@@ -989,7 +989,7 @@ var Lt = "#fbfaf6", R = "#1b1d21", Rt = "#131416", z = "#e6e3dc", zt = "#1f7a5c"
|
|
|
989
989
|
}, qt = {
|
|
990
990
|
name: "light",
|
|
991
991
|
background: Lt,
|
|
992
|
-
text:
|
|
992
|
+
text: z,
|
|
993
993
|
textSecondary: "#6b6f76",
|
|
994
994
|
grid: "#ece8df",
|
|
995
995
|
crosshair: Wt,
|
|
@@ -997,16 +997,16 @@ var Lt = "#fbfaf6", R = "#1b1d21", Rt = "#131416", z = "#e6e3dc", zt = "#1f7a5c"
|
|
|
997
997
|
candleDown: Bt,
|
|
998
998
|
candleUpWick: zt,
|
|
999
999
|
candleDownWick: Bt,
|
|
1000
|
-
lineColor:
|
|
1001
|
-
areaTopColor: h(
|
|
1002
|
-
areaBottomColor: h(
|
|
1003
|
-
volumeUp: h(
|
|
1004
|
-
volumeDown: h(
|
|
1000
|
+
lineColor: z,
|
|
1001
|
+
areaTopColor: h(z, .12),
|
|
1002
|
+
areaBottomColor: h(z, 0),
|
|
1003
|
+
volumeUp: h(z, .13),
|
|
1004
|
+
volumeDown: h(z, .08),
|
|
1005
1005
|
axisLine: "#cfcac0",
|
|
1006
1006
|
axisLabel: "#4a4e57",
|
|
1007
1007
|
axisLabelBackground: "#eeebe3",
|
|
1008
1008
|
font: Ft
|
|
1009
|
-
},
|
|
1009
|
+
}, Jt = {
|
|
1010
1010
|
name: "terminal",
|
|
1011
1011
|
background: "#0E0E0E",
|
|
1012
1012
|
text: "#C0C0C0",
|
|
@@ -1020,8 +1020,8 @@ var Lt = "#fbfaf6", R = "#1b1d21", Rt = "#131416", z = "#e6e3dc", zt = "#1f7a5c"
|
|
|
1020
1020
|
lineColor: "#3D8BFD",
|
|
1021
1021
|
areaTopColor: "rgba(61, 139, 253, 0.3)",
|
|
1022
1022
|
areaBottomColor: "rgba(61, 139, 253, 0.0)",
|
|
1023
|
-
volumeUp:
|
|
1024
|
-
volumeDown:
|
|
1023
|
+
volumeUp: R("#00FF87"),
|
|
1024
|
+
volumeDown: R("#FF3B4D"),
|
|
1025
1025
|
axisLine: "#1A1A1A",
|
|
1026
1026
|
axisLabel: "#8A8A8A",
|
|
1027
1027
|
axisLabelBackground: "#1A1A1A",
|
|
@@ -1031,11 +1031,11 @@ var Lt = "#fbfaf6", R = "#1b1d21", Rt = "#131416", z = "#e6e3dc", zt = "#1f7a5c"
|
|
|
1031
1031
|
sizeMedium: 12,
|
|
1032
1032
|
sizeLarge: 14
|
|
1033
1033
|
}
|
|
1034
|
-
},
|
|
1035
|
-
function
|
|
1034
|
+
}, Yt = new Set([Jt.volumeUp, Jt.volumeDown]);
|
|
1035
|
+
function Xt(e) {
|
|
1036
1036
|
let t = (e, t) => {
|
|
1037
|
-
if (!
|
|
1038
|
-
let n =
|
|
1037
|
+
if (!Yt.has(e)) return e;
|
|
1038
|
+
let n = R(t);
|
|
1039
1039
|
return n === t ? e : n;
|
|
1040
1040
|
};
|
|
1041
1041
|
return {
|
|
@@ -1045,67 +1045,67 @@ function V(e) {
|
|
|
1045
1045
|
}
|
|
1046
1046
|
//#endregion
|
|
1047
1047
|
//#region src/utils/chartStyle.ts
|
|
1048
|
-
var
|
|
1048
|
+
var Zt = [
|
|
1049
1049
|
"solid",
|
|
1050
1050
|
"dashed",
|
|
1051
1051
|
"dotted"
|
|
1052
|
-
],
|
|
1052
|
+
], Qt = 20, $t = 64, en = 2, tn = [
|
|
1053
1053
|
/^#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i,
|
|
1054
1054
|
/^[a-z]{3,30}$/i,
|
|
1055
1055
|
/^(?:rgba?|hsla?|hwb|lab|lch|oklab|oklch|color)\([0-9a-z.,%/\s-]*\)$/i
|
|
1056
1056
|
];
|
|
1057
|
-
function
|
|
1058
|
-
return typeof e == "string" && e.length <=
|
|
1057
|
+
function V(e) {
|
|
1058
|
+
return typeof e == "string" && e.length <= $t && tn.some((t) => t.test(e.trim()));
|
|
1059
1059
|
}
|
|
1060
|
-
function
|
|
1060
|
+
function nn(e, t) {
|
|
1061
1061
|
switch (e) {
|
|
1062
|
-
case "color": return
|
|
1063
|
-
case "lineStyle": return
|
|
1064
|
-
case "width": return typeof t == "number" && Number.isFinite(t) && t > 0 && t <=
|
|
1062
|
+
case "color": return V(t);
|
|
1063
|
+
case "lineStyle": return Zt.includes(t);
|
|
1064
|
+
case "width": return typeof t == "number" && Number.isFinite(t) && t > 0 && t <= Qt;
|
|
1065
1065
|
case "boolean": return typeof t == "boolean";
|
|
1066
1066
|
}
|
|
1067
1067
|
}
|
|
1068
|
-
function
|
|
1068
|
+
function rn(e) {
|
|
1069
1069
|
return Object.prototype.hasOwnProperty.call(t, e);
|
|
1070
1070
|
}
|
|
1071
|
-
function
|
|
1071
|
+
function an(e) {
|
|
1072
1072
|
let n = {}, r = [];
|
|
1073
1073
|
if (typeof e != "object" || !e || Array.isArray(e)) return {
|
|
1074
1074
|
overrides: {},
|
|
1075
1075
|
rejected: r
|
|
1076
1076
|
};
|
|
1077
|
-
for (let [i, a] of Object.entries(e))
|
|
1077
|
+
for (let [i, a] of Object.entries(e)) rn(i) ? a === null ? n[i] = null : nn(t[i], a) ? n[i] = a : r.push(i) : r.push(i);
|
|
1078
1078
|
return {
|
|
1079
1079
|
overrides: n,
|
|
1080
1080
|
rejected: r
|
|
1081
1081
|
};
|
|
1082
1082
|
}
|
|
1083
|
-
function
|
|
1083
|
+
function on(e) {
|
|
1084
1084
|
if (typeof e != "object" || !e || Array.isArray(e)) return null;
|
|
1085
1085
|
let { background: t, separator: n } = e, r = {
|
|
1086
|
-
...
|
|
1087
|
-
...
|
|
1086
|
+
...V(t) ? { background: t } : {},
|
|
1087
|
+
...V(n) ? { separator: n } : {}
|
|
1088
1088
|
};
|
|
1089
1089
|
return Object.keys(r).length > 0 ? r : null;
|
|
1090
1090
|
}
|
|
1091
|
-
var
|
|
1092
|
-
function
|
|
1091
|
+
var sn = /^[A-Za-z0-9_]{1,32}$/;
|
|
1092
|
+
function cn(e) {
|
|
1093
1093
|
if (typeof e != "object" || !e || Array.isArray(e)) return;
|
|
1094
1094
|
let t = {};
|
|
1095
1095
|
for (let [n, r] of Object.entries(e)) {
|
|
1096
|
-
if (!
|
|
1096
|
+
if (!sn.test(n) || typeof r != "object" || !r) continue;
|
|
1097
1097
|
let { lineStyle: e, visible: i } = r, a = {
|
|
1098
|
-
...
|
|
1098
|
+
...Zt.includes(e) ? { lineStyle: e } : {},
|
|
1099
1099
|
...typeof i == "boolean" ? { visible: i } : {}
|
|
1100
1100
|
};
|
|
1101
1101
|
Object.keys(a).length > 0 && (t[n] = a);
|
|
1102
1102
|
}
|
|
1103
1103
|
return Object.keys(t).length > 0 ? t : void 0;
|
|
1104
1104
|
}
|
|
1105
|
-
function
|
|
1105
|
+
function ln(e, t, n = 1) {
|
|
1106
1106
|
return e === "solid" ? [] : e === "dotted" ? [n, n * 2] : [...t];
|
|
1107
1107
|
}
|
|
1108
|
-
function
|
|
1108
|
+
function un(e, t, n) {
|
|
1109
1109
|
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;
|
|
1110
1110
|
return {
|
|
1111
1111
|
up: o,
|
|
@@ -1113,7 +1113,7 @@ function ln(e, t, n) {
|
|
|
1113
1113
|
wickUp: r("wickUpColor") ?? t("series.candlestick.wickUpColor") ?? (i === void 0 ? e.candleUpWick : o),
|
|
1114
1114
|
wickDown: r("wickDownColor") ?? t("series.candlestick.wickDownColor") ?? (a === void 0 ? e.candleDownWick : s),
|
|
1115
1115
|
line: r("color") ?? r("lineColor") ?? t("series.line.color") ?? e.lineColor,
|
|
1116
|
-
lineWidth: r("lineWidth") ?? t("series.line.lineWidth") ??
|
|
1116
|
+
lineWidth: r("lineWidth") ?? t("series.line.lineWidth") ?? en,
|
|
1117
1117
|
top: r("topColor") ?? t("series.area.topColor") ?? e.areaTopColor,
|
|
1118
1118
|
bottom: r("bottomColor") ?? t("series.area.bottomColor") ?? e.areaBottomColor
|
|
1119
1119
|
};
|
|
@@ -1126,8 +1126,8 @@ function H(e, t, n) {
|
|
|
1126
1126
|
width: e(`${t}.width`) ?? n.width
|
|
1127
1127
|
};
|
|
1128
1128
|
}
|
|
1129
|
-
function
|
|
1130
|
-
let { style: r, ...i } = e, a = n, o = (e) => a[e], s =
|
|
1129
|
+
function dn(e, t, n) {
|
|
1130
|
+
let { style: r, ...i } = e, a = n, o = (e) => a[e], s = un(i, o, t), c = o("background.color") ?? i.background, l = (e, t) => o(e) ?? t, u = (e) => o(e) ?? null, d = {
|
|
1131
1131
|
panes: {
|
|
1132
1132
|
background: l("panes.background", c),
|
|
1133
1133
|
separator: l("panes.separatorColor", i.axisLine),
|
|
@@ -1226,7 +1226,7 @@ function un(e, t, n) {
|
|
|
1226
1226
|
style: d
|
|
1227
1227
|
};
|
|
1228
1228
|
}
|
|
1229
|
-
var
|
|
1229
|
+
var fn = {
|
|
1230
1230
|
"background.color": (e) => e.background,
|
|
1231
1231
|
"panes.background": (e, t) => t.panes.background,
|
|
1232
1232
|
"panes.separatorColor": (e, t) => t.panes.separator,
|
|
@@ -1245,8 +1245,8 @@ var dn = {
|
|
|
1245
1245
|
"lastPrice.downColor": (e, t) => t.lastPrice.down,
|
|
1246
1246
|
"lastPrice.style": (e, t) => t.lastPrice.style,
|
|
1247
1247
|
"lastPrice.width": (e, t) => t.lastPrice.width,
|
|
1248
|
-
"volume.upColor": (e) =>
|
|
1249
|
-
"volume.downColor": (e) =>
|
|
1248
|
+
"volume.upColor": (e) => Xt(e).up,
|
|
1249
|
+
"volume.downColor": (e) => Xt(e).down,
|
|
1250
1250
|
"sessionBreaks.color": (e, t) => t.sessionBreaks.color,
|
|
1251
1251
|
"sessionBreaks.style": (e, t) => t.sessionBreaks.style,
|
|
1252
1252
|
"sessionBreaks.width": (e, t) => t.sessionBreaks.width,
|
|
@@ -1263,16 +1263,16 @@ var dn = {
|
|
|
1263
1263
|
"tradeZones.lossColor": (e, t) => t.tradeZones.loss,
|
|
1264
1264
|
"tradeZones.activeColor": (e, t) => t.tradeZones.active,
|
|
1265
1265
|
"drawings.handleColor": (e, t) => t.drawings.handle
|
|
1266
|
-
},
|
|
1266
|
+
}, pn = {
|
|
1267
1267
|
visible: "visible",
|
|
1268
1268
|
color: "color",
|
|
1269
1269
|
style: "style",
|
|
1270
1270
|
width: "width"
|
|
1271
1271
|
};
|
|
1272
|
-
function
|
|
1272
|
+
function mn(e, t, n, r = "candlestick") {
|
|
1273
1273
|
let i = n.split(".");
|
|
1274
1274
|
if (i[0] === "series") {
|
|
1275
|
-
let n =
|
|
1275
|
+
let n = un(e, (e) => t[e], i[1]);
|
|
1276
1276
|
switch (i[2]) {
|
|
1277
1277
|
case "upColor": return n.up;
|
|
1278
1278
|
case "downColor": return n.down;
|
|
@@ -1285,12 +1285,12 @@ function pn(e, t, n, r = "candlestick") {
|
|
|
1285
1285
|
case "bottomColor": return n.bottom;
|
|
1286
1286
|
}
|
|
1287
1287
|
}
|
|
1288
|
-
let a =
|
|
1289
|
-
return i[0] === "grid" || i[0] === "crosshair" && (i[1] === "horizontal" || i[1] === "vertical") ? (i[0] === "grid" ? o.grid : o.crosshair)[i[1]][
|
|
1288
|
+
let a = dn(e, r, t), o = a.style;
|
|
1289
|
+
return i[0] === "grid" || i[0] === "crosshair" && (i[1] === "horizontal" || i[1] === "vertical") ? (i[0] === "grid" ? o.grid : o.crosshair)[i[1]][pn[i[2]]] : fn[n]?.(a, o) ?? null;
|
|
1290
1290
|
}
|
|
1291
1291
|
//#endregion
|
|
1292
1292
|
//#region src/constants/defaults.ts
|
|
1293
|
-
var
|
|
1293
|
+
var hn = {
|
|
1294
1294
|
autoScale: !0,
|
|
1295
1295
|
rightMargin: 5,
|
|
1296
1296
|
minBarSpacing: 2,
|
|
@@ -1301,7 +1301,7 @@ var mn = {
|
|
|
1301
1301
|
vLineStyle: "solid"
|
|
1302
1302
|
},
|
|
1303
1303
|
crosshair: { mode: "magnet" }
|
|
1304
|
-
},
|
|
1304
|
+
}, gn = [
|
|
1305
1305
|
"1s",
|
|
1306
1306
|
"1m",
|
|
1307
1307
|
"3m",
|
|
@@ -1318,7 +1318,7 @@ var mn = {
|
|
|
1318
1318
|
"3d",
|
|
1319
1319
|
"1w",
|
|
1320
1320
|
"1M"
|
|
1321
|
-
],
|
|
1321
|
+
], _n = [
|
|
1322
1322
|
"1m",
|
|
1323
1323
|
"5m",
|
|
1324
1324
|
"15m",
|
|
@@ -1332,7 +1332,7 @@ var mn = {
|
|
|
1332
1332
|
"3M",
|
|
1333
1333
|
"6M",
|
|
1334
1334
|
"12M"
|
|
1335
|
-
],
|
|
1335
|
+
], vn = [
|
|
1336
1336
|
"1m",
|
|
1337
1337
|
"5m",
|
|
1338
1338
|
"15m",
|
|
@@ -1342,7 +1342,7 @@ var mn = {
|
|
|
1342
1342
|
"1d",
|
|
1343
1343
|
"1w",
|
|
1344
1344
|
"1M"
|
|
1345
|
-
],
|
|
1345
|
+
], yn = [
|
|
1346
1346
|
"1m",
|
|
1347
1347
|
"5m",
|
|
1348
1348
|
"15m",
|
|
@@ -1350,7 +1350,7 @@ var mn = {
|
|
|
1350
1350
|
"4h",
|
|
1351
1351
|
"1d",
|
|
1352
1352
|
"1w"
|
|
1353
|
-
],
|
|
1353
|
+
], bn = 8, xn = 2, Sn = 70, Cn = 30, wn = 60, Tn = 120, En = (1 + Math.sqrt(5)) / 2, Dn = [
|
|
1354
1354
|
1,
|
|
1355
1355
|
2,
|
|
1356
1356
|
3,
|
|
@@ -1362,8 +1362,8 @@ var mn = {
|
|
|
1362
1362
|
55,
|
|
1363
1363
|
89
|
|
1364
1364
|
];
|
|
1365
|
-
function
|
|
1366
|
-
return Math.round(e *
|
|
1365
|
+
function On(e, t, n = 1) {
|
|
1366
|
+
return Math.round(e * En ** (t / n));
|
|
1367
1367
|
}
|
|
1368
1368
|
//#endregion
|
|
1369
1369
|
//#region src/i18n/en.ts
|
|
@@ -1470,7 +1470,7 @@ var U = {
|
|
|
1470
1470
|
error: "Error",
|
|
1471
1471
|
numberDecimalSeparator: ".",
|
|
1472
1472
|
numberGroupSeparator: ","
|
|
1473
|
-
},
|
|
1473
|
+
}, kn = {
|
|
1474
1474
|
candlestick: "Nến",
|
|
1475
1475
|
line: "Đường",
|
|
1476
1476
|
area: "Vùng",
|
|
@@ -1573,20 +1573,20 @@ var U = {
|
|
|
1573
1573
|
error: "Lỗi",
|
|
1574
1574
|
numberDecimalSeparator: ",",
|
|
1575
1575
|
numberGroupSeparator: "."
|
|
1576
|
-
}, W = new Map([["en", U], ["vi",
|
|
1577
|
-
function
|
|
1578
|
-
G = e,
|
|
1576
|
+
}, W = new Map([["en", U], ["vi", kn]]), G = "en", An = U;
|
|
1577
|
+
function jn(e) {
|
|
1578
|
+
G = e, An = W.get(e) ?? U;
|
|
1579
1579
|
}
|
|
1580
|
-
function
|
|
1580
|
+
function Mn() {
|
|
1581
1581
|
return G;
|
|
1582
1582
|
}
|
|
1583
|
-
function
|
|
1584
|
-
return
|
|
1583
|
+
function Nn(e) {
|
|
1584
|
+
return An[e] ?? U[e] ?? e;
|
|
1585
1585
|
}
|
|
1586
|
-
function
|
|
1586
|
+
function Pn(e, t) {
|
|
1587
1587
|
W.set(e, t);
|
|
1588
1588
|
}
|
|
1589
|
-
function
|
|
1589
|
+
function Fn(e) {
|
|
1590
1590
|
return W.get(e ?? G) ?? U;
|
|
1591
1591
|
}
|
|
1592
1592
|
function K(e, t = 2, n) {
|
|
@@ -1594,10 +1594,10 @@ function K(e, t = 2, n) {
|
|
|
1594
1594
|
for (let e = l.length - 1, t = 0; e >= 0; e--, t++) t > 0 && t % 3 == 0 && (u = a + u), u = l[e] + u;
|
|
1595
1595
|
return c && (u = "-" + u), s ? u + i + s : u;
|
|
1596
1596
|
}
|
|
1597
|
-
function
|
|
1597
|
+
function In(e) {
|
|
1598
1598
|
return K(e, 0, "vi");
|
|
1599
1599
|
}
|
|
1600
|
-
function
|
|
1600
|
+
function Ln(e, t) {
|
|
1601
1601
|
return e >= 1e9 ? K(e / 1e9, 2, t ?? G) + "B" : e >= 1e6 ? K(e / 1e6, 2, t ?? G) + "M" : e >= 1e3 ? K(e / 1e3, 2, t ?? G) + "K" : K(e, 0, t ?? G);
|
|
1602
1602
|
}
|
|
1603
1603
|
//#endregion
|
|
@@ -1609,7 +1609,7 @@ var q = {
|
|
|
1609
1609
|
ceiling: "#D946EF",
|
|
1610
1610
|
floor: "#06B6D4",
|
|
1611
1611
|
reference: "#EAB308"
|
|
1612
|
-
}, J = "Asia/Ho_Chi_Minh",
|
|
1612
|
+
}, J = "Asia/Ho_Chi_Minh", Rn = [
|
|
1613
1613
|
{
|
|
1614
1614
|
name: "ATO",
|
|
1615
1615
|
startTime: "09:00",
|
|
@@ -1640,7 +1640,7 @@ var q = {
|
|
|
1640
1640
|
endTime: "14:45",
|
|
1641
1641
|
type: "preClose"
|
|
1642
1642
|
}
|
|
1643
|
-
],
|
|
1643
|
+
], zn = [
|
|
1644
1644
|
{
|
|
1645
1645
|
name: "Phiên 1",
|
|
1646
1646
|
startTime: "09:15",
|
|
@@ -1671,7 +1671,7 @@ var q = {
|
|
|
1671
1671
|
endTime: "15:00",
|
|
1672
1672
|
type: "postClose"
|
|
1673
1673
|
}
|
|
1674
|
-
],
|
|
1674
|
+
], Bn = [
|
|
1675
1675
|
{
|
|
1676
1676
|
name: "Phiên 1",
|
|
1677
1677
|
startTime: "09:15",
|
|
@@ -1690,7 +1690,7 @@ var q = {
|
|
|
1690
1690
|
endTime: "14:30",
|
|
1691
1691
|
type: "continuous"
|
|
1692
1692
|
}
|
|
1693
|
-
],
|
|
1693
|
+
], Vn = [
|
|
1694
1694
|
{
|
|
1695
1695
|
name: "ATO",
|
|
1696
1696
|
startTime: "08:45",
|
|
@@ -1721,7 +1721,7 @@ var q = {
|
|
|
1721
1721
|
endTime: "14:45",
|
|
1722
1722
|
type: "preClose"
|
|
1723
1723
|
}
|
|
1724
|
-
],
|
|
1724
|
+
], Hn = {
|
|
1725
1725
|
type: "stock",
|
|
1726
1726
|
exchange: "HOSE",
|
|
1727
1727
|
currency: "VND",
|
|
@@ -1748,12 +1748,12 @@ var q = {
|
|
|
1748
1748
|
ceilingPercent: 7,
|
|
1749
1749
|
floorPercent: 7
|
|
1750
1750
|
},
|
|
1751
|
-
sessions:
|
|
1751
|
+
sessions: Rn,
|
|
1752
1752
|
colorScheme: q
|
|
1753
|
-
}, Hn = {
|
|
1754
|
-
...Vn,
|
|
1755
|
-
priceSteps: void 0
|
|
1756
1753
|
}, Un = {
|
|
1754
|
+
...Hn,
|
|
1755
|
+
priceSteps: void 0
|
|
1756
|
+
}, Wn = {
|
|
1757
1757
|
type: "stock",
|
|
1758
1758
|
exchange: "HNX",
|
|
1759
1759
|
currency: "VND",
|
|
@@ -1766,9 +1766,9 @@ var q = {
|
|
|
1766
1766
|
ceilingPercent: 10,
|
|
1767
1767
|
floorPercent: 10
|
|
1768
1768
|
},
|
|
1769
|
-
sessions:
|
|
1769
|
+
sessions: zn,
|
|
1770
1770
|
colorScheme: q
|
|
1771
|
-
},
|
|
1771
|
+
}, Gn = {
|
|
1772
1772
|
type: "stock",
|
|
1773
1773
|
exchange: "UPCOM",
|
|
1774
1774
|
currency: "VND",
|
|
@@ -1781,9 +1781,9 @@ var q = {
|
|
|
1781
1781
|
ceilingPercent: 15,
|
|
1782
1782
|
floorPercent: 15
|
|
1783
1783
|
},
|
|
1784
|
-
sessions:
|
|
1784
|
+
sessions: Bn,
|
|
1785
1785
|
colorScheme: q
|
|
1786
|
-
},
|
|
1786
|
+
}, Kn = {
|
|
1787
1787
|
type: "futures",
|
|
1788
1788
|
exchange: "HNX",
|
|
1789
1789
|
currency: "VND",
|
|
@@ -1797,14 +1797,14 @@ var q = {
|
|
|
1797
1797
|
ceilingPercent: 7,
|
|
1798
1798
|
floorPercent: 7
|
|
1799
1799
|
},
|
|
1800
|
-
sessions:
|
|
1800
|
+
sessions: Vn,
|
|
1801
1801
|
colorScheme: q
|
|
1802
|
-
},
|
|
1802
|
+
}, qn = {
|
|
1803
1803
|
type: "crypto",
|
|
1804
1804
|
currency: "USDT",
|
|
1805
1805
|
pricePrecision: 2,
|
|
1806
1806
|
priceLimits: { enabled: !1 }
|
|
1807
|
-
},
|
|
1807
|
+
}, Jn = {
|
|
1808
1808
|
type: "stock",
|
|
1809
1809
|
exchange: "NYSE",
|
|
1810
1810
|
currency: "USD",
|
|
@@ -1833,7 +1833,7 @@ var q = {
|
|
|
1833
1833
|
}
|
|
1834
1834
|
]
|
|
1835
1835
|
};
|
|
1836
|
-
function
|
|
1836
|
+
function Yn(e) {
|
|
1837
1837
|
return {
|
|
1838
1838
|
...e,
|
|
1839
1839
|
candleUp: q.up,
|
|
@@ -1843,7 +1843,7 @@ function Jn(e) {
|
|
|
1843
1843
|
};
|
|
1844
1844
|
}
|
|
1845
1845
|
var Y = 1e-9;
|
|
1846
|
-
function
|
|
1846
|
+
function X(e, t) {
|
|
1847
1847
|
let n = t.priceStep;
|
|
1848
1848
|
for (let r of t.priceSteps ?? []) e + Y >= r.from && (n = r.step);
|
|
1849
1849
|
return n !== void 0 && n > 0 ? n : void 0;
|
|
@@ -1853,47 +1853,47 @@ function Xn(e, t) {
|
|
|
1853
1853
|
for (let r of t.priceSteps ?? []) e - Y > r.from && (n = r.step);
|
|
1854
1854
|
return n !== void 0 && n > 0 ? n : void 0;
|
|
1855
1855
|
}
|
|
1856
|
-
function
|
|
1857
|
-
let r =
|
|
1856
|
+
function Z(e, t, n = "nearest") {
|
|
1857
|
+
let r = X(e, t);
|
|
1858
1858
|
if (r === void 0 || !Number.isFinite(e)) return e;
|
|
1859
1859
|
let i = e / r, a = n === "down" ? Math.floor(i + Y) : n === "up" ? Math.ceil(i - Y) : Math.round(i);
|
|
1860
|
-
return Number((a * r).toFixed(
|
|
1860
|
+
return Number((a * r).toFixed(ft(r)));
|
|
1861
1861
|
}
|
|
1862
1862
|
function Zn(e, t) {
|
|
1863
1863
|
if (!t.priceLimits?.enabled || !t.priceLimits.ceilingPercent) return null;
|
|
1864
|
-
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 =
|
|
1864
|
+
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 = X(i, t);
|
|
1865
1865
|
if (s === void 0) return {
|
|
1866
1866
|
ceiling: a,
|
|
1867
1867
|
floor: o,
|
|
1868
1868
|
reference: i
|
|
1869
1869
|
};
|
|
1870
|
-
let c =
|
|
1870
|
+
let c = Z(i + s, t);
|
|
1871
1871
|
if (Math.abs(i - s) < Y) return {
|
|
1872
1872
|
ceiling: c,
|
|
1873
1873
|
floor: i,
|
|
1874
1874
|
reference: i
|
|
1875
1875
|
};
|
|
1876
|
-
let l =
|
|
1877
|
-
return l <= i && (l = c), u >= i && (u =
|
|
1876
|
+
let l = Z(a, t, "down"), u = Z(o, t, "up");
|
|
1877
|
+
return l <= i && (l = c), u >= i && (u = Z(i - (Xn(i, t) ?? s), t)), u <= 0 && (u = i), {
|
|
1878
1878
|
ceiling: l,
|
|
1879
1879
|
floor: u,
|
|
1880
1880
|
reference: i
|
|
1881
1881
|
};
|
|
1882
1882
|
}
|
|
1883
|
-
var
|
|
1883
|
+
var Q = (e, t) => Math.round(e * t * 1e9) / 1e9;
|
|
1884
1884
|
function Qn(e, t) {
|
|
1885
1885
|
let n = Math.round(Math.log10(t));
|
|
1886
1886
|
return {
|
|
1887
1887
|
...e,
|
|
1888
1888
|
pricePrecision: e.pricePrecision === void 0 ? void 0 : Math.max(0, e.pricePrecision - n),
|
|
1889
|
-
priceStep: e.priceStep === void 0 ? void 0 :
|
|
1889
|
+
priceStep: e.priceStep === void 0 ? void 0 : Q(e.priceStep, t),
|
|
1890
1890
|
priceSteps: e.priceSteps?.map((e) => ({
|
|
1891
|
-
from:
|
|
1892
|
-
step:
|
|
1891
|
+
from: Q(e.from, t),
|
|
1892
|
+
step: Q(e.step, t)
|
|
1893
1893
|
})),
|
|
1894
1894
|
priceLimits: e.priceLimits && {
|
|
1895
1895
|
...e.priceLimits,
|
|
1896
|
-
referencePrice: e.priceLimits.referencePrice === void 0 ? void 0 :
|
|
1896
|
+
referencePrice: e.priceLimits.referencePrice === void 0 ? void 0 : Q(e.priceLimits.referencePrice, t)
|
|
1897
1897
|
}
|
|
1898
1898
|
};
|
|
1899
1899
|
}
|
|
@@ -1901,7 +1901,7 @@ var $n = 6e4, er = 864e5;
|
|
|
1901
1901
|
function tr(e, t) {
|
|
1902
1902
|
let n, r;
|
|
1903
1903
|
if (t) {
|
|
1904
|
-
let i = new Date(e +
|
|
1904
|
+
let i = new Date(e + S(t, e) * $n);
|
|
1905
1905
|
n = i.getUTCHours(), r = i.getUTCMinutes();
|
|
1906
1906
|
} else {
|
|
1907
1907
|
let t = new Date(e);
|
|
@@ -1910,30 +1910,30 @@ function tr(e, t) {
|
|
|
1910
1910
|
return `${String(n).padStart(2, "0")}:${String(r).padStart(2, "0")}`;
|
|
1911
1911
|
}
|
|
1912
1912
|
function nr(e, t = Date.now(), n) {
|
|
1913
|
-
if (n !== void 0 && !
|
|
1913
|
+
if (n !== void 0 && !x(n)) return null;
|
|
1914
1914
|
let r = tr(t, n);
|
|
1915
1915
|
for (let t of e) if (r >= t.startTime && r < t.endTime) return t;
|
|
1916
1916
|
return null;
|
|
1917
1917
|
}
|
|
1918
|
-
var
|
|
1918
|
+
var $ = (e) => String(e).padStart(2, "0"), rr = (e) => {
|
|
1919
1919
|
let t = new Date(e);
|
|
1920
|
-
return `${t.getUTCFullYear()}-${
|
|
1921
|
-
},
|
|
1922
|
-
function
|
|
1923
|
-
let r = Date.UTC(e, t - 1, 1), i = 1 + (
|
|
1920
|
+
return `${t.getUTCFullYear()}-${$(t.getUTCMonth() + 1)}-${$(t.getUTCDate())}`;
|
|
1921
|
+
}, ir = 4, ar = 7 * 36e5;
|
|
1922
|
+
function or(e, t, n) {
|
|
1923
|
+
let r = Date.UTC(e, t - 1, 1), i = 1 + (ir - new Date(r).getUTCDay() + 7) % 7, a = Date.UTC(e, t - 1, i + 14), o = (e) => {
|
|
1924
1924
|
let t = new Date(e).getUTCDay();
|
|
1925
|
-
return t === 0 || t === 6 || (n?.(
|
|
1925
|
+
return t === 0 || t === 6 || (n?.(rr(e)) ?? !1);
|
|
1926
1926
|
};
|
|
1927
1927
|
for (; o(a);) a -= er;
|
|
1928
|
-
return
|
|
1928
|
+
return rr(a);
|
|
1929
1929
|
}
|
|
1930
|
-
function
|
|
1931
|
-
let n =
|
|
1932
|
-
symbol: `VN30F${
|
|
1930
|
+
function sr(e, t) {
|
|
1931
|
+
let n = rr(e + ar), r = (e, n) => ({
|
|
1932
|
+
symbol: `VN30F${$(e % 100)}${$(n)}`,
|
|
1933
1933
|
year: e,
|
|
1934
1934
|
month: n,
|
|
1935
|
-
lastTradingDay:
|
|
1936
|
-
}), i = (e) => e.month === 12 ? r(e.year + 1, 1) : r(e.year, e.month + 1), a = new Date(e +
|
|
1935
|
+
lastTradingDay: or(e, n, t)
|
|
1936
|
+
}), i = (e) => e.month === 12 ? r(e.year + 1, 1) : r(e.year, e.month + 1), a = new Date(e + ar), o = r(a.getUTCFullYear(), a.getUTCMonth() + 1);
|
|
1937
1937
|
n > o.lastTradingDay && (o = i(o));
|
|
1938
1938
|
let s = [o, i(o)], c = i(s[1]);
|
|
1939
1939
|
for (; s.length < 4;) c.month % 3 == 0 && s.push(c), c = i(c);
|
|
@@ -1941,7 +1941,7 @@ function or(e, t) {
|
|
|
1941
1941
|
}
|
|
1942
1942
|
//#endregion
|
|
1943
1943
|
//#region src/icons/iconSet.ts
|
|
1944
|
-
var
|
|
1944
|
+
var cr = {
|
|
1945
1945
|
cursor: { d: "M6 3.5L18.5 12.5L12.6 13.6L9.7 19.4z" },
|
|
1946
1946
|
trendingUp: { d: "M3 17L9 11L13 14.5L21 6.5M15 6.5H21V12.5" },
|
|
1947
1947
|
trendingDown: { d: "M3 7L9 13L13 9.5L21 17.5M15 17.5H21V11.5" },
|
|
@@ -2070,7 +2070,7 @@ var sr = {
|
|
|
2070
2070
|
]
|
|
2071
2071
|
] },
|
|
2072
2072
|
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" }
|
|
2073
|
-
},
|
|
2073
|
+
}, lr = {
|
|
2074
2074
|
trendLine: {
|
|
2075
2075
|
d: "M5 18L19 6",
|
|
2076
2076
|
dots: [[5, 18], [19, 6]]
|
|
@@ -2423,7 +2423,7 @@ var sr = {
|
|
|
2423
2423
|
],
|
|
2424
2424
|
dash: "M12 3V21"
|
|
2425
2425
|
}
|
|
2426
|
-
},
|
|
2426
|
+
}, ur = {
|
|
2427
2427
|
candlestick: {
|
|
2428
2428
|
d: "M8 3.5V7M8 16V20.5M16 5V8.5M16 15.5V19",
|
|
2429
2429
|
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"]
|
|
@@ -2490,21 +2490,21 @@ var sr = {
|
|
|
2490
2490
|
"M16 4.5h3v6h-3z"
|
|
2491
2491
|
]
|
|
2492
2492
|
}
|
|
2493
|
-
},
|
|
2494
|
-
function
|
|
2495
|
-
let t =
|
|
2493
|
+
}, dr = 1.75, fr = .22, pr = /* @__PURE__ */ new WeakMap();
|
|
2494
|
+
function mr(e) {
|
|
2495
|
+
let t = pr.get(e);
|
|
2496
2496
|
if (t) return t;
|
|
2497
2497
|
let n = "";
|
|
2498
|
-
e.soft && (n += `<path d="${e.soft}" fill="currentColor" fill-opacity="${
|
|
2498
|
+
e.soft && (n += `<path d="${e.soft}" fill="currentColor" fill-opacity="${fr}" stroke="none"/>`);
|
|
2499
2499
|
for (let t of e.fills ?? []) n += `<path d="${t}" fill="currentColor" stroke="none"/>`;
|
|
2500
2500
|
e.d && (n += `<path d="${e.d}"/>`), e.dash && (n += `<path d="${e.dash}" stroke-dasharray="2 2.5"/>`);
|
|
2501
|
-
for (let [t, r, i =
|
|
2502
|
-
return
|
|
2501
|
+
for (let [t, r, i = dr] of e.dots ?? []) n += `<circle cx="${t}" cy="${r}" r="${i}" fill="currentColor" stroke="none"/>`;
|
|
2502
|
+
return pr.set(e, n), n;
|
|
2503
2503
|
}
|
|
2504
|
-
function
|
|
2505
|
-
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">${
|
|
2504
|
+
function hr(e, t) {
|
|
2505
|
+
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">${mr(e)}</svg>`;
|
|
2506
2506
|
}
|
|
2507
2507
|
//#endregion
|
|
2508
|
-
export { t as CHART_STYLE_KEYS,
|
|
2508
|
+
export { t as CHART_STYLE_KEYS, ur as CHART_TYPE_ICONS, Jt as DARK_TERMINAL, Kt as DARK_THEME, xn as DEFAULT_BAR_SPACING, bn as DEFAULT_BAR_WIDTH, hn as DEFAULT_CHART_OPTIONS, n as DEFAULT_DRAWING_STYLE, Nt as DEFAULT_FONT_FAMILY, Tn as DEFAULT_PANEL_HEIGHT, o as DEFAULT_RECONNECT, i as DEFAULT_SIGNAL_STYLE, s as DEFAULT_STREAM_CONFIG, yn as DEFAULT_TIMEFRAME_FAVORITES, a as DEFAULT_TRADE_ZONE_STYLE, r as DEFAULT_TRADING_CONFIG, lr as DRAWING_TOOL_ICONS, Dn as FIBONACCI, zn as HNX_SESSIONS, Rn as HOSE_SESSIONS, dr as ICON_DOT_RADIUS, fr as ICON_SOFT_OPACITY, qt as LIGHT_THEME, e as LayerType, qn as MARKET_CRYPTO, Wn as MARKET_HNX, Hn as MARKET_HOSE, Un as MARKET_HOSE_ETF, Jn as MARKET_NYSE, Gn as MARKET_UPCOM, Kn as MARKET_VN30F, wn as MIN_PANEL_HEIGHT, se as MS_TIME_THRESHOLD, En as PHI, Sn as PRICE_AXIS_WIDTH, et as PRICE_SOURCES, Pt as SANS_FONT_FAMILY, L as TC_PALETTE, Gt as TC_SERIES_COLORS, gn as TIMEFRAMES_CRYPTO, vn as TIMEFRAMES_FOREX, _n as TIMEFRAMES_STOCK, Cn as TIME_AXIS_HEIGHT, cr as UI_ICONS, Bn as UPCOM_SESSIONS, Vn as VN30F_SESSIONS, q as VN_COLORS, It as VOLUME_ALPHA, Ie as alignToTimeframe, qe as autoPricePrecision, ce as barTimeUnit, Be as barsAreDaily, mn as chartStyleValue, ne as clamp, Zn as computePriceLimits, he as computePriceRange, oe as computeTickStep, Yn as createVNTheme, $e as detectPrecision, Ct as drawingOption, U as en, fe as findBarIndex, me as fitPriceRange, Ye as formatFraction, K as formatNumber, O as formatPrice, Je as formatPriceScaleLabel, Fe as formatTimestamp, In as formatVND, Qe as formatVolume, Ln as formatVolumeLoc, Xe as fractionTick, nr as getCurrentSession, Mn as getLocale, Fn as getLocaleStrings, _e as hexToRgba, hr as iconSvg, it as indicatorSource, ie as inverseLerp, Re as isDateOnly, tt as isPriceSource, Pe as isTimeFrame, x as isValidTimeZone, re as lerp, ve as lerpColor, ln as lineDash, ht as marketStatus, ge as mergeBar, m as niceNumber, ue as normalizeBar, le as normalizeBarTime, w as offsetAt, pe as padPriceRange, at as parseIndicatorSource, T as parseTimeframe, On as phiStep, lt as pickBaseTimeframe, Ze as priceFormatterFor, X as priceStepAt, Ke as priceTagText, dt as rankSymbols, an as readChartStyleOverrides, Mt as readChartTypeOptions, cn as readIndicatorPlotStyles, te as readNews, on as readPaneStyle, l as readQuote, Pn as registerLocale, st as resampleBars, dn as resolveChartTheme, wt as resolveDrawingOptions, Xt as resolveVolumeColors, Z as roundToPriceStep, ae as roundToStep, xt as sanitizeDrawingOptions, jt as sanitizeDrawingStyle, Qn as scaleMarketPrices, A as sessionMinute, jn as setLocale, de as sliceVisibleData, nt as sourcePrice, ft as stepDecimals, pt as symbolTimeZone, Nn as t, Ne as tickBarCount, Le as timeParts, Ue as timeframeBucketStart, E as timeframeToMs, Ve as tzLabel, kn as vi, sr as vn30fContracts, or as vn30fLastTradingDay, R as volumeColor, Ee as wallToUtc, h as withAlpha, S as zoneOffsetMinutes, Oe as zonedDateFormatter };
|
|
2509
2509
|
|
|
2510
2510
|
//# sourceMappingURL=index.js.map
|