@tradecanvas/commons 1.26.0 → 1.27.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
@@ -346,7 +346,7 @@ function ve(e, t, n) {
346
346
  }
347
347
  //#endregion
348
348
  //#region src/utils/timezone.ts
349
- var h = 6e4, ye = 1440 * h, g = 15 * h, be = 8192, xe = 7 * ye, Se = 4096, Ce = new Set([
349
+ var h = 6e4, g = 1440 * h, _ = 15 * h, ye = 8192, be = 7 * g, xe = 4096, Se = new Set([
350
350
  "UTC",
351
351
  "Etc/UTC",
352
352
  "GMT",
@@ -357,9 +357,9 @@ var h = 6e4, ye = 1440 * h, g = 15 * h, be = 8192, xe = 7 * ye, Se = 4096, Ce =
357
357
  "Etc/Universal",
358
358
  "Zulu",
359
359
  "Etc/Zulu"
360
- ]), we = /* @__PURE__ */ new Map(), _ = /* @__PURE__ */ new Map(), Te = /* @__PURE__ */ new Map();
361
- function Ee(e) {
362
- let t = we.get(e);
360
+ ]), Ce = /* @__PURE__ */ new Map(), v = /* @__PURE__ */ new Map(), we = /* @__PURE__ */ new Map();
361
+ function Te(e) {
362
+ let t = Ce.get(e);
363
363
  return t || (t = new Intl.DateTimeFormat("en-US", {
364
364
  timeZone: e,
365
365
  hourCycle: "h23",
@@ -369,33 +369,33 @@ function Ee(e) {
369
369
  hour: "numeric",
370
370
  minute: "numeric",
371
371
  second: "numeric"
372
- }), we.set(e, t)), t;
372
+ }), Ce.set(e, t)), t;
373
373
  }
