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