@tradecanvas/commons 1.63.0 → 1.65.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
@@ -407,7 +407,7 @@ function Ee(e, t, n) {
407
407
  }
408
408
  //#endregion
409
409
  //#region src/utils/timezone.ts
410
- var h = 6e4, g = 1440 * h, _ = 15 * h, De = 8192, Oe = 7 * g, ke = 4096, Ae = new Set([
410
+ var h = 6e4, De = 1440 * h, g = 15 * h, Oe = 8192, ke = 7 * De, Ae = 4096, je = new Set([
411
411
  "UTC",
412
412
  "Etc/UTC",
413
413
  "GMT",
@@ -418,9 +418,9 @@ var h = 6e4, g = 1440 * h, _ = 15 * h, De = 8192, Oe = 7 * g, ke = 4096, Ae = ne
418
418
  "Etc/Universal",
419
419
  "Zulu",
420
420
  "Etc/Zulu"
421
- ]), je = /* @__PURE__ */ new Map(), v = /* @__PURE__ */ new Map(), Me = /* @__PURE__ */ new Map();
422
- function Ne(e) {
423
- let t = je.get(e);
421
+ ]), Me = /* @__PURE__ */ new Map(), _ = /* @__PURE__ */ new Map(), Ne = /* @__PURE__ */ new Map();
422
+ function Pe(e) {
423
+ let t = Me.get(e);
424
424
  return t || (t = new Intl.DateTimeFormat("en-US", {
425
425
  timeZone: e,
426
426
  hourCycle: "h23",
@@ -430,34 +430,34 @@ function Ne(e) {
430
430
  hour: "numeric",
431
431
  minute: "numeric",
432
432
  second: "numeric"
433
- }), je.set(e, t)), t;
433
+ }), Me.set(e, t)), t;
434
434
  }
