@tradecanvas/commons 1.50.0 → 1.51.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.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, _ = 1440 * g, v = 15 * g, ye = 8192, y = 7 * _, be = 4096, xe = 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,9 +392,9 @@ var g = 6e4, _ = 1440 * g, v = 15 * g, ye = 8192, y = 7 * _, be = 4096, xe = new
370
392
  "Etc/Universal",
371
393
  "Zulu",
372
394
  "Etc/Zulu"
373
- ]), Se = /* @__PURE__ */ new Map(), b = /* @__PURE__ */ new Map(), Ce = /* @__PURE__ */ new Map();
374
- function we(e) {
375
- let t = Se.get(e);
395
+ ]), we = /* @__PURE__ */ new Map(), b = /* @__PURE__ */ new Map(), Te = /* @__PURE__ */ new Map();
396
+ function Ee(e) {
397
+ let t = we.get(e);
376
398
  return t || (t = new Intl.DateTimeFormat("en-US", {
377
399
  timeZone: e,
378
400
  hourCycle: "h23",
@@ -382,24 +404,24 @@ function we(e) {
382
404
  hour: "numeric",
383
405
  minute: "numeric",
384
406
  second: "numeric"
385
- }), Se.set(e, t)), t;
407
+ }), we.set(e, t)), t;
386
408
  }
387
409
  function x(e) {
388
410
  if (!e) return !1;
389
411
  try {
390
- return we(e), !0;
412
+ return Ee(e), !0;
391
413
  } catch {
392
414
  return !1;
393
415
  }
394
416
  }
395
417
  function S(e, t) {
396
- if (!Number.isFinite(t) || xe.has(e)) return 0;
397
- let n = Ce.get(e);
398
- n || (n = /* @__PURE__ */ new Map(), Ce.set(e, n));
418
+ if (!Number.isFinite(t) || Ce.has(e)) return 0;
419
+ let n = Te.get(e);
420
+ n || (n = /* @__PURE__ */ new Map(), Te.set(e, n));
399
421
  let r = Math.floor(t / y), i = n.get(r);
400
- return i || (i = Te(e, r * y), n.size >= be && n.clear(), n.set(r, i)), t < i.change ? i.before : i.after;
422
+ return i || (i = De(e, r * y), n.size >= Se && n.clear(), n.set(r, i)), t < i.change ? i.before : i.after;
401
423
  }
