@tradecanvas/commons 1.53.1 → 1.54.1

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
@@ -350,7 +350,7 @@ function m(e, t) {
350
350
  return r ? `rgba(${r[1]}, ${r[2]}, ${r[3]}, ${t})` : e;
351
351
  }
352
352
  var ye = 3;
353
- function be(e) {
353
+ function h(e) {
354
354
  let t = e.trim(), n = /^#([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i.exec(t);
355
355
  if (n) {
356
356
  let e = n[1];
@@ -373,15 +373,41 @@ function be(e) {
373
373
  a: Math.min(1, Math.max(0, i))
374
374
  };
375
375
  }
376
- function xe(e, t, n) {
377
- let r = be(e), i = be(t);
376
+ function be(e, t, n) {
377
+ let r = h(e), i = h(t);
378
378
  if (!r || !i) return n < .5 ? e : t;
379
379
  let a = r.a + (i.a - r.a) * n, o = (e, t) => a === 0 ? 0 : Math.round((e * r.a + (t * i.a - e * r.a) * n) / a), s = `${o(r.r, i.r)},${o(r.g, i.g)},${o(r.b, i.b)}`;
380
380
  return a >= 1 ? `rgb(${s})` : `rgba(${s},${Number(a.toFixed(ye))})`;
381
381
  }
382
+ function xe(e) {
383
+ let t = h(e);
384
+ if (!t) return null;
385
+ let n = (e) => {
386
+ let t = e / 255;
387
+ return t <= .03928 ? t / 12.92 : ((t + .055) / 1.055) ** 2.4;
388
+ };
389
+ return .2126 * n(t.r) + .7152 * n(t.g) + .0722 * n(t.b);
390
+ }
391
+ function g(e, t) {
392
+ let n = xe(e), r = xe(t);
393
+ return n === null || r === null ? null : (Math.max(n, r) + .05) / (Math.min(n, r) + .05);
394
+ }
395
+ var Se = 20;
396
+ function Ce(e, t, n, r) {
397
+ let i = g(e, t);
398
+ if (i === null || i >= r) return e;
399
+ for (let i = 1; i <= Se; i++) {
400
+ let a = be(e, n, i / Se);
401
+ if ((g(a, t) ?? 0) >= r) return a;
402
+ }
403
+ return n;
404
+ }
405
+ function we(e, t, n) {
406
+ return (g(e, t) ?? 0) >= (g(e, n) ?? 0) ? t : n;
407
+ }
382
408
  //#endregion
383
409
  //#region src/utils/timezone.ts
384
- var h = 6e4, Se = 1440 * h, g = 15 * h, Ce = 8192, _ = 7 * Se, we = 4096, Te = new Set([
410
+ var _ = 6e4, Te = 1440 * _, v = 15 * _, Ee = 8192, De = 7 * Te, Oe = 4096, ke = new Set([
385
411
  "UTC",
386
412
  "Etc/UTC",
387
413
  "GMT",
@@ -392,9 +418,9 @@ var h = 6e4, Se = 1440 * h, g = 15 * h, Ce = 8192, _ = 7 * Se, we = 4096, Te = n
392
418
  "Etc/Universal",
393
419
  "Zulu",
394
420
  "Etc/Zulu"
395
- ]), Ee = /* @__PURE__ */ new Map(), v = /* @__PURE__ */ new Map(), De = /* @__PURE__ */ new Map();
396
- function Oe(e) {
397
- let t = Ee.get(e);
421
+ ]), Ae = /* @__PURE__ */ new Map(), y = /* @__PURE__ */ new Map(), je = /* @__PURE__ */ new Map();
422
+ function Me(e) {
423
+ let t = Ae.get(e);
398
424
  return t || (t = new Intl.DateTimeFormat("en-US", {
399
425
  timeZone: e,
400
426
  hourCycle: "h23",
@@ -404,34 +430,34 @@ function Oe(e) {
404
430
  hour: "numeric",
405
431
  minute: "numeric",
406
432
  second: "numeric"
407
- }), Ee.set(e, t)), t;
433
+ }), Ae.set(e, t)), t;
408
434
  }
409
- function y(e) {
435
+ function b(e) {
410
436
  if (!e) return !1;
411
437
  try {
412
- return Oe(e), !0;
438
+ return Me(e), !0;
413
439
  } catch {
414
440
  return !1;
415
441
  }
416
442
  }
417
- function b(e, t) {
418
- if (!Number.isFinite(t) || Te.has(e)) return 0;
419
- let n = De.get(e);
420
- n || (n = /* @__PURE__ */ new Map(), De.set(e, n));
421
- let r = Math.floor(t / _), i = n.get(r);
422
- return i || (i = ke(e, r * _), n.size >= we && n.clear(), n.set(r, i)), t < i.change ? i.before : i.after;
423
- }
424
- function ke(e, t) {
425
- let n = x(e, t), r = t + _ - g, i = x(e, r);
443
+ function x(e, t) {
444
+ if (!Number.isFinite(t) || ke.has(e)) return 0;
445
+ let n = je.get(e);
446
+ n || (n = /* @__PURE__ */ new Map(), je.set(e, n));
447
+ let r = Math.floor(t / De), i = n.get(r);
448
+ return i || (i = Ne(e, r * De), n.size >= Oe && n.clear(), n.set(r, i)), t < i.change ? i.before : i.after;
449
+ }
450
+ function Ne(e, t) {
451
+ let n = Pe(e, t), r = t + De - v, i = Pe(e, r);
426
452
  if (i === n) return {
427
453
  before: n,
428
454
  change: Infinity,
429
455
  after: i
430
456
  };
431
457
  let a = t;
432
- for (; r - a > g;) {
433
- let t = a + Math.floor((r - a) / g / 2) * g;
434
- x(e, t) === n ? a = t : r = t;
458
+ for (; r - a > v;) {
459
+ let t = a + Math.floor((r - a) / v / 2) * v;
460
+ Pe(e, t) === n ? a = t : r = t;
435
461
  }
436
462
  return {
437
463
  before: n,
@@ -439,11 +465,11 @@ function ke(e, t) {
439
465
  after: i
440
466
  };
441
467
  }
442
- function x(e, t) {
443
- let n = Math.floor(t / g), r = `${e}|${n}`, i = v.get(r);
468
+ function Pe(e, t) {
469
+ let n = Math.floor(t / v), r = `${e}|${n}`, i = y.get(r);
444
470
  if (i !== void 0) return i;
445
- let a = n * g, o = 1970, s = 1, c = 1, l = 0, u = 0, d = 0;
446
- for (let t of Oe(e).formatToParts(new Date(a))) {
471
+ let a = n * v, o = 1970, s = 1, c = 1, l = 0, u = 0, d = 0;
472
+ for (let t of Me(e).formatToParts(new Date(a))) {
447
473
  let e = Number(t.value);
448
474
  switch (t.type) {
449
475
  case "year":
@@ -466,24 +492,24 @@ function x(e, t) {
466
492
  break;
467
493
  }
468
494
  }
469
- let f = Math.round((Date.UTC(o, s - 1, c, l, u, d) - a) / h);
470
- return v.size >= Ce && v.clear(), v.set(r, f), f;
495
+ let f = Math.round((Date.UTC(o, s - 1, c, l, u, d) - a) / _);
496
+ return y.size >= Ee && y.clear(), y.set(r, f), f;
471
497
  }
472
498
  function S(e) {
473
- return e === 0 || typeof e == "string" && Te.has(e);
499
+ return e === 0 || typeof e == "string" && ke.has(e);
474
500
  }
475
501
  function C(e, t) {
476
- return e === null ? -new Date(t).getTimezoneOffset() : typeof e == "number" ? e : b(e, t);
502
+ return e === null ? -new Date(t).getTimezoneOffset() : typeof e == "number" ? e : x(e, t);
477
503
  }
478
- function Ae(e, t) {
479
- let n = e - C(t, e - Se) * h;
480
- if (n + C(t, n) * h === e) return n;
481
- let r = e - C(t, e + Se) * h;
482
- return r + C(t, r) * h === e ? r : n;
504
+ function Fe(e, t) {
505
+ let n = e - C(t, e - Te) * _;
506
+ if (n + C(t, n) * _ === e) return n;
507
+ let r = e - C(t, e + Te) * _;
508
+ return r + C(t, r) * _ === e ? r : n;
483
509
  }
484
- var je = /* @__PURE__ */ new Map();
485
- function Me(e, t, n) {
486
- let r = `${e}|${JSON.stringify(t)}|${n === null ? "local" : typeof n == "number" ? `fixed:${n}` : n}`, i = je.get(r);
510
+ var Ie = /* @__PURE__ */ new Map();
511
+ function Le(e, t, n) {
512
+ let r = `${e}|${JSON.stringify(t)}|${n === null ? "local" : typeof n == "number" ? `fixed:${n}` : n}`, i = Ie.get(r);
487
513
  if (i) return i;
488
514
  let a = n === null ? void 0 : typeof n == "number" ? "UTC" : n, o;
489
515
  try {
@@ -497,12 +523,12 @@ function Me(e, t, n) {
497
523
  timeZone: a
498
524
  });
499
525
  }
500
- let s = typeof n == "number" ? n * h : 0;
501
- return i = (e) => o.format(new Date(e + s)), je.set(r, i), i;
526
+ let s = typeof n == "number" ? n * _ : 0;
527
+ return i = (e) => o.format(new Date(e + s)), Ie.set(r, i), i;
502
528
  }
503
529
  //#endregion
504
530
  //#region src/utils/time.ts
505
- var Ne = {
531
+ var Re = {
506
532
  "1s": 1e3,
507
533
  "5s": 5e3,
508
534
  "15s": 15e3,
@@ -536,9 +562,9 @@ var Ne = {
536
562
  d: 864e5,
537
563
  w: 6048e5,
538
564
  M: 2592e6
539
- }, Pe = /^([1-9]\d*)([smhdwM])$/;
565
+ }, ze = /^([1-9]\d*)([smhdwM])$/;
540
566
  function T(e) {
541
- let t = Pe.exec(e);
567
+ let t = ze.exec(e);
542
568
  if (!t) return null;
543
569
  let n = Number(t[1]);
544
570
  return Number.isSafeInteger(n) ? {
@@ -546,23 +572,23 @@ function T(e) {
546
572
  unit: t[2]
547
573
  } : null;
548
574
  }
549
- var Fe = 1e6;
550
- function Ie(e) {
575
+ var Be = 1e6;
576
+ function Ve(e) {
551
577
  let t = /^([1-9]\d*)T$/.exec(e);
552
578
  if (!t) return null;
553
579
  let n = Number(t[1]);
554
- return Number.isSafeInteger(n) && n <= Fe ? n : null;
580
+ return Number.isSafeInteger(n) && n <= Be ? n : null;
555
581
  }
556
- function Le(e) {
582
+ function He(e) {
557
583
  return T(e) !== null;
558
584
  }
559
585
  function E(e) {
560
- let t = Ne[e];
586
+ let t = Re[e];
561
587
  if (t !== void 0) return t;
562
588
  let n = T(e);
563
589
  return n ? n.count * w[n.unit] : NaN;
564
590
  }
565
- function Re(e, t) {
591
+ function Ue(e, t) {
566
592
  let n = new Date(e), r = E(t);
567
593
  return r >= 864e5 ? n.toLocaleDateString(void 0, {
568
594
  month: "short",
@@ -576,11 +602,11 @@ function Re(e, t) {
576
602
  second: "2-digit"
577
603
  });
578
604
  }
579
- function ze(e, t) {
605
+ function We(e, t) {
580
606
  let n = E(t);
581
607
  return Math.floor(e / n) * n;
582
608
  }
583
- function Be(e, t) {
609
+ function Ge(e, t) {
584
610
  if (t === null) {
585
611
  let t = new Date(e);
586
612
  return {
@@ -600,11 +626,11 @@ function Be(e, t) {
600
626
  minutes: n.getUTCMinutes()
601
627
  };
602
628
  }
603
- function Ve(e) {
629
+ function Ke(e) {
604
630
  return e.hours === 0 && e.minutes === 0;
605
631
  }
606
- var He = 20 * 36e5;
607
- function Ue(e) {
632
+ var qe = 20 * 36e5;
633
+ function Je(e) {
608
634
  let t = Math.min(e.length, 64);
609
635
  if (t < 2) return;
610
636
  let n = le(e), r = Infinity;
@@ -612,40 +638,40 @@ function Ue(e) {
612
638
  let t = Math.abs(e[i].time - e[i - 1].time) * n;
613
639
  t > 0 && t < r && (r = t);
614
640
  }
615
- return r === Infinity ? void 0 : r >= He;
641
+ return r === Infinity ? void 0 : r >= qe;
616
642
  }
617
- function We(e, t = Date.now()) {
643
+ function Ye(e, t = Date.now()) {
618
644
  let n = C(e, t), r = n >= 0 ? "+" : "-", i = Math.abs(n), a = Math.floor(i / 60), o = i % 60;
619
645
  return o === 0 ? `UTC${r}${a}` : `UTC${r}${a}:${String(o).padStart(2, "0")}`;
620
646
  }
621
- var Ge = Date.UTC(1970, 0, 5), Ke = w.m, D = w.d, qe = 24, Je = {
647
+ var Xe = Date.UTC(1970, 0, 5), Ze = w.m, D = w.d, Qe = 24, $e = {
622
648
  count: 1,
623
649
  unit: "m"
624
- }, Ye = 256, O = /* @__PURE__ */ new Map();
625
- function Xe(e) {
650
+ }, et = 256, O = /* @__PURE__ */ new Map();
651
+ function tt(e) {
626
652
  let t = O.get(e);
627
- return t || (t = T(e) ?? Je, O.size >= Ye && O.clear(), O.set(e, t)), t;
653
+ return t || (t = T(e) ?? $e, O.size >= et && O.clear(), O.set(e, t)), t;
628
654
  }
629
- function Ze({ unit: e }) {
655
+ function nt({ unit: e }) {
630
656
  return e === "d" || e === "w" || e === "M";
631
657
  }
632
- function Qe(e) {
633
- return e.unit === "h" ? e.count > 1 && qe % e.count === 0 : Ze(e);
658
+ function rt(e) {
659
+ return e.unit === "h" ? e.count > 1 && Qe % e.count === 0 : nt(e);
634
660
  }
635
- function $e(e) {
636
- return Qe(Xe(e));
661
+ function it(e) {
662
+ return rt(tt(e));
637
663
  }
638
- function et(e) {
639
- return Ze(Xe(e));
664
+ function at(e) {
665
+ return nt(tt(e));
640
666
  }
641
- function tt(e) {
667
+ function ot(e) {
642
668
  return e !== void 0 && !S(e);
643
669
  }
644
- function nt(e, t, n = 1) {
645
- let r = Xe(t), i = typeof n == "number" ? n : n.weekStartsOn ?? 1, a = typeof n == "number" ? void 0 : n.timeZone;
646
- return !tt(a) || !Qe(r) || typeof n == "object" && n.dates && e % D === 0 ? rt(e, r, i) : Ae(rt(e + C(a, e) * Ke, r, i), a);
670
+ function st(e, t, n = 1) {
671
+ let r = tt(t), i = typeof n == "number" ? n : n.weekStartsOn ?? 1, a = typeof n == "number" ? void 0 : n.timeZone;
672
+ return !ot(a) || !rt(r) || typeof n == "object" && n.dates && e % D === 0 ? ct(e, r, i) : Fe(ct(e + C(a, e) * Ze, r, i), a);
647
673
  }
648
- function rt(e, { count: t, unit: n }, r) {
674
+ function ct(e, { count: t, unit: n }, r) {
649
675
  if (n === "s" || n === "m" || n === "h" || n === "d") {
650
676
  let r = t * w[n];
651
677
  return Math.floor(e / r) * r;
@@ -654,68 +680,68 @@ function rt(e, { count: t, unit: n }, r) {
654
680
  if (n === "w") {
655
681
  let e = (i.getUTCDay() - r + 7) % 7, n = Date.UTC(i.getUTCFullYear(), i.getUTCMonth(), i.getUTCDate() - e);
656
682
  if (t <= 1) return n;
657
- let a = Math.floor((n - Ge) / (7 * D));
658
- return Ge + Math.floor(a / t) * t * 7 * D;
683
+ let a = Math.floor((n - Xe) / (7 * D));
684
+ return Xe + Math.floor(a / t) * t * 7 * D;
659
685
  }
660
686
  let a = i.getUTCFullYear() * 12 + i.getUTCMonth(), o = Math.floor(a / t) * t;
661
687
  return Date.UTC(Math.floor(o / 12), o % 12, 1);
662
688
  }
663
- function it(e, t, n) {
664
- return e % D === 0 ? 0 : n && nt(e, "1d", { timeZone: n }) === e ? n : t;
689
+ function lt(e, t, n) {
690
+ return e % D === 0 ? 0 : n && st(e, "1d", { timeZone: n }) === e ? n : t;
665
691
  }
666
- function at(e, t, n) {
667
- return Be(e, it(e, t, n));
692
+ function ut(e, t, n) {
693
+ return Ge(e, lt(e, t, n));
668
694
  }
669
695
  //#endregion
670
696
  //#region src/utils/precision.ts
671
- var ot = 64, k = /* @__PURE__ */ new Map();
672
- function st(e, t) {
697
+ var dt = 64, k = /* @__PURE__ */ new Map();
698
+ function ft(e, t) {
673
699
  let n = `${e}|${t}`, r = k.get(n);
674
- return r || (k.size >= ot && k.clear(), r = new Intl.NumberFormat(e, {
700
+ return r || (k.size >= dt && k.clear(), r = new Intl.NumberFormat(e, {
675
701
  minimumFractionDigits: t,
676
702
  maximumFractionDigits: t
677
703
  }), k.set(n, r)), r;
678
704
  }
679
- function ct(e, t, n) {
680
- return t.formatPrice ? t.formatPrice(e) : A(e, n ?? t.pricePrecision ?? lt(t.priceRange.min, t.priceRange.max), t.numberLocale ?? "en-US");
705
+ function pt(e, t, n) {
706
+ return t.formatPrice ? t.formatPrice(e) : A(e, n ?? t.pricePrecision ?? mt(t.priceRange.min, t.priceRange.max), t.numberLocale ?? "en-US");
681
707
  }
682
708
  function A(e, t = 2, n = "en-US") {
683
- return st(n, t).format(e);
709
+ return ft(n, t).format(e);
684
710
  }
685
- function lt(e, t) {
711
+ function mt(e, t) {
686
712
  if (!(t > e) || !Number.isFinite(e) || !Number.isFinite(t)) return 2;
687
713
  let n = se(e, t, 8);
688
714
  return n > 0 && n < 1 ? Math.ceil(-Math.log10(n)) + 1 : 2;
689
715
  }
690
- var ut = 2;
691
- function dt(e, t, n, r = 2, i = "en-US") {
716
+ var ht = 2;
717
+ function gt(e, t, n, r = 2, i = "en-US") {
692
718
  if ((t === "percentage" || t === "indexedTo100") && n && n !== 0) {
693
719
  if (t === "percentage") {
694
- let t = (e / n - 1) * 100, r = A(Math.abs(t), ut, i);
695
- return `${r === A(0, ut, i) ? "" : t > 0 ? "+" : "-"}${r}%`;
720
+ let t = (e / n - 1) * 100, r = A(Math.abs(t), ht, i);
721
+ return `${r === A(0, ht, i) ? "" : t > 0 ? "+" : "-"}${r}%`;
696
722
  }
697
723
  return A(e / n * 100, 2, i);
698
724
  }
699
725
  return A(e, r, i);
700
726
  }
701
- function ft(e, t, n = 1) {
727
+ function _t(e, t, n = 1) {
702
728
  let r = Number.isInteger(n) && n > 1 ? n : 1;
703
729
  if (!Number.isFinite(e) || !Number.isInteger(t) || t < 2) return String(e);
704
730
  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)) : "";
705
731
  return `${e < 0 && a > 0 ? "-" : ""}${o}'${String(c).padStart(l, "0")}${u}`;
706
732
  }
707
- function pt(e) {
733
+ function vt(e) {
708
734
  if (!Number.isInteger(e.denominator) || e.denominator < 2) return null;
709
735
  let t = Number.isInteger(e.subDenominator) && (e.subDenominator ?? 0) > 1 ? e.subDenominator : 1;
710
736
  return 1 / (e.denominator * t);
711
737
  }
712
- function mt(e) {
713
- return e ? typeof e == "function" ? e : pt(e) === null ? null : (t) => ft(t, e.denominator, e.subDenominator) : null;
738
+ function yt(e) {
739
+ return e ? typeof e == "function" ? e : vt(e) === null ? null : (t) => _t(t, e.denominator, e.subDenominator) : null;
714
740
  }
715
- function ht(e) {
741
+ function bt(e) {
716
742
  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);
717
743
  }
718
- function gt(e) {
744
+ function xt(e) {
719
745
  let t = 0;
720
746
  for (let n of e) {
721
747
  let e = n.toString(), r = e.indexOf(".");
@@ -725,7 +751,7 @@ function gt(e) {
725
751
  }
726
752
  //#endregion
727
753
  //#region src/utils/priceSource.ts
728
- var _t = [
754
+ var St = [
729
755
  "close",
730
756
  "open",
731
757
  "high",
@@ -735,10 +761,10 @@ var _t = [
735
761
  "ohlc4",
736
762
  "hlcc4"
737
763
  ];
738
- function vt(e) {
739
- return typeof e == "string" && _t.includes(e);
764
+ function Ct(e) {
765
+ return typeof e == "string" && St.includes(e);
740
766
  }
741
- function yt(e, t) {
767
+ function wt(e, t) {
742
768
  switch (t) {
743
769
  case "open": return e.open;
744
770
  case "high": return e.high;
@@ -750,13 +776,13 @@ function yt(e, t) {
750
776
  default: return e.close;
751
777
  }
752
778
  }
753
- var bt = /^ind:([^:]+):(.+)$/;
754
- function xt(e, t) {
779
+ var Tt = /^ind:([^:]+):(.+)$/;
780
+ function Et(e, t) {
755
781
  return `ind:${e}:${t}`;
756
782
  }
757
- function St(e) {
783
+ function Dt(e) {
758
784
  if (typeof e != "string") return null;
759
- let t = bt.exec(e);
785
+ let t = Tt.exec(e);
760
786
  return t ? {
761
787
  instanceId: t[1],
762
788
  key: t[2]
@@ -764,11 +790,11 @@ function St(e) {
764
790
  }
765
791
  //#endregion
766
792
  //#region src/utils/resample.ts
767
- var Ct = 864e5, wt = 6e4;
768
- function Tt(e, t, n = 1) {
769
- let r = Et(e, t, n), i = [], a = null;
793
+ var Ot = 864e5, kt = 6e4;
794
+ function At(e, t, n = 1) {
795
+ let r = jt(e, t, n), i = [], a = null;
770
796
  for (let n of e) {
771
- let e = nt(n.time, t, r);
797
+ let e = st(n.time, t, r);
772
798
  a === null || e !== a.time ? (a = {
773
799
  time: e,
774
800
  open: n.open,
@@ -780,29 +806,29 @@ function Tt(e, t, n = 1) {
780
806
  }
781
807
  return i;
782
808
  }
783
- function Et(e, t, n) {
784
- return typeof n == "number" || n.timeZone === void 0 || n.dates !== void 0 || S(n.timeZone) || !$e(t) ? n : {
809
+ function jt(e, t, n) {
810
+ return typeof n == "number" || n.timeZone === void 0 || n.dates !== void 0 || S(n.timeZone) || !it(t) ? n : {
785
811
  ...n,
786
- dates: Ue(e) === !0
812
+ dates: Je(e) === !0
787
813
  };
788
814
  }
789
- var j = (e) => e === "s" || e === "m" || e === "h" || e === "d";
790
- function Dt(e, t) {
815
+ var Mt = (e) => e === "s" || e === "m" || e === "h" || e === "d";
816
+ function Nt(e, t) {
791
817
  let n = T(e), r = T(t);
792
818
  if (!n || !r) return !1;
793
819
  let i = E(e);
794
- return n.unit === "d" && n.count > 1 ? !1 : j(r.unit) ? j(n.unit) && E(t) % i === 0 : n.unit === r.unit ? r.count % n.count === 0 : j(n.unit) && Ct % i === 0;
820
+ return n.unit === "d" && n.count > 1 ? !1 : Mt(r.unit) ? Mt(n.unit) && E(t) % i === 0 : n.unit === r.unit ? r.count % n.count === 0 : Mt(n.unit) && Ot % i === 0;
795
821
  }
796
- function Ot(e, t) {
822
+ function Pt(e, t) {
797
823
  let n = E(e);
798
- if (!(n < Ct)) return !0;
824
+ if (!(n < Ot)) return !0;
799
825
  let r = (/* @__PURE__ */ new Date()).getUTCFullYear();
800
- return [Date.UTC(r, 0, 1), Date.UTC(r, 6, 1)].every((e) => C(t, e) * wt % n === 0);
826
+ return [Date.UTC(r, 0, 1), Date.UTC(r, 6, 1)].every((e) => C(t, e) * kt % n === 0);
801
827
  }
802
- function kt(e, t, n = {}) {
803
- let { timeZone: r } = n, i = r !== void 0 && !S(r) && $e(e) ? r : void 0, a = null, o = 0;
828
+ function Ft(e, t, n = {}) {
829
+ let { timeZone: r } = n, i = r !== void 0 && !S(r) && it(e) ? r : void 0, a = null, o = 0;
804
830
  for (let n of t) {
805
- if (!Dt(n, e) || i !== void 0 && !Ot(n, i)) continue;
831
+ if (!Nt(n, e) || i !== void 0 && !Pt(n, i)) continue;
806
832
  let t = E(n);
807
833
  t > o && (a = n, o = t);
808
834
  }
@@ -810,19 +836,19 @@ function kt(e, t, n = {}) {
810
836
  }
811
837
  //#endregion
812
838
  //#region src/utils/symbols.ts
813
- function At(e, t) {
839
+ function It(e, t) {
814
840
  if (!e) return 0;
815
841
  if (e === t) return 1e3;
816
842
  if (e.startsWith(t)) return 600 - Math.min(100, e.length - t.length);
817
843
  let n = e.indexOf(t);
818
844
  return n >= 0 ? 300 - Math.min(100, n) : 0;
819
845
  }
820
- function jt(e, t, n = 50, r) {
846
+ function Lt(e, t, n = 50, r) {
821
847
  let i = t.trim().toUpperCase();
822
848
  if (!i) return e.slice(0, n);
823
849
  let a = [];
824
850
  for (let t of e) {
825
- let e = Math.max(At(t.symbol.toUpperCase(), i), At((t.description ?? "").toUpperCase(), i) * .8);
851
+ let e = Math.max(It(t.symbol.toUpperCase(), i), It((t.description ?? "").toUpperCase(), i) * .8);
826
852
  e > 0 && a.push({
827
853
  info: t,
828
854
  score: e + (r?.(t) ?? 0)
@@ -830,7 +856,7 @@ function jt(e, t, n = 50, r) {
830
856
  }
831
857
  return a.sort((e, t) => t.score - e.score || e.info.symbol.localeCompare(t.info.symbol)), a.slice(0, n).map((e) => e.info);
832
858
  }
833
- function Mt(e) {
859
+ function Rt(e) {
834
860
  let t = typeof e == "number" ? e : Number(e);
835
861
  if (!Number.isFinite(t) || t <= 0) return 0;
836
862
  for (let e = 0; e <= 12; e++) {
@@ -839,10 +865,10 @@ function Mt(e) {
839
865
  }
840
866
  return 12;
841
867
  }
842
- function Nt(e) {
868
+ function zt(e) {
843
869
  return e?.timeZone ?? e?.timezone;
844
870
  }
845
- function M(e) {
871
+ function j(e) {
846
872
  let t = /^(\d{1,2}):(\d{2})$/.exec(e.trim());
847
873
  if (!t) return null;
848
874
  let n = Number(t[1]), r = Number(t[2]);
@@ -850,26 +876,26 @@ function M(e) {
850
876
  }
851
877
  //#endregion
852
878
  //#region src/utils/marketStatus.ts
853
- var N = 864e5, P = 6e4, Pt = 8;
854
- function Ft(e, t) {
855
- let n = Nt(e), r = (e?.sessions ?? []).flatMap((e) => {
856
- let t = M(e.start), n = M(e.end);
879
+ var M = 864e5, N = 6e4, Bt = 8;
880
+ function Vt(e, t) {
881
+ let n = zt(e), r = (e?.sessions ?? []).flatMap((e) => {
882
+ let t = j(e.start), n = j(e.end);
857
883
  return t === null || n === null || t === n ? [] : [{
858
884
  start: t,
859
885
  end: n,
860
886
  days: Array.isArray(e.days) ? e.days : null
861
887
  }];
862
888
  });
863
- if (!n || !y(n) || r.length === 0 || !Number.isFinite(t)) return {
889
+ if (!n || !b(n) || r.length === 0 || !Number.isFinite(t)) return {
864
890
  state: "always",
865
891
  next: null
866
892
  };
867
- let i = b(n, t) * P, a = Math.floor((t + i) / N) * N, o = (e) => e - b(n, e - b(n, e - i) * P) * P, s = [];
868
- for (let e = -1; e <= Pt; e++) {
869
- let t = a + e * N, n = (Math.floor(t / N) + 4) % 7;
893
+ let i = x(n, t) * N, a = Math.floor((t + i) / M) * M, o = (e) => e - x(n, e - x(n, e - i) * N) * N, s = [];
894
+ for (let e = -1; e <= Bt; e++) {
895
+ let t = a + e * M, n = (Math.floor(t / M) + 4) % 7;
870
896
  for (let e of r) {
871
897
  if (e.days && !e.days.includes(n)) continue;
872
- let r = t + e.start * P, i = (e.end > e.start ? t : t + N) + e.end * P;
898
+ let r = t + e.start * N, i = (e.end > e.start ? t : t + M) + e.end * N;
873
899
  s.push([o(r), o(i)]);
874
900
  }
875
901
  }
@@ -892,15 +918,15 @@ function Ft(e, t) {
892
918
  }
893
919
  //#endregion
894
920
  //#region src/utils/drawingOptions.ts
895
- var It = 48, Lt = 2e3, Rt = 1e4;
896
- function zt(e) {
921
+ var Ht = 48, Ut = 2e3, Wt = 1e4;
922
+ function Gt(e) {
897
923
  if (!Array.isArray(e)) return;
898
924
  let t = [];
899
925
  for (let n of e) {
900
- if (t.length >= It) break;
926
+ if (t.length >= Ht) break;
901
927
  if (typeof n != "object" || !n) continue;
902
928
  let { value: e, visible: r, color: i } = n;
903
- if (typeof e != "number" || !Number.isFinite(e) || Math.abs(e) > Rt || r !== void 0 && typeof r != "boolean") continue;
929
+ if (typeof e != "number" || !Number.isFinite(e) || Math.abs(e) > Wt || r !== void 0 && typeof r != "boolean") continue;
904
930
  let a = {
905
931
  value: e,
906
932
  visible: r ?? !0
@@ -909,109 +935,109 @@ function zt(e) {
909
935
  }
910
936
  return t;
911
937
  }
912
- function Bt(e, t) {
938
+ function Kt(e, t) {
913
939
  switch (e.kind) {
914
940
  case "boolean": return typeof t == "boolean" ? t : void 0;
915
941
  case "number": return typeof t != "number" || !Number.isFinite(t) ? void 0 : Math.min(e.max ?? Infinity, Math.max(e.min ?? -Infinity, t));
916
942
  case "choice": return typeof t == "string" && e.choices.some((e) => e.value === t) ? t : void 0;
917
- case "levels": return zt(t);
918
- case "text": return typeof t == "string" ? t.slice(0, Lt) : void 0;
943
+ case "levels": return Gt(t);
944
+ case "text": return typeof t == "string" ? t.slice(0, Ut) : void 0;
919
945
  }
920
946
  }
921
- function Vt(e, t) {
947
+ function qt(e, t) {
922
948
  if (!e || typeof t != "object" || !t) return {};
923
949
  let n = {};
924
950
  for (let [r, i] of Object.entries(t)) {
925
951
  let t = e[r];
926
952
  if (!t) continue;
927
- let a = Bt(t, i);
953
+ let a = Kt(t, i);
928
954
  a !== void 0 && (n[r] = a);
929
955
  }
930
956
  return n;
931
957
  }
932
- function Ht(e) {
958
+ function Jt(e) {
933
959
  return Array.isArray(e) ? e.map((e) => ({ ...e })) : e;
934
960
  }
935
- function Ut(e, t, n) {
961
+ function Yt(e, t, n) {
936
962
  let r = e?.[n];
937
- return r ? Ht((t && n in t ? Bt(r, t[n]) : void 0) ?? r.default) : t?.[n];
963
+ return r ? Jt((t && n in t ? Kt(r, t[n]) : void 0) ?? r.default) : t?.[n];
938
964
  }
939
- function Wt(e, t) {
965
+ function Xt(e, t) {
940
966
  let n = {};
941
- for (let r of Object.keys(e ?? {})) n[r] = Ut(e, t, r);
967
+ for (let r of Object.keys(e ?? {})) n[r] = Yt(e, t, r);
942
968
  return n;
943
969
  }
944
970
  //#endregion
945
971
  //#region src/utils/drawingStyle.ts
946
- var Gt = [
972
+ var Zt = [
947
973
  "solid",
948
974
  "dashed",
949
975
  "dotted"
950
- ], Kt = 64, qt = 2e3, Jt = 20, Yt = 200;
951
- function F(e, t, n) {
976
+ ], Qt = 64, $t = 2e3, en = 20, tn = 200;
977
+ function nn(e, t, n) {
952
978
  return typeof e == "number" && Number.isFinite(e) ? Math.min(n, Math.max(t, e)) : void 0;
953
979
  }
954
- function Xt(e) {
955
- return typeof e == "string" && e.length > 0 && e.length <= Kt ? e : void 0;
980
+ function rn(e) {
981
+ return typeof e == "string" && e.length > 0 && e.length <= Qt ? e : void 0;
956
982
  }
957
- function Zt(e) {
983
+ function an(e) {
958
984
  if (typeof e != "object" || !e) return {};
959
- let t = e, n = {}, r = Xt(t.color);
985
+ let t = e, n = {}, r = rn(t.color);
960
986
  r !== void 0 && (n.color = r);
961
- let i = F(t.lineWidth, .5, Jt);
962
- i !== void 0 && (n.lineWidth = i), Gt.includes(t.lineStyle) && (n.lineStyle = t.lineStyle);
963
- let a = Xt(t.fillColor);
987
+ let i = nn(t.lineWidth, .5, en);
988
+ i !== void 0 && (n.lineWidth = i), Zt.includes(t.lineStyle) && (n.lineStyle = t.lineStyle);
989
+ let a = rn(t.fillColor);
964
990
  a !== void 0 && (n.fillColor = a);
965
- let o = F(t.fillOpacity, 0, 1);
991
+ let o = nn(t.fillOpacity, 0, 1);
966
992
  o !== void 0 && (n.fillOpacity = o);
967
- let s = F(t.fontSize, 6, Yt);
968
- return s !== void 0 && (n.fontSize = s), typeof t.text == "string" && (n.text = t.text.slice(0, qt)), n;
993
+ let s = nn(t.fontSize, 6, tn);
994
+ return s !== void 0 && (n.fontSize = s), typeof t.text == "string" && (n.text = t.text.slice(0, $t)), n;
969
995
  }
970
996
  //#endregion
971
997
  //#region src/utils/chartTypeOptions.ts
972
- var I = (e) => typeof e == "number" && Number.isFinite(e) && e > 0, L = (e, t, n) => typeof e == "number" && Number.isInteger(e) && e >= t && e <= n, R = (e) => typeof e == "object" && !!e && !Array.isArray(e);
973
- function Qt(e) {
974
- if (!R(e)) return {};
998
+ var P = (e) => typeof e == "number" && Number.isFinite(e) && e > 0, on = (e, t, n) => typeof e == "number" && Number.isInteger(e) && e >= t && e <= n, F = (e) => typeof e == "object" && !!e && !Array.isArray(e);
999
+ function sn(e) {
1000
+ if (!F(e)) return {};
975
1001
  let t = {};
976
- if (R(e.renko)) {
1002
+ if (F(e.renko)) {
977
1003
  let { boxSize: n, atrPeriod: r } = e.renko;
978
1004
  t.renko = {
979
- ...I(n) || n === "atr" ? { boxSize: n } : {},
980
- ...L(r, 1, 500) ? { atrPeriod: r } : {}
1005
+ ...P(n) || n === "atr" ? { boxSize: n } : {},
1006
+ ...on(r, 1, 500) ? { atrPeriod: r } : {}
981
1007
  };
982
1008
  }
983
- if (R(e.lineBreak)) {
1009
+ if (F(e.lineBreak)) {
984
1010
  let { lines: n } = e.lineBreak;
985
- t.lineBreak = L(n, 1, 10) ? { lines: n } : {};
1011
+ t.lineBreak = on(n, 1, 10) ? { lines: n } : {};
986
1012
  }
987
- if (R(e.kagi)) {
1013
+ if (F(e.kagi)) {
988
1014
  let { reversal: n, reversalType: r } = e.kagi;
989
1015
  t.kagi = {
990
- ...I(n) ? { reversal: n } : {},
1016
+ ...P(n) ? { reversal: n } : {},
991
1017
  ...r === "percent" || r === "price" ? { reversalType: r } : {}
992
1018
  };
993
1019
  }
994
- if (R(e.pointAndFigure)) {
1020
+ if (F(e.pointAndFigure)) {
995
1021
  let { boxSize: n, reversal: r } = e.pointAndFigure;
996
1022
  t.pointAndFigure = {
997
- ...I(n) || n === "auto" ? { boxSize: n } : {},
998
- ...L(r, 1, 10) ? { reversal: r } : {}
1023
+ ...P(n) || n === "auto" ? { boxSize: n } : {},
1024
+ ...on(r, 1, 10) ? { reversal: r } : {}
999
1025
  };
1000
1026
  }
1001
- if (R(e.rangeBars)) {
1027
+ if (F(e.rangeBars)) {
1002
1028
  let { range: n } = e.rangeBars;
1003
- t.rangeBars = I(n) || n === "auto" ? { range: n } : {};
1029
+ t.rangeBars = P(n) || n === "auto" ? { range: n } : {};
1004
1030
  }
1005
1031
  return t;
1006
1032
  }
1007
1033
  //#endregion
1008
1034
  //#region src/constants/themes.ts
1009
- var $t = "'Cascadia Mono', 'SF Mono', ui-monospace, Menlo, Consolas, monospace", en = "-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif", tn = {
1010
- family: $t,
1035
+ var cn = "'Cascadia Mono', 'SF Mono', ui-monospace, Menlo, Consolas, monospace", ln = "-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif", un = {
1036
+ family: cn,
1011
1037
  sizeSmall: 11,
1012
1038
  sizeMedium: 13,
1013
1039
  sizeLarge: 15
1014
- }, z = {
1040
+ }, I = {
1015
1041
  amber: "#f2a93b",
1016
1042
  up: "#1c9e6d",
1017
1043
  down: "#e8505b",
@@ -1022,57 +1048,67 @@ var $t = "'Cascadia Mono', 'SF Mono', ui-monospace, Menlo, Consolas, monospace",
1022
1048
  rose: "#e25592",
1023
1049
  neutral: "#7d8696",
1024
1050
  ink: "#131416"
1025
- }, nn = .22;
1026
- function B(e) {
1027
- return m(e, nn);
1028
- }
1029
- var rn = "#fbfaf6", V = "#1b1d21", an = "#131416", H = "#e6e3dc", on = "#1f7a5c", sn = "#b8423f", cn = "#4fae8a", ln = "#e2706b", un = "#6a6966", dn = "#8d8a84", fn = [
1030
- z.blue,
1031
- z.ochre,
1032
- z.violet,
1033
- z.cyan,
1034
- z.rose
1035
- ], pn = {
1051
+ }, dn = .22;
1052
+ function L(e) {
1053
+ return m(e, dn);
1054
+ }
1055
+ var fn = "#fbfaf6", R = "#1b1d21", pn = "#131416", z = "#e6e3dc", mn = "#1f7a5c", hn = "#b8423f", gn = "#4fae8a", _n = "#e2706b", vn = "#6a6966", yn = "#8d8a84", bn = {
1056
+ ceiling: "#FF00FF",
1057
+ floor: "#00FFFF",
1058
+ reference: "#FFD700"
1059
+ }, xn = {
1060
+ ceiling: "#a21caf",
1061
+ floor: "#0e7490",
1062
+ reference: "#8a6a00"
1063
+ }, Sn = [
1064
+ I.blue,
1065
+ I.ochre,
1066
+ I.violet,
1067
+ I.cyan,
1068
+ I.rose
1069
+ ], Cn = {
1036
1070
  name: "dark",
1037
- background: an,
1038
- text: H,
1071
+ background: pn,
1072
+ text: z,
1039
1073
  textSecondary: "#8d8b86",
1040
1074
  grid: "#1d1e21",
1041
- crosshair: un,
1042
- candleUp: cn,
1043
- candleDown: ln,
1044
- candleUpWick: cn,
1045
- candleDownWick: ln,
1046
- lineColor: H,
1047
- areaTopColor: m(H, .14),
1048
- areaBottomColor: m(H, 0),
1049
- volumeUp: m(H, .14),
1050
- volumeDown: m(H, .08),
1075
+ crosshair: vn,
1076
+ candleUp: gn,
1077
+ candleDown: _n,
1078
+ candleUpWick: gn,
1079
+ candleDownWick: _n,
1080
+ lineColor: z,
1081
+ areaTopColor: m(z, .14),
1082
+ areaBottomColor: m(z, 0),
1083
+ volumeUp: m(z, .14),
1084
+ volumeDown: m(z, .08),
1051
1085
  axisLine: "#2a2b2f",
1052
1086
  axisLabel: "#a9a6a0",
1053
1087
  axisLabelBackground: "#232427",
1054
- font: tn
1055
- }, mn = {
1088
+ font: un,
1089
+ priceLimits: bn
1090
+ }, wn = {
1056
1091
  name: "light",
1057
- background: rn,
1058
- text: V,
1092
+ background: fn,
1093
+ text: R,
1059
1094
  textSecondary: "#6b6f76",
1060
1095
  grid: "#ece8df",
1061
- crosshair: dn,
1062
- candleUp: on,
1063
- candleDown: sn,
1064
- candleUpWick: on,
1065
- candleDownWick: sn,
1066
- lineColor: V,
1067
- areaTopColor: m(V, .12),
1068
- areaBottomColor: m(V, 0),
1069
- volumeUp: m(V, .13),
1070
- volumeDown: m(V, .08),
1096
+ crosshair: yn,
1097
+ candleUp: mn,
1098
+ candleDown: hn,
1099
+ candleUpWick: mn,
1100
+ candleDownWick: hn,
1101
+ lineColor: R,
1102
+ areaTopColor: m(R, .12),
1103
+ areaBottomColor: m(R, 0),
1104
+ volumeUp: m(R, .13),
1105
+ volumeDown: m(R, .08),
1071
1106
  axisLine: "#cfcac0",
1072
1107
  axisLabel: "#4a4e57",
1073
1108
  axisLabelBackground: "#eeebe3",
1074
- font: tn
1075
- }, hn = {
1109
+ font: un,
1110
+ priceLimits: xn
1111
+ }, B = {
1076
1112
  name: "terminal",
1077
1113
  background: "#0E0E0E",
1078
1114
  text: "#C0C0C0",
@@ -1086,8 +1122,8 @@ var rn = "#fbfaf6", V = "#1b1d21", an = "#131416", H = "#e6e3dc", on = "#1f7a5c"
1086
1122
  lineColor: "#3D8BFD",
1087
1123
  areaTopColor: "rgba(61, 139, 253, 0.3)",
1088
1124
  areaBottomColor: "rgba(61, 139, 253, 0.0)",
1089
- volumeUp: B("#00FF87"),
1090
- volumeDown: B("#FF3B4D"),
1125
+ volumeUp: L("#00FF87"),
1126
+ volumeDown: L("#FF3B4D"),
1091
1127
  axisLine: "#1A1A1A",
1092
1128
  axisLabel: "#8A8A8A",
1093
1129
  axisLabelBackground: "#1A1A1A",
@@ -1097,11 +1133,11 @@ var rn = "#fbfaf6", V = "#1b1d21", an = "#131416", H = "#e6e3dc", on = "#1f7a5c"
1097
1133
  sizeMedium: 12,
1098
1134
  sizeLarge: 14
1099
1135
  }
1100
- }, gn = new Set([hn.volumeUp, hn.volumeDown]);
1101
- function _n(e) {
1136
+ }, Tn = new Set([B.volumeUp, B.volumeDown]);
1137
+ function V(e) {
1102
1138
  let t = (e, t) => {
1103
- if (!gn.has(e)) return e;
1104
- let n = B(t);
1139
+ if (!Tn.has(e)) return e;
1140
+ let n = L(t);
1105
1141
  return n === t ? e : n;
1106
1142
  };
1107
1143
  return {
@@ -1111,67 +1147,67 @@ function _n(e) {
1111
1147
  }
1112
1148
  //#endregion
1113
1149
  //#region src/utils/chartStyle.ts
1114
- var vn = [
1150
+ var En = [
1115
1151
  "solid",
1116
1152
  "dashed",
1117
1153
  "dotted"
1118
- ], yn = 20, bn = 64, xn = 2, Sn = [
1154
+ ], Dn = 20, On = 64, kn = 2, An = [
1119
1155
  /^#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i,
1120
1156
  /^[a-z]{3,30}$/i,
1121
1157
  /^(?:rgba?|hsla?|hwb|lab|lch|oklab|oklch|color)\([0-9a-z.,%/\s-]*\)$/i
1122
1158
  ];
1123
- function Cn(e) {
1124
- return typeof e == "string" && e.length <= bn && Sn.some((t) => t.test(e.trim()));
1159
+ function H(e) {
1160
+ return typeof e == "string" && e.length <= On && An.some((t) => t.test(e.trim()));
1125
1161
  }
1126
- function wn(e, t) {
1162
+ function jn(e, t) {
1127
1163
  switch (e) {
1128
- case "color": return Cn(t);
1129
- case "lineStyle": return vn.includes(t);
1130
- case "width": return typeof t == "number" && Number.isFinite(t) && t > 0 && t <= yn;
1164
+ case "color": return H(t);
1165
+ case "lineStyle": return En.includes(t);
1166
+ case "width": return typeof t == "number" && Number.isFinite(t) && t > 0 && t <= Dn;
1131
1167
  case "boolean": return typeof t == "boolean";
1132
1168
  }
1133
1169
  }
1134
- function Tn(e) {
1170
+ function Mn(e) {
1135
1171
  return Object.prototype.hasOwnProperty.call(t, e);
1136
1172
  }
1137
- function En(e) {
1173
+ function Nn(e) {
1138
1174
  let n = {}, r = [];
1139
1175
  if (typeof e != "object" || !e || Array.isArray(e)) return {
1140
1176
  overrides: {},
1141
1177
  rejected: r
1142
1178
  };
1143
- for (let [i, a] of Object.entries(e)) Tn(i) ? a === null ? n[i] = null : wn(t[i], a) ? n[i] = a : r.push(i) : r.push(i);
1179
+ for (let [i, a] of Object.entries(e)) Mn(i) ? a === null ? n[i] = null : jn(t[i], a) ? n[i] = a : r.push(i) : r.push(i);
1144
1180
  return {
1145
1181
  overrides: n,
1146
1182
  rejected: r
1147
1183
  };
1148
1184
  }
1149
- function Dn(e) {
1185
+ function Pn(e) {
1150
1186
  if (typeof e != "object" || !e || Array.isArray(e)) return null;
1151
1187
  let { background: t, separator: n } = e, r = {
1152
- ...Cn(t) ? { background: t } : {},
1153
- ...Cn(n) ? { separator: n } : {}
1188
+ ...H(t) ? { background: t } : {},
1189
+ ...H(n) ? { separator: n } : {}
1154
1190
  };
1155
1191
  return Object.keys(r).length > 0 ? r : null;
1156
1192
  }
1157
- var On = /^[A-Za-z0-9_]{1,32}$/;
1158
- function kn(e) {
1193
+ var Fn = /^[A-Za-z0-9_]{1,32}$/;
1194
+ function In(e) {
1159
1195
  if (typeof e != "object" || !e || Array.isArray(e)) return;
1160
1196
  let t = {};
1161
1197
  for (let [n, r] of Object.entries(e)) {
1162
- if (!On.test(n) || typeof r != "object" || !r) continue;
1198
+ if (!Fn.test(n) || typeof r != "object" || !r) continue;
1163
1199
  let { lineStyle: e, visible: i } = r, a = {
1164
- ...vn.includes(e) ? { lineStyle: e } : {},
1200
+ ...En.includes(e) ? { lineStyle: e } : {},
1165
1201
  ...typeof i == "boolean" ? { visible: i } : {}
1166
1202
  };
1167
1203
  Object.keys(a).length > 0 && (t[n] = a);
1168
1204
  }
1169
1205
  return Object.keys(t).length > 0 ? t : void 0;
1170
1206
  }
1171
- function An(e, t, n = 1) {
1207
+ function Ln(e, t, n = 1) {
1172
1208
  return e === "solid" ? [] : e === "dotted" ? [n, n * 2] : [...t];
1173
1209
  }
1174
- function jn(e, t, n) {
1210
+ function Rn(e, t, n) {
1175
1211
  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;
1176
1212
  return {
1177
1213
  up: o,
@@ -1179,7 +1215,7 @@ function jn(e, t, n) {
1179
1215
  wickUp: r("wickUpColor") ?? t("series.candlestick.wickUpColor") ?? (i === void 0 ? e.candleUpWick : o),
1180
1216
  wickDown: r("wickDownColor") ?? t("series.candlestick.wickDownColor") ?? (a === void 0 ? e.candleDownWick : s),
1181
1217
  line: r("color") ?? r("lineColor") ?? t("series.line.color") ?? e.lineColor,
1182
- lineWidth: r("lineWidth") ?? t("series.line.lineWidth") ?? xn,
1218
+ lineWidth: r("lineWidth") ?? t("series.line.lineWidth") ?? kn,
1183
1219
  top: r("topColor") ?? t("series.area.topColor") ?? e.areaTopColor,
1184
1220
  bottom: r("bottomColor") ?? t("series.area.bottomColor") ?? e.areaBottomColor
1185
1221
  };
@@ -1192,8 +1228,8 @@ function U(e, t, n) {
1192
1228
  width: e(`${t}.width`) ?? n.width
1193
1229
  };
1194
1230
  }
1195
- function Mn(e, t, n) {
1196
- let { style: r, ...i } = e, a = n, o = (e) => a[e], s = jn(i, o, t), c = o("background.color") ?? i.background, l = (e, t) => o(e) ?? t, u = (e) => o(e) ?? null, d = {
1231
+ function zn(e, t, n) {
1232
+ let { style: r, ...i } = e, a = n, o = (e) => a[e], s = Rn(i, o, t), c = o("background.color") ?? i.background, l = (e, t) => o(e) ?? t, u = (e) => o(e) ?? null, d = {
1197
1233
  panes: {
1198
1234
  background: l("panes.background", c),
1199
1235
  separator: l("panes.separatorColor", i.axisLine),
@@ -1292,7 +1328,7 @@ function Mn(e, t, n) {
1292
1328
  style: d
1293
1329
  };
1294
1330
  }
1295
- var Nn = {
1331
+ var Bn = {
1296
1332
  "background.color": (e) => e.background,
1297
1333
  "panes.background": (e, t) => t.panes.background,
1298
1334
  "panes.separatorColor": (e, t) => t.panes.separator,
@@ -1311,8 +1347,8 @@ var Nn = {
1311
1347
  "lastPrice.downColor": (e, t) => t.lastPrice.down,
1312
1348
  "lastPrice.style": (e, t) => t.lastPrice.style,
1313
1349
  "lastPrice.width": (e, t) => t.lastPrice.width,
1314
- "volume.upColor": (e) => _n(e).up,
1315
- "volume.downColor": (e) => _n(e).down,
1350
+ "volume.upColor": (e) => V(e).up,
1351
+ "volume.downColor": (e) => V(e).down,
1316
1352
  "sessionBreaks.color": (e, t) => t.sessionBreaks.color,
1317
1353
  "sessionBreaks.style": (e, t) => t.sessionBreaks.style,
1318
1354
  "sessionBreaks.width": (e, t) => t.sessionBreaks.width,
@@ -1329,16 +1365,16 @@ var Nn = {
1329
1365
  "tradeZones.lossColor": (e, t) => t.tradeZones.loss,
1330
1366
  "tradeZones.activeColor": (e, t) => t.tradeZones.active,
1331
1367
  "drawings.handleColor": (e, t) => t.drawings.handle
1332
- }, Pn = {
1368
+ }, Vn = {
1333
1369
  visible: "visible",
1334
1370
  color: "color",
1335
1371
  style: "style",
1336
1372
  width: "width"
1337
1373
  };
1338
- function Fn(e, t, n, r = "candlestick") {
1374
+ function Hn(e, t, n, r = "candlestick") {
1339
1375
  let i = n.split(".");
1340
1376
  if (i[0] === "series") {
1341
- let n = jn(e, (e) => t[e], i[1]);
1377
+ let n = Rn(e, (e) => t[e], i[1]);
1342
1378
  switch (i[2]) {
1343
1379
  case "upColor": return n.up;
1344
1380
  case "downColor": return n.down;
@@ -1351,12 +1387,12 @@ function Fn(e, t, n, r = "candlestick") {
1351
1387
  case "bottomColor": return n.bottom;
1352
1388
  }
1353
1389
  }
1354
- let a = Mn(e, r, t), o = a.style;
1355
- 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]]] : Nn[n]?.(a, o) ?? null;
1390
+ let a = zn(e, r, t), o = a.style;
1391
+ return i[0] === "grid" || i[0] === "crosshair" && (i[1] === "horizontal" || i[1] === "vertical") ? (i[0] === "grid" ? o.grid : o.crosshair)[i[1]][Vn[i[2]]] : Bn[n]?.(a, o) ?? null;
1356
1392
  }
1357
1393
  //#endregion
1358
1394
  //#region src/constants/defaults.ts
1359
- var In = {
1395
+ var Un = {
1360
1396
  autoScale: !0,
1361
1397
  rightMargin: 5,
1362
1398
  minBarSpacing: 2,
@@ -1367,7 +1403,7 @@ var In = {
1367
1403
  vLineStyle: "solid"
1368
1404
  },
1369
1405
  crosshair: { mode: "magnet" }
1370
- }, Ln = [
1406
+ }, Wn = [
1371
1407
  "1s",
1372
1408
  "1m",
1373
1409
  "3m",
@@ -1384,7 +1420,7 @@ var In = {
1384
1420
  "3d",
1385
1421
  "1w",
1386
1422
  "1M"
1387
- ], Rn = [
1423
+ ], Gn = [
1388
1424
  "1m",
1389
1425
  "5m",
1390
1426
  "15m",
@@ -1398,7 +1434,7 @@ var In = {
1398
1434
  "3M",
1399
1435
  "6M",
1400
1436
  "12M"
1401
- ], zn = [
1437
+ ], Kn = [
1402
1438
  "1m",
1403
1439
  "5m",
1404
1440
  "15m",
@@ -1408,7 +1444,7 @@ var In = {
1408
1444
  "1d",
1409
1445
  "1w",
1410
1446
  "1M"
1411
- ], Bn = [
1447
+ ], qn = [
1412
1448
  "1m",
1413
1449
  "5m",
1414
1450
  "15m",
@@ -1416,7 +1452,7 @@ var In = {
1416
1452
  "4h",
1417
1453
  "1d",
1418
1454
  "1w"
1419
- ], Vn = 8, Hn = 2, Un = 70, Wn = 30, Gn = 60, Kn = 120, qn = (1 + Math.sqrt(5)) / 2, Jn = [
1455
+ ], Jn = 8, Yn = 2, Xn = 70, Zn = 30, Qn = 60, $n = 120, er = (1 + Math.sqrt(5)) / 2, tr = [
1420
1456
  1,
1421
1457
  2,
1422
1458
  3,
@@ -1428,8 +1464,8 @@ var In = {
1428
1464
  55,
1429
1465
  89
1430
1466
  ];
1431
- function Yn(e, t, n = 1) {
1432
- return Math.round(e * qn ** (t / n));
1467
+ function nr(e, t, n = 1) {
1468
+ return Math.round(e * er ** (t / n));
1433
1469
  }
1434
1470
  //#endregion
1435
1471
  //#region src/i18n/en.ts
@@ -1536,7 +1572,7 @@ var W = {
1536
1572
  error: "Error",
1537
1573
  numberDecimalSeparator: ".",
1538
1574
  numberGroupSeparator: ","
1539
- }, Xn = {
1575
+ }, rr = {
1540
1576
  candlestick: "Nến",
1541
1577
  line: "Đường",
1542
1578
  area: "Vùng",
@@ -1639,20 +1675,20 @@ var W = {
1639
1675
  error: "Lỗi",
1640
1676
  numberDecimalSeparator: ",",
1641
1677
  numberGroupSeparator: "."
1642
- }, G = new Map([["en", W], ["vi", Xn]]), K = "en", Zn = W;
1643
- function Qn(e) {
1644
- K = e, Zn = G.get(e) ?? W;
1678
+ }, G = new Map([["en", W], ["vi", rr]]), K = "en", ir = W;
1679
+ function ar(e) {
1680
+ K = e, ir = G.get(e) ?? W;
1645
1681
  }
1646
- function $n() {
1682
+ function or() {
1647
1683
  return K;
1648
1684
  }
1649
- function er(e) {
1650
- return Zn[e] ?? W[e] ?? e;
1685
+ function sr(e) {
1686
+ return ir[e] ?? W[e] ?? e;
1651
1687
  }
1652
- function tr(e, t) {
1688
+ function cr(e, t) {
1653
1689
  G.set(e, t);
1654
1690
  }
1655
- function nr(e) {
1691
+ function lr(e) {
1656
1692
  return G.get(e ?? K) ?? W;
1657
1693
  }
1658
1694
  function q(e, t = 2, n) {
@@ -1660,10 +1696,10 @@ function q(e, t = 2, n) {
1660
1696
  for (let e = l.length - 1, t = 0; e >= 0; e--, t++) t > 0 && t % 3 == 0 && (u = a + u), u = l[e] + u;
1661
1697
  return c && (u = "-" + u), s ? u + i + s : u;
1662
1698
  }
1663
- function rr(e) {
1699
+ function ur(e) {
1664
1700
  return q(e, 0, "vi");
1665
1701
  }
1666
- function ir(e, t) {
1702
+ function dr(e, t) {
1667
1703
  return e >= 1e9 ? q(e / 1e9, 2, t ?? K) + "B" : e >= 1e6 ? q(e / 1e6, 2, t ?? K) + "M" : e >= 1e3 ? q(e / 1e3, 2, t ?? K) + "K" : q(e, 0, t ?? K);
1668
1704
  }
1669
1705
  //#endregion
@@ -1675,7 +1711,7 @@ var J = {
1675
1711
  ceiling: "#D946EF",
1676
1712
  floor: "#06B6D4",
1677
1713
  reference: "#EAB308"
1678
- }, Y = "Asia/Ho_Chi_Minh", ar = [
1714
+ }, Y = "Asia/Ho_Chi_Minh", fr = [
1679
1715
  {
1680
1716
  name: "ATO",
1681
1717
  startTime: "09:00",
@@ -1706,7 +1742,7 @@ var J = {
1706
1742
  endTime: "14:45",
1707
1743
  type: "preClose"
1708
1744
  }
1709
- ], or = [
1745
+ ], pr = [
1710
1746
  {
1711
1747
  name: "Phiên 1",
1712
1748
  startTime: "09:15",
@@ -1737,7 +1773,7 @@ var J = {
1737
1773
  endTime: "15:00",
1738
1774
  type: "postClose"
1739
1775
  }
1740
- ], sr = [
1776
+ ], mr = [
1741
1777
  {
1742
1778
  name: "Phiên 1",
1743
1779
  startTime: "09:15",
@@ -1756,7 +1792,7 @@ var J = {
1756
1792
  endTime: "14:30",
1757
1793
  type: "continuous"
1758
1794
  }
1759
- ], cr = [
1795
+ ], hr = [
1760
1796
  {
1761
1797
  name: "ATO",
1762
1798
  startTime: "08:45",
@@ -1787,7 +1823,7 @@ var J = {
1787
1823
  endTime: "14:45",
1788
1824
  type: "preClose"
1789
1825
  }
1790
- ], lr = {
1826
+ ], gr = {
1791
1827
  type: "stock",
1792
1828
  exchange: "HOSE",
1793
1829
  currency: "VND",
@@ -1814,12 +1850,12 @@ var J = {
1814
1850
  ceilingPercent: 7,
1815
1851
  floorPercent: 7
1816
1852
  },
1817
- sessions: ar,
1853
+ sessions: fr,
1818
1854
  colorScheme: J
1819
- }, ur = {
1820
- ...lr,
1855
+ }, _r = {
1856
+ ...gr,
1821
1857
  priceSteps: void 0
1822
- }, dr = {
1858
+ }, vr = {
1823
1859
  type: "stock",
1824
1860
  exchange: "HNX",
1825
1861
  currency: "VND",
@@ -1832,9 +1868,9 @@ var J = {
1832
1868
  ceilingPercent: 10,
1833
1869
  floorPercent: 10
1834
1870
  },
1835
- sessions: or,
1871
+ sessions: pr,
1836
1872
  colorScheme: J
1837
- }, fr = {
1873
+ }, yr = {
1838
1874
  type: "stock",
1839
1875
  exchange: "UPCOM",
1840
1876
  currency: "VND",
@@ -1847,9 +1883,9 @@ var J = {
1847
1883
  ceilingPercent: 15,
1848
1884
  floorPercent: 15
1849
1885
  },
1850
- sessions: sr,
1886
+ sessions: mr,
1851
1887
  colorScheme: J
1852
- }, pr = {
1888
+ }, br = {
1853
1889
  type: "futures",
1854
1890
  exchange: "HNX",
1855
1891
  currency: "VND",
@@ -1863,14 +1899,14 @@ var J = {
1863
1899
  ceilingPercent: 7,
1864
1900
  floorPercent: 7
1865
1901
  },
1866
- sessions: cr,
1902
+ sessions: hr,
1867
1903
  colorScheme: J
1868
- }, mr = {
1904
+ }, xr = {
1869
1905
  type: "crypto",
1870
1906
  currency: "USDT",
1871
1907
  pricePrecision: 2,
1872
1908
  priceLimits: { enabled: !1 }
1873
- }, hr = {
1909
+ }, Sr = {
1874
1910
  type: "stock",
1875
1911
  exchange: "NYSE",
1876
1912
  currency: "USD",
@@ -1899,7 +1935,7 @@ var J = {
1899
1935
  }
1900
1936
  ]
1901
1937
  };
1902
- function gr(e) {
1938
+ function Cr(e) {
1903
1939
  return {
1904
1940
  ...e,
1905
1941
  candleUp: J.up,
@@ -1909,25 +1945,25 @@ function gr(e) {
1909
1945
  };
1910
1946
  }
1911
1947
  var X = 1e-9;
1912
- function _r(e, t) {
1948
+ function wr(e, t) {
1913
1949
  let n = t.priceStep;
1914
1950
  for (let r of t.priceSteps ?? []) e + X >= r.from && (n = r.step);
1915
1951
  return n !== void 0 && n > 0 ? n : void 0;
1916
1952
  }
1917
- function vr(e, t) {
1953
+ function Tr(e, t) {
1918
1954
  let n = t.priceStep;
1919
1955
  for (let r of t.priceSteps ?? []) e - X > r.from && (n = r.step);
1920
1956
  return n !== void 0 && n > 0 ? n : void 0;
1921
1957
  }
1922
1958
  function Z(e, t, n = "nearest") {
1923
- let r = _r(e, t);
1959
+ let r = wr(e, t);
1924
1960
  if (r === void 0 || !Number.isFinite(e)) return e;
1925
1961
  let i = e / r, a = n === "down" ? Math.floor(i + X) : n === "up" ? Math.ceil(i - X) : Math.round(i);
1926
- return Number((a * r).toFixed(Mt(r)));
1962
+ return Number((a * r).toFixed(Rt(r)));
1927
1963
  }
1928
- function yr(e, t) {
1964
+ function Er(e, t) {
1929
1965
  if (!t.priceLimits?.enabled || !t.priceLimits.ceilingPercent) return null;
1930
- 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 = _r(i, t);
1966
+ 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 = wr(i, t);
1931
1967
  if (s === void 0) return {
1932
1968
  ceiling: a,
1933
1969
  floor: o,
@@ -1940,14 +1976,14 @@ function yr(e, t) {
1940
1976
  reference: i
1941
1977
  };
1942
1978
  let l = Z(a, t, "down"), u = Z(o, t, "up");
1943
- return l <= i && (l = c), u >= i && (u = Z(i - (vr(i, t) ?? s), t)), u <= 0 && (u = i), {
1979
+ return l <= i && (l = c), u >= i && (u = Z(i - (Tr(i, t) ?? s), t)), u <= 0 && (u = i), {
1944
1980
  ceiling: l,
1945
1981
  floor: u,
1946
1982
  reference: i
1947
1983
  };
1948
1984
  }
1949
1985
  var Q = (e, t) => Math.round(e * t * 1e9) / 1e9;
1950
- function br(e, t) {
1986
+ function Dr(e, t) {
1951
1987
  let n = Math.round(Math.log10(t));
1952
1988
  return {
1953
1989
  ...e,
@@ -1963,11 +1999,11 @@ function br(e, t) {
1963
1999
  }
1964
2000
  };
1965
2001
  }
1966
- var xr = 6e4, Sr = 864e5;
1967
- function Cr(e, t) {
2002
+ var Or = 6e4, kr = 864e5;
2003
+ function Ar(e, t) {
1968
2004
  let n, r;
1969
2005
  if (t) {
1970
- let i = new Date(e + b(t, e) * xr);
2006
+ let i = new Date(e + x(t, e) * Or);
1971
2007
  n = i.getUTCHours(), r = i.getUTCMinutes();
1972
2008
  } else {
1973
2009
  let t = new Date(e);
@@ -1975,31 +2011,31 @@ function Cr(e, t) {
1975
2011
  }
1976
2012
  return `${String(n).padStart(2, "0")}:${String(r).padStart(2, "0")}`;
1977
2013
  }
1978
- function wr(e, t = Date.now(), n) {
1979
- if (n !== void 0 && !y(n)) return null;
1980
- let r = Cr(t, n);
2014
+ function jr(e, t = Date.now(), n) {
2015
+ if (n !== void 0 && !b(n)) return null;
2016
+ let r = Ar(t, n);
1981
2017
  for (let t of e) if (r >= t.startTime && r < t.endTime) return t;
1982
2018
  return null;
1983
2019
  }
1984
- var $ = (e) => String(e).padStart(2, "0"), Tr = (e) => {
2020
+ var $ = (e) => String(e).padStart(2, "0"), Mr = (e) => {
1985
2021
  let t = new Date(e);
1986
2022
  return `${t.getUTCFullYear()}-${$(t.getUTCMonth() + 1)}-${$(t.getUTCDate())}`;
1987
- }, Er = 4, Dr = 7 * 36e5;
1988
- function Or(e, t, n) {
1989
- let r = Date.UTC(e, t - 1, 1), i = 1 + (Er - new Date(r).getUTCDay() + 7) % 7, a = Date.UTC(e, t - 1, i + 14), o = (e) => {
2023
+ }, Nr = 4, Pr = 7 * 36e5;
2024
+ function Fr(e, t, n) {
2025
+ let r = Date.UTC(e, t - 1, 1), i = 1 + (Nr - new Date(r).getUTCDay() + 7) % 7, a = Date.UTC(e, t - 1, i + 14), o = (e) => {
1990
2026
  let t = new Date(e).getUTCDay();
1991
- return t === 0 || t === 6 || (n?.(Tr(e)) ?? !1);
2027
+ return t === 0 || t === 6 || (n?.(Mr(e)) ?? !1);
1992
2028
  };
1993
- for (; o(a);) a -= Sr;
1994
- return Tr(a);
2029
+ for (; o(a);) a -= kr;
2030
+ return Mr(a);
1995
2031
  }
1996
- function kr(e, t) {
1997
- let n = Tr(e + Dr), r = (e, n) => ({
2032
+ function Ir(e, t) {
2033
+ let n = Mr(e + Pr), r = (e, n) => ({
1998
2034
  symbol: `VN30F${$(e % 100)}${$(n)}`,
1999
2035
  year: e,
2000
2036
  month: n,
2001
- lastTradingDay: Or(e, n, t)
2002
- }), i = (e) => e.month === 12 ? r(e.year + 1, 1) : r(e.year, e.month + 1), a = new Date(e + Dr), o = r(a.getUTCFullYear(), a.getUTCMonth() + 1);
2037
+ lastTradingDay: Fr(e, n, t)
2038
+ }), i = (e) => e.month === 12 ? r(e.year + 1, 1) : r(e.year, e.month + 1), a = new Date(e + Pr), o = r(a.getUTCFullYear(), a.getUTCMonth() + 1);
2003
2039
  n > o.lastTradingDay && (o = i(o));
2004
2040
  let s = [o, i(o)], c = i(s[1]);
2005
2041
  for (; s.length < 4;) c.month % 3 == 0 && s.push(c), c = i(c);
@@ -2007,7 +2043,7 @@ function kr(e, t) {
2007
2043
  }
2008
2044
  //#endregion
2009
2045
  //#region src/icons/iconSet.ts
2010
- var Ar = {
2046
+ var Lr = {
2011
2047
  cursor: { d: "M6 3.5L18.5 12.5L12.6 13.6L9.7 19.4z" },
2012
2048
  trendingUp: { d: "M3 17L9 11L13 14.5L21 6.5M15 6.5H21V12.5" },
2013
2049
  trendingDown: { d: "M3 7L9 13L13 9.5L21 17.5M15 17.5H21V11.5" },
@@ -2141,7 +2177,7 @@ var Ar = {
2141
2177
  ]
2142
2178
  ] },
2143
2179
  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" }
2144
- }, jr = {
2180
+ }, Rr = {
2145
2181
  trendLine: {
2146
2182
  d: "M5 18L19 6",
2147
2183
  dots: [[5, 18], [19, 6]]
@@ -2494,7 +2530,7 @@ var Ar = {
2494
2530
  ],
2495
2531
  dash: "M12 3V21"
2496
2532
  }
2497
- }, Mr = {
2533
+ }, zr = {
2498
2534
  candlestick: {
2499
2535
  d: "M8 3.5V7M8 16V20.5M16 5V8.5M16 15.5V19",
2500
2536
  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"]
@@ -2561,21 +2597,21 @@ var Ar = {
2561
2597
  "M16 4.5h3v6h-3z"
2562
2598
  ]
2563
2599
  }
2564
- }, Nr = 1.75, Pr = .22, Fr = /* @__PURE__ */ new WeakMap();
2565
- function Ir(e) {
2566
- let t = Fr.get(e);
2600
+ }, Br = 1.75, Vr = .22, Hr = /* @__PURE__ */ new WeakMap();
2601
+ function Ur(e) {
2602
+ let t = Hr.get(e);
2567
2603
  if (t) return t;
2568
2604
  let n = "";
2569
- e.soft && (n += `<path d="${e.soft}" fill="currentColor" fill-opacity="${Pr}" stroke="none"/>`);
2605
+ e.soft && (n += `<path d="${e.soft}" fill="currentColor" fill-opacity="${Vr}" stroke="none"/>`);
2570
2606
  for (let t of e.fills ?? []) n += `<path d="${t}" fill="currentColor" stroke="none"/>`;
2571
2607
  e.d && (n += `<path d="${e.d}"/>`), e.dash && (n += `<path d="${e.dash}" stroke-dasharray="2 2.5"/>`);
2572
- for (let [t, r, i = Nr] of e.dots ?? []) n += `<circle cx="${t}" cy="${r}" r="${i}" fill="currentColor" stroke="none"/>`;
2573
- return Fr.set(e, n), n;
2608
+ for (let [t, r, i = Br] of e.dots ?? []) n += `<circle cx="${t}" cy="${r}" r="${i}" fill="currentColor" stroke="none"/>`;
2609
+ return Hr.set(e, n), n;
2574
2610
  }
2575
- function Lr(e, t) {
2576
- 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">${Ir(e)}</svg>`;
2611
+ function Wr(e, t) {
2612
+ 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">${Ur(e)}</svg>`;
2577
2613
  }
2578
2614
  //#endregion
2579
- export { t as CHART_STYLE_KEYS, Mr as CHART_TYPE_ICONS, hn as DARK_TERMINAL, pn as DARK_THEME, Hn as DEFAULT_BAR_SPACING, Vn as DEFAULT_BAR_WIDTH, In as DEFAULT_CHART_OPTIONS, n as DEFAULT_DRAWING_STYLE, $t as DEFAULT_FONT_FAMILY, Kn as DEFAULT_PANEL_HEIGHT, o as DEFAULT_RECONNECT, i as DEFAULT_SIGNAL_STYLE, s as DEFAULT_STREAM_CONFIG, Bn as DEFAULT_TIMEFRAME_FAVORITES, a as DEFAULT_TRADE_ZONE_STYLE, r as DEFAULT_TRADING_CONFIG, jr as DRAWING_TOOL_ICONS, Jn as FIBONACCI, or as HNX_SESSIONS, ar as HOSE_SESSIONS, Nr as ICON_DOT_RADIUS, Pr as ICON_SOFT_OPACITY, mn as LIGHT_THEME, e as LayerType, mr as MARKET_CRYPTO, dr as MARKET_HNX, lr as MARKET_HOSE, ur as MARKET_HOSE_ETF, hr as MARKET_NYSE, fr as MARKET_UPCOM, pr as MARKET_VN30F, Gn as MIN_PANEL_HEIGHT, ce as MS_TIME_THRESHOLD, qn as PHI, Un as PRICE_AXIS_WIDTH, _t as PRICE_SOURCES, en as SANS_FONT_FAMILY, z as TC_PALETTE, fn as TC_SERIES_COLORS, Ln as TIMEFRAMES_CRYPTO, zn as TIMEFRAMES_FOREX, Rn as TIMEFRAMES_STOCK, Wn as TIME_AXIS_HEIGHT, Ar as UI_ICONS, sr as UPCOM_SESSIONS, cr as VN30F_SESSIONS, J as VN_COLORS, nn as VOLUME_ALPHA, ze as alignToTimeframe, lt as autoPricePrecision, at as barDateParts, it as barDateZone, le as barTimeUnit, Ue as barsAreDaily, Fn as chartStyleValue, ne as clamp, yr as computePriceLimits, ge as computePriceRange, se as computeTickStep, gr as createVNTheme, gt as detectPrecision, Ut as drawingOption, W as en, pe as findBarIndex, he as fitPriceRange, ft as formatFraction, q as formatNumber, A as formatPrice, dt as formatPriceScaleLabel, Re as formatTimestamp, rr as formatVND, ht as formatVolume, ir as formatVolumeLoc, pt as fractionTick, wr as getCurrentSession, $n as getLocale, nr as getLocaleStrings, ve as hexToRgba, Lr as iconSvg, xt as indicatorSource, ie as inverseLerp, Ve as isDateOnly, vt as isPriceSource, Le as isTimeFrame, S as isUtcTimeZone, y as isValidTimeZone, re as lerp, xe as lerpColor, An as lineDash, Ft as marketStatus, _e as mergeBar, oe as niceNumber, de as normalizeBar, ue as normalizeBarTime, C as offsetAt, me as padPriceRange, St as parseIndicatorSource, T as parseTimeframe, Yn as phiStep, kt as pickBaseTimeframe, mt as priceFormatterFor, _r as priceStepAt, ct as priceTagText, jt as rankSymbols, En as readChartStyleOverrides, Qt as readChartTypeOptions, kn as readIndicatorPlotStyles, te as readNews, Dn as readPaneStyle, l as readQuote, tr as registerLocale, Tt as resampleBars, Mn as resolveChartTheme, Wt as resolveDrawingOptions, _n as resolveVolumeColors, Z as roundToPriceStep, ae as roundToStep, Vt as sanitizeDrawingOptions, Zt as sanitizeDrawingStyle, br as scaleMarketPrices, M as sessionMinute, Qn as setLocale, fe as sliceVisibleData, yt as sourcePrice, Mt as stepDecimals, Nt as symbolTimeZone, er as t, Ie as tickBarCount, Be as timeParts, nt as timeframeBucketStart, $e as timeframeFollowsDays, et as timeframeSpansDays, E as timeframeToMs, We as tzLabel, Xn as vi, kr as vn30fContracts, Or as vn30fLastTradingDay, B as volumeColor, Ae as wallToUtc, m as withAlpha, b as zoneOffsetMinutes, Me as zonedDateFormatter };
2615
+ export { t as CHART_STYLE_KEYS, zr as CHART_TYPE_ICONS, bn as DARK_PRICE_LIMITS, B as DARK_TERMINAL, Cn as DARK_THEME, Yn as DEFAULT_BAR_SPACING, Jn as DEFAULT_BAR_WIDTH, Un as DEFAULT_CHART_OPTIONS, n as DEFAULT_DRAWING_STYLE, cn as DEFAULT_FONT_FAMILY, $n as DEFAULT_PANEL_HEIGHT, o as DEFAULT_RECONNECT, i as DEFAULT_SIGNAL_STYLE, s as DEFAULT_STREAM_CONFIG, qn as DEFAULT_TIMEFRAME_FAVORITES, a as DEFAULT_TRADE_ZONE_STYLE, r as DEFAULT_TRADING_CONFIG, Rr as DRAWING_TOOL_ICONS, tr as FIBONACCI, pr as HNX_SESSIONS, fr as HOSE_SESSIONS, Br as ICON_DOT_RADIUS, Vr as ICON_SOFT_OPACITY, xn as LIGHT_PRICE_LIMITS, wn as LIGHT_THEME, e as LayerType, xr as MARKET_CRYPTO, vr as MARKET_HNX, gr as MARKET_HOSE, _r as MARKET_HOSE_ETF, Sr as MARKET_NYSE, yr as MARKET_UPCOM, br as MARKET_VN30F, Qn as MIN_PANEL_HEIGHT, ce as MS_TIME_THRESHOLD, er as PHI, Xn as PRICE_AXIS_WIDTH, St as PRICE_SOURCES, ln as SANS_FONT_FAMILY, I as TC_PALETTE, Sn as TC_SERIES_COLORS, Wn as TIMEFRAMES_CRYPTO, Kn as TIMEFRAMES_FOREX, Gn as TIMEFRAMES_STOCK, Zn as TIME_AXIS_HEIGHT, Lr as UI_ICONS, mr as UPCOM_SESSIONS, hr as VN30F_SESSIONS, J as VN_COLORS, dn as VOLUME_ALPHA, We as alignToTimeframe, mt as autoPricePrecision, ut as barDateParts, lt as barDateZone, le as barTimeUnit, Je as barsAreDaily, Hn as chartStyleValue, ne as clamp, Er as computePriceLimits, ge as computePriceRange, se as computeTickStep, g as contrastRatio, Cr as createVNTheme, xt as detectPrecision, Yt as drawingOption, W as en, pe as findBarIndex, he as fitPriceRange, _t as formatFraction, q as formatNumber, A as formatPrice, gt as formatPriceScaleLabel, Ue as formatTimestamp, ur as formatVND, bt as formatVolume, dr as formatVolumeLoc, vt as fractionTick, jr as getCurrentSession, or as getLocale, lr as getLocaleStrings, ve as hexToRgba, Wr as iconSvg, Et as indicatorSource, we as inkOn, ie as inverseLerp, Ke as isDateOnly, Ct as isPriceSource, He as isTimeFrame, S as isUtcTimeZone, b as isValidTimeZone, re as lerp, be as lerpColor, Ln as lineDash, Vt as marketStatus, _e as mergeBar, oe as niceNumber, de as normalizeBar, ue as normalizeBarTime, C as offsetAt, me as padPriceRange, Dt as parseIndicatorSource, T as parseTimeframe, nr as phiStep, Ft as pickBaseTimeframe, yt as priceFormatterFor, wr as priceStepAt, pt as priceTagText, Lt as rankSymbols, Nn as readChartStyleOverrides, sn as readChartTypeOptions, In as readIndicatorPlotStyles, te as readNews, Pn as readPaneStyle, l as readQuote, Ce as readableOn, cr as registerLocale, At as resampleBars, zn as resolveChartTheme, Xt as resolveDrawingOptions, V as resolveVolumeColors, Z as roundToPriceStep, ae as roundToStep, qt as sanitizeDrawingOptions, an as sanitizeDrawingStyle, Dr as scaleMarketPrices, j as sessionMinute, ar as setLocale, fe as sliceVisibleData, wt as sourcePrice, Rt as stepDecimals, zt as symbolTimeZone, sr as t, Ve as tickBarCount, Ge as timeParts, st as timeframeBucketStart, it as timeframeFollowsDays, at as timeframeSpansDays, E as timeframeToMs, Ye as tzLabel, rr as vi, Ir as vn30fContracts, Fr as vn30fLastTradingDay, L as volumeColor, Fe as wallToUtc, m as withAlpha, x as zoneOffsetMinutes, Le as zonedDateFormatter };
2580
2616
 
2581
2617
  //# sourceMappingURL=index.js.map