@tradecanvas/commons 1.49.1 → 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/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 +300 -278
- package/dist/index.js.map +1 -1
- package/dist/types/chart.d.ts +21 -0
- 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,
|
|
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,7 +392,7 @@ var g = 6e4, ye = 1440 * g, _ = 15 * g, be = 8192, xe = 7 * ye, Se = 4096, Ce =
|
|
|
370
392
|
"Etc/Universal",
|
|
371
393
|
"Zulu",
|
|
372
394
|
"Etc/Zulu"
|
|
373
|
-
]), we = /* @__PURE__ */ new Map(),
|
|
395
|
+
]), we = /* @__PURE__ */ new Map(), b = /* @__PURE__ */ new Map(), Te = /* @__PURE__ */ new Map();
|
|
374
396
|
function Ee(e) {
|
|
375
397
|
let t = we.get(e);
|
|
376
398
|
return t || (t = new Intl.DateTimeFormat("en-US", {
|
|
@@ -384,7 +406,7 @@ function Ee(e) {
|
|
|
384
406
|
second: "numeric"
|
|
385
407
|
}), we.set(e, t)), t;
|
|
386
408
|
}
|
|
387
|
-
function
|
|
409
|
+
function x(e) {
|
|
388
410
|
if (!e) return !1;
|
|
389
411
|
try {
|
|
390
412
|
return Ee(e), !0;
|
|
@@ -392,24 +414,24 @@ function y(e) {
|
|
|
392
414
|
return !1;
|
|
393
415
|
}
|
|
394
416
|
}
|
|
395
|
-
function
|
|
417
|
+
function S(e, t) {
|
|
396
418
|
if (!Number.isFinite(t) || Ce.has(e)) return 0;
|
|
397
419
|
let n = Te.get(e);
|
|
398
420
|
n || (n = /* @__PURE__ */ new Map(), Te.set(e, n));
|
|
399
|
-
let r = Math.floor(t /
|
|
400
|
-
return i || (i = De(e, r *
|
|
421
|
+
let r = Math.floor(t / y), i = n.get(r);
|
|
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
424
|
function De(e, t) {
|
|
403
|
-
let n =
|
|
425
|
+
let n = C(e, t), r = t + y - v, i = C(e, r);
|
|
404
426
|
if (i === n) return {
|
|
405
427
|
before: n,
|
|
406
428
|
change: Infinity,
|
|
407
429
|
after: i
|
|
408
430
|
};
|
|
409
431
|
let a = t;
|
|
410
|
-
for (; r - a >
|
|
411
|
-
let t = a + Math.floor((r - a) /
|
|
412
|
-
|
|
432
|
+
for (; r - a > v;) {
|
|
433
|
+
let t = a + Math.floor((r - a) / v / 2) * v;
|
|
434
|
+
C(e, t) === n ? a = t : r = t;
|
|
413
435
|
}
|
|
414
436
|
return {
|
|
415
437
|
before: n,
|
|
@@ -417,10 +439,10 @@ function De(e, t) {
|
|
|
417
439
|
after: i
|
|
418
440
|
};
|
|
419
441
|
}
|
|
420
|
-
function
|
|
421
|
-
let n = Math.floor(t /
|
|
442
|
+
function C(e, t) {
|
|
443
|
+
let n = Math.floor(t / v), r = `${e}|${n}`, i = b.get(r);
|
|
422
444
|
if (i !== void 0) return i;
|
|
423
|
-
let a = n *
|
|
445
|
+
let a = n * v, o = 1970, s = 1, c = 1, l = 0, u = 0, d = 0;
|
|
424
446
|
for (let t of Ee(e).formatToParts(new Date(a))) {
|
|
425
447
|
let e = Number(t.value);
|
|
426
448
|
switch (t.type) {
|
|
@@ -445,16 +467,16 @@ function x(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
|
|
470
|
+
return b.size >= xe && b.clear(), b.set(r, f), f;
|
|
449
471
|
}
|
|
450
|
-
function
|
|
451
|
-
return e === null ? -new Date(t).getTimezoneOffset() : typeof e == "number" ? e :
|
|
472
|
+
function w(e, t) {
|
|
473
|
+
return e === null ? -new Date(t).getTimezoneOffset() : typeof e == "number" ? e : S(e, t);
|
|
452
474
|
}
|
|
453
475
|
function Oe(e, t) {
|
|
454
|
-
let n = e -
|
|
455
|
-
if (n +
|
|
456
|
-
let r = e -
|
|
457
|
-
return r +
|
|
476
|
+
let n = e - w(t, e - _) * g;
|
|
477
|
+
if (n + w(t, n) * g === e) return n;
|
|
478
|
+
let r = e - w(t, e + _) * g;
|
|
479
|
+
return r + w(t, r) * g === e ? r : n;
|
|
458
480
|
}
|
|
459
481
|
var ke = /* @__PURE__ */ new Map();
|
|
460
482
|
function Ae(e, t, n) {
|
|
@@ -504,16 +526,16 @@ var je = {
|
|
|
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
|
-
},
|
|
515
|
-
function
|
|
516
|
-
let t =
|
|
536
|
+
}, Ne = /^([1-9]\d*)([smhdwM])$/;
|
|
537
|
+
function T(e) {
|
|
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,24 +543,24 @@ function w(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
|
|
532
|
-
return
|
|
553
|
+
function Ie(e) {
|
|
554
|
+
return T(e) !== null;
|
|
533
555
|
}
|
|
534
|
-
function
|
|
556
|
+
function E(e) {
|
|
535
557
|
let t = je[e];
|
|
536
558
|
if (t !== void 0) return t;
|
|
537
|
-
let n =
|
|
538
|
-
return n ? n.count *
|
|
559
|
+
let n = T(e);
|
|
560
|
+
return n ? n.count * Me[n.unit] : NaN;
|
|
539
561
|
}
|
|
540
|
-
function
|
|
541
|
-
let n = new Date(e), r =
|
|
562
|
+
function Le(e, t) {
|
|
563
|
+
let n = new Date(e), r = E(t);
|
|
542
564
|
return r >= 864e5 ? n.toLocaleDateString(void 0, {
|
|
543
565
|
month: "short",
|
|
544
566
|
day: "numeric"
|
|
@@ -551,11 +573,11 @@ function Ie(e, t) {
|
|
|
551
573
|
second: "2-digit"
|
|
552
574
|
});
|
|
553
575
|
}
|
|
554
|
-
function
|
|
555
|
-
let n =
|
|
576
|
+
function Re(e, t) {
|
|
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 {
|
|
@@ -566,7 +588,7 @@ function Re(e, t) {
|
|
|
566
588
|
minutes: t.getMinutes()
|
|
567
589
|
};
|
|
568
590
|
}
|
|
569
|
-
let n = new Date(e +
|
|
591
|
+
let n = new Date(e + w(t, e) * 6e4);
|
|
570
592
|
return {
|
|
571
593
|
year: n.getUTCFullYear(),
|
|
572
594
|
month: n.getUTCMonth() + 1,
|
|
@@ -575,11 +597,11 @@ function Re(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,81 +609,81 @@ function Ve(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
|
|
593
|
-
let n =
|
|
614
|
+
function Ue(e, t = Date.now()) {
|
|
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
|
|
598
|
-
let { count: r, unit: i } =
|
|
618
|
+
var We = Date.UTC(1970, 0, 5);
|
|
619
|
+
function Ge(e, t, n = 1) {
|
|
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
|
|
620
|
-
let n = `${e}|${t}`, r =
|
|
621
|
-
return r || (
|
|
640
|
+
var Ke = 64, D = /* @__PURE__ */ new Map();
|
|
641
|
+
function qe(e, t) {
|
|
642
|
+
let n = `${e}|${t}`, r = D.get(n);
|
|
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) :
|
|
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
|
-
function
|
|
630
|
-
return
|
|
651
|
+
function O(e, t = 2, n = "en-US") {
|
|
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;
|
|
641
663
|
return `${t > 0 ? "+" : ""}${t.toFixed(2)}%`;
|
|
642
664
|
}
|
|
643
|
-
return
|
|
665
|
+
return O(e / n * 100, 2, i);
|
|
644
666
|
}
|
|
645
|
-
return
|
|
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 Qe(e) {
|
|
659
|
-
return e ? typeof e == "function" ? e : Ze(e) === null ? null : (t) => Xe(t, e.denominator, e.subDenominator) : null;
|
|
660
|
-
}
|
|
661
680
|
function $e(e) {
|
|
662
|
-
return e
|
|
681
|
+
return e ? typeof e == "function" ? e : Qe(e) === null ? null : (t) => Ze(t, e.denominator, e.subDenominator) : null;
|
|
663
682
|
}
|
|
664
683
|
function et(e) {
|
|
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);
|
|
685
|
+
}
|
|
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 et(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 tt = [
|
|
|
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 rt(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 ot(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,
|
|
@@ -726,37 +748,37 @@ function ct(e, t, n = 1) {
|
|
|
726
748
|
}
|
|
727
749
|
return r;
|
|
728
750
|
}
|
|
729
|
-
var
|
|
730
|
-
function
|
|
731
|
-
let n =
|
|
751
|
+
var k = (e) => e === "s" || e === "m" || e === "h" || e === "d";
|
|
752
|
+
function ut(e, t) {
|
|
753
|
+
let n = T(e), r = T(t);
|
|
732
754
|
if (!n || !r) return !1;
|
|
733
|
-
let i =
|
|
734
|
-
return n.unit === "d" && n.count > 1 ? !1 :
|
|
755
|
+
let i = E(e);
|
|
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 (!
|
|
740
|
-
let t =
|
|
761
|
+
if (!ut(i, e)) continue;
|
|
762
|
+
let t = E(i);
|
|
741
763
|
t > r && (n = i, r = t);
|
|
742
764
|
}
|
|
743
765
|
return n;
|
|
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 ft(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,10 +795,10 @@ function pt(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
|
-
function
|
|
801
|
+
function A(e) {
|
|
780
802
|
let t = /^(\d{1,2}):(\d{2})$/.exec(e.trim());
|
|
781
803
|
if (!t) return null;
|
|
782
804
|
let n = Number(t[1]), r = Number(t[2]);
|
|
@@ -784,26 +806,26 @@ function k(e) {
|
|
|
784
806
|
}
|
|
785
807
|
//#endregion
|
|
786
808
|
//#region src/utils/marketStatus.ts
|
|
787
|
-
var
|
|
788
|
-
function
|
|
789
|
-
let n =
|
|
790
|
-
let t =
|
|
809
|
+
var j = 864e5, M = 6e4, gt = 8;
|
|
810
|
+
function _t(e, t) {
|
|
811
|
+
let n = ht(e), r = (e?.sessions ?? []).flatMap((e) => {
|
|
812
|
+
let t = A(e.start), n = A(e.end);
|
|
791
813
|
return t === null || n === null || t === n ? [] : [{
|
|
792
814
|
start: t,
|
|
793
815
|
end: n,
|
|
794
816
|
days: Array.isArray(e.days) ? e.days : null
|
|
795
817
|
}];
|
|
796
818
|
});
|
|
797
|
-
if (!n || !
|
|
819
|
+
if (!n || !x(n) || r.length === 0 || !Number.isFinite(t)) return {
|
|
798
820
|
state: "always",
|
|
799
821
|
next: null
|
|
800
822
|
};
|
|
801
|
-
let i =
|
|
802
|
-
for (let e = -1; e <=
|
|
803
|
-
let t = a + e *
|
|
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 = [];
|
|
824
|
+
for (let e = -1; e <= gt; e++) {
|
|
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;
|
|
806
|
-
let r = t + e.start *
|
|
828
|
+
let r = t + e.start * M, i = (e.end > e.start ? t : t + j) + e.end * M;
|
|
807
829
|
s.push([o(r), o(i)]);
|
|
808
830
|
}
|
|
809
831
|
}
|
|
@@ -826,15 +848,15 @@ function gt(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,68 +865,68 @@ function bt(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
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);
|
|
907
|
-
function
|
|
929
|
+
function Ft(e) {
|
|
908
930
|
if (!F(e)) return {};
|
|
909
931
|
let t = {};
|
|
910
932
|
if (F(e.renko)) {
|
|
@@ -940,8 +962,8 @@ function Nt(e) {
|
|
|
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
|
|
@@ -956,27 +978,27 @@ var Pt = "'Cascadia Mono', 'SF Mono', ui-monospace, Menlo, Consolas, monospace",
|
|
|
956
978
|
rose: "#e25592",
|
|
957
979
|
neutral: "#7d8696",
|
|
958
980
|
ink: "#131416"
|
|
959
|
-
},
|
|
981
|
+
}, zt = .22;
|
|
960
982
|
function L(e) {
|
|
961
|
-
return h(e,
|
|
983
|
+
return h(e, zt);
|
|
962
984
|
}
|
|
963
|
-
var
|
|
985
|
+
var Bt = "#fbfaf6", R = "#1b1d21", Vt = "#131416", z = "#e6e3dc", Ht = "#1f7a5c", Ut = "#b8423f", Wt = "#4fae8a", Gt = "#e2706b", Kt = "#6a6966", qt = "#8d8a84", Jt = [
|
|
964
986
|
I.blue,
|
|
965
987
|
I.ochre,
|
|
966
988
|
I.violet,
|
|
967
989
|
I.cyan,
|
|
968
990
|
I.rose
|
|
969
|
-
],
|
|
991
|
+
], Yt = {
|
|
970
992
|
name: "dark",
|
|
971
|
-
background:
|
|
993
|
+
background: Vt,
|
|
972
994
|
text: z,
|
|
973
995
|
textSecondary: "#8d8b86",
|
|
974
996
|
grid: "#1d1e21",
|
|
975
|
-
crosshair:
|
|
976
|
-
candleUp:
|
|
977
|
-
candleDown:
|
|
978
|
-
candleUpWick:
|
|
979
|
-
candleDownWick:
|
|
997
|
+
crosshair: Kt,
|
|
998
|
+
candleUp: Wt,
|
|
999
|
+
candleDown: Gt,
|
|
1000
|
+
candleUpWick: Wt,
|
|
1001
|
+
candleDownWick: Gt,
|
|
980
1002
|
lineColor: z,
|
|
981
1003
|
areaTopColor: h(z, .14),
|
|
982
1004
|
areaBottomColor: h(z, 0),
|
|
@@ -985,18 +1007,18 @@ var Lt = "#fbfaf6", R = "#1b1d21", Rt = "#131416", z = "#e6e3dc", zt = "#1f7a5c"
|
|
|
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:
|
|
1013
|
+
background: Bt,
|
|
992
1014
|
text: R,
|
|
993
1015
|
textSecondary: "#6b6f76",
|
|
994
1016
|
grid: "#ece8df",
|
|
995
|
-
crosshair:
|
|
996
|
-
candleUp:
|
|
997
|
-
candleDown:
|
|
998
|
-
candleUpWick:
|
|
999
|
-
candleDownWick:
|
|
1017
|
+
crosshair: qt,
|
|
1018
|
+
candleUp: Ht,
|
|
1019
|
+
candleDown: Ut,
|
|
1020
|
+
candleUpWick: Ht,
|
|
1021
|
+
candleDownWick: Ut,
|
|
1000
1022
|
lineColor: R,
|
|
1001
1023
|
areaTopColor: h(R, .12),
|
|
1002
1024
|
areaBottomColor: h(R, 0),
|
|
@@ -1005,8 +1027,8 @@ var Lt = "#fbfaf6", R = "#1b1d21", Rt = "#131416", z = "#e6e3dc", zt = "#1f7a5c"
|
|
|
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",
|
|
@@ -1031,10 +1053,10 @@ var Lt = "#fbfaf6", R = "#1b1d21", Rt = "#131416", z = "#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 (!
|
|
1059
|
+
if (!Qt.has(e)) return e;
|
|
1038
1060
|
let n = L(t);
|
|
1039
1061
|
return n === t ? e : n;
|
|
1040
1062
|
};
|
|
@@ -1045,67 +1067,67 @@ function V(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
|
-
function
|
|
1058
|
-
return typeof e == "string" && e.length <=
|
|
1079
|
+
function V(e) {
|
|
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
|
-
case "color": return
|
|
1063
|
-
case "lineStyle": return
|
|
1064
|
-
case "width": return typeof t == "number" && Number.isFinite(t) && t > 0 && t <=
|
|
1084
|
+
case "color": return V(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
|
-
...
|
|
1087
|
-
...
|
|
1108
|
+
...V(t) ? { background: t } : {},
|
|
1109
|
+
...V(n) ? { separator: n } : {}
|
|
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 ln(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 un(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 dn = {
|
|
|
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 dn = {
|
|
|
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 pn(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 mn = {
|
|
|
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 mn = {
|
|
|
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 mn = {
|
|
|
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 mn = {
|
|
|
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 mn = {
|
|
|
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 mn = {
|
|
|
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,
|
|
@@ -1843,65 +1865,65 @@ function Jn(e) {
|
|
|
1843
1865
|
};
|
|
1844
1866
|
}
|
|
1845
1867
|
var Y = 1e-9;
|
|
1846
|
-
function
|
|
1868
|
+
function X(e, t) {
|
|
1847
1869
|
let n = t.priceStep;
|
|
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;
|
|
1855
1877
|
}
|
|
1856
|
-
function
|
|
1857
|
-
let r =
|
|
1878
|
+
function Z(e, t, n = "nearest") {
|
|
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
|
-
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 =
|
|
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 {
|
|
1866
1888
|
ceiling: a,
|
|
1867
1889
|
floor: o,
|
|
1868
1890
|
reference: i
|
|
1869
1891
|
};
|
|
1870
|
-
let c =
|
|
1892
|
+
let c = Z(i + s, t);
|
|
1871
1893
|
if (Math.abs(i - s) < Y) return {
|
|
1872
1894
|
ceiling: c,
|
|
1873
1895
|
floor: i,
|
|
1874
1896
|
reference: i
|
|
1875
1897
|
};
|
|
1876
|
-
let l =
|
|
1877
|
-
return l <= i && (l = c), u >= i && (u =
|
|
1898
|
+
let l = Z(a, t, "down"), u = Z(o, t, "up");
|
|
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
|
-
var
|
|
1884
|
-
function
|
|
1905
|
+
var Q = (e, t) => Math.round(e * t * 1e9) / 1e9;
|
|
1906
|
+
function er(e, t) {
|
|
1885
1907
|
let n = Math.round(Math.log10(t));
|
|
1886
1908
|
return {
|
|
1887
1909
|
...e,
|
|
1888
1910
|
pricePrecision: e.pricePrecision === void 0 ? void 0 : Math.max(0, e.pricePrecision - n),
|
|
1889
|
-
priceStep: e.priceStep === void 0 ? void 0 :
|
|
1911
|
+
priceStep: e.priceStep === void 0 ? void 0 : Q(e.priceStep, t),
|
|
1890
1912
|
priceSteps: e.priceSteps?.map((e) => ({
|
|
1891
|
-
from:
|
|
1892
|
-
step:
|
|
1913
|
+
from: Q(e.from, t),
|
|
1914
|
+
step: Q(e.step, t)
|
|
1893
1915
|
})),
|
|
1894
1916
|
priceLimits: e.priceLimits && {
|
|
1895
1917
|
...e.priceLimits,
|
|
1896
|
-
referencePrice: e.priceLimits.referencePrice === void 0 ? void 0 :
|
|
1918
|
+
referencePrice: e.priceLimits.referencePrice === void 0 ? void 0 : Q(e.priceLimits.referencePrice, 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 +
|
|
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
|
|
1913
|
-
if (n !== void 0 && !
|
|
1914
|
-
let r =
|
|
1934
|
+
function ir(e, t = Date.now(), n) {
|
|
1935
|
+
if (n !== void 0 && !x(n)) return null;
|
|
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
|
|
1940
|
+
var $ = (e) => String(e).padStart(2, "0"), ar = (e) => {
|
|
1919
1941
|
let t = new Date(e);
|
|
1920
|
-
return `${t.getUTCFullYear()}-${
|
|
1921
|
-
},
|
|
1922
|
-
function
|
|
1923
|
-
let r = Date.UTC(e, t - 1, 1), i = 1 + (
|
|
1942
|
+
return `${t.getUTCFullYear()}-${$(t.getUTCMonth() + 1)}-${$(t.getUTCDate())}`;
|
|
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 =
|
|
1932
|
-
symbol: `VN30F${
|
|
1952
|
+
function lr(e, t) {
|
|
1953
|
+
let n = ar(e + sr), r = (e, n) => ({
|
|
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 or(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 sr = {
|
|
|
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 sr = {
|
|
|
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 sr = {
|
|
|
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
|