402
- function Te(e, t) {
424
+ function De(e, t) {
403
425
  let n = C(e, t), r = t + y - v, i = C(e, r);
404
426
  if (i === n) return {
405
427
  before: n,
@@ -421,7 +443,7 @@ function C(e, t) {
421
443
  let n = Math.floor(t / v), r = `${e}|${n}`, i = b.get(r);
422
444
  if (i !== void 0) return i;
423
445
  let a = n * v, o = 1970, s = 1, c = 1, l = 0, u = 0, d = 0;
424
- for (let t of we(e).formatToParts(new Date(a))) {
446
+ for (let t of Ee(e).formatToParts(new Date(a))) {
425
447
  let e = Number(t.value);
426
448
  switch (t.type) {
427
449
  case "year":
@@ -445,20 +467,20 @@ function C(e, t) {
445
467
  }
446
468
  }
447
469
  let f = Math.round((Date.UTC(o, s - 1, c, l, u, d) - a) / g);
448
- return b.size >= ye && b.clear(), b.set(r, f), f;
470
+ return b.size >= xe && b.clear(), b.set(r, f), f;
449
471
  }
450
472
  function w(e, t) {
451
473
  return e === null ? -new Date(t).getTimezoneOffset() : typeof e == "number" ? e : S(e, t);
452
474
  }
453
- function Ee(e, t) {
475
+ function Oe(e, t) {
454
476
  let n = e - w(t, e - _) * g;
455
477
  if (n + w(t, n) * g === e) return n;
456
478
  let r = e - w(t, e + _) * g;
457
479
  return r + w(t, r) * g === e ? r : n;
458
480
  }
459
- var 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);
481
+ var ke = /* @__PURE__ */ new Map();
482
+ function Ae(e, t, n) {
483
+ let r = `${e}|${JSON.stringify(t)}|${n === null ? "local" : typeof n == "number" ? `fixed:${n}` : n}`, i = ke.get(r);
462
484
  if (i) return i;
463
485
  let a = n === null ? void 0 : typeof n == "number" ? "UTC" : n, o;
464
486
  try {
@@ -473,11 +495,11 @@ function Oe(e, t, n) {
473
495
  });
474
496
  }
475
497
  let s = typeof n == "number" ? n * g : 0;
476
- return i = (e) => o.format(new Date(e + s)), De.set(r, i), i;
498
+ return i = (e) => o.format(new Date(e + s)), ke.set(r, i), i;
477
499
  }
478
500
  //#endregion
479
501
  //#region src/utils/time.ts
480
- var ke = {
502
+ var je = {
481
503
  "1s": 1e3,
482
504
  "5s": 5e3,
483
505
  "15s": 15e3,
@@ -504,16 +526,16 @@ var ke = {
504
526
  "3M": 7776e6,
505
527
  "6M": 15552e6,
506
528
  "12M": 31536e6
507
- }, Ae = {
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
- }, je = /^([1-9]\d*)([smhdwM])$/;
536
+ }, Ne = /^([1-9]\d*)([smhdwM])$/;
515
537
  function T(e) {
516
- let t = je.exec(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,23 +543,23 @@ function T(e) {
521
543
  unit: t[2]
522
544
  } : null;
523
545
  }
524
- var Me = 1e6;
525
- function Ne(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 <= Me ? n : null;
551
+ return Number.isSafeInteger(n) && n <= Pe ? n : null;
530
552
  }
531
- function Pe(e) {
553
+ function Ie(e) {
532
554
  return T(e) !== null;
533
555
  }
534
556
  function E(e) {
535
- let t = ke[e];
557
+ let t = je[e];
536
558
  if (t !== void 0) return t;
537
559
  let n = T(e);
538
- return n ? n.count * Ae[n.unit] : NaN;
560
+ return n ? n.count * Me[n.unit] : NaN;
539
561
  }
540
- function Fe(e, t) {
562
+ function Le(e, t) {
541
563
  let n = new Date(e), r = E(t);
542
564
  return r >= 864e5 ? n.toLocaleDateString(void 0, {
543
565
  month: "short",
@@ -551,11 +573,11 @@ function Fe(e, t) {
551
573
  second: "2-digit"
552
574
  });
553
575
  }
554
- function Ie(e, t) {
576
+ function Re(e, t) {
555
577
  let n = E(t);
556
578
  return Math.floor(e / n) * n;
557
579
  }
558
- function Le(e, t) {
580
+ function ze(e, t) {
559
581
  if (t === null) {
560
582
  let t = new Date(e);
561
583
  return {
@@ -575,11 +597,11 @@ function Le(e, t) {
575
597
  minutes: n.getUTCMinutes()
576
598
  };
577
599
  }
578
- function Re(e) {
600
+ function Be(e) {
579
601
  return e.hours === 0 && e.minutes === 0;
580
602
  }
581
- var ze = 20 * 36e5;
582
- function Be(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,54 +609,54 @@ function Be(e) {
587
609
  let t = Math.abs(e[i].time - e[i - 1].time) * n;
588
610
  t > 0 && t < r && (r = t);
589
611
  }
590
- return r === Infinity ? void 0 : r >= ze;
612
+ return r === Infinity ? void 0 : r >= Ve;
591
613
  }
592
- function Ve(e, t = Date.now()) {
614
+ function Ue(e, t = Date.now()) {
593
615
  let n = w(e, t), r = n >= 0 ? "+" : "-", i = Math.abs(n), a = Math.floor(i / 60), o = i % 60;
594
616
  return o === 0 ? `UTC${r}${a}` : `UTC${r}${a}:${String(o).padStart(2, "0")}`;
595
617
  }
596
- var He = Date.UTC(1970, 0, 5);
597
- function Ue(e, t, n = 1) {
618
+ var We = Date.UTC(1970, 0, 5);
619
+ function Ge(e, t, n = 1) {
598
620
  let { count: r, unit: i } = T(t) ?? {
599
621
  count: 1,
600
622
  unit: "m"
601
623
  };
602
624
  if (i === "s" || i === "m" || i === "h" || i === "d") {
603
- let t = r * Ae[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 = Ae.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 - He) / (7 * e));
611
- return He + 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 We = 64, D = /* @__PURE__ */ new Map();
619
- function Ge(e, t) {
640
+ var Ke = 64, D = /* @__PURE__ */ new Map();
641
+ function qe(e, t) {
620
642
  let n = `${e}|${t}`, r = D.get(n);
621
- return r || (D.size >= We && D.clear(), r = new Intl.NumberFormat(e, {
643
+ return r || (D.size >= Ke && D.clear(), r = new Intl.NumberFormat(e, {
622
644
  minimumFractionDigits: t,
623
645
  maximumFractionDigits: t
624
646
  }), D.set(n, r)), r;
625
647
  }
626
- function 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");
648
+ function Je(e, t, n) {
649
+ return t.formatPrice ? t.formatPrice(e) : O(e, n ?? Ye(t.priceRange.min, t.priceRange.max), t.numberLocale ?? "en-US");
628
650
  }
629
651
  function O(e, t = 2, n = "en-US") {
630
- return Ge(n, t).format(e);
652
+ return qe(n, t).format(e);
631
653
  }
632
- function qe(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 Je(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;
@@ -644,24 +666,24 @@ function Je(e, t, n, r = 2, i = "en-US") {
644
666
  }
645
667
  return O(e, r, i);
646
668
  }
647
- function Ye(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 Xe(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 Ze(e) {
659
- return e ? typeof e == "function" ? e : Xe(e) === null ? null : (t) => Ye(t, e.denominator, e.subDenominator) : null;
680
+ function $e(e) {
681
+ return e ? typeof e == "function" ? e : Qe(e) === null ? null : (t) => Ze(t, e.denominator, e.subDenominator) : null;
660
682
  }
661
- function Qe(e) {
683
+ function et(e) {
662
684
  return e >= 1e9 ? (e / 1e9).toFixed(2) + "B" : e >= 1e6 ? (e / 1e6).toFixed(2) + "M" : e >= 1e3 ? (e / 1e3).toFixed(2) + "K" : e.toFixed(0);
663
685
  }
664
- function $e(e) {
686
+ function tt(e) {
665
687
  let t = 0;
666
688
  for (let n of e) {
667
689
  let e = n.toString(), r = e.indexOf(".");
@@ -671,7 +693,7 @@ function $e(e) {
671
693
  }
672
694
  //#endregion
673
695
  //#region src/utils/priceSource.ts
674
- var et = [
696
+ var nt = [
675
697
  "close",
676
698
  "open",
677
699
  "high",
@@ -681,10 +703,10 @@ var et = [
681
703
  "ohlc4",
682
704
  "hlcc4"
683
705
  ];
684
- function tt(e) {
685
- return typeof e == "string" && et.includes(e);
706
+ function rt(e) {
707
+ return typeof e == "string" && nt.includes(e);
686
708
  }
687
- function nt(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 nt(e, t) {
696
718
  default: return e.close;
697
719
  }
698
720
  }
699
- var rt = /^ind:([^:]+):(.+)$/;
700
- function it(e, t) {
721
+ var at = /^ind:([^:]+):(.+)$/;
722
+ function ot(e, t) {
701
723
  return `ind:${e}:${t}`;
702
724
  }
703
- function at(e) {
725
+ function st(e) {
704
726
  if (typeof e != "string") return null;
705
- let t = rt.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 at(e) {
710
732
  }
711
733
  //#endregion
712
734
  //#region src/utils/resample.ts
713
- var ot = 864e5;
714
- function st(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 = Ue(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,
@@ -727,16 +749,16 @@ function st(e, t, n = 1) {
727
749
  return r;
728
750
  }
729
751
  var k = (e) => e === "s" || e === "m" || e === "h" || e === "d";
730
- function ct(e, t) {
752
+ function ut(e, t) {
731
753
  let n = T(e), r = T(t);
732
754
  if (!n || !r) return !1;
733
755
  let i = E(e);
734
- return n.unit === "d" && n.count > 1 ? !1 : k(r.unit) ? k(n.unit) && E(t) % i === 0 : n.unit === r.unit ? r.count % n.count === 0 : k(n.unit) && ot % i === 0;
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 lt(e, t) {
758
+ function dt(e, t) {
737
759
  let n = null, r = 0;
738
760
  for (let i of t) {
739
- if (!ct(i, e)) continue;
761
+ if (!ut(i, e)) continue;
740
762
  let t = E(i);
741
763
  t > r && (n = i, r = t);
742
764
  }
@@ -744,19 +766,19 @@ function lt(e, t) {
744
766
  }
745
767
  //#endregion
746
768
  //#region src/utils/symbols.ts
747
- function ut(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 dt(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(ut(t.symbol.toUpperCase(), i), ut((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 dt(e, t, n = 50, r) {
764
786
  }
765
787
  return a.sort((e, t) => t.score - e.score || e.info.symbol.localeCompare(t.info.symbol)), a.slice(0, n).map((e) => e.info);
766
788
  }
767
- function ft(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,7 +795,7 @@ function ft(e) {
773
795
  }
774
796
  return 12;
775
797
  }
776
- function pt(e) {
798
+ function ht(e) {
777
799
  return e?.timeZone ?? e?.timezone;
778
800
  }
779
801
  function A(e) {
@@ -784,9 +806,9 @@ function A(e) {
784
806
  }
785
807
  //#endregion
786
808
  //#region src/utils/marketStatus.ts
787
- var j = 864e5, M = 6e4, mt = 8;
788
- function ht(e, t) {
789
- let n = pt(e), r = (e?.sessions ?? []).flatMap((e) => {
809
+ var j = 864e5, M = 6e4, gt = 8;
810
+ function _t(e, t) {
811
+ let n = ht(e), r = (e?.sessions ?? []).flatMap((e) => {
790
812
  let t = A(e.start), n = A(e.end);
791
813
  return t === null || n === null || t === n ? [] : [{
792
814
  start: t,
@@ -799,7 +821,7 @@ function ht(e, t) {
799
821
  next: null
800
822
  };
801
823
  let i = S(n, t) * M, a = Math.floor((t + i) / j) * j, o = (e) => e - S(n, e - S(n, e - i) * M) * M, s = [];
802
- for (let e = -1; e <= mt; e++) {
824
+ for (let e = -1; e <= gt; e++) {
803
825
  let t = a + e * j, n = (Math.floor(t / j) + 4) % 7;
804
826
  for (let e of r) {
805
827
  if (e.days && !e.days.includes(n)) continue;
@@ -826,15 +848,15 @@ function ht(e, t) {
826
848
  }
827
849
  //#endregion
828
850
  //#region src/utils/drawingOptions.ts
829
- var gt = 48, _t = 2e3, vt = 1e4;
830
- function yt(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 >= gt) 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) > vt || 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,109 +865,109 @@ function yt(e) {
843
865
  }
844
866
  return t;
845
867
  }
846
- function bt(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 yt(t);
852
- case "text": return typeof t == "string" ? t.slice(0, _t) : 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 xt(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 = bt(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 St(e) {
888
+ function wt(e) {
867
889
  return Array.isArray(e) ? e.map((e) => ({ ...e })) : e;
868
890
  }
869
- function Ct(e, t, n) {
891
+ function Tt(e, t, n) {
870
892
  let r = e?.[n];
871
- return r ? St((t && n in t ? bt(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 wt(e, t) {
895
+ function Et(e, t) {
874
896
  let n = {};
875
- for (let r of Object.keys(e ?? {})) n[r] = Ct(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 Tt = [
902
+ var Dt = [
881
903
  "solid",
882
904
  "dashed",
883
905
  "dotted"
884
- ], Et = 64, Dt = 2e3, Ot = 20, kt = 200;
885
- function N(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 At(e) {
889
- return typeof e == "string" && e.length > 0 && e.length <= Et ? 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 jt(e) {
913
+ function Pt(e) {
892
914
  if (typeof e != "object" || !e) return {};
893
- let t = e, n = {}, r = At(t.color);
915
+ let t = e, n = {}, r = Nt(t.color);
894
916
  r !== void 0 && (n.color = r);
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);
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 = N(t.fillOpacity, 0, 1);
921
+ let o = Mt(t.fillOpacity, 0, 1);
900
922
  o !== void 0 && (n.fillOpacity = o);
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;
923
+ let s = Mt(t.fontSize, 6, jt);
924
+ return s !== void 0 && (n.fontSize = s), typeof t.text == "string" && (n.text = t.text.slice(0, kt)), n;
903
925
  }
904
926
  //#endregion
905
927
  //#region src/utils/chartTypeOptions.ts
906
- var 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 {};
928
+ var N = (e) => typeof e == "number" && Number.isFinite(e) && e > 0, P = (e, t, n) => typeof e == "number" && Number.isInteger(e) && e >= t && e <= n, F = (e) => typeof e == "object" && !!e && !Array.isArray(e);
929
+ function Ft(e) {
930
+ if (!F(e)) return {};
909
931
  let t = {};
910
- if (I(e.renko)) {
932
+ if (F(e.renko)) {
911
933
  let { boxSize: n, atrPeriod: r } = e.renko;
912
934
  t.renko = {
913
- ...P(n) || n === "atr" ? { boxSize: n } : {},
914
- ...F(r, 1, 500) ? { atrPeriod: r } : {}
935
+ ...N(n) || n === "atr" ? { boxSize: n } : {},
936
+ ...P(r, 1, 500) ? { atrPeriod: r } : {}
915
937
  };
916
938
  }
917
- if (I(e.lineBreak)) {
939
+ if (F(e.lineBreak)) {
918
940
  let { lines: n } = e.lineBreak;
919
- t.lineBreak = F(n, 1, 10) ? { lines: n } : {};
941
+ t.lineBreak = P(n, 1, 10) ? { lines: n } : {};
920
942
  }
921
- if (I(e.kagi)) {
943
+ if (F(e.kagi)) {
922
944
  let { reversal: n, reversalType: r } = e.kagi;
923
945
  t.kagi = {
924
- ...P(n) ? { reversal: n } : {},
946
+ ...N(n) ? { reversal: n } : {},
925
947
  ...r === "percent" || r === "price" ? { reversalType: r } : {}
926
948
  };
927
949
  }
928
- if (I(e.pointAndFigure)) {
950
+ if (F(e.pointAndFigure)) {
929
951
  let { boxSize: n, reversal: r } = e.pointAndFigure;
930
952
  t.pointAndFigure = {
931
- ...P(n) || n === "auto" ? { boxSize: n } : {},
932
- ...F(r, 1, 10) ? { reversal: r } : {}
953
+ ...N(n) || n === "auto" ? { boxSize: n } : {},
954
+ ...P(r, 1, 10) ? { reversal: r } : {}
933
955
  };
934
956
  }
935
- if (I(e.rangeBars)) {
957
+ if (F(e.rangeBars)) {
936
958
  let { range: n } = e.rangeBars;
937
- t.rangeBars = P(n) || n === "auto" ? { range: n } : {};
959
+ t.rangeBars = N(n) || n === "auto" ? { range: n } : {};
938
960
  }
939
961
  return t;
940
962
  }
941
963
  //#endregion
942
964
  //#region src/constants/themes.ts
943
- var 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,
965
+ var It = "'Cascadia Mono', 'SF Mono', ui-monospace, Menlo, Consolas, monospace", Lt = "-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif", Rt = {
966
+ family: It,
945
967
  sizeSmall: 11,
946
968
  sizeMedium: 13,
947
969
  sizeLarge: 15
948
- }, L = {
970
+ }, I = {
949
971
  amber: "#f2a93b",
950
972
  up: "#1c9e6d",
951
973
  down: "#e8505b",
@@ -956,57 +978,57 @@ var Nt = "'Cascadia Mono', 'SF Mono', ui-monospace, Menlo, Consolas, monospace",
956
978
  rose: "#e25592",
957
979
  neutral: "#7d8696",
958
980
  ink: "#131416"
959
- }, It = .22;
960
- function R(e) {
961
- return h(e, It);
962
- }
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
- ], Kt = {
981
+ }, zt = .22;
982
+ function L(e) {
983
+ return h(e, zt);
984
+ }
985
+ var Bt = "#fbfaf6", R = "#1b1d21", Vt = "#131416", z = "#e6e3dc", Ht = "#1f7a5c", Ut = "#b8423f", Wt = "#4fae8a", Gt = "#e2706b", Kt = "#6a6966", qt = "#8d8a84", Jt = [
986
+ I.blue,
987
+ I.ochre,
988
+ I.violet,
989
+ I.cyan,
990
+ I.rose
991
+ ], Yt = {
970
992
  name: "dark",
971
- background: Rt,
972
- text: B,
993
+ background: Vt,
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,
980
- lineColor: B,
981
- areaTopColor: h(B, .14),
982
- areaBottomColor: h(B, 0),
983
- volumeUp: h(B, .14),
984
- volumeDown: h(B, .08),
997
+ crosshair: Kt,
998
+ candleUp: Wt,
999
+ candleDown: Gt,
1000
+ candleUpWick: Wt,
1001
+ candleDownWick: Gt,
1002
+ lineColor: z,
1003
+ areaTopColor: h(z, .14),
1004
+ areaBottomColor: h(z, 0),
1005
+ volumeUp: h(z, .14),
1006
+ volumeDown: h(z, .08),
985
1007
  axisLine: "#2a2b2f",
986
1008
  axisLabel: "#a9a6a0",
987
1009
  axisLabelBackground: "#232427",
988
- font: Ft
989
- }, qt = {
1010
+ font: Rt
1011
+ }, Xt = {
990
1012
  name: "light",
991
- background: Lt,
992
- text: z,
1013
+ background: Bt,
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,
1000
- lineColor: z,
1001
- areaTopColor: h(z, .12),
1002
- areaBottomColor: h(z, 0),
1003
- volumeUp: h(z, .13),
1004
- volumeDown: h(z, .08),
1017
+ crosshair: qt,
1018
+ candleUp: Ht,
1019
+ candleDown: Ut,
1020
+ candleUpWick: Ht,
1021
+ candleDownWick: Ut,
1022
+ lineColor: R,
1023
+ areaTopColor: h(R, .12),
1024
+ areaBottomColor: h(R, 0),
1025
+ volumeUp: h(R, .13),
1026
+ volumeDown: h(R, .08),
1005
1027
  axisLine: "#cfcac0",
1006
1028
  axisLabel: "#4a4e57",
1007
1029
  axisLabelBackground: "#eeebe3",
1008
- font: Ft
1009
- }, Jt = {
1030
+ font: Rt
1031
+ }, Zt = {
1010
1032
  name: "terminal",
1011
1033
  background: "#0E0E0E",
1012
1034
  text: "#C0C0C0",
@@ -1020,8 +1042,8 @@ var Lt = "#fbfaf6", z = "#1b1d21", Rt = "#131416", B = "#e6e3dc", zt = "#1f7a5c"
1020
1042
  lineColor: "#3D8BFD",
1021
1043
  areaTopColor: "rgba(61, 139, 253, 0.3)",
1022
1044
  areaBottomColor: "rgba(61, 139, 253, 0.0)",
1023
- volumeUp: R("#00FF87"),
1024
- volumeDown: R("#FF3B4D"),
1045
+ volumeUp: L("#00FF87"),
1046
+ volumeDown: L("#FF3B4D"),
1025
1047
  axisLine: "#1A1A1A",
1026
1048
  axisLabel: "#8A8A8A",
1027
1049
  axisLabelBackground: "#1A1A1A",
@@ -1031,11 +1053,11 @@ var Lt = "#fbfaf6", z = "#1b1d21", Rt = "#131416", B = "#e6e3dc", zt = "#1f7a5c"
1031
1053
  sizeMedium: 12,
1032
1054
  sizeLarge: 14
1033
1055
  }
1034
- }, Yt = new Set([Jt.volumeUp, Jt.volumeDown]);
1035
- function Xt(e) {
1056
+ }, Qt = new Set([Zt.volumeUp, Zt.volumeDown]);
1057
+ function B(e) {
1036
1058
  let t = (e, t) => {
1037
- if (!Yt.has(e)) return e;
1038
- let n = R(t);
1059
+ if (!Qt.has(e)) return e;
1060
+ let n = L(t);
1039
1061
  return n === t ? e : n;
1040
1062
  };
1041
1063
  return {
@@ -1045,42 +1067,42 @@ function Xt(e) {
1045
1067
  }
1046
1068
  //#endregion
1047
1069
  //#region src/utils/chartStyle.ts
1048
- var Zt = [
1070
+ var $t = [
1049
1071
  "solid",
1050
1072
  "dashed",
1051
1073
  "dotted"
1052
- ], Qt = 20, $t = 64, en = 2, tn = [
1074
+ ], en = 20, tn = 64, nn = 2, rn = [
1053
1075
  /^#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i,
1054
1076
  /^[a-z]{3,30}$/i,
1055
1077
  /^(?:rgba?|hsla?|hwb|lab|lch|oklab|oklch|color)\([0-9a-z.,%/\s-]*\)$/i
1056
1078
  ];
1057
1079
  function V(e) {
1058
- return typeof e == "string" && e.length <= $t && tn.some((t) => t.test(e.trim()));
1080
+ return typeof e == "string" && e.length <= tn && rn.some((t) => t.test(e.trim()));
1059
1081
  }
1060
- function nn(e, t) {
1082
+ function an(e, t) {
1061
1083
  switch (e) {
1062
1084
  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;
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 rn(e) {
1090
+ function on(e) {
1069
1091
  return Object.prototype.hasOwnProperty.call(t, e);
1070
1092
  }
1071
- function an(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)) rn(i) ? a === null ? n[i] = null : nn(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 on(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
1108
  ...V(t) ? { background: t } : {},
@@ -1088,24 +1110,24 @@ function on(e) {
1088
1110
  };
1089
1111
  return Object.keys(r).length > 0 ? r : null;
1090
1112
  }
1091
- var sn = /^[A-Za-z0-9_]{1,32}$/;
1092
- function cn(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 (!sn.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
- ...Zt.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 ln(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 un(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 un(e, t, n) {
1113
1135
  wickUp: r("wickUpColor") ?? t("series.candlestick.wickUpColor") ?? (i === void 0 ? e.candleUpWick : o),
1114
1136
  wickDown: r("wickDownColor") ?? t("series.candlestick.wickDownColor") ?? (a === void 0 ? e.candleDownWick : s),
1115
1137
  line: r("color") ?? r("lineColor") ?? t("series.line.color") ?? e.lineColor,
1116
- lineWidth: r("lineWidth") ?? t("series.line.lineWidth") ?? en,
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 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 = {
1151
+ function pn(e, t, n) {
1152
+ let { style: r, ...i } = e, a = n, o = (e) => a[e], s = fn(i, o, t), c = o("background.color") ?? i.background, l = (e, t) => o(e) ?? t, u = (e) => o(e) ?? null, d = {
1131
1153
  panes: {
1132
1154
  background: l("panes.background", c),
1133
1155
  separator: l("panes.separatorColor", i.axisLine),
@@ -1226,7 +1248,7 @@ function dn(e, t, n) {
1226
1248
  style: d
1227
1249
  };
1228
1250
  }
1229
- var fn = {
1251
+ var mn = {
1230
1252
  "background.color": (e) => e.background,
1231
1253
  "panes.background": (e, t) => t.panes.background,
1232
1254
  "panes.separatorColor": (e, t) => t.panes.separator,
@@ -1245,8 +1267,8 @@ var fn = {
1245
1267
  "lastPrice.downColor": (e, t) => t.lastPrice.down,
1246
1268
  "lastPrice.style": (e, t) => t.lastPrice.style,
1247
1269
  "lastPrice.width": (e, t) => t.lastPrice.width,
1248
- "volume.upColor": (e) => Xt(e).up,
1249
- "volume.downColor": (e) => Xt(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 fn = {
1263
1285
  "tradeZones.lossColor": (e, t) => t.tradeZones.loss,
1264
1286
  "tradeZones.activeColor": (e, t) => t.tradeZones.active,
1265
1287
  "drawings.handleColor": (e, t) => t.drawings.handle
1266
- }, pn = {
1288
+ }, hn = {
1267
1289
  visible: "visible",
1268
1290
  color: "color",
1269
1291
  style: "style",
1270
1292
  width: "width"
1271
1293
  };
1272
- function mn(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 = un(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 mn(e, t, n, r = "candlestick") {
1285
1307
  case "bottomColor": return n.bottom;
1286
1308
  }
1287
1309
  }
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;
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 hn = {
1315
+ var _n = {
1294
1316
  autoScale: !0,
1295
1317
  rightMargin: 5,
1296
1318
  minBarSpacing: 2,
@@ -1301,7 +1323,7 @@ var hn = {
1301
1323
  vLineStyle: "solid"
1302
1324
  },
1303
1325
  crosshair: { mode: "magnet" }
1304
- }, gn = [
1326
+ }, vn = [
1305
1327
  "1s",
1306
1328
  "1m",
1307
1329
  "3m",
@@ -1318,7 +1340,7 @@ var hn = {
1318
1340
  "3d",
1319
1341
  "1w",
1320
1342
  "1M"
1321
- ], _n = [
1343
+ ], yn = [
1322
1344
  "1m",
1323
1345
  "5m",
1324
1346
  "15m",
@@ -1332,7 +1354,7 @@ var hn = {
1332
1354
  "3M",
1333
1355
  "6M",
1334
1356
  "12M"
1335
- ], vn = [
1357
+ ], bn = [
1336
1358
  "1m",
1337
1359
  "5m",
1338
1360
  "15m",
@@ -1342,7 +1364,7 @@ var hn = {
1342
1364
  "1d",
1343
1365
  "1w",
1344
1366
  "1M"
1345
- ], yn = [
1367
+ ], xn = [
1346
1368
  "1m",
1347
1369
  "5m",
1348
1370
  "15m",
@@ -1350,7 +1372,7 @@ var hn = {
1350
1372
  "4h",
1351
1373
  "1d",
1352
1374
  "1w"
1353
- ], bn = 8, xn = 2, Sn = 70, Cn = 30, wn = 60, Tn = 120, En = (1 + Math.sqrt(5)) / 2, Dn = [
1375
+ ], Sn = 8, Cn = 2, wn = 70, Tn = 30, En = 60, Dn = 120, On = (1 + Math.sqrt(5)) / 2, kn = [
1354
1376
  1,
1355
1377
  2,
1356
1378
  3,
@@ -1362,8 +1384,8 @@ var hn = {
1362
1384
  55,
1363
1385
  89
1364
1386
  ];
1365
- function On(e, t, n = 1) {
1366
- return Math.round(e * En ** (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
- }, kn = {
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", kn]]), G = "en", An = U;
1577
- function jn(e) {
1578
- G = e, An = 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 Mn() {
1602
+ function Pn() {
1581
1603
  return G;
1582
1604
  }
1583
- function Nn(e) {
1584
- return An[e] ?? U[e] ?? e;
1605
+ function Fn(e) {
1606
+ return Mn[e] ?? U[e] ?? e;
1585
1607
  }
1586
- function Pn(e, t) {
1608
+ function In(e, t) {
1587
1609
  W.set(e, t);
1588
1610
  }
1589
- function Fn(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 In(e) {
1619
+ function Rn(e) {
1598
1620
  return K(e, 0, "vi");
1599
1621
  }
1600
- function Ln(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", Rn = [
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
- ], zn = [
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
- ], Bn = [
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
- ], Vn = [
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
- ], Hn = {
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: Rn,
1773
+ sessions: Bn,
1752
1774
  colorScheme: q
1753
- }, Un = {
1754
- ...Hn,
1775
+ }, Gn = {
1776
+ ...Wn,
1755
1777
  priceSteps: void 0
1756
- }, Wn = {
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: zn,
1791
+ sessions: Vn,
1770
1792
  colorScheme: q
1771
- }, Gn = {
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: Bn,
1806
+ sessions: Hn,
1785
1807
  colorScheme: q
1786
- }, Kn = {
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: Vn,
1822
+ sessions: Un,
1801
1823
  colorScheme: q
1802
- }, qn = {
1824
+ }, Yn = {
1803
1825
  type: "crypto",
1804
1826
  currency: "USDT",
1805
1827
  pricePrecision: 2,
1806
1828
  priceLimits: { enabled: !1 }
1807
- }, Jn = {
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 Yn(e) {
1858
+ function Zn(e) {
1837
1859
  return {
1838
1860
  ...e,
1839
1861
  candleUp: q.up,
@@ -1848,7 +1870,7 @@ function X(e, t) {
1848
1870
  for (let r of t.priceSteps ?? []) e + Y >= r.from && (n = r.step);
1849
1871
  return n !== void 0 && n > 0 ? n : void 0;
1850
1872
  }
1851
- function 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;
@@ -1857,9 +1879,9 @@ function Z(e, t, n = "nearest") {
1857
1879
  let r = X(e, t);
1858
1880
  if (r === void 0 || !Number.isFinite(e)) return e;
1859
1881
  let i = e / r, a = n === "down" ? Math.floor(i + Y) : n === "up" ? Math.ceil(i - Y) : Math.round(i);
1860
- return Number((a * r).toFixed(ft(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
1886
  let n = t.priceLimits.ceilingPercent / 100, r = (t.priceLimits.floorPercent ?? t.priceLimits.ceilingPercent) / 100, i = e, a = i * (1 + n), o = i * (1 - r), s = X(i, t);
1865
1887
  if (s === void 0) return {
@@ -1874,14 +1896,14 @@ function Zn(e, t) {
1874
1896
  reference: i
1875
1897
  };
1876
1898
  let l = Z(a, t, "down"), u = Z(o, t, "up");
1877
- return l <= i && (l = c), u >= i && (u = Z(i - (Xn(i, t) ?? s), t)), u <= 0 && (u = i), {
1899
+ return l <= i && (l = c), u >= i && (u = Z(i - (Qn(i, t) ?? s), t)), u <= 0 && (u = i), {
1878
1900
  ceiling: l,
1879
1901
  floor: u,
1880
1902
  reference: i
1881
1903
  };
1882
1904
  }
1883
1905
  var Q = (e, t) => Math.round(e * t * 1e9) / 1e9;
1884
- function Qn(e, t) {
1906
+ function er(e, t) {
1885
1907
  let n = Math.round(Math.log10(t));
1886
1908
  return {
1887
1909
  ...e,
@@ -1897,11 +1919,11 @@ function Qn(e, t) {
1897
1919
  }
1898
1920
  };
1899
1921
  }
1900
- var $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 + S(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) {
1934
+ function ir(e, t = Date.now(), n) {
1913
1935
  if (n !== void 0 && !x(n)) return null;
1914
- let r = tr(t, n);
1936
+ let r = rr(t, n);
1915
1937
  for (let t of e) if (r >= t.startTime && r < t.endTime) return t;
1916
1938
  return null;
1917
1939
  }
1918
- var $ = (e) => String(e).padStart(2, "0"), rr = (e) => {
1940
+ var $ = (e) => String(e).padStart(2, "0"), ar = (e) => {
1919
1941
  let t = new Date(e);
1920
1942
  return `${t.getUTCFullYear()}-${$(t.getUTCMonth() + 1)}-${$(t.getUTCDate())}`;
1921
- }, 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) => {
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?.(rr(e)) ?? !1);
1947
+ return t === 0 || t === 6 || (n?.(ar(e)) ?? !1);
1926
1948
  };
1927
- for (; o(a);) a -= er;
1928
- return rr(a);
1949
+ for (; o(a);) a -= nr;
1950
+ return ar(a);
1929
1951
  }
1930
- function sr(e, t) {
1931
- let n = rr(e + ar), r = (e, n) => ({
1952
+ function lr(e, t) {
1953
+ let n = ar(e + sr), r = (e, n) => ({
1932
1954
  symbol: `VN30F${$(e % 100)}${$(n)}`,
1933
1955
  year: e,
1934
1956
  month: n,
1935
- lastTradingDay: 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);
1957
+ lastTradingDay: cr(e, n, t)
1958
+ }), i = (e) => e.month === 12 ? r(e.year + 1, 1) : r(e.year, e.month + 1), a = new Date(e + sr), o = r(a.getUTCFullYear(), a.getUTCMonth() + 1);
1937
1959
  n > o.lastTradingDay && (o = i(o));
1938
1960
  let s = [o, i(o)], c = i(s[1]);
1939
1961
  for (; s.length < 4;) c.month % 3 == 0 && s.push(c), c = i(c);
@@ -1941,7 +1963,7 @@ function sr(e, t) {
1941
1963
  }
1942
1964
  //#endregion
1943
1965
  //#region src/icons/iconSet.ts
1944
- var cr = {
1966
+ var ur = {
1945
1967
  cursor: { d: "M6 3.5L18.5 12.5L12.6 13.6L9.7 19.4z" },
1946
1968
  trendingUp: { d: "M3 17L9 11L13 14.5L21 6.5M15 6.5H21V12.5" },
1947
1969
  trendingDown: { d: "M3 7L9 13L13 9.5L21 17.5M15 17.5H21V11.5" },
@@ -2070,7 +2092,7 @@ var cr = {
2070
2092
  ]
2071
2093
  ] },
2072
2094
  layoutGrid: { d: "M5 4.5h4.5a.5.5 0 0 1 .5.5v4.5a.5.5 0 0 1-.5.5H5a.5.5 0 0 1-.5-.5V5a.5.5 0 0 1 .5-.5zM14.5 4.5H19a.5.5 0 0 1 .5.5v4.5a.5.5 0 0 1-.5.5h-4.5a.5.5 0 0 1-.5-.5V5a.5.5 0 0 1 .5-.5zM5 14h4.5a.5.5 0 0 1 .5.5V19a.5.5 0 0 1-.5.5H5a.5.5 0 0 1-.5-.5v-4.5A.5.5 0 0 1 5 14zM14.5 14H19a.5.5 0 0 1 .5.5V19a.5.5 0 0 1-.5.5h-4.5a.5.5 0 0 1-.5-.5v-4.5a.5.5 0 0 1 .5-.5z" }
2073
- }, lr = {
2095
+ }, dr = {
2074
2096
  trendLine: {
2075
2097
  d: "M5 18L19 6",
2076
2098
  dots: [[5, 18], [19, 6]]
@@ -2423,7 +2445,7 @@ var cr = {
2423
2445
  ],
2424
2446
  dash: "M12 3V21"
2425
2447
  }
2426
- }, ur = {
2448
+ }, fr = {
2427
2449
  candlestick: {
2428
2450
  d: "M8 3.5V7M8 16V20.5M16 5V8.5M16 15.5V19",
2429
2451
  fills: ["M6.5 7h3a1 1 0 0 1 1 1v7a1 1 0 0 1-1 1h-3a1 1 0 0 1-1-1V8a1 1 0 0 1 1-1z", "M14.5 8.5h3a1 1 0 0 1 1 1v5a1 1 0 0 1-1 1h-3a1 1 0 0 1-1-1v-5a1 1 0 0 1 1-1z"]
@@ -2490,21 +2512,21 @@ var cr = {
2490
2512
  "M16 4.5h3v6h-3z"
2491
2513
  ]
2492
2514
  }
2493
- }, dr = 1.75, fr = .22, pr = /* @__PURE__ */ new WeakMap();
2494
- function mr(e) {
2495
- let t = pr.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="${fr}" 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 = dr] of e.dots ?? []) n += `<circle cx="${t}" cy="${r}" r="${i}" fill="currentColor" stroke="none"/>`;
2502
- return pr.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 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>`;
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, 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 };
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