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