435
- function Pe(e) {
435
+ function Fe(e) {
436
436
  if (!e) return !1;
437
437
  try {
438
- return Ne(e), !0;
438
+ return Pe(e), !0;
439
439
  } catch {
440
440
  return !1;
441
441
  }
442
442
  }
443
- function y(e, t) {
444
- if (!Number.isFinite(t) || Ae.has(e)) return 0;
445
- let n = Me.get(e);
446
- n || (n = /* @__PURE__ */ new Map(), Me.set(e, n));
447
- let r = Math.floor(t / Oe), i = n.get(r);
448
- return i || (i = Fe(e, r * Oe), n.size >= ke && n.clear(), n.set(r, i)), t < i.change ? i.before : i.after;
449
- }
450
- function Fe(e, t) {
451
- let n = b(e, t), r = t + Oe - _, i = b(e, r);
443
+ function v(e, t) {
444
+ if (!Number.isFinite(t) || je.has(e)) return 0;
445
+ let n = Ne.get(e);
446
+ n || (n = /* @__PURE__ */ new Map(), Ne.set(e, n));
447
+ let r = Math.floor(t / ke), i = n.get(r);
448
+ return i || (i = Ie(e, r * ke), n.size >= Ae && n.clear(), n.set(r, i)), t < i.change ? i.before : i.after;
449
+ }
450
+ function Ie(e, t) {
451
+ let n = y(e, t), r = t + ke - g, i = y(e, r);
452
452
  if (i === n) return {
453
453
  before: n,
454
454
  change: Infinity,
455
455
  after: i
456
456
  };
457
457
  let a = t;
458
- for (; r - a > _;) {
459
- let t = a + Math.floor((r - a) / _ / 2) * _;
460
- b(e, t) === n ? a = t : r = t;
458
+ for (; r - a > g;) {
459
+ let t = a + Math.floor((r - a) / g / 2) * g;
460
+ y(e, t) === n ? a = t : r = t;
461
461
  }
462
462
  return {
463
463
  before: n,
@@ -465,11 +465,11 @@ function Fe(e, t) {
465
465
  after: i
466
466
  };
467
467
  }
468
- function b(e, t) {
469
- let n = Math.floor(t / _), r = `${e}|${n}`, i = v.get(r);
468
+ function y(e, t) {
469
+ let n = Math.floor(t / g), r = `${e}|${n}`, i = _.get(r);
470
470
  if (i !== void 0) return i;
471
- let a = n * _, o = 1970, s = 1, c = 1, l = 0, u = 0, d = 0;
472
- for (let t of Ne(e).formatToParts(new Date(a))) {
471
+ let a = n * g, o = 1970, s = 1, c = 1, l = 0, u = 0, d = 0;
472
+ for (let t of Pe(e).formatToParts(new Date(a))) {
473
473
  let e = Number(t.value);
474
474
  switch (t.type) {
475
475
  case "year":
@@ -493,23 +493,23 @@ function b(e, t) {
493
493
  }
494
494
  }
495
495
  let ee = Math.round((Date.UTC(o, s - 1, c, l, u, d) - a) / h);
496
- return v.size >= De && v.clear(), v.set(r, ee), ee;
496
+ return _.size >= Oe && _.clear(), _.set(r, ee), ee;
497
497
  }
498
- function x(e) {
499
- return e === 0 || typeof e == "string" && Ae.has(e);
498
+ function b(e) {
499
+ return e === 0 || typeof e == "string" && je.has(e);
500
500
  }
501
- function S(e, t) {
502
- return e === null ? -new Date(t).getTimezoneOffset() : typeof e == "number" ? e : y(e, t);
501
+ function x(e, t) {
502
+ return e === null ? -new Date(t).getTimezoneOffset() : typeof e == "number" ? e : v(e, t);
503
503
  }
504
- function Ie(e, t) {
505
- let n = e - S(t, e - g) * h;
506
- if (n + S(t, n) * h === e) return n;
507
- let r = e - S(t, e + g) * h;
508
- return r + S(t, r) * h === e ? r : n;
509
- }
510
- var Le = /* @__PURE__ */ new Map();
511
- function Re(e, t, n) {
512
- let r = `${e}|${JSON.stringify(t)}|${n === null ? "local" : typeof n == "number" ? `fixed:${n}` : n}`, i = Le.get(r);
504
+ function Le(e, t) {
505
+ let n = e - x(t, e - De) * h;
506
+ if (n + x(t, n) * h === e) return n;
507
+ let r = e - x(t, e + De) * h;
508
+ return r + x(t, r) * h === e ? r : n;
509
+ }
510
+ var Re = /* @__PURE__ */ new Map();
511
+ function ze(e, t, n) {
512
+ let r = `${e}|${JSON.stringify(t)}|${n === null ? "local" : typeof n == "number" ? `fixed:${n}` : n}`, i = Re.get(r);
513
513
  if (i) return i;
514
514
  let a = n === null ? void 0 : typeof n == "number" ? "UTC" : n, o;
515
515
  try {
@@ -524,11 +524,11 @@ function Re(e, t, n) {
524
524
  });
525
525
  }
526
526
  let s = typeof n == "number" ? n * h : 0;
527
- return i = (e) => o.format(new Date(e + s)), Le.set(r, i), i;
527
+ return i = (e) => o.format(new Date(e + s)), Re.set(r, i), i;
528
528
  }
529
529
  //#endregion
530
530
  //#region src/utils/time.ts
531
- var ze = {
531
+ var Be = {
532
532
  "1s": 1e3,
533
533
  "5s": 5e3,
534
534
  "15s": 15e3,
@@ -555,16 +555,16 @@ var ze = {
555
555
  "3M": 7776e6,
556
556
  "6M": 15552e6,
557
557
  "12M": 31536e6
558
- }, C = {
558
+ }, S = {
559
559
  s: 1e3,
560
560
  m: 6e4,
561
561
  h: 36e5,
562
562
  d: 864e5,
563
563
  w: 6048e5,
564
564
  M: 2592e6
565
- }, Be = /^([1-9]\d*)([smhdwM])$/;
566
- function w(e) {
567
- let t = Be.exec(e);
565
+ }, Ve = /^([1-9]\d*)([smhdwM])$/;
566
+ function C(e) {
567
+ let t = Ve.exec(e);
568
568
  if (!t) return null;
569
569
  let n = Number(t[1]);
570
570
  return Number.isSafeInteger(n) ? {
@@ -572,24 +572,24 @@ function w(e) {
572
572
  unit: t[2]
573
573
  } : null;
574
574
  }
575
- var Ve = 1e6;
576
- function He(e) {
575
+ var He = 1e6;
576
+ function Ue(e) {
577
577
  let t = /^([1-9]\d*)T$/.exec(e);
578
578
  if (!t) return null;
579
579
  let n = Number(t[1]);
580
- return Number.isSafeInteger(n) && n <= Ve ? n : null;
580
+ return Number.isSafeInteger(n) && n <= He ? n : null;
581
581
  }
582
- function Ue(e) {
583
- return w(e) !== null;
582
+ function We(e) {
583
+ return C(e) !== null;
584
584
  }
585
- function T(e) {
586
- let t = ze[e];
585
+ function w(e) {
586
+ let t = Be[e];
587
587
  if (t !== void 0) return t;
588
- let n = w(e);
589
- return n ? n.count * C[n.unit] : NaN;
588
+ let n = C(e);
589
+ return n ? n.count * S[n.unit] : NaN;
590
590
  }
591
- function We(e, t) {
592
- let n = new Date(e), r = T(t);
591
+ function Ge(e, t) {
592
+ let n = new Date(e), r = w(t);
593
593
  return r >= 864e5 ? n.toLocaleDateString(void 0, {
594
594
  month: "short",
595
595
  day: "numeric"
@@ -602,11 +602,11 @@ function We(e, t) {
602
602
  second: "2-digit"
603
603
  });
604
604
  }
605
- function Ge(e, t) {
606
- let n = T(t);
605
+ function Ke(e, t) {
606
+ let n = w(t);
607
607
  return Math.floor(e / n) * n;
608
608
  }
609
- function Ke(e, t) {
609
+ function qe(e, t) {
610
610
  if (t === null) {
611
611
  let t = new Date(e);
612
612
  return {
@@ -617,7 +617,7 @@ function Ke(e, t) {
617
617
  minutes: t.getMinutes()
618
618
  };
619
619
  }
620
- let n = new Date(e + S(t, e) * 6e4);
620
+ let n = new Date(e + x(t, e) * 6e4);
621
621
  return {
622
622
  year: n.getUTCFullYear(),
623
623
  month: n.getUTCMonth() + 1,
@@ -626,11 +626,11 @@ function Ke(e, t) {
626
626
  minutes: n.getUTCMinutes()
627
627
  };
628
628
  }
629
- function qe(e) {
629
+ function Je(e) {
630
630
  return e.hours === 0 && e.minutes === 0;
631
631
  }
632
- var Je = 20 * 36e5;
633
- function Ye(e) {
632
+ var Ye = 20 * 36e5;
633
+ function Xe(e) {
634
634
  let t = Math.min(e.length, 64);
635
635
  if (t < 2) return;
636
636
  let n = ue(e), r = Infinity;
@@ -638,59 +638,59 @@ function Ye(e) {
638
638
  let t = Math.abs(e[i].time - e[i - 1].time) * n;
639
639
  t > 0 && t < r && (r = t);
640
640
  }
641
- return r === Infinity ? void 0 : r >= Je;
641
+ return r === Infinity ? void 0 : r >= Ye;
642
642
  }
643
- function Xe(e, t = Date.now()) {
644
- let n = S(e, t), r = n >= 0 ? "+" : "-", i = Math.abs(n), a = Math.floor(i / 60), o = i % 60;
643
+ function Ze(e, t = Date.now()) {
644
+ let n = x(e, t), r = n >= 0 ? "+" : "-", i = Math.abs(n), a = Math.floor(i / 60), o = i % 60;
645
645
  return o === 0 ? `UTC${r}${a}` : `UTC${r}${a}:${String(o).padStart(2, "0")}`;
646
646
  }
647
- var Ze = Date.UTC(1970, 0, 5), Qe = C.m, E = C.d, $e = 24, et = {
647
+ var Qe = Date.UTC(1970, 0, 5), $e = S.m, T = S.d, et = 24, tt = {
648
648
  count: 1,
649
649
  unit: "m"
650
- }, tt = 256, D = /* @__PURE__ */ new Map();
651
- function nt(e) {
652
- let t = D.get(e);
653
- return t || (t = w(e) ?? et, D.size >= tt && D.clear(), D.set(e, t)), t;
650
+ }, nt = 256, E = /* @__PURE__ */ new Map();
651
+ function rt(e) {
652
+ let t = E.get(e);
653
+ return t || (t = C(e) ?? tt, E.size >= nt && E.clear(), E.set(e, t)), t;
654
654
  }
655
- function rt({ unit: e }) {
655
+ function it({ unit: e }) {
656
656
  return e === "d" || e === "w" || e === "M";
657
657
  }
658
- function it(e) {
659
- return e.unit === "h" ? e.count > 1 && $e % e.count === 0 : rt(e);
660
- }
661
658
  function at(e) {
662
- return it(nt(e));
659
+ return e.unit === "h" ? e.count > 1 && et % e.count === 0 : it(e);
663
660
  }
664
661
  function ot(e) {
665
- return rt(nt(e));
662
+ return at(rt(e));
666
663
  }
667
664
  function st(e) {
668
- return e !== void 0 && !x(e);
665
+ return it(rt(e));
666
+ }
667
+ function ct(e) {
668
+ return e !== void 0 && !b(e);
669
669
  }
670
- function ct(e, t, n = 1) {
671
- let r = nt(t), i = typeof n == "number" ? n : n.weekStartsOn ?? 1, a = typeof n == "number" ? void 0 : n.timeZone;
672
- return !st(a) || !it(r) || typeof n == "object" && n.dates && e % E === 0 ? lt(e, r, i) : Ie(lt(e + S(a, e) * Qe, r, i), a);
670
+ function D(e, t, n = 1) {
671
+ let r = rt(t), i = typeof n == "number" ? n : n.weekStartsOn ?? 1, a = typeof n == "number" ? void 0 : n.timeZone;
672
+ return !ct(a) || !at(r) || typeof n == "object" && n.dates && e % T === 0 ? lt(e, r, i) : Le(lt(e + x(a, e) * $e, r, i), a);
673
673
  }
674
674
  function lt(e, { count: t, unit: n }, r) {
675
675
  if (n === "s" || n === "m" || n === "h" || n === "d") {
676
- let r = t * C[n];
676
+ let r = t * S[n];
677
677
  return Math.floor(e / r) * r;
678
678
  }
679
679
  let i = new Date(e);
680
680
  if (n === "w") {
681
681
  let e = (i.getUTCDay() - r + 7) % 7, n = Date.UTC(i.getUTCFullYear(), i.getUTCMonth(), i.getUTCDate() - e);
682
682
  if (t <= 1) return n;
683
- let a = Math.floor((n - Ze) / (7 * E));
684
- return Ze + Math.floor(a / t) * t * 7 * E;
683
+ let a = Math.floor((n - Qe) / (7 * T));
684
+ return Qe + Math.floor(a / t) * t * 7 * T;
685
685
  }
686
686
  let a = i.getUTCFullYear() * 12 + i.getUTCMonth(), o = Math.floor(a / t) * t;
687
687
  return Date.UTC(Math.floor(o / 12), o % 12, 1);
688
688
  }
689
689
  function ut(e, t, n) {
690
- return e % E === 0 ? 0 : n && ct(e, "1d", { timeZone: n }) === e ? n : t;
690
+ return e % T === 0 ? 0 : n && D(e, "1d", { timeZone: n }) === e ? n : t;
691
691
  }
692
692
  function dt(e, t, n) {
693
- return Ke(e, ut(e, t, n));
693
+ return qe(e, ut(e, t, n));
694
694
  }
695
695
  //#endregion
696
696
  //#region src/utils/precision.ts
@@ -794,7 +794,7 @@ var kt = 864e5, At = 6e4;
794
794
  function jt(e, t, n = 1) {
795
795
  let r = Mt(e, t, n), i = [], a = null;
796
796
  for (let n of e) {
797
- let e = ct(n.time, t, r);
797
+ let e = D(n.time, t, r);
798
798
  a === null || e !== a.time ? (a = {
799
799
  time: e,
800
800
  open: n.open,
@@ -807,29 +807,29 @@ function jt(e, t, n = 1) {
807
807
  return i;
808
808
  }
809
809
  function Mt(e, t, n) {
810
- return typeof n == "number" || n.timeZone === void 0 || n.dates !== void 0 || x(n.timeZone) || !at(t) ? n : {
810
+ return typeof n == "number" || n.timeZone === void 0 || n.dates !== void 0 || b(n.timeZone) || !ot(t) ? n : {
811
811
  ...n,
812
- dates: Ye(e) === !0
812
+ dates: Xe(e) === !0
813
813
  };
814
814
  }
815
815
  var Nt = (e) => e === "s" || e === "m" || e === "h" || e === "d";
816
816
  function Pt(e, t) {
817
- let n = w(e), r = w(t);
817
+ let n = C(e), r = C(t);
818
818
  if (!n || !r) return !1;
819
- let i = T(e);
820
- return n.unit === "d" && n.count > 1 ? !1 : Nt(r.unit) ? Nt(n.unit) && T(t) % i === 0 : n.unit === r.unit ? r.count % n.count === 0 : Nt(n.unit) && kt % i === 0;
819
+ let i = w(e);
820
+ return n.unit === "d" && n.count > 1 ? !1 : Nt(r.unit) ? Nt(n.unit) && w(t) % i === 0 : n.unit === r.unit ? r.count % n.count === 0 : Nt(n.unit) && kt % i === 0;
821
821
  }
822
822
  function Ft(e, t) {
823
- let n = T(e);
823
+ let n = w(e);
824
824
  if (!(n < kt)) return !0;
825
825
  let r = (/* @__PURE__ */ new Date()).getUTCFullYear();
826
- return [Date.UTC(r, 0, 1), Date.UTC(r, 6, 1)].every((e) => S(t, e) * At % n === 0);
826
+ return [Date.UTC(r, 0, 1), Date.UTC(r, 6, 1)].every((e) => x(t, e) * At % n === 0);
827
827
  }
828
828
  function It(e, t, n = {}) {
829
- let { timeZone: r } = n, i = r !== void 0 && !x(r) && at(e) ? r : void 0, a = null, o = 0;
829
+ let { timeZone: r } = n, i = r !== void 0 && !b(r) && ot(e) ? r : void 0, a = null, o = 0;
830
830
  for (let n of t) {
831
831
  if (!Pt(n, e) || i !== void 0 && !Ft(n, i)) continue;
832
- let t = T(n);
832
+ let t = w(n);
833
833
  t > o && (a = n, o = t);
834
834
  }
835
835
  return a;
@@ -886,11 +886,11 @@ function Ut(e, t) {
886
886
  days: Array.isArray(e.days) ? e.days : null
887
887
  }];
888
888
  });
889
- if (!n || !Pe(n) || r.length === 0 || !Number.isFinite(t)) return {
889
+ if (!n || !Fe(n) || r.length === 0 || !Number.isFinite(t)) return {
890
890
  state: "always",
891
891
  next: null
892
892
  };
893
- let i = y(n, t) * j, a = Math.floor((t + i) / A) * A, o = (e) => e - y(n, e - y(n, e - i) * j) * j, s = [];
893
+ let i = v(n, t) * j, a = Math.floor((t + i) / A) * A, o = (e) => e - v(n, e - v(n, e - i) * j) * j, s = [];
894
894
  for (let e = -1; e <= Ht; e++) {
895
895
  let t = a + e * A, n = (Math.floor(t / A) + 4) % 7;
896
896
  for (let e of r) {
@@ -977,24 +977,28 @@ var $t = [
977
977
  "left",
978
978
  "center",
979
979
  "right"
980
+ ], cn = [
981
+ "top",
982
+ "middle",
983
+ "bottom"
980
984
  ];
981
- function cn(e, t, n) {
985
+ function M(e, t, n) {
982
986
  return typeof e == "number" && Number.isFinite(e) ? Math.min(n, Math.max(t, e)) : void 0;
983
987
  }
984
- function M(e) {
988
+ function N(e) {
985
989
  return typeof e == "string" && e.length > 0 && e.length <= en ? e : void 0;
986
990
  }
987
991
  function ln(e) {
988
992
  if (typeof e != "object" || !e) return {};
989
- let t = e, n = {}, r = M(t.color);
993
+ let t = e, n = {}, r = N(t.color);
990
994
  r !== void 0 && (n.color = r);
991
- let i = cn(t.lineWidth, .5, nn);
995
+ let i = M(t.lineWidth, .5, nn);
992
996
  i !== void 0 && (n.lineWidth = i), $t.includes(t.lineStyle) && (n.lineStyle = t.lineStyle);
993
- let a = M(t.fillColor);
997
+ let a = N(t.fillColor);
994
998
  a !== void 0 && (n.fillColor = a);
995
- let o = cn(t.fillOpacity, 0, 1);
999
+ let o = M(t.fillOpacity, 0, 1);
996
1000
  o !== void 0 && (n.fillOpacity = o);
997
- let s = cn(t.fontSize, 6, rn);
1001
+ let s = M(t.fontSize, 6, rn);
998
1002
  s !== void 0 && (n.fontSize = s), typeof t.text == "string" && (n.text = t.text.slice(0, tn));
999
1003
  for (let e of [
1000
1004
  "bold",
@@ -1002,46 +1006,46 @@ function ln(e) {
1002
1006
  "textBackground",
1003
1007
  "textBorder"
1004
1008
  ]) typeof t[e] == "boolean" && (n[e] = t[e]);
1005
- sn.includes(t.textAlign) && (n.textAlign = t.textAlign);
1006
- let c = M(t.textColor);
1009
+ sn.includes(t.textAlign) && (n.textAlign = t.textAlign), cn.includes(t.textVAlign) && (n.textVAlign = t.textVAlign);
1010
+ let c = N(t.textColor);
1007
1011
  c !== void 0 && (n.textColor = c);
1008
- let l = M(t.borderColor);
1012
+ let l = N(t.borderColor);
1009
1013
  return l !== void 0 && (n.borderColor = l), typeof t.textWrap == "number" && Number.isFinite(t.textWrap) && t.textWrap >= 0 && (n.textWrap = t.textWrap === 0 ? 0 : Math.min(an, Math.max(on, t.textWrap))), n;
1010
1014
  }
1011
1015
  //#endregion
1012
1016
  //#region src/utils/chartTypeOptions.ts
1013
- var N = (e) => typeof e == "number" && Number.isFinite(e) && e > 0, un = (e, t, n) => typeof e == "number" && Number.isInteger(e) && e >= t && e <= n, P = (e) => typeof e == "object" && !!e && !Array.isArray(e);
1017
+ var P = (e) => typeof e == "number" && Number.isFinite(e) && e > 0, un = (e, t, n) => typeof e == "number" && Number.isInteger(e) && e >= t && e <= n, F = (e) => typeof e == "object" && !!e && !Array.isArray(e);
1014
1018
  function dn(e) {
1015
- if (!P(e)) return {};
1019
+ if (!F(e)) return {};
1016
1020
  let t = {};
1017
- if (P(e.renko)) {
1021
+ if (F(e.renko)) {
1018
1022
  let { boxSize: n, atrPeriod: r } = e.renko;
1019
1023
  t.renko = {
1020
- ...N(n) || n === "atr" ? { boxSize: n } : {},
1024
+ ...P(n) || n === "atr" ? { boxSize: n } : {},
1021
1025
  ...un(r, 1, 500) ? { atrPeriod: r } : {}
1022
1026
  };
1023
1027
  }
1024
- if (P(e.lineBreak)) {
1028
+ if (F(e.lineBreak)) {
1025
1029
  let { lines: n } = e.lineBreak;
1026
1030
  t.lineBreak = un(n, 1, 10) ? { lines: n } : {};
1027
1031
  }
1028
- if (P(e.kagi)) {
1032
+ if (F(e.kagi)) {
1029
1033
  let { reversal: n, reversalType: r } = e.kagi;
1030
1034
  t.kagi = {
1031
- ...N(n) ? { reversal: n } : {},
1035
+ ...P(n) ? { reversal: n } : {},
1032
1036
  ...r === "percent" || r === "price" ? { reversalType: r } : {}
1033
1037
  };
1034
1038
  }
1035
- if (P(e.pointAndFigure)) {
1039
+ if (F(e.pointAndFigure)) {
1036
1040
  let { boxSize: n, reversal: r } = e.pointAndFigure;
1037
1041
  t.pointAndFigure = {
1038
- ...N(n) || n === "auto" ? { boxSize: n } : {},
1042
+ ...P(n) || n === "auto" ? { boxSize: n } : {},
1039
1043
  ...un(r, 1, 10) ? { reversal: r } : {}
1040
1044
  };
1041
1045
  }
1042
- if (P(e.rangeBars)) {
1046
+ if (F(e.rangeBars)) {
1043
1047
  let { range: n } = e.rangeBars;
1044
- t.rangeBars = N(n) || n === "auto" ? { range: n } : {};
1048
+ t.rangeBars = P(n) || n === "auto" ? { range: n } : {};
1045
1049
  }
1046
1050
  return t;
1047
1051
  }
@@ -1052,7 +1056,7 @@ var fn = "'Cascadia Mono', 'SF Mono', ui-monospace, Menlo, Consolas, monospace",
1052
1056
  sizeSmall: 11,
1053
1057
  sizeMedium: 13,
1054
1058
  sizeLarge: 15
1055
- }, F = {
1059
+ }, I = {
1056
1060
  amber: "#f2a93b",
1057
1061
  up: "#1c9e6d",
1058
1062
  down: "#e8505b",
@@ -1064,10 +1068,10 @@ var fn = "'Cascadia Mono', 'SF Mono', ui-monospace, Menlo, Consolas, monospace",
1064
1068
  neutral: "#7d8696",
1065
1069
  ink: "#131416"
1066
1070
  }, hn = .22;
1067
- function I(e) {
1071
+ function L(e) {
1068
1072
  return p(e, hn);
1069
1073
  }
1070
- var gn = "#fbfaf6", L = "#1b1d21", _n = "#131416", R = "#e6e3dc", vn = "#1f7a5c", yn = "#b8423f", bn = "#4fae8a", xn = "#e2706b", Sn = "#6a6966", Cn = "#8d8a84", wn = {
1074
+ var gn = "#fbfaf6", R = "#1b1d21", _n = "#131416", z = "#e6e3dc", vn = "#1f7a5c", yn = "#b8423f", bn = "#4fae8a", xn = "#e2706b", Sn = "#6a6966", Cn = "#8d8a84", wn = {
1071
1075
  ceiling: "#FF00FF",
1072
1076
  floor: "#00FFFF",
1073
1077
  reference: "#FFD700"
@@ -1076,15 +1080,15 @@ var gn = "#fbfaf6", L = "#1b1d21", _n = "#131416", R = "#e6e3dc", vn = "#1f7a5c"
1076
1080
  floor: "#0e7490",
1077
1081
  reference: "#8a6a00"
1078
1082
  }, En = [
1079
- F.blue,
1080
- F.ochre,
1081
- F.violet,
1082
- F.cyan,
1083
- F.rose
1083
+ I.blue,
1084
+ I.ochre,
1085
+ I.violet,
1086
+ I.cyan,
1087
+ I.rose
1084
1088
  ], Dn = {
1085
1089
  name: "dark",
1086
1090
  background: _n,
1087
- text: R,
1091
+ text: z,
1088
1092
  textSecondary: "#8d8b86",
1089
1093
  grid: "#1d1e21",
1090
1094
  crosshair: Sn,
@@ -1092,11 +1096,11 @@ var gn = "#fbfaf6", L = "#1b1d21", _n = "#131416", R = "#e6e3dc", vn = "#1f7a5c"
1092
1096
  candleDown: xn,
1093
1097
  candleUpWick: bn,
1094
1098
  candleDownWick: xn,
1095
- lineColor: R,
1096
- areaTopColor: p(R, .14),
1097
- areaBottomColor: p(R, 0),
1098
- volumeUp: p(R, .14),
1099
- volumeDown: p(R, .08),
1099
+ lineColor: z,
1100
+ areaTopColor: p(z, .14),
1101
+ areaBottomColor: p(z, 0),
1102
+ volumeUp: p(z, .14),
1103
+ volumeDown: p(z, .08),
1100
1104
  axisLine: "#2a2b2f",
1101
1105
  axisLabel: "#a9a6a0",
1102
1106
  axisLabelBackground: "#232427",
@@ -1105,7 +1109,7 @@ var gn = "#fbfaf6", L = "#1b1d21", _n = "#131416", R = "#e6e3dc", vn = "#1f7a5c"
1105
1109
  }, On = {
1106
1110
  name: "light",
1107
1111
  background: gn,
1108
- text: L,
1112
+ text: R,
1109
1113
  textSecondary: "#6b6f76",
1110
1114
  grid: "#ece8df",
1111
1115
  crosshair: Cn,
@@ -1113,17 +1117,17 @@ var gn = "#fbfaf6", L = "#1b1d21", _n = "#131416", R = "#e6e3dc", vn = "#1f7a5c"
1113
1117
  candleDown: yn,
1114
1118
  candleUpWick: vn,
1115
1119
  candleDownWick: yn,
1116
- lineColor: L,
1117
- areaTopColor: p(L, .12),
1118
- areaBottomColor: p(L, 0),
1119
- volumeUp: p(L, .13),
1120
- volumeDown: p(L, .08),
1120
+ lineColor: R,
1121
+ areaTopColor: p(R, .12),
1122
+ areaBottomColor: p(R, 0),
1123
+ volumeUp: p(R, .13),
1124
+ volumeDown: p(R, .08),
1121
1125
  axisLine: "#cfcac0",
1122
1126
  axisLabel: "#4a4e57",
1123
1127
  axisLabelBackground: "#eeebe3",
1124
1128
  font: mn,
1125
1129
  priceLimits: Tn
1126
- }, z = {
1130
+ }, B = {
1127
1131
  name: "terminal",
1128
1132
  background: "#0E0E0E",
1129
1133
  text: "#C0C0C0",
@@ -1137,8 +1141,8 @@ var gn = "#fbfaf6", L = "#1b1d21", _n = "#131416", R = "#e6e3dc", vn = "#1f7a5c"
1137
1141
  lineColor: "#3D8BFD",
1138
1142
  areaTopColor: "rgba(61, 139, 253, 0.3)",
1139
1143
  areaBottomColor: "rgba(61, 139, 253, 0.0)",
1140
- volumeUp: I("#00FF87"),
1141
- volumeDown: I("#FF3B4D"),
1144
+ volumeUp: L("#00FF87"),
1145
+ volumeDown: L("#FF3B4D"),
1142
1146
  axisLine: "#1A1A1A",
1143
1147
  axisLabel: "#8A8A8A",
1144
1148
  axisLabelBackground: "#1A1A1A",
@@ -1148,11 +1152,11 @@ var gn = "#fbfaf6", L = "#1b1d21", _n = "#131416", R = "#e6e3dc", vn = "#1f7a5c"
1148
1152
  sizeMedium: 12,
1149
1153
  sizeLarge: 14
1150
1154
  }
1151
- }, kn = new Set([z.volumeUp, z.volumeDown]);
1152
- function B(e) {
1155
+ }, kn = new Set([B.volumeUp, B.volumeDown]);
1156
+ function V(e) {
1153
1157
  let t = (e, t) => {
1154
1158
  if (!kn.has(e)) return e;
1155
- let n = I(t);
1159
+ let n = L(t);
1156
1160
  return n === t ? e : n;
1157
1161
  };
1158
1162
  return {
@@ -1171,12 +1175,12 @@ var An = [
1171
1175
  /^[a-z]{3,30}$/i,
1172
1176
  /^(?:rgba?|hsla?|hwb|lab|lch|oklab|oklch|color)\([0-9a-z.,%/\s-]*\)$/i
1173
1177
  ];
1174
- function V(e) {
1178
+ function H(e) {
1175
1179
  return typeof e == "string" && e.length <= Mn && Pn.some((t) => t.test(e.trim()));
1176
1180
  }
1177
1181
  function Fn(e, t) {
1178
1182
  switch (e) {
1179
- case "color": return V(t);
1183
+ case "color": return H(t);
1180
1184
  case "lineStyle": return An.includes(t);
1181
1185
  case "width": return typeof t == "number" && Number.isFinite(t) && t > 0 && t <= jn;
1182
1186
  case "boolean": return typeof t == "boolean";
@@ -1200,8 +1204,8 @@ function Ln(e) {
1200
1204
  function Rn(e) {
1201
1205
  if (typeof e != "object" || !e || Array.isArray(e)) return null;
1202
1206
  let { background: t, separator: n } = e, r = {
1203
- ...V(t) ? { background: t } : {},
1204
- ...V(n) ? { separator: n } : {}
1207
+ ...H(t) ? { background: t } : {},
1208
+ ...H(n) ? { separator: n } : {}
1205
1209
  };
1206
1210
  return Object.keys(r).length > 0 ? r : null;
1207
1211
  }
@@ -1235,7 +1239,7 @@ function Hn(e, t, n) {
1235
1239
  bottom: r("bottomColor") ?? t("series.area.bottomColor") ?? e.areaBottomColor
1236
1240
  };
1237
1241
  }
1238
- function H(e, t, n) {
1242
+ function U(e, t, n) {
1239
1243
  return {
1240
1244
  visible: e(`${t}.visible`) ?? n.visible,
1241
1245
  color: e(`${t}.color`) ?? n.color,
@@ -1251,13 +1255,13 @@ function Un(e, t, n) {
1251
1255
  title: l("panes.titleColor", i.textSecondary)
1252
1256
  },
1253
1257
  grid: {
1254
- horizontal: H(o, "grid.horizontal", {
1258
+ horizontal: U(o, "grid.horizontal", {
1255
1259
  visible: !0,
1256
1260
  color: i.grid,
1257
1261
  style: "solid",
1258
1262
  width: 1
1259
1263
  }),
1260
- vertical: H(o, "grid.vertical", {
1264
+ vertical: U(o, "grid.vertical", {
1261
1265
  visible: !0,
1262
1266
  color: i.grid,
1263
1267
  style: "solid",
@@ -1265,13 +1269,13 @@ function Un(e, t, n) {
1265
1269
  })
1266
1270
  },
1267
1271
  crosshair: {
1268
- horizontal: H(o, "crosshair.horizontal", {
1272
+ horizontal: U(o, "crosshair.horizontal", {
1269
1273
  visible: !0,
1270
1274
  color: i.crosshair,
1271
1275
  style: "solid",
1272
1276
  width: 1
1273
1277
  }),
1274
- vertical: H(o, "crosshair.vertical", {
1278
+ vertical: U(o, "crosshair.vertical", {
1275
1279
  visible: !0,
1276
1280
  color: i.crosshair,
1277
1281
  style: "solid",
@@ -1362,8 +1366,8 @@ var Wn = {
1362
1366
  "lastPrice.downColor": (e, t) => t.lastPrice.down,
1363
1367
  "lastPrice.style": (e, t) => t.lastPrice.style,
1364
1368
  "lastPrice.width": (e, t) => t.lastPrice.width,
1365
- "volume.upColor": (e) => B(e).up,
1366
- "volume.downColor": (e) => B(e).down,
1369
+ "volume.upColor": (e) => V(e).up,
1370
+ "volume.downColor": (e) => V(e).down,
1367
1371
  "sessionBreaks.color": (e, t) => t.sessionBreaks.color,
1368
1372
  "sessionBreaks.style": (e, t) => t.sessionBreaks.style,
1369
1373
  "sessionBreaks.width": (e, t) => t.sessionBreaks.width,
@@ -1484,7 +1488,7 @@ function or(e, t, n = 1) {
1484
1488
  }
1485
1489
  //#endregion
1486
1490
  //#region src/i18n/en.ts
1487
- var U = {
1491
+ var W = {
1488
1492
  candlestick: "Candlestick",
1489
1493
  line: "Line",
1490
1494
  area: "Area",
@@ -1690,29 +1694,29 @@ var U = {
1690
1694
  error: "Lỗi",
1691
1695
  numberDecimalSeparator: ",",
1692
1696
  numberGroupSeparator: "."
1693
- }, W = new Map([["en", U], ["vi", sr]]), G = "en", cr = U;
1697
+ }, G = new Map([["en", W], ["vi", sr]]), K = "en", cr = W;
1694
1698
  function lr(e) {
1695
- G = e, cr = W.get(e) ?? U;
1699
+ K = e, cr = G.get(e) ?? W;
1696
1700
  }
1697
1701
  function ur() {
1698
- return G;
1702
+ return K;
1699
1703
  }
1700
1704
  function dr(e) {
1701
- return cr[e] ?? U[e] ?? e;
1705
+ return cr[e] ?? W[e] ?? e;
1702
1706
  }
1703
1707
  function fr(e, t) {
1704
- W.set(e, t);
1708
+ G.set(e, t);
1705
1709
  }
1706
1710
  function pr(e) {
1707
- return W.get(e ?? G) ?? U;
1711
+ return G.get(e ?? K) ?? W;
1708
1712
  }
1709
- function K(e, t = 2, n) {
1710
- let r = W.get(n ?? G) ?? U, i = r.numberDecimalSeparator, a = r.numberGroupSeparator, [o, s] = e.toFixed(t).split("."), c = o.startsWith("-"), l = c ? o.slice(1) : o, u = "";
1713
+ function q(e, t = 2, n) {
1714
+ let r = G.get(n ?? K) ?? W, i = r.numberDecimalSeparator, a = r.numberGroupSeparator, [o, s] = e.toFixed(t).split("."), c = o.startsWith("-"), l = c ? o.slice(1) : o, u = "";
1711
1715
  for (let e = l.length - 1, t = 0; e >= 0; e--, t++) t > 0 && t % 3 == 0 && (u = a + u), u = l[e] + u;
1712
1716
  return c && (u = "-" + u), s ? u + i + s : u;
1713
1717
  }
1714
1718
  function mr(e) {
1715
- return K(e, 0, "vi");
1719
+ return q(e, 0, "vi");
1716
1720
  }
1717
1721
  var hr = [
1718
1722
  [0xe8d4a51000, "조"],
@@ -1726,29 +1730,29 @@ function _r(e, t, n) {
1726
1730
  try {
1727
1731
  return k(e, t, n);
1728
1732
  } catch {
1729
- return K(e, t, "en");
1733
+ return q(e, t, "en");
1730
1734
  }
1731
1735
  }
1732
1736
  function vr(e, t) {
1733
- let n = t ?? G;
1737
+ let n = t ?? K;
1734
1738
  if (!Number.isFinite(e)) return String(e);
1735
1739
  if (gr(n)) {
1736
- for (let [t, r] of hr) if (Math.round(e / t * 100) >= 100) return K(e / t, 2, n) + r;
1737
- return K(e, 0, n);
1740
+ for (let [t, r] of hr) if (Math.round(e / t * 100) >= 100) return q(e / t, 2, n) + r;
1741
+ return q(e, 0, n);
1738
1742
  }
1739
- let r = W.has(n) ? (e, t) => K(e, t, n) : (e, t) => _r(e, t, n);
1743
+ let r = G.has(n) ? (e, t) => q(e, t, n) : (e, t) => _r(e, t, n);
1740
1744
  return e >= 1e9 ? r(e / 1e9, 2) + "B" : e >= 1e6 ? r(e / 1e6, 2) + "M" : e >= 1e3 ? r(e / 1e3, 2) + "K" : r(e, 0);
1741
1745
  }
1742
1746
  //#endregion
1743
1747
  //#region src/market/presets.ts
1744
- var q = {
1748
+ var J = {
1745
1749
  up: "#22C55E",
1746
1750
  down: "#EF4444",
1747
1751
  unchanged: "#EAB308",
1748
1752
  ceiling: "#D946EF",
1749
1753
  floor: "#06B6D4",
1750
1754
  reference: "#EAB308"
1751
- }, J = "Asia/Ho_Chi_Minh", yr = {
1755
+ }, Y = "Asia/Ho_Chi_Minh", yr = {
1752
1756
  up: "#E8313F",
1753
1757
  down: "#2F6FEB",
1754
1758
  unchanged: "#8B8F99",
@@ -2028,14 +2032,14 @@ var q = {
2028
2032
  step: .1
2029
2033
  }
2030
2034
  ],
2031
- timeZone: J,
2035
+ timeZone: Y,
2032
2036
  priceLimits: {
2033
2037
  enabled: !0,
2034
2038
  ceilingPercent: 7,
2035
2039
  floorPercent: 7
2036
2040
  },
2037
2041
  sessions: xr,
2038
- colorScheme: q
2042
+ colorScheme: J
2039
2043
  }, Ar = {
2040
2044
  ...kr,
2041
2045
  priceSteps: void 0
@@ -2046,14 +2050,14 @@ var q = {
2046
2050
  pricePrecision: 1,
2047
2051
  volumeUnit: 100,
2048
2052
  priceStep: .1,
2049
- timeZone: J,
2053
+ timeZone: Y,
2050
2054
  priceLimits: {
2051
2055
  enabled: !0,
2052
2056
  ceilingPercent: 10,
2053
2057
  floorPercent: 10
2054
2058
  },
2055
2059
  sessions: Sr,
2056
- colorScheme: q
2060
+ colorScheme: J
2057
2061
  }, Mr = {
2058
2062
  type: "stock",
2059
2063
  exchange: "UPCOM",
@@ -2061,14 +2065,14 @@ var q = {
2061
2065
  pricePrecision: 1,
2062
2066
  volumeUnit: 100,
2063
2067
  priceStep: .1,
2064
- timeZone: J,
2068
+ timeZone: Y,
2065
2069
  priceLimits: {
2066
2070
  enabled: !0,
2067
2071
  ceilingPercent: 15,
2068
2072
  floorPercent: 15
2069
2073
  },
2070
2074
  sessions: Cr,
2071
- colorScheme: q
2075
+ colorScheme: J
2072
2076
  }, Nr = {
2073
2077
  type: "futures",
2074
2078
  exchange: "HNX",
@@ -2077,14 +2081,14 @@ var q = {
2077
2081
  volumeUnit: 1,
2078
2082
  priceStep: .1,
2079
2083
  contractMultiplier: 1e5,
2080
- timeZone: J,
2084
+ timeZone: Y,
2081
2085
  priceLimits: {
2082
2086
  enabled: !0,
2083
2087
  ceilingPercent: 7,
2084
2088
  floorPercent: 7
2085
2089
  },
2086
2090
  sessions: wr,
2087
- colorScheme: q
2091
+ colorScheme: J
2088
2092
  }, Pr = {
2089
2093
  type: "stock",
2090
2094
  exchange: "KRX",
@@ -2150,7 +2154,7 @@ var q = {
2150
2154
  ]
2151
2155
  };
2152
2156
  function zr(e) {
2153
- return Br(e, q);
2157
+ return Br(e, J);
2154
2158
  }
2155
2159
  function Br(e, t) {
2156
2160
  return {
@@ -2161,33 +2165,33 @@ function Br(e, t) {
2161
2165
  candleDownWick: t.down
2162
2166
  };
2163
2167
  }
2164
- var Y = 1e-9;
2165
- function X(e, t) {
2168
+ var X = 1e-9;
2169
+ function Vr(e, t) {
2166
2170
  let n = t.priceStep;
2167
- for (let r of t.priceSteps ?? []) e + Y >= r.from && (n = r.step);
2171
+ for (let r of t.priceSteps ?? []) e + X >= r.from && (n = r.step);
2168
2172
  return n !== void 0 && n > 0 ? n : void 0;
2169
2173
  }
2170
- function Vr(e, t) {
2174
+ function Hr(e, t) {
2171
2175
  let n = t.priceStep;
2172
- for (let r of t.priceSteps ?? []) e - Y > r.from && (n = r.step);
2176
+ for (let r of t.priceSteps ?? []) e - X > r.from && (n = r.step);
2173
2177
  return n !== void 0 && n > 0 ? n : void 0;
2174
2178
  }
2175
2179
  function Z(e, t, n = "nearest") {
2176
- let r = X(e, t);
2180
+ let r = Vr(e, t);
2177
2181
  if (r === void 0 || !Number.isFinite(e)) return e;
2178
- let i = e / r, a = n === "down" ? Math.floor(i + Y) : n === "up" ? Math.ceil(i - Y) : Math.round(i);
2182
+ let i = e / r, a = n === "down" ? Math.floor(i + X) : n === "up" ? Math.ceil(i - X) : Math.round(i);
2179
2183
  return Number((a * r).toFixed(zt(r)));
2180
2184
  }
2181
- function Hr(e, t) {
2185
+ function Ur(e, t) {
2182
2186
  if (!t.priceLimits?.enabled || !t.priceLimits.ceilingPercent) return null;
2183
- 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);
2187
+ 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 = Vr(i, t);
2184
2188
  if (s === void 0) return {
2185
2189
  ceiling: a,
2186
2190
  floor: o,
2187
2191
  reference: i
2188
2192
  };
2189
2193
  let c = Z(i + s, t);
2190
- if (Math.abs(i - s) < Y) return {
2194
+ if (Math.abs(i - s) < X) return {
2191
2195
  ceiling: c,
2192
2196
  floor: i,
2193
2197
  reference: i
@@ -2201,14 +2205,14 @@ function Hr(e, t) {
2201
2205
  };
2202
2206
  l = Z(i + Z(i * n, e, "down"), t, "down"), u = Z(i - Z(i * r, e, "down"), t, "down");
2203
2207
  } else l = Z(a, t, "down"), u = Z(o, t, "up");
2204
- return l <= i && (l = c), u >= i && (u = Z(i - (Vr(i, t) ?? s), t)), u <= 0 && (u = i), {
2208
+ return l <= i && (l = c), u >= i && (u = Z(i - (Hr(i, t) ?? s), t)), u <= 0 && (u = i), {
2205
2209
  ceiling: l,
2206
2210
  floor: u,
2207
2211
  reference: i
2208
2212
  };
2209
2213
  }
2210
2214
  var Q = (e, t) => Math.round(e * t * 1e9) / 1e9;
2211
- function Ur(e, t) {
2215
+ function Wr(e, t) {
2212
2216
  let n = Math.round(Math.log10(t));
2213
2217
  return {
2214
2218
  ...e,
@@ -2224,11 +2228,11 @@ function Ur(e, t) {
2224
2228
  }
2225
2229
  };
2226
2230
  }
2227
- var Wr = 6e4, Gr = 864e5;
2228
- function Kr(e, t) {
2231
+ var Gr = 6e4, Kr = 864e5;
2232
+ function qr(e, t) {
2229
2233
  let n, r;
2230
2234
  if (t) {
2231
- let i = new Date(e + y(t, e) * Wr);
2235
+ let i = new Date(e + v(t, e) * Gr);
2232
2236
  n = i.getUTCHours(), r = i.getUTCMinutes();
2233
2237
  } else {
2234
2238
  let t = new Date(e);
@@ -2236,31 +2240,31 @@ function Kr(e, t) {
2236
2240
  }
2237
2241
  return `${String(n).padStart(2, "0")}:${String(r).padStart(2, "0")}`;
2238
2242
  }
2239
- function qr(e, t = Date.now(), n) {
2240
- if (n !== void 0 && !Pe(n)) return null;
2241
- let r = Kr(t, n);
2243
+ function Jr(e, t = Date.now(), n) {
2244
+ if (n !== void 0 && !Fe(n)) return null;
2245
+ let r = qr(t, n);
2242
2246
  for (let t of e) if (r >= t.startTime && r < t.endTime) return t;
2243
2247
  return null;
2244
2248
  }
2245
- var $ = (e) => String(e).padStart(2, "0"), Jr = (e) => {
2249
+ var $ = (e) => String(e).padStart(2, "0"), Yr = (e) => {
2246
2250
  let t = new Date(e);
2247
2251
  return `${t.getUTCFullYear()}-${$(t.getUTCMonth() + 1)}-${$(t.getUTCDate())}`;
2248
- }, Yr = 4, Xr = 7 * 36e5;
2249
- function Zr(e, t, n) {
2250
- let r = Date.UTC(e, t - 1, 1), i = 1 + (Yr - new Date(r).getUTCDay() + 7) % 7, a = Date.UTC(e, t - 1, i + 14), o = (e) => {
2252
+ }, Xr = 4, Zr = 7 * 36e5;
2253
+ function Qr(e, t, n) {
2254
+ let r = Date.UTC(e, t - 1, 1), i = 1 + (Xr - new Date(r).getUTCDay() + 7) % 7, a = Date.UTC(e, t - 1, i + 14), o = (e) => {
2251
2255
  let t = new Date(e).getUTCDay();
2252
- return t === 0 || t === 6 || (n?.(Jr(e)) ?? !1);
2256
+ return t === 0 || t === 6 || (n?.(Yr(e)) ?? !1);
2253
2257
  };
2254
- for (; o(a);) a -= Gr;
2255
- return Jr(a);
2258
+ for (; o(a);) a -= Kr;
2259
+ return Yr(a);
2256
2260
  }
2257
- function Qr(e, t) {
2258
- let n = Jr(e + Xr), r = (e, n) => ({
2261
+ function $r(e, t) {
2262
+ let n = Yr(e + Zr), r = (e, n) => ({
2259
2263
  symbol: `VN30F${$(e % 100)}${$(n)}`,
2260
2264
  year: e,
2261
2265
  month: n,
2262
- lastTradingDay: Zr(e, n, t)
2263
- }), i = (e) => e.month === 12 ? r(e.year + 1, 1) : r(e.year, e.month + 1), a = new Date(e + Xr), o = r(a.getUTCFullYear(), a.getUTCMonth() + 1);
2266
+ lastTradingDay: Qr(e, n, t)
2267
+ }), i = (e) => e.month === 12 ? r(e.year + 1, 1) : r(e.year, e.month + 1), a = new Date(e + Zr), o = r(a.getUTCFullYear(), a.getUTCMonth() + 1);
2264
2268
  n > o.lastTradingDay && (o = i(o));
2265
2269
  let s = [o, i(o)], c = i(s[1]);
2266
2270
  for (; s.length < 4;) c.month % 3 == 0 && s.push(c), c = i(c);
@@ -2268,7 +2272,7 @@ function Qr(e, t) {
2268
2272
  }
2269
2273
  //#endregion
2270
2274
  //#region src/icons/iconSet.ts
2271
- var $r = {
2275
+ var ei = {
2272
2276
  cursor: { d: "M6 3.5L18.5 12.5L12.6 13.6L9.7 19.4z" },
2273
2277
  trendingUp: { d: "M3 17L9 11L13 14.5L21 6.5M15 6.5H21V12.5" },
2274
2278
  trendingDown: { d: "M3 7L9 13L13 9.5L21 17.5M15 17.5H21V11.5" },
@@ -2401,8 +2405,41 @@ var $r = {
2401
2405
  1.6
2402
2406
  ]
2403
2407
  ] },
2408
+ copy: { d: "M9.5 8.5h9a1 1 0 0 1 1 1v9a1 1 0 0 1-1 1h-9a1 1 0 0 1-1-1v-9a1 1 0 0 1 1-1zM15.5 8.5v-3a1 1 0 0 0-1-1h-9a1 1 0 0 0-1 1v9a1 1 0 0 0 1 1h3" },
2409
+ grip: { dots: [
2410
+ [
2411
+ 9,
2412
+ 6,
2413
+ 1.4
2414
+ ],
2415
+ [
2416
+ 15,
2417
+ 6,
2418
+ 1.4
2419
+ ],
2420
+ [
2421
+ 9,
2422
+ 12,
2423
+ 1.4
2424
+ ],
2425
+ [
2426
+ 15,
2427
+ 12,
2428
+ 1.4
2429
+ ],
2430
+ [
2431
+ 9,
2432
+ 18,
2433
+ 1.4
2434
+ ],
2435
+ [
2436
+ 15,
2437
+ 18,
2438
+ 1.4
2439
+ ]
2440
+ ] },
2404
2441
  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" }
2405
- }, ei = {
2442
+ }, ti = {
2406
2443
  trendLine: {
2407
2444
  d: "M5 18L19 6",
2408
2445
  dots: [[5, 18], [19, 6]]
@@ -2755,7 +2792,7 @@ var $r = {
2755
2792
  ],
2756
2793
  dash: "M12 3V21"
2757
2794
  }
2758
- }, ti = {
2795
+ }, ni = {
2759
2796
  candlestick: {
2760
2797
  d: "M8 3.5V7M8 16V20.5M16 5V8.5M16 15.5V19",
2761
2798
  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"]
@@ -2822,21 +2859,21 @@ var $r = {
2822
2859
  "M16 4.5h3v6h-3z"
2823
2860
  ]
2824
2861
  }
2825
- }, ni = 1.75, ri = .22, ii = /* @__PURE__ */ new WeakMap();
2826
- function ai(e) {
2827
- let t = ii.get(e);
2862
+ }, ri = 1.75, ii = .22, ai = /* @__PURE__ */ new WeakMap();
2863
+ function oi(e) {
2864
+ let t = ai.get(e);
2828
2865
  if (t) return t;
2829
2866
  let n = "";
2830
- e.soft && (n += `<path d="${e.soft}" fill="currentColor" fill-opacity="${ri}" stroke="none"/>`);
2867
+ e.soft && (n += `<path d="${e.soft}" fill="currentColor" fill-opacity="${ii}" stroke="none"/>`);
2831
2868
  for (let t of e.fills ?? []) n += `<path d="${t}" fill="currentColor" stroke="none"/>`;
2832
2869
  e.d && (n += `<path d="${e.d}"/>`), e.dash && (n += `<path d="${e.dash}" stroke-dasharray="2 2.5"/>`);
2833
- for (let [t, r, i = ni] of e.dots ?? []) n += `<circle cx="${t}" cy="${r}" r="${i}" fill="currentColor" stroke="none"/>`;
2834
- return ii.set(e, n), n;
2870
+ for (let [t, r, i = ri] of e.dots ?? []) n += `<circle cx="${t}" cy="${r}" r="${i}" fill="currentColor" stroke="none"/>`;
2871
+ return ai.set(e, n), n;
2835
2872
  }
2836
- function oi(e, t) {
2837
- 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">${ai(e)}</svg>`;
2873
+ function si(e, t) {
2874
+ 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">${oi(e)}</svg>`;
2838
2875
  }
2839
2876
  //#endregion
2840
- export { t as CHART_STYLE_KEYS, ti as CHART_TYPE_ICONS, wn as DARK_PRICE_LIMITS, z as DARK_TERMINAL, Dn as DARK_THEME, $n as DEFAULT_BAR_SPACING, Qn as DEFAULT_BAR_WIDTH, qn as DEFAULT_CHART_OPTIONS, n as DEFAULT_DRAWING_STYLE, fn as DEFAULT_FONT_FAMILY, rr as DEFAULT_PANEL_HEIGHT, o as DEFAULT_RECONNECT, i as DEFAULT_SIGNAL_STYLE, s as DEFAULT_STREAM_CONFIG, Zn as DEFAULT_TIMEFRAME_FAVORITES, a as DEFAULT_TRADE_ZONE_STYLE, r as DEFAULT_TRADING_CONFIG, ei as DRAWING_TOOL_ICONS, ar as FIBONACCI, Sr as HNX_SESSIONS, xr as HOSE_SESSIONS, ni as ICON_DOT_RADIUS, ri as ICON_SOFT_OPACITY, Tr as KRX_SESSIONS, yr as KR_COLORS, Tn as LIGHT_PRICE_LIMITS, On as LIGHT_THEME, e as LayerType, Lr as MARKET_CRYPTO, jr as MARKET_HNX, kr as MARKET_HOSE, Ar as MARKET_HOSE_ETF, Pr as MARKET_KRX, Fr as MARKET_NXT, Rr as MARKET_NYSE, Ir as MARKET_UPBIT_KRW, Mr as MARKET_UPCOM, Nr as MARKET_VN30F, nr as MIN_PANEL_HEIGHT, le as MS_TIME_THRESHOLD, Er as NXT_SESSIONS, ir as PHI, er as PRICE_AXIS_WIDTH, Ct as PRICE_SOURCES, pn as SANS_FONT_FAMILY, F as TC_PALETTE, En as TC_SERIES_COLORS, Jn as TIMEFRAMES_CRYPTO, Xn as TIMEFRAMES_FOREX, Yn as TIMEFRAMES_STOCK, tr as TIME_AXIS_HEIGHT, $r as UI_ICONS, Cr as UPCOM_SESSIONS, wr as VN30F_SESSIONS, q as VN_COLORS, hn as VOLUME_ALPHA, Ge as alignToTimeframe, ht as autoPricePrecision, dt as barDateParts, ut as barDateZone, ue as barTimeUnit, Ye as barsAreDaily, Kn as chartStyleValue, re as clamp, Hr as computePriceLimits, _e as computePriceRange, ce as computeTickStep, m as contrastRatio, Br as createMarketTheme, zr as createVNTheme, St as detectPrecision, Zt as drawingOption, U as en, me as findBarIndex, ge as fitPriceRange, vt as formatFraction, K as formatNumber, k as formatPrice, _t as formatPriceScaleLabel, We as formatTimestamp, mr as formatVND, xt as formatVolume, vr as formatVolumeLoc, yt as fractionTick, qr as getCurrentSession, ur as getLocale, pr as getLocaleStrings, ye as hexToRgba, oi as iconSvg, Dt as indicatorSource, Ee as inkOn, ae as inverseLerp, qe as isDateOnly, wt as isPriceSource, Ue as isTimeFrame, x as isUtcTimeZone, Pe as isValidTimeZone, ie as lerp, Se as lerpColor, Vn as lineDash, Ut as marketStatus, ve as mergeBar, se as niceNumber, fe as normalizeBar, de as normalizeBarTime, S as offsetAt, he as padPriceRange, Ot as parseIndicatorSource, w as parseTimeframe, or as phiStep, It as pickBaseTimeframe, bt as priceFormatterFor, X as priceStepAt, mt as priceTagText, Rt as rankSymbols, Ln as readChartStyleOverrides, dn as readChartTypeOptions, Bn as readIndicatorPlotStyles, ne as readNews, Rn as readPaneStyle, l as readQuote, Te as readableOn, fr as registerLocale, jt as resampleBars, Un as resolveChartTheme, Qt as resolveDrawingOptions, B as resolveVolumeColors, Z as roundToPriceStep, oe as roundToStep, Yt as sanitizeDrawingOptions, ln as sanitizeDrawingStyle, Ur as scaleMarketPrices, Vt as sessionMinute, lr as setLocale, pe as sliceVisibleData, Tt as sourcePrice, zt as stepDecimals, Bt as symbolTimeZone, dr as t, He as tickBarCount, Ke as timeParts, ct as timeframeBucketStart, at as timeframeFollowsDays, ot as timeframeSpansDays, T as timeframeToMs, Xe as tzLabel, gr as usesKoreanUnits, sr as vi, Qr as vn30fContracts, Zr as vn30fLastTradingDay, I as volumeColor, Ie as wallToUtc, p as withAlpha, y as zoneOffsetMinutes, Re as zonedDateFormatter };
2877
+ export { t as CHART_STYLE_KEYS, ni as CHART_TYPE_ICONS, wn as DARK_PRICE_LIMITS, B as DARK_TERMINAL, Dn as DARK_THEME, $n as DEFAULT_BAR_SPACING, Qn as DEFAULT_BAR_WIDTH, qn as DEFAULT_CHART_OPTIONS, n as DEFAULT_DRAWING_STYLE, fn as DEFAULT_FONT_FAMILY, rr as DEFAULT_PANEL_HEIGHT, o as DEFAULT_RECONNECT, i as DEFAULT_SIGNAL_STYLE, s as DEFAULT_STREAM_CONFIG, Zn as DEFAULT_TIMEFRAME_FAVORITES, a as DEFAULT_TRADE_ZONE_STYLE, r as DEFAULT_TRADING_CONFIG, ti as DRAWING_TOOL_ICONS, ar as FIBONACCI, Sr as HNX_SESSIONS, xr as HOSE_SESSIONS, ri as ICON_DOT_RADIUS, ii as ICON_SOFT_OPACITY, Tr as KRX_SESSIONS, yr as KR_COLORS, Tn as LIGHT_PRICE_LIMITS, On as LIGHT_THEME, e as LayerType, Lr as MARKET_CRYPTO, jr as MARKET_HNX, kr as MARKET_HOSE, Ar as MARKET_HOSE_ETF, Pr as MARKET_KRX, Fr as MARKET_NXT, Rr as MARKET_NYSE, Ir as MARKET_UPBIT_KRW, Mr as MARKET_UPCOM, Nr as MARKET_VN30F, nr as MIN_PANEL_HEIGHT, le as MS_TIME_THRESHOLD, Er as NXT_SESSIONS, ir as PHI, er as PRICE_AXIS_WIDTH, Ct as PRICE_SOURCES, pn as SANS_FONT_FAMILY, I as TC_PALETTE, En as TC_SERIES_COLORS, Jn as TIMEFRAMES_CRYPTO, Xn as TIMEFRAMES_FOREX, Yn as TIMEFRAMES_STOCK, tr as TIME_AXIS_HEIGHT, ei as UI_ICONS, Cr as UPCOM_SESSIONS, wr as VN30F_SESSIONS, J as VN_COLORS, hn as VOLUME_ALPHA, Ke as alignToTimeframe, ht as autoPricePrecision, dt as barDateParts, ut as barDateZone, ue as barTimeUnit, Xe as barsAreDaily, Kn as chartStyleValue, re as clamp, Ur as computePriceLimits, _e as computePriceRange, ce as computeTickStep, m as contrastRatio, Br as createMarketTheme, zr as createVNTheme, St as detectPrecision, Zt as drawingOption, W as en, me as findBarIndex, ge as fitPriceRange, vt as formatFraction, q as formatNumber, k as formatPrice, _t as formatPriceScaleLabel, Ge as formatTimestamp, mr as formatVND, xt as formatVolume, vr as formatVolumeLoc, yt as fractionTick, Jr as getCurrentSession, ur as getLocale, pr as getLocaleStrings, ye as hexToRgba, si as iconSvg, Dt as indicatorSource, Ee as inkOn, ae as inverseLerp, Je as isDateOnly, wt as isPriceSource, We as isTimeFrame, b as isUtcTimeZone, Fe as isValidTimeZone, ie as lerp, Se as lerpColor, Vn as lineDash, Ut as marketStatus, ve as mergeBar, se as niceNumber, fe as normalizeBar, de as normalizeBarTime, x as offsetAt, he as padPriceRange, Ot as parseIndicatorSource, C as parseTimeframe, or as phiStep, It as pickBaseTimeframe, bt as priceFormatterFor, Vr as priceStepAt, mt as priceTagText, Rt as rankSymbols, Ln as readChartStyleOverrides, dn as readChartTypeOptions, Bn as readIndicatorPlotStyles, ne as readNews, Rn as readPaneStyle, l as readQuote, Te as readableOn, fr as registerLocale, jt as resampleBars, Un as resolveChartTheme, Qt as resolveDrawingOptions, V as resolveVolumeColors, Z as roundToPriceStep, oe as roundToStep, Yt as sanitizeDrawingOptions, ln as sanitizeDrawingStyle, Wr as scaleMarketPrices, Vt as sessionMinute, lr as setLocale, pe as sliceVisibleData, Tt as sourcePrice, zt as stepDecimals, Bt as symbolTimeZone, dr as t, Ue as tickBarCount, qe as timeParts, D as timeframeBucketStart, ot as timeframeFollowsDays, st as timeframeSpansDays, w as timeframeToMs, Ze as tzLabel, gr as usesKoreanUnits, sr as vi, $r as vn30fContracts, Qr as vn30fLastTradingDay, L as volumeColor, Le as wallToUtc, p as withAlpha, v as zoneOffsetMinutes, ze as zonedDateFormatter };
2841
2878
 
2842
2879
  //# sourceMappingURL=index.js.map