@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/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
- function ve(e, t, n) {
353
- let r = (e) => (e = e.replace("#", ""), e.length === 3 && (e = e[0] + e[0] + e[1] + e[1] + e[2] + e[2]), {
354
- r: parseInt(e.slice(0, 2), 16),
355
- g: parseInt(e.slice(2, 4), 16),
356
- b: parseInt(e.slice(4, 6), 16)
357
- }), i = r(e), a = r(t);
358
- return `rgb(${Math.round(i.r + (a.r - i.r) * n)},${Math.round(i.g + (a.g - i.g) * n)},${Math.round(i.b + (a.b - i.b) * n)})`;
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, ye = 1440 * g, _ = 15 * g, be = 8192, xe = 7 * ye, Se = 4096, Ce = new Set([
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(), v = /* @__PURE__ */ new Map(), Te = /* @__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 y(e) {
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 b(e, t) {
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 / xe), i = n.get(r);
400
- return i || (i = De(e, r * xe), n.size >= Se && n.clear(), n.set(r, i)), t < i.change ? i.before : i.after;
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 = x(e, t), r = t + xe - _, i = x(e, r);
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) / _ / 2) * _;
412
- x(e, t) === n ? a = t : r = t;
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 x(e, t) {
421
- let n = Math.floor(t / _), r = `${e}|${n}`, i = v.get(r);
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 * _, o = 1970, s = 1, c = 1, l = 0, u = 0, d = 0;
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 v.size >= be && v.clear(), v.set(r, f), f;
470
+ return b.size >= xe && b.clear(), b.set(r, f), f;
449
471
  }
450
- function S(e, t) {
451
- return e === null ? -new Date(t).getTimezoneOffset() : typeof e == "number" ? e : b(e, t);
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 - S(t, e - ye) * g;
455
- if (n + S(t, n) * g === e) return n;
456
- let r = e - S(t, e + ye) * g;
457
- return r + S(t, r) * g === e ? r : n;
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
- }, C = {
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
- }, Me = /^([1-9]\d*)([smhdwM])$/;
515
- function w(e) {
516
- let t = Me.exec(e);
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 Ne = 1e6;
525
- function Pe(e) {
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 <= Ne ? n : null;
551
+ return Number.isSafeInteger(n) && n <= Pe ? n : null;
530
552
  }
531
- function Fe(e) {
532
- return w(e) !== null;
553
+ function Ie(e) {
554
+ return T(e) !== null;
533
555
  }
534
- function T(e) {
556
+ function E(e) {
535
557
  let t = je[e];
536
558
  if (t !== void 0) return t;
537
- let n = w(e);
538
- return n ? n.count * C[n.unit] : NaN;
559
+ let n = T(e);
560
+ return n ? n.count * Me[n.unit] : NaN;
539
561
  }
540
- function Ie(e, t) {
541
- let n = new Date(e), r = T(t);
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 Le(e, t) {
555
- let n = T(t);
576
+ function Re(e, t) {
577
+ let n = E(t);
556
578
  return Math.floor(e / n) * n;
557
579
  }
558
- function Re(e, t) {
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 + S(t, e) * 6e4);
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 ze(e) {
600
+ function Be(e) {
579
601
  return e.hours === 0 && e.minutes === 0;
580
602
  }
581
- var Be = 20 * 36e5;
582
- function Ve(e) {
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 >= Be;
612
+ return r === Infinity ? void 0 : r >= Ve;
591
613
  }
592
- function He(e, t = Date.now()) {
593
- let n = S(e, t), r = n >= 0 ? "+" : "-", i = Math.abs(n), a = Math.floor(i / 60), o = i % 60;
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 Ue = Date.UTC(1970, 0, 5);
597
- function We(e, t, n = 1) {
598
- let { count: r, unit: i } = w(t) ?? {
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 * C[i];
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 = C.d, t = (a.getUTCDay() - n + 7) % 7, i = Date.UTC(a.getUTCFullYear(), a.getUTCMonth(), a.getUTCDate() - t);
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 - Ue) / (7 * e));
611
- return Ue + Math.floor(o / r) * r * 7 * e;
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 Ge = 64, E = /* @__PURE__ */ new Map();
619
- function Ke(e, t) {
620
- let n = `${e}|${t}`, r = E.get(n);
621
- return r || (E.size >= Ge && E.clear(), r = new Intl.NumberFormat(e, {
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
- }), E.set(n, r)), r;
646
+ }), D.set(n, r)), r;
625
647
  }
