@tradecanvas/commons 1.49.1 → 1.50.0

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