374
- function v(e) {
374
+ function Ee(e) {
375
375
  if (!e) return !1;
376
376
  try {
377
- return Ee(e), !0;
377
+ return Te(e), !0;
378
378
  } catch {
379
379
  return !1;
380
380
  }
381
381
  }
382
382
  function y(e, t) {
383
- if (!Number.isFinite(t) || Ce.has(e)) return 0;
384
- let n = Te.get(e);
385
- n || (n = /* @__PURE__ */ new Map(), Te.set(e, n));
386
- let r = Math.floor(t / xe), i = n.get(r);
387
- return i || (i = De(e, r * xe), n.size >= Se && n.clear(), n.set(r, i)), t < i.change ? i.before : i.after;
383
+ if (!Number.isFinite(t) || Se.has(e)) return 0;
384
+ let n = we.get(e);
385
+ n || (n = /* @__PURE__ */ new Map(), we.set(e, n));
386
+ let r = Math.floor(t / be), i = n.get(r);
387
+ return i || (i = De(e, r * be), n.size >= xe && n.clear(), n.set(r, i)), t < i.change ? i.before : i.after;
388
388
  }
389
389
  function De(e, t) {
390
- let n = b(e, t), r = t + xe - g, i = b(e, r);
390
+ let n = b(e, t), r = t + be - _, i = b(e, r);
391
391
  if (i === n) return {
392
392
  before: n,
393
393
  change: Infinity,
394
394
  after: i
395
395
  };
396
396
  let a = t;
397
- for (; r - a > g;) {
398
- let t = a + Math.floor((r - a) / g / 2) * g;
397
+ for (; r - a > _;) {
398
+ let t = a + Math.floor((r - a) / _ / 2) * _;
399
399
  b(e, t) === n ? a = t : r = t;
400
400
  }
401
401
  return {
@@ -405,10 +405,10 @@ function De(e, t) {
405
405
  };
406
406
  }
407
407
  function b(e, t) {
408
- let n = Math.floor(t / g), r = `${e}|${n}`, i = _.get(r);
408
+ let n = Math.floor(t / _), r = `${e}|${n}`, i = v.get(r);
409
409
  if (i !== void 0) return i;
410
- let a = n * g, o = 1970, s = 1, c = 1, l = 0, u = 0, d = 0;
411
- for (let t of Ee(e).formatToParts(new Date(a))) {
410
+ let a = n * _, o = 1970, s = 1, c = 1, l = 0, u = 0, d = 0;
411
+ for (let t of Te(e).formatToParts(new Date(a))) {
412
412
  let e = Number(t.value);
413
413
  switch (t.type) {
414
414
  case "year":
@@ -432,15 +432,15 @@ function b(e, t) {
432
432
  }
433
433
  }
434
434
  let f = Math.round((Date.UTC(o, s - 1, c, l, u, d) - a) / h);
435
- return _.size >= be && _.clear(), _.set(r, f), f;
435
+ return v.size >= ye && v.clear(), v.set(r, f), f;
436
436
  }
437
437
  function x(e, t) {
438
438
  return e === null ? -new Date(t).getTimezoneOffset() : typeof e == "number" ? e : y(e, t);
439
439
  }
440
440
  function Oe(e, t) {
441
- let n = e - x(t, e - ye) * h;
441
+ let n = e - x(t, e - g) * h;
442
442
  if (n + x(t, n) * h === e) return n;
443
- let r = e - x(t, e + ye) * h;
443
+ let r = e - x(t, e + g) * h;
444
444
  return r + x(t, r) * h === e ? r : n;
445
445
  }
446
446
  var ke = /* @__PURE__ */ new Map();
@@ -491,16 +491,16 @@ var je = {
491
491
  "3M": 7776e6,
492
492
  "6M": 15552e6,
493
493
  "12M": 31536e6
494
- }, S = {
494
+ }, Me = {
495
495
  s: 1e3,
496
496
  m: 6e4,
497
497
  h: 36e5,
498
498
  d: 864e5,
499
499
  w: 6048e5,
500
500
  M: 2592e6
501
- }, Me = /^([1-9]\d*)([smhdwM])$/;
502
- function C(e) {
503
- let t = Me.exec(e);
501
+ }, Ne = /^([1-9]\d*)([smhdwM])$/;
502
+ function S(e) {
503
+ let t = Ne.exec(e);
504
504
  if (!t) return null;
505
505
  let n = Number(t[1]);
506
506
  return Number.isSafeInteger(n) ? {
@@ -508,24 +508,24 @@ function C(e) {
508
508
  unit: t[2]
509
509
  } : null;
510
510
  }
511
- var Ne = 1e6;
512
- function Pe(e) {
511
+ var Pe = 1e6;
512
+ function Fe(e) {
513
513
  let t = /^([1-9]\d*)T$/.exec(e);
514
514
  if (!t) return null;
515
515
  let n = Number(t[1]);
516
- return Number.isSafeInteger(n) && n <= Ne ? n : null;
516
+ return Number.isSafeInteger(n) && n <= Pe ? n : null;
517
517
  }
518
- function Fe(e) {
519
- return C(e) !== null;
518
+ function Ie(e) {
519
+ return S(e) !== null;
520
520
  }
521
- function w(e) {
521
+ function C(e) {
522
522
  let t = je[e];
523
523
  if (t !== void 0) return t;
524
- let n = C(e);
525
- return n ? n.count * S[n.unit] : NaN;
524
+ let n = S(e);
525
+ return n ? n.count * Me[n.unit] : NaN;
526
526
  }
527
- function Ie(e, t) {
528
- let n = new Date(e), r = w(t);
527
+ function Le(e, t) {
528
+ let n = new Date(e), r = C(t);
529
529
  return r >= 864e5 ? n.toLocaleDateString(void 0, {
530
530
  month: "short",
531
531
  day: "numeric"
@@ -538,11 +538,11 @@ function Ie(e, t) {
538
538
  second: "2-digit"
539
539
  });
540
540
  }
541
- function Le(e, t) {
542
- let n = w(t);
541
+ function Re(e, t) {
542
+ let n = C(t);
543
543
  return Math.floor(e / n) * n;
544
544
  }
545
- function Re(e, t) {
545
+ function ze(e, t) {
546
546
  if (t === null) {
547
547
  let t = new Date(e);
548
548
  return {
@@ -562,11 +562,11 @@ function Re(e, t) {
562
562
  minutes: n.getUTCMinutes()
563
563
  };
564
564
  }
565
- function ze(e) {
565
+ function Be(e) {
566
566
  return e.hours === 0 && e.minutes === 0;
567
567
  }
568
- var Be = 20 * 36e5;
569
- function Ve(e) {
568
+ var Ve = 20 * 36e5;
569
+ function He(e) {
570
570
  let t = Math.min(e.length, 64);
571
571
  if (t < 2) return;
572
572
  let n = ce(e), r = Infinity;
@@ -574,78 +574,78 @@ function Ve(e) {
574
574
  let t = Math.abs(e[i].time - e[i - 1].time) * n;
575
575
  t > 0 && t < r && (r = t);
576
576
  }
577
- return r === Infinity ? void 0 : r >= Be;
577
+ return r === Infinity ? void 0 : r >= Ve;
578
578
  }
579
- function He(e, t = Date.now()) {
579
+ function Ue(e, t = Date.now()) {
580
580
  let n = x(e, t), r = n >= 0 ? "+" : "-", i = Math.abs(n), a = Math.floor(i / 60), o = i % 60;
581
581
  return o === 0 ? `UTC${r}${a}` : `UTC${r}${a}:${String(o).padStart(2, "0")}`;
582
582
  }
583
- var Ue = Date.UTC(1970, 0, 5);
584
- function We(e, t, n = 1) {
585
- let { count: r, unit: i } = C(t) ?? {
583
+ var We = Date.UTC(1970, 0, 5);
584
+ function Ge(e, t, n = 1) {
585
+ let { count: r, unit: i } = S(t) ?? {
586
586
  count: 1,
587
587
  unit: "m"
588
588
  };
589
589
  if (i === "s" || i === "m" || i === "h" || i === "d") {
590
- let t = r * S[i];
590
+ let t = r * Me[i];
591
591
  return Math.floor(e / t) * t;
592
592
  }
593
593
  let a = new Date(e);
594
594
  if (i === "w") {
595
- let e = S.d, t = (a.getUTCDay() - n + 7) % 7, i = Date.UTC(a.getUTCFullYear(), a.getUTCMonth(), a.getUTCDate() - t);
595
+ let e = Me.d, t = (a.getUTCDay() - n + 7) % 7, i = Date.UTC(a.getUTCFullYear(), a.getUTCMonth(), a.getUTCDate() - t);
596
596
  if (r <= 1) return i;
597
- let o = Math.floor((i - Ue) / (7 * e));
598
- return Ue + Math.floor(o / r) * r * 7 * e;
597
+ let o = Math.floor((i - We) / (7 * e));
598
+ return We + Math.floor(o / r) * r * 7 * e;
599
599
  }
600
600
  let o = a.getUTCFullYear() * 12 + a.getUTCMonth(), s = Math.floor(o / r) * r;
601
601
  return Date.UTC(Math.floor(s / 12), s % 12, 1);
602
602
  }
603
603
  //#endregion
604
604
  //#region src/utils/precision.ts
605
- var Ge = 64, T = /* @__PURE__ */ new Map();
606
- function Ke(e, t) {
607
- let n = `${e}|${t}`, r = T.get(n);
608
- return r || (T.size >= Ge && T.clear(), r = new Intl.NumberFormat(e, {
605
+ var Ke = 64, w = /* @__PURE__ */ new Map();
606
+ function qe(e, t) {
607
+ let n = `${e}|${t}`, r = w.get(n);
608
+ return r || (w.size >= Ke && w.clear(), r = new Intl.NumberFormat(e, {
609
609
  minimumFractionDigits: t,
610
610
  maximumFractionDigits: t
611
- }), T.set(n, r)), r;
611
+ }), w.set(n, r)), r;
612
612
  }
613
- function E(e, t = 2, n = "en-US") {
614
- return Ke(n, t).format(e);
613
+ function Je(e, t = 2, n = "en-US") {
614
+ return qe(n, t).format(e);
615
615
  }
616
- function qe(e, t) {
616
+ function Ye(e, t) {
617
617
  if (!(t > e) || !Number.isFinite(e) || !Number.isFinite(t)) return 2;
618
618
  let n = oe(e, t, 8);
619
619
  return n > 0 && n < 1 ? Math.ceil(-Math.log10(n)) + 1 : 2;
620
620
  }
621
- function Je(e, t, n, r = 2, i = "en-US") {
621
+ function Xe(e, t, n, r = 2, i = "en-US") {
622
622
  if ((t === "percentage" || t === "indexedTo100") && n && n !== 0) {
623
623
  if (t === "percentage") {
624
624
  let t = (e / n - 1) * 100;
625
625
  return `${t > 0 ? "+" : ""}${t.toFixed(2)}%`;
626
626
  }
627
- return E(e / n * 100, 2, i);
627
+ return Je(e / n * 100, 2, i);
628
628
  }
629
- return E(e, r, i);
629
+ return Je(e, r, i);
630
630
  }
631
- function Ye(e, t, n = 1) {
631
+ function Ze(e, t, n = 1) {
632
632
  let r = Number.isInteger(n) && n > 1 ? n : 1;
633
633
  if (!Number.isFinite(e) || !Number.isInteger(t) || t < 2) return String(e);
634
634
  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)) : "";
635
635
  return `${e < 0 && a > 0 ? "-" : ""}${o}'${String(c).padStart(l, "0")}${u}`;
636
636
  }
637
- function Xe(e) {
637
+ function Qe(e) {
638
638
  if (!Number.isInteger(e.denominator) || e.denominator < 2) return null;
639
639
  let t = Number.isInteger(e.subDenominator) && (e.subDenominator ?? 0) > 1 ? e.subDenominator : 1;
640
640
  return 1 / (e.denominator * t);
641
641
  }
642
- function Ze(e) {
643
- return e ? typeof e == "function" ? e : Xe(e) === null ? null : (t) => Ye(t, e.denominator, e.subDenominator) : null;
642
+ function $e(e) {
643
+ return e ? typeof e == "function" ? e : Qe(e) === null ? null : (t) => Ze(t, e.denominator, e.subDenominator) : null;
644
644
  }
645
- function Qe(e) {
645
+ function et(e) {
646
646
  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);
647
647
  }
648
- function $e(e) {
648
+ function tt(e) {
649
649
  let t = 0;
650
650
  for (let n of e) {
651
651
  let e = n.toString(), r = e.indexOf(".");
@@ -655,7 +655,7 @@ function $e(e) {
655
655
  }
656
656
  //#endregion
657
657
  //#region src/utils/priceSource.ts
658
- var et = [
658
+ var nt = [
659
659
  "close",
660
660
  "open",
661
661
  "high",
@@ -665,10 +665,10 @@ var et = [
665
665
  "ohlc4",
666
666
  "hlcc4"
667
667
  ];
668
- function tt(e) {
669
- return typeof e == "string" && et.includes(e);
668
+ function rt(e) {
669
+ return typeof e == "string" && nt.includes(e);
670
670
  }
671
- function nt(e, t) {
671
+ function it(e, t) {
672
672
  switch (t) {
673
673
  case "open": return e.open;
674
674
  case "high": return e.high;
@@ -680,13 +680,13 @@ function nt(e, t) {
680
680
  default: return e.close;
681
681
  }
682
682
  }
683
- var rt = /^ind:([^:]+):(.+)$/;
684
- function it(e, t) {
683
+ var at = /^ind:([^:]+):(.+)$/;
684
+ function ot(e, t) {
685
685
  return `ind:${e}:${t}`;
686
686
  }
687
- function at(e) {
687
+ function st(e) {
688
688
  if (typeof e != "string") return null;
689
- let t = rt.exec(e);
689
+ let t = at.exec(e);
690
690
  return t ? {
691
691
  instanceId: t[1],
692
692
  key: t[2]
@@ -694,11 +694,11 @@ function at(e) {
694
694
  }
695
695
  //#endregion
696
696
  //#region src/utils/resample.ts
697
- var ot = 864e5;
698
- function st(e, t, n = 1) {
697
+ var ct = 864e5;
698
+ function lt(e, t, n = 1) {
699
699
  let r = [], i = null;
700
700
  for (let a of e) {
701
- let e = We(a.time, t, n);
701
+ let e = Ge(a.time, t, n);
702
702
  i === null || e !== i.time ? (i = {
703
703
  time: e,
704
704
  open: a.open,
@@ -710,37 +710,37 @@ function st(e, t, n = 1) {
710
710
  }
711
711
  return r;
712
712
  }
713
- var D = (e) => e === "s" || e === "m" || e === "h" || e === "d";
714
- function ct(e, t) {
715
- let n = C(e), r = C(t);
713
+ var T = (e) => e === "s" || e === "m" || e === "h" || e === "d";
714
+ function ut(e, t) {
715
+ let n = S(e), r = S(t);
716
716
  if (!n || !r) return !1;
717
- let i = w(e);
718
- return n.unit === "d" && n.count > 1 ? !1 : D(r.unit) ? D(n.unit) && w(t) % i === 0 : n.unit === r.unit ? r.count % n.count === 0 : D(n.unit) && ot % i === 0;
717
+ let i = C(e);
718
+ return n.unit === "d" && n.count > 1 ? !1 : T(r.unit) ? T(n.unit) && C(t) % i === 0 : n.unit === r.unit ? r.count % n.count === 0 : T(n.unit) && ct % i === 0;
719
719
  }
720
- function lt(e, t) {
720
+ function dt(e, t) {
721
721
  let n = null, r = 0;
722
722
  for (let i of t) {
723
- if (!ct(i, e)) continue;
724
- let t = w(i);
723
+ if (!ut(i, e)) continue;
724
+ let t = C(i);
725
725
  t > r && (n = i, r = t);
726
726
  }
727
727
  return n;
728
728
  }
729
729
  //#endregion
730
730
  //#region src/utils/symbols.ts
731
- function ut(e, t) {
731
+ function ft(e, t) {
732
732
  if (!e) return 0;
733
733
  if (e === t) return 1e3;
734
734
  if (e.startsWith(t)) return 600 - Math.min(100, e.length - t.length);
735
735
  let n = e.indexOf(t);
736
736
  return n >= 0 ? 300 - Math.min(100, n) : 0;
737
737
  }
738
- function dt(e, t, n = 50, r) {
738
+ function pt(e, t, n = 50, r) {
739
739
  let i = t.trim().toUpperCase();
740
740
  if (!i) return e.slice(0, n);
741
741
  let a = [];
742
742
  for (let t of e) {
743
- let e = Math.max(ut(t.symbol.toUpperCase(), i), ut((t.description ?? "").toUpperCase(), i) * .8);
743
+ let e = Math.max(ft(t.symbol.toUpperCase(), i), ft((t.description ?? "").toUpperCase(), i) * .8);
744
744
  e > 0 && a.push({
745
745
  info: t,
746
746
  score: e + (r?.(t) ?? 0)
@@ -748,7 +748,7 @@ function dt(e, t, n = 50, r) {
748
748
  }
749
749
  return a.sort((e, t) => t.score - e.score || e.info.symbol.localeCompare(t.info.symbol)), a.slice(0, n).map((e) => e.info);
750
750
  }
751
- function ft(e) {
751
+ function mt(e) {
752
752
  let t = typeof e == "number" ? e : Number(e);
753
753
  if (!Number.isFinite(t) || t <= 0) return 0;
754
754
  for (let e = 0; e <= 12; e++) {
@@ -757,7 +757,7 @@ function ft(e) {
757
757
  }
758
758
  return 12;
759
759
  }
760
- function O(e) {
760
+ function E(e) {
761
761
  let t = /^(\d{1,2}):(\d{2})$/.exec(e.trim());
762
762
  if (!t) return null;
763
763
  let n = Number(t[1]), r = Number(t[2]);
@@ -765,26 +765,26 @@ function O(e) {
765
765
  }
766
766
  //#endregion
767
767
  //#region src/utils/marketStatus.ts
768
- var k = 864e5, A = 6e4, pt = 8;
769
- function mt(e, t) {
768
+ var D = 864e5, O = 6e4, ht = 8;
769
+ function gt(e, t) {
770
770
  let n = e?.timezone, r = (e?.sessions ?? []).flatMap((e) => {
771
- let t = O(e.start), n = O(e.end);
771
+ let t = E(e.start), n = E(e.end);
772
772
  return t === null || n === null || t === n ? [] : [{
773
773
  start: t,
774
774
  end: n,
775
775
  days: Array.isArray(e.days) ? e.days : null
776
776
  }];
777
777
  });
778
- if (!n || !v(n) || r.length === 0 || !Number.isFinite(t)) return {
778
+ if (!n || !Ee(n) || r.length === 0 || !Number.isFinite(t)) return {
779
779
  state: "always",
780
780
  next: null
781
781
  };
782
- let i = y(n, t) * A, a = Math.floor((t + i) / k) * k, o = (e) => e - y(n, e - y(n, e - i) * A) * A, s = [];
783
- for (let e = -1; e <= pt; e++) {
784
- let t = a + e * k, n = (Math.floor(t / k) + 4) % 7;
782
+ let i = y(n, t) * O, a = Math.floor((t + i) / D) * D, o = (e) => e - y(n, e - y(n, e - i) * O) * O, s = [];
783
+ for (let e = -1; e <= ht; e++) {
784
+ let t = a + e * D, n = (Math.floor(t / D) + 4) % 7;
785
785
  for (let e of r) {
786
786
  if (e.days && !e.days.includes(n)) continue;
787
- let r = t + e.start * A, i = (e.end > e.start ? t : t + k) + e.end * A;
787
+ let r = t + e.start * O, i = (e.end > e.start ? t : t + D) + e.end * O;
788
788
  s.push([o(r), o(i)]);
789
789
  }
790
790
  }
@@ -807,15 +807,15 @@ function mt(e, t) {
807
807
  }
808
808
  //#endregion
809
809
  //#region src/utils/drawingOptions.ts
810
- var ht = 48, gt = 2e3, _t = 1e4;
811
- function vt(e) {
810
+ var _t = 48, vt = 2e3, yt = 1e4;
811
+ function bt(e) {
812
812
  if (!Array.isArray(e)) return;
813
813
  let t = [];
814
814
  for (let n of e) {
815
- if (t.length >= ht) break;
815
+ if (t.length >= _t) break;
816
816
  if (typeof n != "object" || !n) continue;
817
817
  let { value: e, visible: r, color: i } = n;
818
- if (typeof e != "number" || !Number.isFinite(e) || Math.abs(e) > _t || r !== void 0 && typeof r != "boolean") continue;
818
+ if (typeof e != "number" || !Number.isFinite(e) || Math.abs(e) > yt || r !== void 0 && typeof r != "boolean") continue;
819
819
  let a = {
820
820
  value: e,
821
821
  visible: r ?? !0
@@ -824,109 +824,109 @@ function vt(e) {
824
824
  }
825
825
  return t;
826
826
  }
827
- function yt(e, t) {
827
+ function xt(e, t) {
828
828
  switch (e.kind) {
829
829
  case "boolean": return typeof t == "boolean" ? t : void 0;
830
830
  case "number": return typeof t != "number" || !Number.isFinite(t) ? void 0 : Math.min(e.max ?? Infinity, Math.max(e.min ?? -Infinity, t));
831
831
  case "choice": return typeof t == "string" && e.choices.some((e) => e.value === t) ? t : void 0;
832
- case "levels": return vt(t);
833
- case "text": return typeof t == "string" ? t.slice(0, gt) : void 0;
832
+ case "levels": return bt(t);
833
+ case "text": return typeof t == "string" ? t.slice(0, vt) : void 0;
834
834
  }
835
835
  }
836
- function bt(e, t) {
836
+ function St(e, t) {
837
837
  if (!e || typeof t != "object" || !t) return {};
838
838
  let n = {};
839
839
  for (let [r, i] of Object.entries(t)) {
840
840
  let t = e[r];
841
841
  if (!t) continue;
842
- let a = yt(t, i);
842
+ let a = xt(t, i);
843
843
  a !== void 0 && (n[r] = a);
844
844
  }
845
845
  return n;
846
846
  }
847
- function xt(e) {
847
+ function Ct(e) {
848
848
  return Array.isArray(e) ? e.map((e) => ({ ...e })) : e;
849
849
  }
850
- function St(e, t, n) {
850
+ function wt(e, t, n) {
851
851
  let r = e?.[n];
852
- return r ? xt((t && n in t ? yt(r, t[n]) : void 0) ?? r.default) : t?.[n];
852
+ return r ? Ct((t && n in t ? xt(r, t[n]) : void 0) ?? r.default) : t?.[n];
853
853
  }
854
- function Ct(e, t) {
854
+ function Tt(e, t) {
855
855
  let n = {};
856
- for (let r of Object.keys(e ?? {})) n[r] = St(e, t, r);
856
+ for (let r of Object.keys(e ?? {})) n[r] = wt(e, t, r);
857
857
  return n;
858
858
  }
859
859
  //#endregion
860
860
  //#region src/utils/drawingStyle.ts
861
- var wt = [
861
+ var Et = [
862
862
  "solid",
863
863
  "dashed",
864
864
  "dotted"
865
- ], Tt = 64, Et = 2e3, Dt = 20, Ot = 200;
866
- function j(e, t, n) {
865
+ ], Dt = 64, Ot = 2e3, kt = 20, At = 200;
866
+ function k(e, t, n) {
867
867
  return typeof e == "number" && Number.isFinite(e) ? Math.min(n, Math.max(t, e)) : void 0;
868
868
  }
869
- function kt(e) {
870
- return typeof e == "string" && e.length > 0 && e.length <= Tt ? e : void 0;
869
+ function jt(e) {
870
+ return typeof e == "string" && e.length > 0 && e.length <= Dt ? e : void 0;
871
871
  }
872
- function At(e) {
872
+ function Mt(e) {
873
873
  if (typeof e != "object" || !e) return {};
874
- let t = e, n = {}, r = kt(t.color);
874
+ let t = e, n = {}, r = jt(t.color);
875
875
  r !== void 0 && (n.color = r);
876
- let i = j(t.lineWidth, .5, Dt);
877
- i !== void 0 && (n.lineWidth = i), wt.includes(t.lineStyle) && (n.lineStyle = t.lineStyle);
878
- let a = kt(t.fillColor);
876
+ let i = k(t.lineWidth, .5, kt);
877
+ i !== void 0 && (n.lineWidth = i), Et.includes(t.lineStyle) && (n.lineStyle = t.lineStyle);
878
+ let a = jt(t.fillColor);
879
879
  a !== void 0 && (n.fillColor = a);
880
- let o = j(t.fillOpacity, 0, 1);
880
+ let o = k(t.fillOpacity, 0, 1);
881
881
  o !== void 0 && (n.fillOpacity = o);
882
- let s = j(t.fontSize, 6, Ot);
883
- return s !== void 0 && (n.fontSize = s), typeof t.text == "string" && (n.text = t.text.slice(0, Et)), n;
882
+ let s = k(t.fontSize, 6, At);
883
+ return s !== void 0 && (n.fontSize = s), typeof t.text == "string" && (n.text = t.text.slice(0, Ot)), n;
884
884
  }
885
885
  //#endregion
886
886
  //#region src/utils/chartTypeOptions.ts
887
- var M = (e) => typeof e == "number" && Number.isFinite(e) && e > 0, N = (e, t, n) => typeof e == "number" && Number.isInteger(e) && e >= t && e <= n, P = (e) => typeof e == "object" && !!e && !Array.isArray(e);
888
- function jt(e) {
889
- if (!P(e)) return {};
887
+ var A = (e) => typeof e == "number" && Number.isFinite(e) && e > 0, j = (e, t, n) => typeof e == "number" && Number.isInteger(e) && e >= t && e <= n, M = (e) => typeof e == "object" && !!e && !Array.isArray(e);
888
+ function Nt(e) {
889
+ if (!M(e)) return {};
890
890
  let t = {};
891
- if (P(e.renko)) {
891
+ if (M(e.renko)) {
892
892
  let { boxSize: n, atrPeriod: r } = e.renko;
893
893
  t.renko = {
894
- ...M(n) || n === "atr" ? { boxSize: n } : {},
895
- ...N(r, 1, 500) ? { atrPeriod: r } : {}
894
+ ...A(n) || n === "atr" ? { boxSize: n } : {},
895
+ ...j(r, 1, 500) ? { atrPeriod: r } : {}
896
896
  };
897
897
  }
898
- if (P(e.lineBreak)) {
898
+ if (M(e.lineBreak)) {
899
899
  let { lines: n } = e.lineBreak;
900
- t.lineBreak = N(n, 1, 10) ? { lines: n } : {};
900
+ t.lineBreak = j(n, 1, 10) ? { lines: n } : {};
901
901
  }
902
- if (P(e.kagi)) {
902
+ if (M(e.kagi)) {
903
903
  let { reversal: n, reversalType: r } = e.kagi;
904
904
  t.kagi = {
905
- ...M(n) ? { reversal: n } : {},
905
+ ...A(n) ? { reversal: n } : {},
906
906
  ...r === "percent" || r === "price" ? { reversalType: r } : {}
907
907
  };
908
908
  }
909
- if (P(e.pointAndFigure)) {
909
+ if (M(e.pointAndFigure)) {
910
910
  let { boxSize: n, reversal: r } = e.pointAndFigure;
911
911
  t.pointAndFigure = {
912
- ...M(n) || n === "auto" ? { boxSize: n } : {},
913
- ...N(r, 1, 10) ? { reversal: r } : {}
912
+ ...A(n) || n === "auto" ? { boxSize: n } : {},
913
+ ...j(r, 1, 10) ? { reversal: r } : {}
914
914
  };
915
915
  }
916
- if (P(e.rangeBars)) {
916
+ if (M(e.rangeBars)) {
917
917
  let { range: n } = e.rangeBars;
918
- t.rangeBars = M(n) || n === "auto" ? { range: n } : {};
918
+ t.rangeBars = A(n) || n === "auto" ? { range: n } : {};
919
919
  }
920
920
  return t;
921
921
  }
922
922
  //#endregion
923
923
  //#region src/constants/themes.ts
924
- var Mt = "-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif", Nt = {
925
- family: Mt,
924
+ var Pt = "-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif", Ft = {
925
+ family: Pt,
926
926
  sizeSmall: 10,
927
927
  sizeMedium: 12,
928
928
  sizeLarge: 14
929
- }, F = {
929
+ }, N = {
930
930
  amber: "#f2a93b",
931
931
  up: "#1fa874",
932
932
  down: "#e8505b",
@@ -937,37 +937,37 @@ var Mt = "-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif",
937
937
  rose: "#e25592",
938
938
  neutral: "#7d8696",
939
939
  ink: "#0c1016"
940
- }, Pt = .22;
941
- function I(e) {
942
- return _e(e, Pt);
943
- }
944
- var L = "#2eb88a", R = "#e85a67", Ft = [
945
- F.blue,
946
- F.ochre,
947
- F.violet,
948
- F.cyan,
949
- F.rose
950
- ], z = {
940
+ }, It = .22;
941
+ function P(e) {
942
+ return _e(e, It);
943
+ }
944
+ var F = "#2eb88a", I = "#e85a67", Lt = [
945
+ N.blue,
946
+ N.ochre,
947
+ N.violet,
948
+ N.cyan,
949
+ N.rose
950
+ ], L = {
951
951
  name: "dark",
952
- background: F.ink,
952
+ background: N.ink,
953
953
  text: "#d9dde4",
954
954
  textSecondary: "#7d8696",
955
955
  grid: "#161b23",
956
956
  crosshair: "#8a93a3",
957
- candleUp: L,
958
- candleDown: R,
959
- candleUpWick: L,
960
- candleDownWick: R,
961
- lineColor: F.amber,
957
+ candleUp: F,
958
+ candleDown: I,
959
+ candleUpWick: F,
960
+ candleDownWick: I,
961
+ lineColor: N.amber,
962
962
  areaTopColor: "rgba(242, 169, 59, 0.32)",
963
963
  areaBottomColor: "rgba(242, 169, 59, 0.0)",
964
- volumeUp: I(L),
965
- volumeDown: I(R),
964
+ volumeUp: P(F),
965
+ volumeDown: P(I),
966
966
  axisLine: "#1f2630",
967
967
  axisLabel: "#9aa3b2",
968
968
  axisLabelBackground: "#1f2630",
969
- font: Nt
970
- }, B = {
969
+ font: Ft
970
+ }, R = {
971
971
  name: "light",
972
972
  background: "#ffffff",
973
973
  text: "#0f131a",
@@ -981,13 +981,13 @@ var L = "#2eb88a", R = "#e85a67", Ft = [
981
981
  lineColor: "#c77a0a",
982
982
  areaTopColor: "rgba(199, 122, 10, 0.24)",
983
983
  areaBottomColor: "rgba(199, 122, 10, 0.0)",
984
- volumeUp: I("#16a36a"),
985
- volumeDown: I("#d9414f"),
984
+ volumeUp: P("#16a36a"),
985
+ volumeDown: P("#d9414f"),
986
986
  axisLine: "#dde1e7",
987
987
  axisLabel: "#5b6472",
988
988
  axisLabelBackground: "#eef0f3",
989
- font: Nt
990
- }, V = {
989
+ font: Ft
990
+ }, z = {
991
991
  name: "terminal",
992
992
  background: "#0E0E0E",
993
993
  text: "#C0C0C0",
@@ -1012,18 +1012,18 @@ var L = "#2eb88a", R = "#e85a67", Ft = [
1012
1012
  sizeMedium: 12,
1013
1013
  sizeLarge: 14
1014
1014
  }
1015
- }, It = new Set([
1015
+ }, Rt = new Set([
1016
+ L.volumeUp,
1017
+ L.volumeDown,
1018
+ R.volumeUp,
1019
+ R.volumeDown,
1016
1020
  z.volumeUp,
1017
- z.volumeDown,
1018
- B.volumeUp,
1019
- B.volumeDown,
1020
- V.volumeUp,
1021
- V.volumeDown
1021
+ z.volumeDown
1022
1022
  ]);
1023
- function Lt(e) {
1023
+ function B(e) {
1024
1024
  let t = (e, t) => {
1025
- if (!It.has(e)) return e;
1026
- let n = I(t);
1025
+ if (!Rt.has(e)) return e;
1026
+ let n = P(t);
1027
1027
  return n === t ? e : n;
1028
1028
  };
1029
1029
  return {
@@ -1033,23 +1033,23 @@ function Lt(e) {
1033
1033
  }
1034
1034
  //#endregion
1035
1035
  //#region src/utils/chartStyle.ts
1036
- var Rt = [
1036
+ var zt = [
1037
1037
  "solid",
1038
1038
  "dashed",
1039
1039
  "dotted"
1040
- ], zt = 20, Bt = 64, Vt = 2, Ht = [
1040
+ ], Bt = 20, Vt = 64, Ht = 2, Ut = [
1041
1041
  /^#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i,
1042
1042
  /^[a-z]{3,30}$/i,
1043
1043
  /^(?:rgba?|hsla?|hwb|lab|lch|oklab|oklch|color)\([0-9a-z.,%/\s-]*\)$/i
1044
1044
  ];
1045
- function Ut(e) {
1046
- return typeof e == "string" && e.length <= Bt && Ht.some((t) => t.test(e.trim()));
1045
+ function V(e) {
1046
+ return typeof e == "string" && e.length <= Vt && Ut.some((t) => t.test(e.trim()));
1047
1047
  }
1048
1048
  function Wt(e, t) {
1049
1049
  switch (e) {
1050
- case "color": return Ut(t);
1051
- case "lineStyle": return Rt.includes(t);
1052
- case "width": return typeof t == "number" && Number.isFinite(t) && t > 0 && t <= zt;
1050
+ case "color": return V(t);
1051
+ case "lineStyle": return zt.includes(t);
1052
+ case "width": return typeof t == "number" && Number.isFinite(t) && t > 0 && t <= Bt;
1053
1053
  case "boolean": return typeof t == "boolean";
1054
1054
  }
1055
1055
  }
@@ -1071,8 +1071,8 @@ function Kt(e) {
1071
1071
  function qt(e) {
1072
1072
  if (typeof e != "object" || !e || Array.isArray(e)) return null;
1073
1073
  let { background: t, separator: n } = e, r = {
1074
- ...Ut(t) ? { background: t } : {},
1075
- ...Ut(n) ? { separator: n } : {}
1074
+ ...V(t) ? { background: t } : {},
1075
+ ...V(n) ? { separator: n } : {}
1076
1076
  };
1077
1077
  return Object.keys(r).length > 0 ? r : null;
1078
1078
  }
@@ -1083,7 +1083,7 @@ function Yt(e) {
1083
1083
  for (let [n, r] of Object.entries(e)) {
1084
1084
  if (!Jt.test(n) || typeof r != "object" || !r) continue;
1085
1085
  let { lineStyle: e, visible: i } = r, a = {
1086
- ...Rt.includes(e) ? { lineStyle: e } : {},
1086
+ ...zt.includes(e) ? { lineStyle: e } : {},
1087
1087
  ...typeof i == "boolean" ? { visible: i } : {}
1088
1088
  };
1089
1089
  Object.keys(a).length > 0 && (t[n] = a);
@@ -1101,7 +1101,7 @@ function Zt(e, t, n) {
1101
1101
  wickUp: r("wickUpColor") ?? t("series.candlestick.wickUpColor") ?? (i === void 0 ? e.candleUpWick : o),
1102
1102
  wickDown: r("wickDownColor") ?? t("series.candlestick.wickDownColor") ?? (a === void 0 ? e.candleDownWick : s),
1103
1103
  line: r("color") ?? r("lineColor") ?? t("series.line.color") ?? e.lineColor,
1104
- lineWidth: r("lineWidth") ?? t("series.line.lineWidth") ?? Vt,
1104
+ lineWidth: r("lineWidth") ?? t("series.line.lineWidth") ?? Ht,
1105
1105
  top: r("topColor") ?? t("series.area.topColor") ?? e.areaTopColor,
1106
1106
  bottom: r("bottomColor") ?? t("series.area.bottomColor") ?? e.areaBottomColor
1107
1107
  };
@@ -1233,8 +1233,8 @@ var $t = {
1233
1233
  "lastPrice.downColor": (e, t) => t.lastPrice.down,
1234
1234
  "lastPrice.style": (e, t) => t.lastPrice.style,
1235
1235
  "lastPrice.width": (e, t) => t.lastPrice.width,
1236
- "volume.upColor": (e) => Lt(e).up,
1237
- "volume.downColor": (e) => Lt(e).down,
1236
+ "volume.upColor": (e) => B(e).up,
1237
+ "volume.downColor": (e) => B(e).down,
1238
1238
  "sessionBreaks.color": (e, t) => t.sessionBreaks.color,
1239
1239
  "sessionBreaks.style": (e, t) => t.sessionBreaks.style,
1240
1240
  "sessionBreaks.width": (e, t) => t.sessionBreaks.width,
@@ -1811,8 +1811,8 @@ function Pn(e) {
1811
1811
  candleDown: q.down,
1812
1812
  candleUpWick: q.up,
1813
1813
  candleDownWick: q.down,
1814
- volumeUp: I(q.up),
1815
- volumeDown: I(q.down)
1814
+ volumeUp: P(q.up),
1815
+ volumeDown: P(q.down)
1816
1816
  };
1817
1817
  }
1818
1818
  var Y = 1e-9;
@@ -1830,7 +1830,7 @@ function X(e, t, n = "nearest") {
1830
1830
  let r = Fn(e, t);
1831
1831
  if (r === void 0 || !Number.isFinite(e)) return e;
1832
1832
  let i = e / r, a = n === "down" ? Math.floor(i + Y) : n === "up" ? Math.ceil(i - Y) : Math.round(i);
1833
- return Number((a * r).toFixed(ft(r)));
1833
+ return Number((a * r).toFixed(mt(r)));
1834
1834
  }
1835
1835
  function Ln(e, t) {
1836
1836
  if (!t.priceLimits?.enabled || !t.priceLimits.ceilingPercent) return null;
@@ -1883,7 +1883,7 @@ function Vn(e, t) {
1883
1883
  return `${String(n).padStart(2, "0")}:${String(r).padStart(2, "0")}`;
1884
1884
  }
1885
1885
  function Hn(e, t = Date.now(), n) {
1886
- if (n !== void 0 && !v(n)) return null;
1886
+ if (n !== void 0 && !Ee(n)) return null;
1887
1887
  let r = Vn(t, n);
1888
1888
  for (let t of e) if (r >= t.startTime && r < t.endTime) return t;
1889
1889
  return null;
@@ -1913,6 +1913,549 @@ function Kn(e, t) {
1913
1913
  return s;
1914
1914
  }
1915
1915
  //#endregion
1916
- export { t as CHART_STYLE_KEYS, V as DARK_TERMINAL, z as DARK_THEME, ln as DEFAULT_BAR_SPACING, cn as DEFAULT_BAR_WIDTH, nn as DEFAULT_CHART_OPTIONS, n as DEFAULT_DRAWING_STYLE, Mt as DEFAULT_FONT_FAMILY, pn as DEFAULT_PANEL_HEIGHT, o as DEFAULT_RECONNECT, i as DEFAULT_SIGNAL_STYLE, s as DEFAULT_STREAM_CONFIG, sn as DEFAULT_TIMEFRAME_FAVORITES, a as DEFAULT_TRADE_ZONE_STYLE, r as DEFAULT_TRADING_CONFIG, wn as HNX_SESSIONS, Cn as HOSE_SESSIONS, B as LIGHT_THEME, e as LayerType, Mn as MARKET_CRYPTO, kn as MARKET_HNX, Dn as MARKET_HOSE, On as MARKET_HOSE_ETF, Nn as MARKET_NYSE, An as MARKET_UPCOM, jn as MARKET_VN30F, fn as MIN_PANEL_HEIGHT, se as MS_TIME_THRESHOLD, un as PRICE_AXIS_WIDTH, et as PRICE_SOURCES, F as TC_PALETTE, Ft as TC_SERIES_COLORS, rn as TIMEFRAMES_CRYPTO, on as TIMEFRAMES_FOREX, an as TIMEFRAMES_STOCK, dn as TIME_AXIS_HEIGHT, Tn as UPCOM_SESSIONS, En as VN30F_SESSIONS, q as VN_COLORS, Pt as VOLUME_ALPHA, Le as alignToTimeframe, qe as autoPricePrecision, ce as barTimeUnit, Ve as barsAreDaily, tn as chartStyleValue, ne as clamp, Ln as computePriceLimits, me as computePriceRange, oe as computeTickStep, Pn as createVNTheme, $e as detectPrecision, St as drawingOption, U as en, fe as findBarIndex, Ye as formatFraction, K as formatNumber, E as formatPrice, Je as formatPriceScaleLabel, Ie as formatTimestamp, xn as formatVND, Qe as formatVolume, Sn as formatVolumeLoc, Xe as fractionTick, Hn as getCurrentSession, _n as getLocale, bn as getLocaleStrings, ge as hexToRgba, it as indicatorSource, ie as inverseLerp, ze as isDateOnly, tt as isPriceSource, Fe as isTimeFrame, v as isValidTimeZone, re as lerp, ve as lerpColor, Xt as lineDash, mt as marketStatus, he as mergeBar, m as niceNumber, ue as normalizeBar, le as normalizeBarTime, x as offsetAt, pe as padPriceRange, at as parseIndicatorSource, C as parseTimeframe, lt as pickBaseTimeframe, Ze as priceFormatterFor, Fn as priceStepAt, dt as rankSymbols, Kt as readChartStyleOverrides, jt as readChartTypeOptions, Yt as readIndicatorPlotStyles, te as readNews, qt as readPaneStyle, l as readQuote, yn as registerLocale, st as resampleBars, Qt as resolveChartTheme, Ct as resolveDrawingOptions, Lt as resolveVolumeColors, X as roundToPriceStep, ae as roundToStep, bt as sanitizeDrawingOptions, At as sanitizeDrawingStyle, Rn as scaleMarketPrices, O as sessionMinute, gn as setLocale, de as sliceVisibleData, nt as sourcePrice, ft as stepDecimals, vn as t, Pe as tickBarCount, Re as timeParts, We as timeframeBucketStart, w as timeframeToMs, He as tzLabel, mn as vi, Kn as vn30fContracts, Gn as vn30fLastTradingDay, I as volumeColor, Oe as wallToUtc, _e as withAlpha, y as zoneOffsetMinutes, Ae as zonedDateFormatter };
1916
+ //#region src/icons/iconSet.ts
1917
+ var qn = {
1918
+ cursor: { d: "M6 3.5L18.5 12.5L12.6 13.6L9.7 19.4z" },
1919
+ trendingUp: { d: "M3 17L9 11L13 14.5L21 6.5M15 6.5H21V12.5" },
1920
+ trendingDown: { d: "M3 7L9 13L13 9.5L21 17.5M15 17.5H21V11.5" },
1921
+ minus: { d: "M5 12H19" },
1922
+ plus: { d: "M12 5V19M5 12H19" },
1923
+ penLine: { d: "M14.5 5.5L18.5 9.5M4 20L5 15.5L15.8 4.7a2 2 0 0 1 2.83 0l.67.67a2 2 0 0 1 0 2.83L8.5 19z" },
1924
+ zigzag: { d: "M3 17L8 9L13 15L21 6" },
1925
+ hash: { d: "M5 9H19M5 15H19M10 4L8.5 20M15.5 4L14 20" },
1926
+ square: { d: "M6.5 4.5h11a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2h-11a2 2 0 0 1-2-2v-11a2 2 0 0 1 2-2z" },
1927
+ gitBranch: { d: "M6 3V15M18 9a3 3 0 1 0 0-6 3 3 0 0 0 0 6zM6 21a3 3 0 1 0 0-6 3 3 0 0 0 0 6zM18 9a9 9 0 0 1-9 9" },
1928
+ ruler: { d: "M3.5 16.5L16.5 3.5L20.5 7.5L7.5 20.5zM6.5 13.5L8 15M9.5 10.5L11.5 12.5M12.5 7.5L14 9" },
1929
+ type: { d: "M6 6V4.5H18V6M12 4.5V19.5M9.5 19.5H14.5" },
1930
+ magnet: { d: "M6 4V11a6 6 0 0 0 12 0V4M6 4h3.5v7a2.5 2.5 0 0 0 5 0V4H18M6 8h3.5M14.5 8H18" },
1931
+ magnetStrong: {
1932
+ d: "M6 4V11a6 6 0 0 0 12 0V4M6 4h3.5v7a2.5 2.5 0 0 0 5 0V4H18",
1933
+ fills: ["M6 4h3.5v4H6z", "M14.5 4H18v4h-3.5z"]
1934
+ },
1935
+ eraser: { d: "M8.5 19.5L3.9 14.9a1.5 1.5 0 0 1 0-2.1l8.5-8.5a1.5 1.5 0 0 1 2.1 0l5.2 5.2a1.5 1.5 0 0 1 0 2.1L12 19.5zM8 9l7 7M12 19.5H20" },
1936
+ zoomIn: { d: "M16.5 10.5a6 6 0 1 1-12 0 6 6 0 0 1 12 0zM15 15L20.5 20.5M10.5 7.5V13.5M7.5 10.5H13.5" },
1937
+ undo: { d: "M9 14L4 9L9 4M4 9H14.5a5.5 5.5 0 0 1 0 11H11" },
1938
+ redo: { d: "M15 14L20 9L15 4M20 9H9.5a5.5 5.5 0 0 0 0 11H13" },
1939
+ trash: { d: "M4 7H20M9.5 7V4.5h5V7M6.5 7l.8 12.2A1.5 1.5 0 0 0 8.8 20.6h6.4a1.5 1.5 0 0 0 1.5-1.4L17.5 7M10 11v6M14 11v6" },
1940
+ camera: { d: "M4.5 7.5h3L9 5h6l1.5 2.5h3A1.5 1.5 0 0 1 21 9v9.5a1.5 1.5 0 0 1-1.5 1.5h-15A1.5 1.5 0 0 1 3 18.5V9a1.5 1.5 0 0 1 1.5-1.5zM15.5 13.5a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0z" },
1941
+ settings: { d: "M4 7H14M18 7H20M4 17H8M12 17H20M18 7a2 2 0 1 1-4 0 2 2 0 0 1 4 0zM12 17a2 2 0 1 1-4 0 2 2 0 0 1 4 0z" },
1942
+ moon: { d: "M20 14.5A8 8 0 1 1 9.5 4a6.5 6.5 0 0 0 10.5 10.5z" },
1943
+ sun: { d: "M16 12a4 4 0 1 1-8 0 4 4 0 0 1 8 0zM12 2.5v2M12 19.5v2M4.6 4.6l1.4 1.4M18 18l1.4 1.4M2.5 12h2M19.5 12h2M4.6 19.4L6 18M18 6l1.4-1.4" },
1944
+ chevronDown: { d: "M6 9L12 15L18 9" },
1945
+ chevronUp: { d: "M6 15L12 9L18 15" },
1946
+ barChart: { d: "M5 20V13M12 20V5M19 20V10" },
1947
+ x: { d: "M6 6L18 18M18 6L6 18" },
1948
+ play: { d: "M7 4.5v15L19.5 12z" },
1949
+ pause: { d: "M8 5V19M16 5V19" },
1950
+ stop: { d: "M7.5 6h9A1.5 1.5 0 0 1 18 7.5v9a1.5 1.5 0 0 1-1.5 1.5h-9A1.5 1.5 0 0 1 6 16.5v-9A1.5 1.5 0 0 1 7.5 6z" },
1951
+ receipt: { d: "M6 3.5h12v17l-2-1.25-2 1.25-2-1.25-2 1.25-2-1.25-2 1.25zM9 8h6M9 12h6M9 16h3" },
1952
+ bell: { d: "M6 16.5V11a6 6 0 0 1 12 0v5.5l1.5 2H4.5zM10 20.5a2.2 2.2 0 0 0 4 0" },
1953
+ layers: { d: "M12 3.5L21 8.5L12 13.5L3 8.5zM3 12.5L12 17.5L21 12.5M3 16.5L12 21.5L21 16.5" },
1954
+ eye: { d: "M2.5 12S6 5.5 12 5.5 21.5 12 21.5 12 18 18.5 12 18.5 2.5 12 2.5 12zM15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0z" },
1955
+ eyeOff: { d: "M4 4L20 20M9.9 5.8A9.6 9.6 0 0 1 12 5.5c6 0 9.5 6.5 9.5 6.5a16 16 0 0 1-2.3 3.1M6.6 7.1C3.9 8.9 2.5 12 2.5 12S6 18.5 12 18.5a9.3 9.3 0 0 0 4.7-1.3M10 10.1a3 3 0 0 0 4 4" },
1956
+ lock: { d: "M7 10.5h10a2 2 0 0 1 2 2v6a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2v-6a2 2 0 0 1 2-2zM8 10.5V7.5a4 4 0 0 1 8 0v3" },
1957
+ unlock: { d: "M7 10.5h10a2 2 0 0 1 2 2v6a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2v-6a2 2 0 0 1 2-2zM8 10.5V7.5a4 4 0 0 1 7.7-1.5" },
1958
+ palette: {
1959
+ d: "M12 3.5a8.5 8.5 0 0 0 0 17c1.1 0 1.6-.8 1.6-1.6 0-.5-.2-.9-.5-1.2a1.6 1.6 0 0 1 1.2-2.7h1.9a4.3 4.3 0 0 0 4.3-4.3C20.5 6.9 16.7 3.5 12 3.5z",
1960
+ dots: [
1961
+ [
1962
+ 7.5,
1963
+ 11.5,
1964
+ 1.25
1965
+ ],
1966
+ [
1967
+ 9.5,
1968
+ 7.75,
1969
+ 1.25
1970
+ ],
1971
+ [
1972
+ 14,
1973
+ 7.25,
1974
+ 1.25
1975
+ ]
1976
+ ]
1977
+ },
1978
+ check: { d: "M5 12.5L10 17.5L19 7" },
1979
+ maximize: { d: "M8 4H5a1 1 0 0 0-1 1v3M16 4h3a1 1 0 0 1 1 1v3M20 16v3a1 1 0 0 1-1 1h-3M8 20H5a1 1 0 0 1-1-1v-3" },
1980
+ minimize: { d: "M4 8h3a1 1 0 0 0 1-1V4M16 4v3a1 1 0 0 0 1 1h3M20 16h-3a1 1 0 0 0-1 1v3M8 20v-3a1 1 0 0 0-1-1H4" },
1981
+ repeat: { d: "M17 3.5L20.5 7L17 10.5M3.5 11.5V10a3 3 0 0 1 3-3h14M7 20.5L3.5 17L7 13.5M20.5 12.5V14a3 3 0 0 1-3 3h-14" },
1982
+ info: {
1983
+ d: "M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0zM12 11V16.5",
1984
+ dots: [[
1985
+ 12,
1986
+ 7.75,
1987
+ 1.25
1988
+ ]]
1989
+ },
1990
+ chevronLeft: { d: "M15 5L8 12L15 19" },
1991
+ chevronRight: { d: "M9 5L16 12L9 19" },
1992
+ reset: { d: "M4.5 12a7.5 7.5 0 1 0 2.2-5.3M4.5 4v4.5H9" },
1993
+ calendar: { d: "M5.5 5h13a2 2 0 0 1 2 2v11.5a2 2 0 0 1-2 2h-13a2 2 0 0 1-2-2V7a2 2 0 0 1 2-2zM3.5 10H20.5M8 3V7M16 3V7" },
1994
+ star: { d: "M12 3.5L14.6 9L20.5 9.6L16 13.6L17.3 19.5L12 16.5L6.7 19.5L8 13.6L3.5 9.6L9.4 9z" },
1995
+ pin: { d: "M8 3.5h8M9.5 3.5v5.5L5.5 14h13l-4-5v-5.5M12 14v6.5" },
1996
+ search: { d: "M16.5 10.5a6 6 0 1 1-12 0 6 6 0 0 1 12 0zM15 15L20.5 20.5" },
1997
+ enter: { d: "M19 5v6.5a3 3 0 0 1-3 3H5.5M9.5 10L5 14.5L9.5 19" },
1998
+ stepBack: { d: "M6 5v14M18.5 5.5v13L8.5 12z" },
1999
+ stepForward: { d: "M18 5v14M5.5 5.5v13l10-6.5z" },
2000
+ ladder: { d: "M4 6H11M13 6H17M6 10H11M13 10H20M8 14H11M13 14H15M5 18H11M13 18H19" },
2001
+ save: { d: "M5.5 3.5h10.5l4.5 4.5v10.5a2 2 0 0 1-2 2h-13a2 2 0 0 1-2-2v-13a2 2 0 0 1 2-2zM8 3.5v5h7v-5M7.5 20.5v-6h9v6" },
2002
+ folder: { d: "M3.5 7a2 2 0 0 1 2-2h4l2 2.5h7a2 2 0 0 1 2 2V17a2 2 0 0 1-2 2h-13a2 2 0 0 1-2-2z" },
2003
+ link: { d: "M10 14a4 4 0 0 0 5.66 0l3-3a4 4 0 0 0-5.66-5.66l-1.2 1.2M14 10a4 4 0 0 0-5.66 0l-3 3a4 4 0 0 0 5.66 5.66l1.2-1.2" },
2004
+ arrowUp: { d: "M12 19V5M6 11L12 5L18 11" },
2005
+ arrowDown: { d: "M12 5V19M6 13L12 19L18 13" },
2006
+ more: { dots: [
2007
+ [
2008
+ 6,
2009
+ 12,
2010
+ 1.6
2011
+ ],
2012
+ [
2013
+ 12,
2014
+ 12,
2015
+ 1.6
2016
+ ],
2017
+ [
2018
+ 18,
2019
+ 12,
2020
+ 1.6
2021
+ ]
2022
+ ] },
2023
+ 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" }
2024
+ }, Jn = {
2025
+ trendLine: {
2026
+ d: "M5 18L19 6",
2027
+ dots: [[5, 18], [19, 6]]
2028
+ },
2029
+ ray: {
2030
+ d: "M5 17L21 5M17.5 4.81L21 5L20.2 8.41",
2031
+ dots: [[5, 17], [11, 12.5]]
2032
+ },
2033
+ extendedLine: {
2034
+ d: "M3 18.5L21 5M17.5 4.81L21 5L20.2 8.41M6.5 18.69L3 18.5L3.8 15.09",
2035
+ dots: [[9, 14], [15, 9.5]]
2036
+ },
2037
+ infoLine: {
2038
+ d: "M5 20L19 10M4.5 3.5h9a1 1 0 0 1 1 1v4a1 1 0 0 1-1 1h-9a1 1 0 0 1-1-1v-4a1 1 0 0 1 1-1zM6.5 6.5h5",
2039
+ dots: [[5, 20], [19, 10]]
2040
+ },
2041
+ trendAngle: {
2042
+ d: "M5 18L19 7M5 18H20M11 18A6 6 0 0 0 9.71 14.29",
2043
+ dots: [[5, 18], [19, 7]]
2044
+ },
2045
+ horizontalLine: {
2046
+ d: "M3 12H21",
2047
+ dots: [[12, 12]]
2048
+ },
2049
+ horizontalRay: {
2050
+ d: "M7 12H21M18.5 9.5L21 12L18.5 14.5",
2051
+ dots: [[7, 12]]
2052
+ },
2053
+ verticalLine: {
2054
+ d: "M12 3V21",
2055
+ dots: [[12, 12]]
2056
+ },
2057
+ crossLine: {
2058
+ d: "M3 12H21M12 3V21",
2059
+ dots: [[12, 12]]
2060
+ },
2061
+ parallelChannel: {
2062
+ d: "M3 15L15 5M9 19L21 9",
2063
+ dots: [
2064
+ [3, 15],
2065
+ [15, 5],
2066
+ [9, 19]
2067
+ ]
2068
+ },
2069
+ regressionChannel: {
2070
+ d: "M3 12L21 4M3 20L21 12",
2071
+ dash: "M3 16L21 8",
2072
+ dots: [[3, 16], [21, 8]]
2073
+ },
2074
+ fibRetracement: {
2075
+ d: "M3 4H21M3 9H21M3 13H21M3 20H21",
2076
+ dots: [[5, 20], [19, 4]]
2077
+ },
2078
+ fibExtension: {
2079
+ d: "M3 20L8 10L12 16M14 4H21M14 8H21M14 12H21",
2080
+ dots: [
2081
+ [3, 20],
2082
+ [8, 10],
2083
+ [12, 16]
2084
+ ]
2085
+ },
2086
+ fibChannel: {
2087
+ d: "M3 9L21 3M3 13L21 7M3 16L21 10M3 21L21 15",
2088
+ dots: [
2089
+ [3, 21],
2090
+ [21, 15],
2091
+ [3, 9]
2092
+ ]
2093
+ },
2094
+ fibTimeZones: {
2095
+ d: "M3 4V20M6 4V20M9.5 4V20M14 4V20M20.5 4V20",
2096
+ dots: [[3, 20], [6, 20]]
2097
+ },
2098
+ fibSpeedResistanceFan: {
2099
+ d: "M4 20L20 4M4 20L20 11M4 20L20 16M4 20L11 4",
2100
+ dash: "M4 4H20V20",
2101
+ dots: [[4, 20], [20, 4]]
2102
+ },
2103
+ rectangle: {
2104
+ d: "M5.5 6h13A1.5 1.5 0 0 1 20 7.5v9a1.5 1.5 0 0 1-1.5 1.5h-13A1.5 1.5 0 0 1 4 16.5v-9A1.5 1.5 0 0 1 5.5 6z",
2105
+ dots: [[4, 6], [20, 18]]
2106
+ },
2107
+ circle: {
2108
+ d: "M19.5 12a7.5 7.5 0 1 1-15 0 7.5 7.5 0 0 1 15 0z",
2109
+ dots: [[12, 12], [19.5, 12]]
2110
+ },
2111
+ ellipse: {
2112
+ d: "M20.5 12c0 3-3.8 5.5-8.5 5.5S3.5 15 3.5 12 7.3 6.5 12 6.5s8.5 2.5 8.5 5.5z",
2113
+ dots: [[3.5, 12], [20.5, 12]]
2114
+ },
2115
+ triangle: {
2116
+ d: "M12 4.5L20 19H4z",
2117
+ dots: [
2118
+ [12, 4.5],
2119
+ [20, 19],
2120
+ [4, 19]
2121
+ ]
2122
+ },
2123
+ pitchfork: {
2124
+ d: "M4 20L16.75 3M7 9L11.5 3M13 15L21 4.33M7 9L13 15",
2125
+ dots: [
2126
+ [4, 20],
2127
+ [7, 9],
2128
+ [13, 15]
2129
+ ]
2130
+ },
2131
+ schiffPitchfork: {
2132
+ d: "M4 14.5L21 7.42M7 9L21 3.17M13 15L21 11.67M7 9L13 15",
2133
+ dash: "M4 20V14.5",
2134
+ dots: [
2135
+ [4, 14.5],
2136
+ [7, 9],
2137
+ [13, 15]
2138
+ ]
2139
+ },
2140
+ modifiedSchiffPitchfork: {
2141
+ d: "M5.5 14.5L21 5.89M7 9L17.8 3M13 15L21 10.56M7 9L13 15",
2142
+ dash: "M4 20L5.5 14.5",
2143
+ dots: [
2144
+ [5.5, 14.5],
2145
+ [7, 9],
2146
+ [13, 15]
2147
+ ]
2148
+ },
2149
+ gannFan: {
2150
+ d: "M4 20L20 4M4 20L20 12M4 20L12 4M4 20L20 16.5M4 20L7.5 4",
2151
+ dots: [[4, 20], [20, 4]]
2152
+ },
2153
+ gannBox: {
2154
+ d: "M4 4H20V20H4zM4 20L20 4M4 4L20 20M12 4V20",
2155
+ dots: [[4, 20], [20, 4]]
2156
+ },
2157
+ cyclicLines: {
2158
+ d: "M4 4V20M9 4V20M14 4V20M19 4V20",
2159
+ dots: [[4, 20], [9, 20]]
2160
+ },
2161
+ xabcdPattern: {
2162
+ d: "M3 18L7 6L11 13L15 8L21 19",
2163
+ dash: "M3 18L11 13L21 19",
2164
+ dots: [
2165
+ [3, 18],
2166
+ [7, 6],
2167
+ [11, 13],
2168
+ [15, 8],
2169
+ [21, 19]
2170
+ ]
2171
+ },
2172
+ abcdPattern: {
2173
+ d: "M4 19L9 8L13 14L20 4",
2174
+ dots: [
2175
+ [4, 19],
2176
+ [9, 8],
2177
+ [13, 14],
2178
+ [20, 4]
2179
+ ]
2180
+ },
2181
+ headAndShoulders: {
2182
+ d: "M3 19L6 11L8.5 15L12 5L15.5 15L18 11L21 19",
2183
+ dash: "M4.5 15H19.5",
2184
+ dots: [
2185
+ [6, 11],
2186
+ [12, 5],
2187
+ [18, 11]
2188
+ ]
2189
+ },
2190
+ elliottWave: {
2191
+ d: "M3 19L6 13L8.5 16L14 6L16 10L21 4",
2192
+ dots: [[3, 19], [21, 4]]
2193
+ },
2194
+ priceRange: { d: "M5 4H19M5 20H19M12 6.5V17.5M9 9.5L12 6.5L15 9.5M9 14.5L12 17.5L15 14.5" },
2195
+ dateRange: { d: "M4 5V19M20 5V19M6.5 12H17.5M9.5 9L6.5 12L9.5 15M14.5 9L17.5 12L14.5 15" },
2196
+ dateAndPriceRange: {
2197
+ d: "M6 18V4M3 7L6 4L9 7M6 18H20M17 15L20 18L17 21",
2198
+ dash: "M6 4H20V18"
2199
+ },
2200
+ measure: { d: "M3.5 16.5L16.5 3.5L20.5 7.5L7.5 20.5zM6.5 13.5L8 15M9.5 10.5L11.5 12.5M12.5 7.5L14 9" },
2201
+ text: { d: "M6 6V4.5H18V6M12 4.5V19.5M9.5 19.5H14.5" },
2202
+ priceLabel: { d: "M9 5H19a1.5 1.5 0 0 1 1.5 1.5v11A1.5 1.5 0 0 1 19 19H9L3.5 12zM11 12H17" },
2203
+ arrow: { d: "M5 19L19 5M10 5H19V14" },
2204
+ riskReward: {
2205
+ d: "M5 12V4H19V12M3 12H21",
2206
+ dash: "M5 12V18H19V12",
2207
+ dots: [[5, 12]]
2208
+ },
2209
+ anchoredVWAP: {
2210
+ d: "M4 18C9 17 12 10 20 7M4 20.5V18",
2211
+ dots: [[4, 18]]
2212
+ },
2213
+ volumeProfileRange: {
2214
+ d: "M6 7H12M6 10.5H17M6 14H15M6 17.5H10",
2215
+ dash: "M3.5 4V20M20.5 4V20",
2216
+ dots: [[3.5, 20], [20.5, 20]]
2217
+ },
2218
+ note: { d: "M5.5 4.5h13v9l-5 5h-8zM13.5 18.5v-5h5M8.5 8.5h7M8.5 11.5h4" },
2219
+ callout: {
2220
+ d: "M10.5 4h9a1 1 0 0 1 1 1v6a1 1 0 0 1-1 1h-9a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1zM12 12L5 19M12.5 8h5",
2221
+ dots: [[5, 19]]
2222
+ },
2223
+ flag: {
2224
+ d: "M6 21V4M6 4.5h11l-2.5 3.75L17 12H6",
2225
+ soft: "M6 4.5h11l-2.5 3.75L17 12H6z",
2226
+ dots: [[6, 21]]
2227
+ },
2228
+ arrowMark: { d: "M12 4L18 11H14.5V20H9.5V11H6z" },
2229
+ icon: { d: "M12 3.5l2.6 5.3 5.9.85-4.25 4.15 1 5.85L12 16.9l-5.25 2.75 1-5.85L3.5 9.65l5.9-.85z" },
2230
+ brush: { d: "M3.5 17c2.5 0 3-5 6-5s2.5 5 5.5 5 3.5-6 5.5-9" },
2231
+ highlighter: { d: "M14.5 4.5l5 5L11 18H6v-5zM12 7l5 5M4 21h8" },
2232
+ path: {
2233
+ d: "M4 18L9 10L14 14L20 6M16.2 6.6L20 6L19.6 9.8",
2234
+ dots: [
2235
+ [4, 18],
2236
+ [9, 10],
2237
+ [14, 14]
2238
+ ]
2239
+ },
2240
+ polyline: {
2241
+ d: "M5 17L8 6L16 4L20 14L12 20z",
2242
+ soft: "M5 17L8 6L16 4L20 14L12 20z",
2243
+ dots: [
2244
+ [5, 17],
2245
+ [8, 6],
2246
+ [16, 4],
2247
+ [20, 14],
2248
+ [12, 20]
2249
+ ]
2250
+ },
2251
+ curve: {
2252
+ d: "M4 18C8 4 16 4 20 18",
2253
+ dots: [
2254
+ [4, 18],
2255
+ [20, 18],
2256
+ [12, 7.5]
2257
+ ]
2258
+ },
2259
+ arc: {
2260
+ d: "M4 17a8 8 0 0 1 16 0",
2261
+ dots: [
2262
+ [4, 17],
2263
+ [20, 17],
2264
+ [12, 9]
2265
+ ]
2266
+ },
2267
+ fibCircles: {
2268
+ d: "M14 12a2 2 0 1 1-4 0 2 2 0 0 1 4 0zM16.5 12a4.5 4.5 0 1 1-9 0 4.5 4.5 0 0 1 9 0zM20 12a8 8 0 1 1-16 0 8 8 0 0 1 16 0z",
2269
+ dots: [[12, 12], [20, 12]]
2270
+ },
2271
+ fibSpiral: {
2272
+ d: "M12 12a1.5 1.5 0 0 1 1.5 1.5 3 3 0 0 1-3 3A4.5 4.5 0 0 1 6 12a6 6 0 0 1 6-6 8 8 0 0 1 8 8",
2273
+ dots: [[12, 12]]
2274
+ },
2275
+ fibArcs: {
2276
+ d: "M10 20a6 6 0 0 0-6-6M14 20a10 10 0 0 0-10-10M18 20a14 14 0 0 0-14-14",
2277
+ dash: "M4 20L18 6",
2278
+ dots: [[4, 20], [18, 6]]
2279
+ },
2280
+ fibWedge: {
2281
+ d: "M4 19L20 7M4 19L20 16M10.4 14.2A8 8 0 0 1 11.86 17.53M14.4 11.2A13 13 0 0 1 16.78 16.6",
2282
+ dots: [
2283
+ [4, 19],
2284
+ [20, 7],
2285
+ [20, 16]
2286
+ ]
2287
+ },
2288
+ pitchfan: {
2289
+ d: "M4 20L14 4M4 20L20 14M4 20L17 9",
2290
+ dash: "M14 4L20 14",
2291
+ dots: [
2292
+ [4, 20],
2293
+ [14, 4],
2294
+ [20, 14]
2295
+ ]
2296
+ },
2297
+ gannSquare: {
2298
+ d: "M4 4H20V20H4zM4 20L20 4M4 12H20M12 4V20M4 12a8 8 0 0 1 8 8",
2299
+ dots: [[4, 20], [20, 4]]
2300
+ },
2301
+ elliottImpulse: {
2302
+ d: "M3 19L7 12L10 15L15 5L17.5 9L21 3",
2303
+ dots: [[3, 19], [21, 3]]
2304
+ },
2305
+ elliottCorrection: {
2306
+ d: "M4 5L10 17L14 11L20 20",
2307
+ dots: [[4, 5], [20, 20]]
2308
+ },
2309
+ elliottTriangle: {
2310
+ d: "M3 6L7 17L11 9L15 15L18 11L21 13",
2311
+ dots: [[3, 6], [21, 13]]
2312
+ },
2313
+ elliottDoubleCombo: {
2314
+ d: "M4 5L9 14L13 9L20 19",
2315
+ dots: [
2316
+ [4, 5],
2317
+ [9, 14],
2318
+ [13, 9],
2319
+ [20, 19]
2320
+ ]
2321
+ },
2322
+ elliottTripleCombo: {
2323
+ d: "M3 5L7 13L10 9L14 16L17 12L21 20",
2324
+ dots: [[3, 5], [21, 20]]
2325
+ },
2326
+ threeDrives: {
2327
+ d: "M3 20L7 12L9.5 15L14 7L16.5 10L21 3",
2328
+ dash: "M7 12L14 7L21 3",
2329
+ dots: [
2330
+ [7, 12],
2331
+ [14, 7],
2332
+ [21, 3]
2333
+ ]
2334
+ },
2335
+ cypherPattern: {
2336
+ d: "M3 19L7 9L10 14L15 5L20 16",
2337
+ dash: "M3 19L10 14L20 16",
2338
+ dots: [
2339
+ [3, 19],
2340
+ [7, 9],
2341
+ [10, 14],
2342
+ [15, 5],
2343
+ [20, 16]
2344
+ ]
2345
+ },
2346
+ timeCycles: {
2347
+ d: "M3 18a4.5 4.5 0 0 1 9 0a4.5 4.5 0 0 1 9 0",
2348
+ dots: [[3, 18], [12, 18]]
2349
+ },
2350
+ sineLine: {
2351
+ d: "M3 12C5 5 7.5 5 9 12S13 19 15 12 19.5 5 21 12",
2352
+ dots: [[6, 6.75], [12, 17.25]]
2353
+ },
2354
+ forecast: {
2355
+ d: "M4 18L15.2 7.8M19.5 6a2.5 2.5 0 1 1-5 0 2.5 2.5 0 0 1 5 0z",
2356
+ dots: [[4, 18]]
2357
+ },
2358
+ projection: {
2359
+ d: "M12 19L18 11M15.2 11.3L18 11L17.8 13.8",
2360
+ dash: "M3 17L9 9",
2361
+ dots: [
2362
+ [3, 17],
2363
+ [9, 9],
2364
+ [12, 19]
2365
+ ]
2366
+ },
2367
+ barsPattern: {
2368
+ d: "M5 6V14M9 9V18M15 4V12M19 7V16",
2369
+ fills: [
2370
+ "M4 8h2v4H4z",
2371
+ "M8 11h2v5H8z",
2372
+ "M14 6h2v4h-2z",
2373
+ "M18 9h2v5h-2z"
2374
+ ],
2375
+ dash: "M12 3V21"
2376
+ }
2377
+ }, Yn = {
2378
+ candlestick: {
2379
+ d: "M8 3.5V7M8 16V20.5M16 5V8.5M16 15.5V19",
2380
+ 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"]
2381
+ },
2382
+ hollowCandle: { d: "M8 3.5V7M8 16V20.5M16 5V8.5M16 15.5V19M6.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-1zM14.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" },
2383
+ heikinAshi: {
2384
+ d: "M5.5 9.5V12M5.5 18V20M12 5.5V8M12 14V16M18.5 3V4.5M18.5 10.5V12.5",
2385
+ fills: [
2386
+ "M4 12h3a.5.5 0 0 1 .5.5v5a.5.5 0 0 1-.5.5H4a.5.5 0 0 1-.5-.5v-5A.5.5 0 0 1 4 12z",
2387
+ "M10.5 8h3a.5.5 0 0 1 .5.5v5a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-5a.5.5 0 0 1 .5-.5z",
2388
+ "M17 4.5h3a.5.5 0 0 1 .5.5v5a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5V5a.5.5 0 0 1 .5-.5z"
2389
+ ]
2390
+ },
2391
+ bar: { d: "M8 4V20M5 8H8M8 16H11M16 6V18M13 15H16M16 9H19" },
2392
+ volumeCandles: {
2393
+ d: "M6.5 5V8M6.5 16V19M15.5 3.5V6M15.5 16V20",
2394
+ fills: ["M5.5 8h2a.5.5 0 0 1 .5.5v7a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1-.5-.5v-7a.5.5 0 0 1 .5-.5z", "M11.5 6h8a.5.5 0 0 1 .5.5v9a.5.5 0 0 1-.5.5h-8a.5.5 0 0 1-.5-.5v-9a.5.5 0 0 1 .5-.5z"]
2395
+ },
2396
+ equivolume: { d: "M4.5 10h2a1 1 0 0 1 1 1v6a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1v-6a1 1 0 0 1 1-1zM10 6h5a1 1 0 0 1 1 1v7a1 1 0 0 1-1 1h-5a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1zM18.5 4h1a1 1 0 0 1 1 1v5a1 1 0 0 1-1 1h-1a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1z" },
2397
+ line: { d: "M3 17L8 11L12 14L21 5" },
2398
+ area: {
2399
+ d: "M3 17L8 11L12 14L21 5",
2400
+ soft: "M3 17L8 11L12 14L21 5V20H3z"
2401
+ },
2402
+ baseline: {
2403
+ d: "M3 16L7 9L11 14L15 7L21 15",
2404
+ dash: "M3 12H21"
2405
+ },
2406
+ hlcArea: {
2407
+ d: "M3 9L8 6L13 9L21 4M3 15L8 13L13 16L21 11",
2408
+ dash: "M3 12L8 9.5L13 12.5L21 7.5",
2409
+ soft: "M3 9L8 6L13 9L21 4V11L13 16L8 13L3 15z"
2410
+ },
2411
+ stepLine: { d: "M3 18H8V12H12V15H16V7H21" },
2412
+ lineWithMarkers: {
2413
+ d: "M4 17L9 10L14 14L20 6",
2414
+ dots: [
2415
+ [4, 17],
2416
+ [9, 10],
2417
+ [14, 14],
2418
+ [20, 6]
2419
+ ]
2420
+ },
2421
+ hiLo: {
2422
+ d: "M6 7V17M12 4V14M18 9V20",
2423
+ fills: [
2424
+ "M5 7h2v10H5z",
2425
+ "M11 4h2v10h-2z",
2426
+ "M17 9h2v11h-2z"
2427
+ ]
2428
+ },
2429
+ renko: { d: "M3.5 15.5h4v4h-4zM7.5 11.5h4v4h-4zM11.5 7.5h4v4h-4zM15.5 11.5h4v4h-4z" },
2430
+ lineBreak: {
2431
+ d: "M4 14h4v5H4zM8 10h4v4H8zM16 9h4v8h-4z",
2432
+ fills: ["M12 5h4v5h-4z"]
2433
+ },
2434
+ kagi: { d: "M4 19V11H9V16H14V5H20V13" },
2435
+ pointAndFigure: { d: "M5.5 5.5l3 3M8.5 5.5l-3 3M5.5 10.5l3 3M8.5 10.5l-3 3M5.5 15.5l3 3M8.5 15.5l-3 3M14.5 9a1.5 1.5 0 1 0 3 0a1.5 1.5 0 1 0-3 0M14.5 14a1.5 1.5 0 1 0 3 0a1.5 1.5 0 1 0-3 0" },
2436
+ rangeBars: {
2437
+ d: "M6.5 11V12M6.5 18V19M12 7V8M12 14V15M17.5 3.5V4.5M17.5 10.5V11.5",
2438
+ fills: [
2439
+ "M5 12h3v6H5z",
2440
+ "M10.5 8h3v6h-3z",
2441
+ "M16 4.5h3v6h-3z"
2442
+ ]
2443
+ }
2444
+ }, Xn = 1.75, Zn = .22, Qn = /* @__PURE__ */ new WeakMap();
2445
+ function $n(e) {
2446
+ let t = Qn.get(e);
2447
+ if (t) return t;
2448
+ let n = "";
2449
+ e.soft && (n += `<path d="${e.soft}" fill="currentColor" fill-opacity="${Zn}" stroke="none"/>`);
2450
+ for (let t of e.fills ?? []) n += `<path d="${t}" fill="currentColor" stroke="none"/>`;
2451
+ e.d && (n += `<path d="${e.d}"/>`), e.dash && (n += `<path d="${e.dash}" stroke-dasharray="2 2.5"/>`);
2452
+ for (let [t, r, i = Xn] of e.dots ?? []) n += `<circle cx="${t}" cy="${r}" r="${i}" fill="currentColor" stroke="none"/>`;
2453
+ return Qn.set(e, n), n;
2454
+ }
2455
+ function er(e, t) {
2456
+ 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">${$n(e)}</svg>`;
2457
+ }
2458
+ //#endregion
2459
+ export { t as CHART_STYLE_KEYS, Yn as CHART_TYPE_ICONS, z as DARK_TERMINAL, L as DARK_THEME, ln as DEFAULT_BAR_SPACING, cn as DEFAULT_BAR_WIDTH, nn as DEFAULT_CHART_OPTIONS, n as DEFAULT_DRAWING_STYLE, Pt as DEFAULT_FONT_FAMILY, pn as DEFAULT_PANEL_HEIGHT, o as DEFAULT_RECONNECT, i as DEFAULT_SIGNAL_STYLE, s as DEFAULT_STREAM_CONFIG, sn as DEFAULT_TIMEFRAME_FAVORITES, a as DEFAULT_TRADE_ZONE_STYLE, r as DEFAULT_TRADING_CONFIG, Jn as DRAWING_TOOL_ICONS, wn as HNX_SESSIONS, Cn as HOSE_SESSIONS, Xn as ICON_DOT_RADIUS, Zn as ICON_SOFT_OPACITY, R as LIGHT_THEME, e as LayerType, Mn as MARKET_CRYPTO, kn as MARKET_HNX, Dn as MARKET_HOSE, On as MARKET_HOSE_ETF, Nn as MARKET_NYSE, An as MARKET_UPCOM, jn as MARKET_VN30F, fn as MIN_PANEL_HEIGHT, se as MS_TIME_THRESHOLD, un as PRICE_AXIS_WIDTH, nt as PRICE_SOURCES, N as TC_PALETTE, Lt as TC_SERIES_COLORS, rn as TIMEFRAMES_CRYPTO, on as TIMEFRAMES_FOREX, an as TIMEFRAMES_STOCK, dn as TIME_AXIS_HEIGHT, qn as UI_ICONS, Tn as UPCOM_SESSIONS, En as VN30F_SESSIONS, q as VN_COLORS, It as VOLUME_ALPHA, Re as alignToTimeframe, Ye as autoPricePrecision, ce as barTimeUnit, He as barsAreDaily, tn as chartStyleValue, ne as clamp, Ln as computePriceLimits, me as computePriceRange, oe as computeTickStep, Pn as createVNTheme, tt as detectPrecision, wt as drawingOption, U as en, fe as findBarIndex, Ze as formatFraction, K as formatNumber, Je as formatPrice, Xe as formatPriceScaleLabel, Le as formatTimestamp, xn as formatVND, et as formatVolume, Sn as formatVolumeLoc, Qe as fractionTick, Hn as getCurrentSession, _n as getLocale, bn as getLocaleStrings, ge as hexToRgba, er as iconSvg, ot as indicatorSource, ie as inverseLerp, Be as isDateOnly, rt as isPriceSource, Ie as isTimeFrame, Ee as isValidTimeZone, re as lerp, ve as lerpColor, Xt as lineDash, gt as marketStatus, he as mergeBar, m as niceNumber, ue as normalizeBar, le as normalizeBarTime, x as offsetAt, pe as padPriceRange, st as parseIndicatorSource, S as parseTimeframe, dt as pickBaseTimeframe, $e as priceFormatterFor, Fn as priceStepAt, pt as rankSymbols, Kt as readChartStyleOverrides, Nt as readChartTypeOptions, Yt as readIndicatorPlotStyles, te as readNews, qt as readPaneStyle, l as readQuote, yn as registerLocale, lt as resampleBars, Qt as resolveChartTheme, Tt as resolveDrawingOptions, B as resolveVolumeColors, X as roundToPriceStep, ae as roundToStep, St as sanitizeDrawingOptions, Mt as sanitizeDrawingStyle, Rn as scaleMarketPrices, E as sessionMinute, gn as setLocale, de as sliceVisibleData, it as sourcePrice, mt as stepDecimals, vn as t, Fe as tickBarCount, ze as timeParts, Ge as timeframeBucketStart, C as timeframeToMs, Ue as tzLabel, mn as vi, Kn as vn30fContracts, Gn as vn30fLastTradingDay, P as volumeColor, Oe as wallToUtc, _e as withAlpha, y as zoneOffsetMinutes, Ae as zonedDateFormatter };
1917
2460
 
1918
2461
  //# sourceMappingURL=index.js.map