626
- function qe(e, t, n) {
627
- return t.formatPrice ? t.formatPrice(e) : D(e, n ?? Je(t.priceRange.min, t.priceRange.max), t.numberLocale ?? "en-US");
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 D(e, t = 2, n = "en-US") {
630
- return Ke(n, t).format(e);
651
+ function O(e, t = 2, n = "en-US") {
652
+ return qe(n, t).format(e);
631
653
  }
632
- function Je(e, t) {
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 Ye(e, t, n, r = 2, i = "en-US") {
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 D(e / n * 100, 2, i);
665
+ return O(e / n * 100, 2, i);
644
666
  }
645
- return D(e, r, i);
667
+ return O(e, r, i);
646
668
  }
647
- function Xe(e, t, n = 1) {
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 Ze(e) {
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 >= 1e9 ? (e / 1e9).toFixed(2) + "B" : e >= 1e6 ? (e / 1e6).toFixed(2) + "M" : e >= 1e3 ? (e / 1e3).toFixed(2) + "K" : e.toFixed(0);
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 tt = [
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 nt(e) {
685
- return typeof e == "string" && tt.includes(e);
706
+ function rt(e) {
707
+ return typeof e == "string" && nt.includes(e);
686
708
  }
687
- function rt(e, t) {
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 it = /^ind:([^:]+):(.+)$/;
700
- function at(e, t) {
721
+ var at = /^ind:([^:]+):(.+)$/;
722
+ function ot(e, t) {
701
723
  return `ind:${e}:${t}`;
702
724
  }
703
- function ot(e) {
725
+ function st(e) {
704
726
  if (typeof e != "string") return null;
705
- let t = it.exec(e);
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 st = 864e5;
714
- function ct(e, t, n = 1) {
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 = We(a.time, t, n);
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 O = (e) => e === "s" || e === "m" || e === "h" || e === "d";
730
- function lt(e, t) {
731
- let n = w(e), r = w(t);
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 = T(e);
734
- return n.unit === "d" && n.count > 1 ? !1 : O(r.unit) ? O(n.unit) && T(t) % i === 0 : n.unit === r.unit ? r.count % n.count === 0 : O(n.unit) && st % i === 0;
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 ut(e, t) {
758
+ function dt(e, t) {
737
759
  let n = null, r = 0;
738
760
  for (let i of t) {
739
- if (!lt(i, e)) continue;
740
- let t = T(i);
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 dt(e, t) {
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 ft(e, t, n = 50, r) {
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(dt(t.symbol.toUpperCase(), i), dt((t.description ?? "").toUpperCase(), i) * .8);
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 pt(e) {
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 mt(e) {
798
+ function ht(e) {
777
799
  return e?.timeZone ?? e?.timezone;
778
800
  }
779
- function k(e) {
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 A = 864e5, j = 6e4, ht = 8;
788
- function gt(e, t) {
789
- let n = mt(e), r = (e?.sessions ?? []).flatMap((e) => {
790
- let t = k(e.start), n = k(e.end);
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 || !y(n) || r.length === 0 || !Number.isFinite(t)) return {
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 = b(n, t) * j, a = Math.floor((t + i) / A) * A, o = (e) => e - b(n, e - b(n, e - i) * j) * j, s = [];
802
- for (let e = -1; e <= ht; e++) {
803
- let t = a + e * A, n = (Math.floor(t / A) + 4) % 7;
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 * j, i = (e.end > e.start ? t : t + A) + e.end * j;
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 _t = 48, vt = 2e3, yt = 1e4;
830
- function bt(e) {
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 >= _t) break;
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) > yt || r !== void 0 && typeof r != "boolean") continue;
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 xt(e, t) {
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 bt(t);
852
- case "text": return typeof t == "string" ? t.slice(0, vt) : void 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 St(e, t) {
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 = xt(t, i);
883
+ let a = St(t, i);
862
884
  a !== void 0 && (n[r] = a);
863
885
  }
864
886
  return n;
865
887
  }
866
- function Ct(e) {
888
+ function wt(e) {
867
889
  return Array.isArray(e) ? e.map((e) => ({ ...e })) : e;
868
890
  }
869
- function wt(e, t, n) {
891
+ function Tt(e, t, n) {
870
892
  let r = e?.[n];
871
- return r ? Ct((t && n in t ? xt(r, t[n]) : void 0) ?? r.default) : t?.[n];
893
+ return r ? wt((t && n in t ? St(r, t[n]) : void 0) ?? r.default) : t?.[n];
872
894
  }
873
- function Tt(e, t) {
895
+ function Et(e, t) {
874
896
  let n = {};
875
- for (let r of Object.keys(e ?? {})) n[r] = wt(e, t, 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 Et = [
902
+ var Dt = [
881
903
  "solid",
882
904
  "dashed",
883
905
  "dotted"
884
- ], Dt = 64, Ot = 2e3, kt = 20, At = 200;
885
- function M(e, t, n) {
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 jt(e) {
889
- return typeof e == "string" && e.length > 0 && e.length <= Dt ? e : void 0;
910
+ function Nt(e) {
911
+ return typeof e == "string" && e.length > 0 && e.length <= Ot ? e : void 0;
890
912
  }
891
- function Mt(e) {
913
+ function Pt(e) {
892
914
  if (typeof e != "object" || !e) return {};
893
- let t = e, n = {}, r = jt(t.color);
915
+ let t = e, n = {}, r = Nt(t.color);
894
916
  r !== void 0 && (n.color = r);
895
- let i = M(t.lineWidth, .5, kt);
896
- i !== void 0 && (n.lineWidth = i), Et.includes(t.lineStyle) && (n.lineStyle = t.lineStyle);
897
- let a = jt(t.fillColor);
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 = M(t.fillOpacity, 0, 1);
921
+ let o = Mt(t.fillOpacity, 0, 1);
900
922
  o !== void 0 && (n.fillOpacity = o);
901
- let s = M(t.fontSize, 6, At);
902
- return s !== void 0 && (n.fontSize = s), typeof t.text == "string" && (n.text = t.text.slice(0, Ot)), n;
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 Nt(e) {
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 Pt = "'Cascadia Mono', 'SF Mono', ui-monospace, Menlo, Consolas, monospace", Ft = {
944
- family: Pt,
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
- }, It = .22;
981
+ }, zt = .22;
960
982
  function L(e) {
961
- return h(e, It);
983
+ return h(e, zt);
962
984
  }
963
- var Lt = "#fbfaf6", R = "#1b1d21", Rt = "#131416", z = "#e6e3dc", zt = "#1f7a5c", Bt = "#b8423f", Vt = "#4fae8a", Ht = "#e2706b", Ut = "#6a6966", Wt = "#8d8a84", Gt = [
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
- ], Kt = {
991
+ ], Yt = {
970
992
  name: "dark",
971
- background: Rt,
993
+ background: Vt,
972
994
  text: z,
973
995
  textSecondary: "#8d8b86",
974
996
  grid: "#1d1e21",
975
- crosshair: Ut,
976
- candleUp: Vt,
977
- candleDown: Ht,
978
- candleUpWick: Vt,
979
- candleDownWick: Ht,
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: Ft
989
- }, qt = {
1010
+ font: Rt
1011
+ }, Xt = {
990
1012
  name: "light",
991
- background: Lt,
1013
+ background: Bt,
992
1014
  text: R,
993
1015
  textSecondary: "#6b6f76",
994
1016
  grid: "#ece8df",
995
- crosshair: Wt,
996
- candleUp: zt,
997
- candleDown: Bt,
998
- candleUpWick: zt,
999
- candleDownWick: Bt,
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: Ft
1009
- }, B = {
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
- }, Jt = new Set([B.volumeUp, B.volumeDown]);
1035
- function V(e) {
1056
+ }, Qt = new Set([Zt.volumeUp, Zt.volumeDown]);
1057
+ function B(e) {
1036
1058
  let t = (e, t) => {
1037
- if (!Jt.has(e)) return e;
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 Yt = [
1070
+ var $t = [
1049
1071
  "solid",
1050
1072
  "dashed",
1051
1073
  "dotted"
1052
- ], Xt = 20, Zt = 64, Qt = 2, $t = [
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 en(e) {
1058
- return typeof e == "string" && e.length <= Zt && $t.some((t) => t.test(e.trim()));
1079
+ function V(e) {
1080
+ return typeof e == "string" && e.length <= tn && rn.some((t) => t.test(e.trim()));
1059
1081
  }
1060
- function tn(e, t) {
1082
+ function an(e, t) {
1061
1083
  switch (e) {
1062
- case "color": return en(t);
1063
- case "lineStyle": return Yt.includes(t);
1064
- case "width": return typeof t == "number" && Number.isFinite(t) && t > 0 && t <= Xt;
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 nn(e) {
1090
+ function on(e) {
1069
1091
  return Object.prototype.hasOwnProperty.call(t, e);
1070
1092
  }
1071
- function rn(e) {
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)) nn(i) ? a === null ? n[i] = null : tn(t[i], a) ? n[i] = a : r.push(i) : r.push(i);
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 an(e) {
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
- ...en(t) ? { background: t } : {},
1087
- ...en(n) ? { separator: n } : {}
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 on = /^[A-Za-z0-9_]{1,32}$/;
1092
- function sn(e) {
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 (!on.test(n) || typeof r != "object" || !r) continue;
1118
+ if (!ln.test(n) || typeof r != "object" || !r) continue;
1097
1119
  let { lineStyle: e, visible: i } = r, a = {
1098
- ...Yt.includes(e) ? { lineStyle: e } : {},
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 cn(e, t, n = 1) {
1127
+ function dn(e, t, n = 1) {
1106
1128
  return e === "solid" ? [] : e === "dotted" ? [n, n * 2] : [...t];
1107
1129
  }
1108
- function ln(e, t, n) {
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") ?? Qt,
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 un(e, t, n) {
1130
- let { style: r, ...i } = e, a = n, o = (e) => a[e], s = ln(i, o, t), c = o("background.color") ?? i.background, l = (e, t) => o(e) ?? t, u = (e) => o(e) ?? null, d = {
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 dn = {
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) => V(e).up,
1249
- "volume.downColor": (e) => V(e).down,
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
- }, fn = {
1288
+ }, hn = {
1267
1289
  visible: "visible",
1268
1290
  color: "color",
1269
1291
  style: "style",
1270
1292
  width: "width"
1271
1293
  };
1272
- function pn(e, t, n, r = "candlestick") {
1294
+ function gn(e, t, n, r = "candlestick") {
1273
1295
  let i = n.split(".");
1274
1296
  if (i[0] === "series") {
1275
- let n = ln(e, (e) => t[e], i[1]);
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 = un(e, r, t), o = a.style;
1289
- return i[0] === "grid" || i[0] === "crosshair" && (i[1] === "horizontal" || i[1] === "vertical") ? (i[0] === "grid" ? o.grid : o.crosshair)[i[1]][fn[i[2]]] : dn[n]?.(a, o) ?? null;
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 mn = {
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
- }, hn = [
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
- ], gn = [
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
- ], _n = [
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
- ], vn = [
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
- ], yn = 8, bn = 2, xn = 70, Sn = 30, Cn = 60, wn = 120, Tn = (1 + Math.sqrt(5)) / 2, En = [
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 Dn(e, t, n = 1) {
1366
- return Math.round(e * Tn ** (t / n));
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
- }, On = {
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", On]]), G = "en", kn = U;
1577
- function An(e) {
1578
- G = e, kn = W.get(e) ?? U;
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 jn() {
1602
+ function Pn() {
1581
1603
  return G;
1582
1604
  }
1583
- function Mn(e) {
1584
- return kn[e] ?? U[e] ?? e;
1605
+ function Fn(e) {
1606
+ return Mn[e] ?? U[e] ?? e;
1585
1607
  }
1586
- function Nn(e, t) {
1608
+ function In(e, t) {
1587
1609
  W.set(e, t);
1588
1610
  }
1589
- function Pn(e) {
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 Fn(e) {
1619
+ function Rn(e) {
1598
1620
  return K(e, 0, "vi");
1599
1621
  }
1600
- function In(e, t) {
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", Ln = [
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
- ], Rn = [
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
- ], zn = [
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
- ], Bn = [
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
- ], Vn = {
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: Ln,
1773
+ sessions: Bn,
1752
1774
  colorScheme: q
1753
- }, Hn = {
1754
- ...Vn,
1775
+ }, Gn = {
1776
+ ...Wn,
1755
1777
  priceSteps: void 0
1756
- }, Un = {
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: Rn,
1791
+ sessions: Vn,
1770
1792
  colorScheme: q
1771
- }, Wn = {
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: zn,
1806
+ sessions: Hn,
1785
1807
  colorScheme: q
1786
- }, Gn = {
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: Bn,
1822
+ sessions: Un,
1801
1823
  colorScheme: q
1802
- }, Kn = {
1824
+ }, Yn = {
1803
1825
  type: "crypto",
1804
1826
  currency: "USDT",
1805
1827
  pricePrecision: 2,
1806
1828
  priceLimits: { enabled: !1 }
1807
- }, qn = {
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 Jn(e) {
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 Yn(e, t) {
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 Xn(e, t) {
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 X(e, t, n = "nearest") {
1857
- let r = Yn(e, t);
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(pt(r)));
1882
+ return Number((a * r).toFixed(mt(r)));
1861
1883
  }
1862
- function Zn(e, t) {
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 = Yn(i, t);
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 = X(i + s, t);
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 = X(a, t, "down"), u = X(o, t, "up");
1877
- return l <= i && (l = c), u >= i && (u = X(i - (Xn(i, t) ?? s), t)), u <= 0 && (u = i), {
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 Z = (e, t) => Math.round(e * t * 1e9) / 1e9;
1884
- function Qn(e, t) {
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 : Z(e.priceStep, t),
1911
+ priceStep: e.priceStep === void 0 ? void 0 : Q(e.priceStep, t),
1890
1912
  priceSteps: e.priceSteps?.map((e) => ({
1891
- from: Z(e.from, t),
1892
- step: Z(e.step, t)
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 : Z(e.priceLimits.referencePrice, t)
1918
+ referencePrice: e.priceLimits.referencePrice === void 0 ? void 0 : Q(e.priceLimits.referencePrice, t)
1897
1919
  }
1898
1920
  };
1899
1921
  }
1900
- var $n = 6e4, er = 864e5;
1901
- function tr(e, t) {
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 + b(t, e) * $n);
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 nr(e, t = Date.now(), n) {
1913
- if (n !== void 0 && !y(n)) return null;
1914
- let r = tr(t, n);
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 Q = (e) => String(e).padStart(2, "0"), $ = (e) => {
1940
+ var $ = (e) => String(e).padStart(2, "0"), ar = (e) => {
1919
1941
  let t = new Date(e);
1920
- return `${t.getUTCFullYear()}-${Q(t.getUTCMonth() + 1)}-${Q(t.getUTCDate())}`;
1921
- }, rr = 4, ir = 7 * 36e5;
1922
- function ar(e, t, n) {
1923
- let r = Date.UTC(e, t - 1, 1), i = 1 + (rr - new Date(r).getUTCDay() + 7) % 7, a = Date.UTC(e, t - 1, i + 14), o = (e) => {
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?.($(e)) ?? !1);
1947
+ return t === 0 || t === 6 || (n?.(ar(e)) ?? !1);
1926
1948
  };
1927
- for (; o(a);) a -= er;
1928
- return $(a);
1949
+ for (; o(a);) a -= nr;
1950
+ return ar(a);
1929
1951
  }
1930
- function or(e, t) {
1931
- let n = $(e + ir), r = (e, n) => ({
1932
- symbol: `VN30F${Q(e % 100)}${Q(n)}`,
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: ar(e, n, t)
1936
- }), i = (e) => e.month === 12 ? r(e.year + 1, 1) : r(e.year, e.month + 1), a = new Date(e + ir), o = r(a.getUTCFullYear(), a.getUTCMonth() + 1);
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 sr = {
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
- }, cr = {
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
- }, lr = {
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
- }, ur = 1.75, dr = .22, fr = /* @__PURE__ */ new WeakMap();
2494
- function pr(e) {
2495
- let t = fr.get(e);
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="${dr}" stroke="none"/>`);
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 = ur] of e.dots ?? []) n += `<circle cx="${t}" cy="${r}" r="${i}" fill="currentColor" stroke="none"/>`;
2502
- return fr.set(e, n), n;
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 mr(e, t) {
2505
- return `<svg xmlns="http://www.w3.org/2000/svg" width="${t}" height="${t}" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false">${pr(e)}</svg>`;
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, lr as CHART_TYPE_ICONS, B as DARK_TERMINAL, Kt as DARK_THEME, bn as DEFAULT_BAR_SPACING, yn as DEFAULT_BAR_WIDTH, mn as DEFAULT_CHART_OPTIONS, n as DEFAULT_DRAWING_STYLE, Pt as DEFAULT_FONT_FAMILY, wn as DEFAULT_PANEL_HEIGHT, o as DEFAULT_RECONNECT, i as DEFAULT_SIGNAL_STYLE, s as DEFAULT_STREAM_CONFIG, vn as DEFAULT_TIMEFRAME_FAVORITES, a as DEFAULT_TRADE_ZONE_STYLE, r as DEFAULT_TRADING_CONFIG, cr as DRAWING_TOOL_ICONS, En as FIBONACCI, Rn as HNX_SESSIONS, Ln as HOSE_SESSIONS, ur as ICON_DOT_RADIUS, dr as ICON_SOFT_OPACITY, qt as LIGHT_THEME, e as LayerType, Kn as MARKET_CRYPTO, Un as MARKET_HNX, Vn as MARKET_HOSE, Hn as MARKET_HOSE_ETF, qn as MARKET_NYSE, Wn as MARKET_UPCOM, Gn as MARKET_VN30F, Cn as MIN_PANEL_HEIGHT, se as MS_TIME_THRESHOLD, Tn as PHI, xn as PRICE_AXIS_WIDTH, tt as PRICE_SOURCES, I as TC_PALETTE, Gt as TC_SERIES_COLORS, hn as TIMEFRAMES_CRYPTO, _n as TIMEFRAMES_FOREX, gn as TIMEFRAMES_STOCK, Sn as TIME_AXIS_HEIGHT, sr as UI_ICONS, zn as UPCOM_SESSIONS, Bn as VN30F_SESSIONS, q as VN_COLORS, It as VOLUME_ALPHA, Le as alignToTimeframe, Je as autoPricePrecision, ce as barTimeUnit, Ve as barsAreDaily, pn as chartStyleValue, ne as clamp, Zn as computePriceLimits, he as computePriceRange, oe as computeTickStep, Jn as createVNTheme, et as detectPrecision, wt as drawingOption, U as en, fe as findBarIndex, me as fitPriceRange, Xe as formatFraction, K as formatNumber, D as formatPrice, Ye as formatPriceScaleLabel, Ie as formatTimestamp, Fn as formatVND, $e as formatVolume, In as formatVolumeLoc, Ze as fractionTick, nr as getCurrentSession, jn as getLocale, Pn as getLocaleStrings, _e as hexToRgba, mr as iconSvg, at as indicatorSource, ie as inverseLerp, ze as isDateOnly, nt as isPriceSource, Fe as isTimeFrame, y as isValidTimeZone, re as lerp, ve as lerpColor, cn as lineDash, gt as marketStatus, ge as mergeBar, m as niceNumber, ue as normalizeBar, le as normalizeBarTime, S as offsetAt, pe as padPriceRange, ot as parseIndicatorSource, w as parseTimeframe, Dn as phiStep, ut as pickBaseTimeframe, Qe as priceFormatterFor, Yn as priceStepAt, qe as priceTagText, ft as rankSymbols, rn as readChartStyleOverrides, Nt as readChartTypeOptions, sn as readIndicatorPlotStyles, te as readNews, an as readPaneStyle, l as readQuote, Nn as registerLocale, ct as resampleBars, un as resolveChartTheme, Tt as resolveDrawingOptions, V as resolveVolumeColors, X as roundToPriceStep, ae as roundToStep, St as sanitizeDrawingOptions, Mt as sanitizeDrawingStyle, Qn as scaleMarketPrices, k as sessionMinute, An as setLocale, de as sliceVisibleData, rt as sourcePrice, pt as stepDecimals, mt as symbolTimeZone, Mn as t, Pe as tickBarCount, Re as timeParts, We as timeframeBucketStart, T as timeframeToMs, He as tzLabel, On as vi, or as vn30fContracts, ar as vn30fLastTradingDay, L as volumeColor, Oe as wallToUtc, h as withAlpha, b as zoneOffsetMinutes, Ae as zonedDateFormatter };
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