@tradecanvas/commons 1.31.0 → 1.35.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
@@ -135,7 +135,6 @@ var e = /* @__PURE__ */ function(e) {
135
135
  removeStops: !0
136
136
  },
137
137
  fillMarks: !0,
138
- pricePrecision: 2,
139
138
  dragThreshold: 3
140
139
  }, i = {
141
140
  longColor: "#1fa874",
@@ -302,7 +301,22 @@ function pe(e, t, n, r = !1) {
302
301
  max: t + a * n
303
302
  };
304
303
  }
305
- function me(e, t, n, r = .05, i = !1) {
304
+ function me(e, t, n, r = !1) {
305
+ let i = Math.max(1 - n.top - n.bottom, 2 ** -52), a = r && e > 0 && t > 0 ? Math.log(t / e) : NaN;
306
+ if (Number.isFinite(a)) {
307
+ let r = (a || Math.log(1.01)) / i;
308
+ return {
309
+ min: e / Math.exp(r * n.bottom),
310
+ max: t * Math.exp(r * n.top)
311
+ };
312
+ }
313
+ let o = (t - e || 1) / i;
314
+ return {
315
+ min: e - o * n.bottom,
316
+ max: t + o * n.top
317
+ };
318
+ }
319
+ function he(e, t, n, r = .05, i = !1) {
306
320
  if (e.length === 0) return {
307
321
  min: 0,
308
322
  max: 1
@@ -314,7 +328,7 @@ function me(e, t, n, r = .05, i = !1) {
314
328
  max: 1
315
329
  } : pe(s, c, r, i);
316
330
  }
317
- function he(e, t) {
331
+ function ge(e, t) {
318
332
  return {
319
333
  ...e,
320
334
  high: Math.max(e.high, t.price),
@@ -326,13 +340,13 @@ function he(e, t) {
326
340
  }
327
341
  //#endregion
328
342
  //#region src/utils/color.ts
329
- function ge(e, t = 1) {
343
+ function _e(e, t = 1) {
330
344
  let n = e.slice(1);
331
345
  return (n.length === 3 || n.length === 4) && (n = [...n.slice(0, 3)].map((e) => e + e).join("")), `rgba(${parseInt(n.slice(0, 2), 16)}, ${parseInt(n.slice(2, 4), 16)}, ${parseInt(n.slice(4, 6), 16)}, ${t})`;
332
346
  }
333
- function _e(e, t) {
347
+ function h(e, t) {
334
348
  let n = e.trim();
335
- if (/^#([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i.test(n)) return ge(n, t);
349
+ if (/^#([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i.test(n)) return _e(n, t);
336
350
  let r = n.match(/^rgba?\(\s*(\d+(?:\.\d+)?)[\s,]+(\d+(?:\.\d+)?)[\s,]+(\d+(?:\.\d+)?)/i);
337
351
  return r ? `rgba(${r[1]}, ${r[2]}, ${r[3]}, ${t})` : e;
338
352
  }
@@ -346,7 +360,7 @@ function ve(e, t, n) {
346
360
  }
347
361
  //#endregion
348
362
  //#region src/utils/timezone.ts
349
- var h = 6e4, g = 1440 * h, _ = 15 * h, ye = 8192, be = 7 * g, xe = 4096, Se = new Set([
363
+ var g = 6e4, _ = 1440 * g, v = 15 * g, ye = 8192, y = 7 * _, be = 4096, xe = new Set([
350
364
  "UTC",
351
365
  "Etc/UTC",
352
366
  "GMT",
@@ -357,9 +371,9 @@ var h = 6e4, g = 1440 * h, _ = 15 * h, ye = 8192, be = 7 * g, xe = 4096, Se = ne
357
371
  "Etc/Universal",
358
372
  "Zulu",
359
373
  "Etc/Zulu"
360
- ]), Ce = /* @__PURE__ */ new Map(), v = /* @__PURE__ */ new Map(), we = /* @__PURE__ */ new Map();
361
- function Te(e) {
362
- let t = Ce.get(e);
374
+ ]), Se = /* @__PURE__ */ new Map(), b = /* @__PURE__ */ new Map(), Ce = /* @__PURE__ */ new Map();
375
+ function we(e) {
376
+ let t = Se.get(e);
363
377
  return t || (t = new Intl.DateTimeFormat("en-US", {
364
378
  timeZone: e,
365
379
  hourCycle: "h23",
@@ -369,34 +383,34 @@ function Te(e) {
369
383
  hour: "numeric",
370
384
  minute: "numeric",
371
385
  second: "numeric"
372
- }), Ce.set(e, t)), t;
386
+ }), Se.set(e, t)), t;
373
387
  }
374
- function Ee(e) {
388
+ function x(e) {
375
389
  if (!e) return !1;
376
390
  try {
377
- return Te(e), !0;
391
+ return we(e), !0;
378
392
  } catch {
379
393
  return !1;
380
394
  }
381
395
  }
382
- function y(e, t) {
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;
396
+ function S(e, t) {
397
+ if (!Number.isFinite(t) || xe.has(e)) return 0;
398
+ let n = Ce.get(e);
399
+ n || (n = /* @__PURE__ */ new Map(), Ce.set(e, n));
400
+ let r = Math.floor(t / y), i = n.get(r);
401
+ return i || (i = Te(e, r * y), n.size >= be && n.clear(), n.set(r, i)), t < i.change ? i.before : i.after;
388
402
  }
389
- function De(e, t) {
390
- let n = b(e, t), r = t + be - _, i = b(e, r);
403
+ function Te(e, t) {
404
+ let n = C(e, t), r = t + y - v, i = C(e, r);
391
405
  if (i === n) return {
392
406
  before: n,
393
407
  change: Infinity,
394
408
  after: i
395
409
  };
396
410
  let a = t;
397
- for (; r - a > _;) {
398
- let t = a + Math.floor((r - a) / _ / 2) * _;
399
- b(e, t) === n ? a = t : r = t;
411
+ for (; r - a > v;) {
412
+ let t = a + Math.floor((r - a) / v / 2) * v;
413
+ C(e, t) === n ? a = t : r = t;
400
414
  }
401
415
  return {
402
416
  before: n,
@@ -404,11 +418,11 @@ function De(e, t) {
404
418
  after: i
405
419
  };
406
420
  }
407
- function b(e, t) {
408
- let n = Math.floor(t / _), r = `${e}|${n}`, i = v.get(r);
421
+ function C(e, t) {
422
+ let n = Math.floor(t / v), r = `${e}|${n}`, i = b.get(r);
409
423
  if (i !== void 0) return i;
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))) {
424
+ let a = n * v, o = 1970, s = 1, c = 1, l = 0, u = 0, d = 0;
425
+ for (let t of we(e).formatToParts(new Date(a))) {
412
426
  let e = Number(t.value);
413
427
  switch (t.type) {
414
428
  case "year":
@@ -431,21 +445,21 @@ function b(e, t) {
431
445
  break;
432
446
  }
433
447
  }
434
- let f = Math.round((Date.UTC(o, s - 1, c, l, u, d) - a) / h);
435
- return v.size >= ye && v.clear(), v.set(r, f), f;
448
+ let f = Math.round((Date.UTC(o, s - 1, c, l, u, d) - a) / g);
449
+ return b.size >= ye && b.clear(), b.set(r, f), f;
436
450
  }
437
- function x(e, t) {
438
- return e === null ? -new Date(t).getTimezoneOffset() : typeof e == "number" ? e : y(e, t);
451
+ function w(e, t) {
452
+ return e === null ? -new Date(t).getTimezoneOffset() : typeof e == "number" ? e : S(e, t);
439
453
  }
440
- function Oe(e, t) {
441
- let n = e - x(t, e - g) * h;
442
- if (n + x(t, n) * h === e) return n;
443
- let r = e - x(t, e + g) * h;
444
- return r + x(t, r) * h === e ? r : n;
454
+ function Ee(e, t) {
455
+ let n = e - w(t, e - _) * g;
456
+ if (n + w(t, n) * g === e) return n;
457
+ let r = e - w(t, e + _) * g;
458
+ return r + w(t, r) * g === e ? r : n;
445
459
  }
446
- var ke = /* @__PURE__ */ new Map();
447
- function Ae(e, t, n) {
448
- let r = `${e}|${JSON.stringify(t)}|${n === null ? "local" : typeof n == "number" ? `fixed:${n}` : n}`, i = ke.get(r);
460
+ var De = /* @__PURE__ */ new Map();
461
+ function Oe(e, t, n) {
462
+ let r = `${e}|${JSON.stringify(t)}|${n === null ? "local" : typeof n == "number" ? `fixed:${n}` : n}`, i = De.get(r);
449
463
  if (i) return i;
450
464
  let a = n === null ? void 0 : typeof n == "number" ? "UTC" : n, o;
451
465
  try {
@@ -459,12 +473,12 @@ function Ae(e, t, n) {
459
473
  timeZone: a
460
474
  });
461
475
  }
462
- let s = typeof n == "number" ? n * h : 0;
463
- return i = (e) => o.format(new Date(e + s)), ke.set(r, i), i;
476
+ let s = typeof n == "number" ? n * g : 0;
477
+ return i = (e) => o.format(new Date(e + s)), De.set(r, i), i;
464
478
  }
465
479
  //#endregion
466
480
  //#region src/utils/time.ts
467
- var je = {
481
+ var ke = {
468
482
  "1s": 1e3,
469
483
  "5s": 5e3,
470
484
  "15s": 15e3,
@@ -491,16 +505,16 @@ var je = {
491
505
  "3M": 7776e6,
492
506
  "6M": 15552e6,
493
507
  "12M": 31536e6
494
- }, Me = {
508
+ }, Ae = {
495
509
  s: 1e3,
496
510
  m: 6e4,
497
511
  h: 36e5,
498
512
  d: 864e5,
499
513
  w: 6048e5,
500
514
  M: 2592e6
501
- }, Ne = /^([1-9]\d*)([smhdwM])$/;
502
- function S(e) {
503
- let t = Ne.exec(e);
515
+ }, je = /^([1-9]\d*)([smhdwM])$/;
516
+ function T(e) {
517
+ let t = je.exec(e);
504
518
  if (!t) return null;
505
519
  let n = Number(t[1]);
506
520
  return Number.isSafeInteger(n) ? {
@@ -508,24 +522,24 @@ function S(e) {
508
522
  unit: t[2]
509
523
  } : null;
510
524
  }
511
- var Pe = 1e6;
512
- function Fe(e) {
525
+ var Me = 1e6;
526
+ function Ne(e) {
513
527
  let t = /^([1-9]\d*)T$/.exec(e);
514
528
  if (!t) return null;
515
529
  let n = Number(t[1]);
516
- return Number.isSafeInteger(n) && n <= Pe ? n : null;
530
+ return Number.isSafeInteger(n) && n <= Me ? n : null;
517
531
  }
518
- function Ie(e) {
519
- return S(e) !== null;
532
+ function Pe(e) {
533
+ return T(e) !== null;
520
534
  }
521
- function C(e) {
522
- let t = je[e];
535
+ function E(e) {
536
+ let t = ke[e];
523
537
  if (t !== void 0) return t;
524
- let n = S(e);
525
- return n ? n.count * Me[n.unit] : NaN;
538
+ let n = T(e);
539
+ return n ? n.count * Ae[n.unit] : NaN;
526
540
  }
527
- function Le(e, t) {
528
- let n = new Date(e), r = C(t);
541
+ function Fe(e, t) {
542
+ let n = new Date(e), r = E(t);
529
543
  return r >= 864e5 ? n.toLocaleDateString(void 0, {
530
544
  month: "short",
531
545
  day: "numeric"
@@ -538,11 +552,11 @@ function Le(e, t) {
538
552
  second: "2-digit"
539
553
  });
540
554
  }
541
- function Re(e, t) {
542
- let n = C(t);
555
+ function Ie(e, t) {
556
+ let n = E(t);
543
557
  return Math.floor(e / n) * n;
544
558
  }
545
- function ze(e, t) {
559
+ function Le(e, t) {
546
560
  if (t === null) {
547
561
  let t = new Date(e);
548
562
  return {
@@ -553,7 +567,7 @@ function ze(e, t) {
553
567
  minutes: t.getMinutes()
554
568
  };
555
569
  }
556
- let n = new Date(e + x(t, e) * 6e4);
570
+ let n = new Date(e + w(t, e) * 6e4);
557
571
  return {
558
572
  year: n.getUTCFullYear(),
559
573
  month: n.getUTCMonth() + 1,
@@ -562,11 +576,11 @@ function ze(e, t) {
562
576
  minutes: n.getUTCMinutes()
563
577
  };
564
578
  }
565
- function Be(e) {
579
+ function Re(e) {
566
580
  return e.hours === 0 && e.minutes === 0;
567
581
  }
568
- var Ve = 20 * 36e5;
569
- function He(e) {
582
+ var ze = 20 * 36e5;
583
+ function Be(e) {
570
584
  let t = Math.min(e.length, 64);
571
585
  if (t < 2) return;
572
586
  let n = ce(e), r = Infinity;
@@ -574,78 +588,81 @@ function He(e) {
574
588
  let t = Math.abs(e[i].time - e[i - 1].time) * n;
575
589
  t > 0 && t < r && (r = t);
576
590
  }
577
- return r === Infinity ? void 0 : r >= Ve;
591
+ return r === Infinity ? void 0 : r >= ze;
578
592
  }
579
- function Ue(e, t = Date.now()) {
580
- let n = x(e, t), r = n >= 0 ? "+" : "-", i = Math.abs(n), a = Math.floor(i / 60), o = i % 60;
593
+ function Ve(e, t = Date.now()) {
594
+ let n = w(e, t), r = n >= 0 ? "+" : "-", i = Math.abs(n), a = Math.floor(i / 60), o = i % 60;
581
595
  return o === 0 ? `UTC${r}${a}` : `UTC${r}${a}:${String(o).padStart(2, "0")}`;
582
596
  }
583
- var We = Date.UTC(1970, 0, 5);
584
- function Ge(e, t, n = 1) {
585
- let { count: r, unit: i } = S(t) ?? {
597
+ var He = Date.UTC(1970, 0, 5);
598
+ function Ue(e, t, n = 1) {
599
+ let { count: r, unit: i } = T(t) ?? {
586
600
  count: 1,
587
601
  unit: "m"
588
602
  };
589
603
  if (i === "s" || i === "m" || i === "h" || i === "d") {
590
- let t = r * Me[i];
604
+ let t = r * Ae[i];
591
605
  return Math.floor(e / t) * t;
592
606
  }
593
607
  let a = new Date(e);
594
608
  if (i === "w") {
595
- let e = Me.d, t = (a.getUTCDay() - n + 7) % 7, i = Date.UTC(a.getUTCFullYear(), a.getUTCMonth(), a.getUTCDate() - t);
609
+ let e = Ae.d, t = (a.getUTCDay() - n + 7) % 7, i = Date.UTC(a.getUTCFullYear(), a.getUTCMonth(), a.getUTCDate() - t);
596
610
  if (r <= 1) return i;
597
- let o = Math.floor((i - We) / (7 * e));
598
- return We + Math.floor(o / r) * r * 7 * e;
611
+ let o = Math.floor((i - He) / (7 * e));
612
+ return He + Math.floor(o / r) * r * 7 * e;
599
613
  }
600
614
  let o = a.getUTCFullYear() * 12 + a.getUTCMonth(), s = Math.floor(o / r) * r;
601
615
  return Date.UTC(Math.floor(s / 12), s % 12, 1);
602
616
  }
603
617
  //#endregion
604
618
  //#region src/utils/precision.ts
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, {
619
+ var We = 64, D = /* @__PURE__ */ new Map();
620
+ function Ge(e, t) {
621
+ let n = `${e}|${t}`, r = D.get(n);
622
+ return r || (D.size >= We && D.clear(), r = new Intl.NumberFormat(e, {
609
623
  minimumFractionDigits: t,
610
624
  maximumFractionDigits: t
611
- }), w.set(n, r)), r;
625
+ }), D.set(n, r)), r;
612
626
  }
613
- function Je(e, t = 2, n = "en-US") {
614
- return qe(n, t).format(e);
627
+ function Ke(e, t, n) {
628
+ return t.formatPrice ? t.formatPrice(e) : O(e, n ?? qe(t.priceRange.min, t.priceRange.max), t.numberLocale ?? "en-US");
615
629
  }
616
- function Ye(e, t) {
630
+ function O(e, t = 2, n = "en-US") {
631
+ return Ge(n, t).format(e);
632
+ }
633
+ function qe(e, t) {
617
634
  if (!(t > e) || !Number.isFinite(e) || !Number.isFinite(t)) return 2;
618
635
  let n = oe(e, t, 8);
619
636
  return n > 0 && n < 1 ? Math.ceil(-Math.log10(n)) + 1 : 2;
620
637
  }
621
- function Xe(e, t, n, r = 2, i = "en-US") {
638
+ function Je(e, t, n, r = 2, i = "en-US") {
622
639
  if ((t === "percentage" || t === "indexedTo100") && n && n !== 0) {
623
640
  if (t === "percentage") {
624
641
  let t = (e / n - 1) * 100;
625
642
  return `${t > 0 ? "+" : ""}${t.toFixed(2)}%`;
626
643
  }
627
- return Je(e / n * 100, 2, i);
644
+ return O(e / n * 100, 2, i);
628
645
  }
629
- return Je(e, r, i);
646
+ return O(e, r, i);
630
647
  }
631
- function Ze(e, t, n = 1) {
648
+ function Ye(e, t, n = 1) {
632
649
  let r = Number.isInteger(n) && n > 1 ? n : 1;
633
650
  if (!Number.isFinite(e) || !Number.isInteger(t) || t < 2) return String(e);
634
651
  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
652
  return `${e < 0 && a > 0 ? "-" : ""}${o}'${String(c).padStart(l, "0")}${u}`;
636
653
  }
637
- function Qe(e) {
654
+ function Xe(e) {
638
655
  if (!Number.isInteger(e.denominator) || e.denominator < 2) return null;
639
656
  let t = Number.isInteger(e.subDenominator) && (e.subDenominator ?? 0) > 1 ? e.subDenominator : 1;
640
657
  return 1 / (e.denominator * t);
641
658
  }
642
- function $e(e) {
643
- return e ? typeof e == "function" ? e : Qe(e) === null ? null : (t) => Ze(t, e.denominator, e.subDenominator) : null;
659
+ function Ze(e) {
660
+ return e ? typeof e == "function" ? e : Xe(e) === null ? null : (t) => Ye(t, e.denominator, e.subDenominator) : null;
644
661
  }
645
- function et(e) {
662
+ function Qe(e) {
646
663
  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
664
  }
648
- function tt(e) {
665
+ function $e(e) {
649
666
  let t = 0;
650
667
  for (let n of e) {
651
668
  let e = n.toString(), r = e.indexOf(".");
@@ -655,7 +672,7 @@ function tt(e) {
655
672
  }
656
673
  //#endregion
657
674
  //#region src/utils/priceSource.ts
658
- var nt = [
675
+ var et = [
659
676
  "close",
660
677
  "open",
661
678
  "high",
@@ -665,10 +682,10 @@ var nt = [
665
682
  "ohlc4",
666
683
  "hlcc4"
667
684
  ];
668
- function rt(e) {
669
- return typeof e == "string" && nt.includes(e);
685
+ function tt(e) {
686
+ return typeof e == "string" && et.includes(e);
670
687
  }
671
- function it(e, t) {
688
+ function nt(e, t) {
672
689
  switch (t) {
673
690
  case "open": return e.open;
674
691
  case "high": return e.high;
@@ -680,13 +697,13 @@ function it(e, t) {
680
697
  default: return e.close;
681
698
  }
682
699
  }
683
- var at = /^ind:([^:]+):(.+)$/;
684
- function ot(e, t) {
700
+ var rt = /^ind:([^:]+):(.+)$/;
701
+ function it(e, t) {
685
702
  return `ind:${e}:${t}`;
686
703
  }
687
- function st(e) {
704
+ function at(e) {
688
705
  if (typeof e != "string") return null;
689
- let t = at.exec(e);
706
+ let t = rt.exec(e);
690
707
  return t ? {
691
708
  instanceId: t[1],
692
709
  key: t[2]
@@ -694,11 +711,11 @@ function st(e) {
694
711
  }
695
712
  //#endregion
696
713
  //#region src/utils/resample.ts
697
- var ct = 864e5;
698
- function lt(e, t, n = 1) {
714
+ var ot = 864e5;
715
+ function st(e, t, n = 1) {
699
716
  let r = [], i = null;
700
717
  for (let a of e) {
701
- let e = Ge(a.time, t, n);
718
+ let e = Ue(a.time, t, n);
702
719
  i === null || e !== i.time ? (i = {
703
720
  time: e,
704
721
  open: a.open,
@@ -710,37 +727,37 @@ function lt(e, t, n = 1) {
710
727
  }
711
728
  return r;
712
729
  }
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);
730
+ var k = (e) => e === "s" || e === "m" || e === "h" || e === "d";
731
+ function ct(e, t) {
732
+ let n = T(e), r = T(t);
716
733
  if (!n || !r) return !1;
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;
734
+ let i = E(e);
735
+ return n.unit === "d" && n.count > 1 ? !1 : k(r.unit) ? k(n.unit) && E(t) % i === 0 : n.unit === r.unit ? r.count % n.count === 0 : k(n.unit) && ot % i === 0;
719
736
  }
720
- function dt(e, t) {
737
+ function lt(e, t) {
721
738
  let n = null, r = 0;
722
739
  for (let i of t) {
723
- if (!ut(i, e)) continue;
724
- let t = C(i);
740
+ if (!ct(i, e)) continue;
741
+ let t = E(i);
725
742
  t > r && (n = i, r = t);
726
743
  }
727
744
  return n;
728
745
  }
729
746
  //#endregion
730
747
  //#region src/utils/symbols.ts
731
- function ft(e, t) {
748
+ function ut(e, t) {
732
749
  if (!e) return 0;
733
750
  if (e === t) return 1e3;
734
751
  if (e.startsWith(t)) return 600 - Math.min(100, e.length - t.length);
735
752
  let n = e.indexOf(t);
736
753
  return n >= 0 ? 300 - Math.min(100, n) : 0;
737
754
  }
738
- function pt(e, t, n = 50, r) {
755
+ function dt(e, t, n = 50, r) {
739
756
  let i = t.trim().toUpperCase();
740
757
  if (!i) return e.slice(0, n);
741
758
  let a = [];
742
759
  for (let t of e) {
743
- let e = Math.max(ft(t.symbol.toUpperCase(), i), ft((t.description ?? "").toUpperCase(), i) * .8);
760
+ let e = Math.max(ut(t.symbol.toUpperCase(), i), ut((t.description ?? "").toUpperCase(), i) * .8);
744
761
  e > 0 && a.push({
745
762
  info: t,
746
763
  score: e + (r?.(t) ?? 0)
@@ -748,7 +765,7 @@ function pt(e, t, n = 50, r) {
748
765
  }
749
766
  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
767
  }
751
- function mt(e) {
768
+ function ft(e) {
752
769
  let t = typeof e == "number" ? e : Number(e);
753
770
  if (!Number.isFinite(t) || t <= 0) return 0;
754
771
  for (let e = 0; e <= 12; e++) {
@@ -757,7 +774,7 @@ function mt(e) {
757
774
  }
758
775
  return 12;
759
776
  }
760
- function E(e) {
777
+ function A(e) {
761
778
  let t = /^(\d{1,2}):(\d{2})$/.exec(e.trim());
762
779
  if (!t) return null;
763
780
  let n = Number(t[1]), r = Number(t[2]);
@@ -765,26 +782,26 @@ function E(e) {
765
782
  }
766
783
  //#endregion
767
784
  //#region src/utils/marketStatus.ts
768
- var D = 864e5, O = 6e4, ht = 8;
769
- function gt(e, t) {
785
+ var j = 864e5, M = 6e4, pt = 8;
786
+ function mt(e, t) {
770
787
  let n = e?.timezone, r = (e?.sessions ?? []).flatMap((e) => {
771
- let t = E(e.start), n = E(e.end);
788
+ let t = A(e.start), n = A(e.end);
772
789
  return t === null || n === null || t === n ? [] : [{
773
790
  start: t,
774
791
  end: n,
775
792
  days: Array.isArray(e.days) ? e.days : null
776
793
  }];
777
794
  });
778
- if (!n || !Ee(n) || r.length === 0 || !Number.isFinite(t)) return {
795
+ if (!n || !x(n) || r.length === 0 || !Number.isFinite(t)) return {
779
796
  state: "always",
780
797
  next: null
781
798
  };
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;
799
+ let i = S(n, t) * M, a = Math.floor((t + i) / j) * j, o = (e) => e - S(n, e - S(n, e - i) * M) * M, s = [];
800
+ for (let e = -1; e <= pt; e++) {
801
+ let t = a + e * j, n = (Math.floor(t / j) + 4) % 7;
785
802
  for (let e of r) {
786
803
  if (e.days && !e.days.includes(n)) continue;
787
- let r = t + e.start * O, i = (e.end > e.start ? t : t + D) + e.end * O;
804
+ let r = t + e.start * M, i = (e.end > e.start ? t : t + j) + e.end * M;
788
805
  s.push([o(r), o(i)]);
789
806
  }
790
807
  }
@@ -807,15 +824,15 @@ function gt(e, t) {
807
824
  }
808
825
  //#endregion
809
826
  //#region src/utils/drawingOptions.ts
810
- var _t = 48, vt = 2e3, yt = 1e4;
811
- function bt(e) {
827
+ var ht = 48, gt = 2e3, _t = 1e4;
828
+ function vt(e) {
812
829
  if (!Array.isArray(e)) return;
813
830
  let t = [];
814
831
  for (let n of e) {
815
- if (t.length >= _t) break;
832
+ if (t.length >= ht) break;
816
833
  if (typeof n != "object" || !n) continue;
817
834
  let { value: e, visible: r, color: i } = n;
818
- if (typeof e != "number" || !Number.isFinite(e) || Math.abs(e) > yt || r !== void 0 && typeof r != "boolean") continue;
835
+ if (typeof e != "number" || !Number.isFinite(e) || Math.abs(e) > _t || r !== void 0 && typeof r != "boolean") continue;
819
836
  let a = {
820
837
  value: e,
821
838
  visible: r ?? !0
@@ -824,170 +841,170 @@ function bt(e) {
824
841
  }
825
842
  return t;
826
843
  }
827
- function xt(e, t) {
844
+ function yt(e, t) {
828
845
  switch (e.kind) {
829
846
  case "boolean": return typeof t == "boolean" ? t : void 0;
830
847
  case "number": return typeof t != "number" || !Number.isFinite(t) ? void 0 : Math.min(e.max ?? Infinity, Math.max(e.min ?? -Infinity, t));
831
848
  case "choice": return typeof t == "string" && e.choices.some((e) => e.value === t) ? t : void 0;
832
- case "levels": return bt(t);
833
- case "text": return typeof t == "string" ? t.slice(0, vt) : void 0;
849
+ case "levels": return vt(t);
850
+ case "text": return typeof t == "string" ? t.slice(0, gt) : void 0;
834
851
  }
835
852
  }
836
- function St(e, t) {
853
+ function bt(e, t) {
837
854
  if (!e || typeof t != "object" || !t) return {};
838
855
  let n = {};
839
856
  for (let [r, i] of Object.entries(t)) {
840
857
  let t = e[r];
841
858
  if (!t) continue;
842
- let a = xt(t, i);
859
+ let a = yt(t, i);
843
860
  a !== void 0 && (n[r] = a);
844
861
  }
845
862
  return n;
846
863
  }
847
- function Ct(e) {
864
+ function xt(e) {
848
865
  return Array.isArray(e) ? e.map((e) => ({ ...e })) : e;
849
866
  }
850
- function wt(e, t, n) {
867
+ function St(e, t, n) {
851
868
  let r = e?.[n];
852
- return r ? Ct((t && n in t ? xt(r, t[n]) : void 0) ?? r.default) : t?.[n];
869
+ return r ? xt((t && n in t ? yt(r, t[n]) : void 0) ?? r.default) : t?.[n];
853
870
  }
854
- function Tt(e, t) {
871
+ function Ct(e, t) {
855
872
  let n = {};
856
- for (let r of Object.keys(e ?? {})) n[r] = wt(e, t, r);
873
+ for (let r of Object.keys(e ?? {})) n[r] = St(e, t, r);
857
874
  return n;
858
875
  }
859
876
  //#endregion
860
877
  //#region src/utils/drawingStyle.ts
861
- var Et = [
878
+ var wt = [
862
879
  "solid",
863
880
  "dashed",
864
881
  "dotted"
865
- ], Dt = 64, Ot = 2e3, kt = 20, At = 200;
866
- function k(e, t, n) {
882
+ ], Tt = 64, Et = 2e3, Dt = 20, Ot = 200;
883
+ function kt(e, t, n) {
867
884
  return typeof e == "number" && Number.isFinite(e) ? Math.min(n, Math.max(t, e)) : void 0;
868
885
  }
869
- function jt(e) {
870
- return typeof e == "string" && e.length > 0 && e.length <= Dt ? e : void 0;
886
+ function At(e) {
887
+ return typeof e == "string" && e.length > 0 && e.length <= Tt ? e : void 0;
871
888
  }
872
- function Mt(e) {
889
+ function jt(e) {
873
890
  if (typeof e != "object" || !e) return {};
874
- let t = e, n = {}, r = jt(t.color);
891
+ let t = e, n = {}, r = At(t.color);
875
892
  r !== void 0 && (n.color = r);
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);
893
+ let i = kt(t.lineWidth, .5, Dt);
894
+ i !== void 0 && (n.lineWidth = i), wt.includes(t.lineStyle) && (n.lineStyle = t.lineStyle);
895
+ let a = At(t.fillColor);
879
896
  a !== void 0 && (n.fillColor = a);
880
- let o = k(t.fillOpacity, 0, 1);
897
+ let o = kt(t.fillOpacity, 0, 1);
881
898
  o !== void 0 && (n.fillOpacity = o);
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;
899
+ let s = kt(t.fontSize, 6, Ot);
900
+ return s !== void 0 && (n.fontSize = s), typeof t.text == "string" && (n.text = t.text.slice(0, Et)), n;
884
901
  }
885
902
  //#endregion
886
903
  //#region src/utils/chartTypeOptions.ts
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 {};
904
+ var N = (e) => typeof e == "number" && Number.isFinite(e) && e > 0, P = (e, t, n) => typeof e == "number" && Number.isInteger(e) && e >= t && e <= n, F = (e) => typeof e == "object" && !!e && !Array.isArray(e);
905
+ function Mt(e) {
906
+ if (!F(e)) return {};
890
907
  let t = {};
891
- if (M(e.renko)) {
908
+ if (F(e.renko)) {
892
909
  let { boxSize: n, atrPeriod: r } = e.renko;
893
910
  t.renko = {
894
- ...A(n) || n === "atr" ? { boxSize: n } : {},
895
- ...j(r, 1, 500) ? { atrPeriod: r } : {}
911
+ ...N(n) || n === "atr" ? { boxSize: n } : {},
912
+ ...P(r, 1, 500) ? { atrPeriod: r } : {}
896
913
  };
897
914
  }
898
- if (M(e.lineBreak)) {
915
+ if (F(e.lineBreak)) {
899
916
  let { lines: n } = e.lineBreak;
900
- t.lineBreak = j(n, 1, 10) ? { lines: n } : {};
917
+ t.lineBreak = P(n, 1, 10) ? { lines: n } : {};
901
918
  }
902
- if (M(e.kagi)) {
919
+ if (F(e.kagi)) {
903
920
  let { reversal: n, reversalType: r } = e.kagi;
904
921
  t.kagi = {
905
- ...A(n) ? { reversal: n } : {},
922
+ ...N(n) ? { reversal: n } : {},
906
923
  ...r === "percent" || r === "price" ? { reversalType: r } : {}
907
924
  };
908
925
  }
909
- if (M(e.pointAndFigure)) {
926
+ if (F(e.pointAndFigure)) {
910
927
  let { boxSize: n, reversal: r } = e.pointAndFigure;
911
928
  t.pointAndFigure = {
912
- ...A(n) || n === "auto" ? { boxSize: n } : {},
913
- ...j(r, 1, 10) ? { reversal: r } : {}
929
+ ...N(n) || n === "auto" ? { boxSize: n } : {},
930
+ ...P(r, 1, 10) ? { reversal: r } : {}
914
931
  };
915
932
  }
916
- if (M(e.rangeBars)) {
933
+ if (F(e.rangeBars)) {
917
934
  let { range: n } = e.rangeBars;
918
- t.rangeBars = A(n) || n === "auto" ? { range: n } : {};
935
+ t.rangeBars = N(n) || n === "auto" ? { range: n } : {};
919
936
  }
920
937
  return t;
921
938
  }
922
939
  //#endregion
923
940
  //#region src/constants/themes.ts
924
- var Pt = "-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif", Ft = {
925
- family: Pt,
926
- sizeSmall: 10,
927
- sizeMedium: 12,
928
- sizeLarge: 14
929
- }, N = {
941
+ var Nt = "'Cascadia Mono', 'SF Mono', ui-monospace, Menlo, Consolas, monospace", Pt = {
942
+ family: Nt,
943
+ sizeSmall: 11,
944
+ sizeMedium: 13,
945
+ sizeLarge: 15
946
+ }, I = {
930
947
  amber: "#f2a93b",
931
- up: "#1fa874",
948
+ up: "#1c9e6d",
932
949
  down: "#e8505b",
933
- ochre: "#c98316",
934
- blue: "#4c8dff",
935
- violet: "#a57cff",
950
+ ochre: "#c07c12",
951
+ blue: "#4688fa",
952
+ violet: "#9c73f8",
936
953
  cyan: "#1398a8",
937
954
  rose: "#e25592",
938
955
  neutral: "#7d8696",
939
- ink: "#0c1016"
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 = {
956
+ ink: "#131416"
957
+ }, Ft = .22;
958
+ function L(e) {
959
+ return h(e, Ft);
960
+ }
961
+ var It = "#fbfaf6", R = "#1b1d21", Lt = "#131416", z = "#e6e3dc", Rt = "#1f7a5c", zt = "#b8423f", Bt = "#4fae8a", Vt = "#e2706b", Ht = "#6a6966", Ut = "#8d8a84", Wt = [
962
+ I.blue,
963
+ I.ochre,
964
+ I.violet,
965
+ I.cyan,
966
+ I.rose
967
+ ], Gt = {
951
968
  name: "dark",
952
- background: N.ink,
953
- text: "#d9dde4",
954
- textSecondary: "#7d8696",
955
- grid: "#161b23",
956
- crosshair: "#8a93a3",
957
- candleUp: F,
958
- candleDown: I,
959
- candleUpWick: F,
960
- candleDownWick: I,
961
- lineColor: N.amber,
962
- areaTopColor: "rgba(242, 169, 59, 0.32)",
963
- areaBottomColor: "rgba(242, 169, 59, 0.0)",
964
- volumeUp: P(F),
965
- volumeDown: P(I),
966
- axisLine: "#1f2630",
967
- axisLabel: "#9aa3b2",
968
- axisLabelBackground: "#1f2630",
969
- font: Ft
970
- }, R = {
969
+ background: Lt,
970
+ text: z,
971
+ textSecondary: "#8d8b86",
972
+ grid: "#1d1e21",
973
+ crosshair: Ht,
974
+ candleUp: Bt,
975
+ candleDown: Vt,
976
+ candleUpWick: Bt,
977
+ candleDownWick: Vt,
978
+ lineColor: z,
979
+ areaTopColor: h(z, .14),
980
+ areaBottomColor: h(z, 0),
981
+ volumeUp: h(z, .14),
982
+ volumeDown: h(z, .08),
983
+ axisLine: "#2a2b2f",
984
+ axisLabel: "#a9a6a0",
985
+ axisLabelBackground: "#232427",
986
+ font: Pt
987
+ }, Kt = {
971
988
  name: "light",
972
- background: "#ffffff",
973
- text: "#0f131a",
974
- textSecondary: "#6b7380",
975
- grid: "#eef0f3",
976
- crosshair: "#8a93a3",
977
- candleUp: "#16a36a",
978
- candleDown: "#d9414f",
979
- candleUpWick: "#16a36a",
980
- candleDownWick: "#d9414f",
981
- lineColor: "#c77a0a",
982
- areaTopColor: "rgba(199, 122, 10, 0.24)",
983
- areaBottomColor: "rgba(199, 122, 10, 0.0)",
984
- volumeUp: P("#16a36a"),
985
- volumeDown: P("#d9414f"),
986
- axisLine: "#dde1e7",
987
- axisLabel: "#5b6472",
988
- axisLabelBackground: "#eef0f3",
989
- font: Ft
990
- }, z = {
989
+ background: It,
990
+ text: R,
991
+ textSecondary: "#6b6f76",
992
+ grid: "#ece8df",
993
+ crosshair: Ut,
994
+ candleUp: Rt,
995
+ candleDown: zt,
996
+ candleUpWick: Rt,
997
+ candleDownWick: zt,
998
+ lineColor: R,
999
+ areaTopColor: h(R, .12),
1000
+ areaBottomColor: h(R, 0),
1001
+ volumeUp: h(R, .13),
1002
+ volumeDown: h(R, .08),
1003
+ axisLine: "#cfcac0",
1004
+ axisLabel: "#4a4e57",
1005
+ axisLabelBackground: "#eeebe3",
1006
+ font: Pt
1007
+ }, qt = {
991
1008
  name: "terminal",
992
1009
  background: "#0E0E0E",
993
1010
  text: "#C0C0C0",
@@ -1001,8 +1018,8 @@ var F = "#2eb88a", I = "#e85a67", Lt = [
1001
1018
  lineColor: "#3D8BFD",
1002
1019
  areaTopColor: "rgba(61, 139, 253, 0.3)",
1003
1020
  areaBottomColor: "rgba(61, 139, 253, 0.0)",
1004
- volumeUp: "rgba(0, 255, 135, 0.2)",
1005
- volumeDown: "rgba(255, 59, 77, 0.2)",
1021
+ volumeUp: L("#00FF87"),
1022
+ volumeDown: L("#FF3B4D"),
1006
1023
  axisLine: "#1A1A1A",
1007
1024
  axisLabel: "#8A8A8A",
1008
1025
  axisLabelBackground: "#1A1A1A",
@@ -1012,18 +1029,11 @@ var F = "#2eb88a", I = "#e85a67", Lt = [
1012
1029
  sizeMedium: 12,
1013
1030
  sizeLarge: 14
1014
1031
  }
1015
- }, Rt = new Set([
1016
- L.volumeUp,
1017
- L.volumeDown,
1018
- R.volumeUp,
1019
- R.volumeDown,
1020
- z.volumeUp,
1021
- z.volumeDown
1022
- ]);
1032
+ }, Jt = new Set([qt.volumeUp, qt.volumeDown]);
1023
1033
  function B(e) {
1024
1034
  let t = (e, t) => {
1025
- if (!Rt.has(e)) return e;
1026
- let n = P(t);
1035
+ if (!Jt.has(e)) return e;
1036
+ let n = L(t);
1027
1037
  return n === t ? e : n;
1028
1038
  };
1029
1039
  return {
@@ -1033,42 +1043,42 @@ function B(e) {
1033
1043
  }
1034
1044
  //#endregion
1035
1045
  //#region src/utils/chartStyle.ts
1036
- var zt = [
1046
+ var Yt = [
1037
1047
  "solid",
1038
1048
  "dashed",
1039
1049
  "dotted"
1040
- ], Bt = 20, Vt = 64, Ht = 2, Ut = [
1050
+ ], Xt = 20, Zt = 64, Qt = 2, $t = [
1041
1051
  /^#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i,
1042
1052
  /^[a-z]{3,30}$/i,
1043
1053
  /^(?:rgba?|hsla?|hwb|lab|lch|oklab|oklch|color)\([0-9a-z.,%/\s-]*\)$/i
1044
1054
  ];
1045
1055
  function V(e) {
1046
- return typeof e == "string" && e.length <= Vt && Ut.some((t) => t.test(e.trim()));
1056
+ return typeof e == "string" && e.length <= Zt && $t.some((t) => t.test(e.trim()));
1047
1057
  }
1048
- function Wt(e, t) {
1058
+ function en(e, t) {
1049
1059
  switch (e) {
1050
1060
  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;
1061
+ case "lineStyle": return Yt.includes(t);
1062
+ case "width": return typeof t == "number" && Number.isFinite(t) && t > 0 && t <= Xt;
1053
1063
  case "boolean": return typeof t == "boolean";
1054
1064
  }
1055
1065
  }
1056
- function Gt(e) {
1066
+ function tn(e) {
1057
1067
  return Object.prototype.hasOwnProperty.call(t, e);
1058
1068
  }
1059
- function Kt(e) {
1069
+ function nn(e) {
1060
1070
  let n = {}, r = [];
1061
1071
  if (typeof e != "object" || !e || Array.isArray(e)) return {
1062
1072
  overrides: {},
1063
1073
  rejected: r
1064
1074
  };
1065
- for (let [i, a] of Object.entries(e)) Gt(i) ? a === null ? n[i] = null : Wt(t[i], a) ? n[i] = a : r.push(i) : r.push(i);
1075
+ for (let [i, a] of Object.entries(e)) tn(i) ? a === null ? n[i] = null : en(t[i], a) ? n[i] = a : r.push(i) : r.push(i);
1066
1076
  return {
1067
1077
  overrides: n,
1068
1078
  rejected: r
1069
1079
  };
1070
1080
  }
1071
- function qt(e) {
1081
+ function rn(e) {
1072
1082
  if (typeof e != "object" || !e || Array.isArray(e)) return null;
1073
1083
  let { background: t, separator: n } = e, r = {
1074
1084
  ...V(t) ? { background: t } : {},
@@ -1076,24 +1086,24 @@ function qt(e) {
1076
1086
  };
1077
1087
  return Object.keys(r).length > 0 ? r : null;
1078
1088
  }
1079
- var Jt = /^[A-Za-z0-9_]{1,32}$/;
1080
- function Yt(e) {
1089
+ var an = /^[A-Za-z0-9_]{1,32}$/;
1090
+ function on(e) {
1081
1091
  if (typeof e != "object" || !e || Array.isArray(e)) return;
1082
1092
  let t = {};
1083
1093
  for (let [n, r] of Object.entries(e)) {
1084
- if (!Jt.test(n) || typeof r != "object" || !r) continue;
1094
+ if (!an.test(n) || typeof r != "object" || !r) continue;
1085
1095
  let { lineStyle: e, visible: i } = r, a = {
1086
- ...zt.includes(e) ? { lineStyle: e } : {},
1096
+ ...Yt.includes(e) ? { lineStyle: e } : {},
1087
1097
  ...typeof i == "boolean" ? { visible: i } : {}
1088
1098
  };
1089
1099
  Object.keys(a).length > 0 && (t[n] = a);
1090
1100
  }
1091
1101
  return Object.keys(t).length > 0 ? t : void 0;
1092
1102
  }
1093
- function Xt(e, t, n = 1) {
1103
+ function sn(e, t, n = 1) {
1094
1104
  return e === "solid" ? [] : e === "dotted" ? [n, n * 2] : [...t];
1095
1105
  }
1096
- function Zt(e, t, n) {
1106
+ function cn(e, t, n) {
1097
1107
  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;
1098
1108
  return {
1099
1109
  up: o,
@@ -1101,7 +1111,7 @@ function Zt(e, t, n) {
1101
1111
  wickUp: r("wickUpColor") ?? t("series.candlestick.wickUpColor") ?? (i === void 0 ? e.candleUpWick : o),
1102
1112
  wickDown: r("wickDownColor") ?? t("series.candlestick.wickDownColor") ?? (a === void 0 ? e.candleDownWick : s),
1103
1113
  line: r("color") ?? r("lineColor") ?? t("series.line.color") ?? e.lineColor,
1104
- lineWidth: r("lineWidth") ?? t("series.line.lineWidth") ?? Ht,
1114
+ lineWidth: r("lineWidth") ?? t("series.line.lineWidth") ?? Qt,
1105
1115
  top: r("topColor") ?? t("series.area.topColor") ?? e.areaTopColor,
1106
1116
  bottom: r("bottomColor") ?? t("series.area.bottomColor") ?? e.areaBottomColor
1107
1117
  };
@@ -1114,8 +1124,8 @@ function H(e, t, n) {
1114
1124
  width: e(`${t}.width`) ?? n.width
1115
1125
  };
1116
1126
  }
1117
- function Qt(e, t, n) {
1118
- let { style: r, ...i } = e, a = n, o = (e) => a[e], s = Zt(i, o, t), c = o("background.color") ?? i.background, l = (e, t) => o(e) ?? t, u = (e) => o(e) ?? null, d = {
1127
+ function ln(e, t, n) {
1128
+ let { style: r, ...i } = e, a = n, o = (e) => a[e], s = cn(i, o, t), c = o("background.color") ?? i.background, l = (e, t) => o(e) ?? t, u = (e) => o(e) ?? null, d = {
1119
1129
  panes: {
1120
1130
  background: l("panes.background", c),
1121
1131
  separator: l("panes.separatorColor", i.axisLine),
@@ -1139,13 +1149,13 @@ function Qt(e, t, n) {
1139
1149
  horizontal: H(o, "crosshair.horizontal", {
1140
1150
  visible: !0,
1141
1151
  color: i.crosshair,
1142
- style: "dashed",
1152
+ style: "solid",
1143
1153
  width: 1
1144
1154
  }),
1145
1155
  vertical: H(o, "crosshair.vertical", {
1146
1156
  visible: !0,
1147
1157
  color: i.crosshair,
1148
- style: "dashed",
1158
+ style: "solid",
1149
1159
  width: 1
1150
1160
  }),
1151
1161
  labelBackground: l("crosshair.labelBackground", i.text),
@@ -1170,7 +1180,7 @@ function Qt(e, t, n) {
1170
1180
  visible: o("lastPrice.visible") ?? !0,
1171
1181
  up: l("lastPrice.upColor", s.up),
1172
1182
  down: l("lastPrice.downColor", s.down),
1173
- style: o("lastPrice.style") ?? "dashed",
1183
+ style: o("lastPrice.style") ?? "solid",
1174
1184
  width: o("lastPrice.width") ?? 1
1175
1185
  },
1176
1186
  sessionBreaks: {
@@ -1214,7 +1224,7 @@ function Qt(e, t, n) {
1214
1224
  style: d
1215
1225
  };
1216
1226
  }
1217
- var $t = {
1227
+ var un = {
1218
1228
  "background.color": (e) => e.background,
1219
1229
  "panes.background": (e, t) => t.panes.background,
1220
1230
  "panes.separatorColor": (e, t) => t.panes.separator,
@@ -1251,16 +1261,16 @@ var $t = {
1251
1261
  "tradeZones.lossColor": (e, t) => t.tradeZones.loss,
1252
1262
  "tradeZones.activeColor": (e, t) => t.tradeZones.active,
1253
1263
  "drawings.handleColor": (e, t) => t.drawings.handle
1254
- }, en = {
1264
+ }, dn = {
1255
1265
  visible: "visible",
1256
1266
  color: "color",
1257
1267
  style: "style",
1258
1268
  width: "width"
1259
1269
  };
1260
- function tn(e, t, n, r = "candlestick") {
1270
+ function fn(e, t, n, r = "candlestick") {
1261
1271
  let i = n.split(".");
1262
1272
  if (i[0] === "series") {
1263
- let n = Zt(e, (e) => t[e], i[1]);
1273
+ let n = cn(e, (e) => t[e], i[1]);
1264
1274
  switch (i[2]) {
1265
1275
  case "upColor": return n.up;
1266
1276
  case "downColor": return n.down;
@@ -1273,12 +1283,12 @@ function tn(e, t, n, r = "candlestick") {
1273
1283
  case "bottomColor": return n.bottom;
1274
1284
  }
1275
1285
  }
1276
- let a = Qt(e, r, t), o = a.style;
1277
- return i[0] === "grid" || i[0] === "crosshair" && (i[1] === "horizontal" || i[1] === "vertical") ? (i[0] === "grid" ? o.grid : o.crosshair)[i[1]][en[i[2]]] : $t[n]?.(a, o) ?? null;
1286
+ let a = ln(e, r, t), o = a.style;
1287
+ return i[0] === "grid" || i[0] === "crosshair" && (i[1] === "horizontal" || i[1] === "vertical") ? (i[0] === "grid" ? o.grid : o.crosshair)[i[1]][dn[i[2]]] : un[n]?.(a, o) ?? null;
1278
1288
  }
1279
1289
  //#endregion
1280
1290
  //#region src/constants/defaults.ts
1281
- var nn = {
1291
+ var pn = {
1282
1292
  autoScale: !0,
1283
1293
  rightMargin: 5,
1284
1294
  minBarSpacing: 2,
@@ -1289,7 +1299,7 @@ var nn = {
1289
1299
  vLineStyle: "solid"
1290
1300
  },
1291
1301
  crosshair: { mode: "magnet" }
1292
- }, rn = [
1302
+ }, mn = [
1293
1303
  "1s",
1294
1304
  "1m",
1295
1305
  "3m",
@@ -1306,7 +1316,7 @@ var nn = {
1306
1316
  "3d",
1307
1317
  "1w",
1308
1318
  "1M"
1309
- ], an = [
1319
+ ], hn = [
1310
1320
  "1m",
1311
1321
  "5m",
1312
1322
  "15m",
@@ -1320,7 +1330,7 @@ var nn = {
1320
1330
  "3M",
1321
1331
  "6M",
1322
1332
  "12M"
1323
- ], on = [
1333
+ ], gn = [
1324
1334
  "1m",
1325
1335
  "5m",
1326
1336
  "15m",
@@ -1330,7 +1340,7 @@ var nn = {
1330
1340
  "1d",
1331
1341
  "1w",
1332
1342
  "1M"
1333
- ], sn = [
1343
+ ], _n = [
1334
1344
  "1m",
1335
1345
  "5m",
1336
1346
  "15m",
@@ -1338,7 +1348,24 @@ var nn = {
1338
1348
  "4h",
1339
1349
  "1d",
1340
1350
  "1w"
1341
- ], cn = 8, ln = 2, un = 70, dn = 30, fn = 60, pn = 120, U = {
1351
+ ], vn = 8, yn = 2, bn = 70, xn = 30, Sn = 60, Cn = 120, wn = (1 + Math.sqrt(5)) / 2, Tn = [
1352
+ 1,
1353
+ 2,
1354
+ 3,
1355
+ 5,
1356
+ 8,
1357
+ 13,
1358
+ 21,
1359
+ 34,
1360
+ 55,
1361
+ 89
1362
+ ];
1363
+ function En(e, t, n = 1) {
1364
+ return Math.round(e * wn ** (t / n));
1365
+ }
1366
+ //#endregion
1367
+ //#region src/i18n/en.ts
1368
+ var U = {
1342
1369
  candlestick: "Candlestick",
1343
1370
  line: "Line",
1344
1371
  area: "Area",
@@ -1441,7 +1468,7 @@ var nn = {
1441
1468
  error: "Error",
1442
1469
  numberDecimalSeparator: ".",
1443
1470
  numberGroupSeparator: ","
1444
- }, mn = {
1471
+ }, Dn = {
1445
1472
  candlestick: "Nến",
1446
1473
  line: "Đường",
1447
1474
  area: "Vùng",
@@ -1544,20 +1571,20 @@ var nn = {
1544
1571
  error: "Lỗi",
1545
1572
  numberDecimalSeparator: ",",
1546
1573
  numberGroupSeparator: "."
1547
- }, W = new Map([["en", U], ["vi", mn]]), G = "en", hn = U;
1548
- function gn(e) {
1549
- G = e, hn = W.get(e) ?? U;
1574
+ }, W = new Map([["en", U], ["vi", Dn]]), G = "en", On = U;
1575
+ function kn(e) {
1576
+ G = e, On = W.get(e) ?? U;
1550
1577
  }
1551
- function _n() {
1578
+ function An() {
1552
1579
  return G;
1553
1580
  }
1554
- function vn(e) {
1555
- return hn[e] ?? U[e] ?? e;
1581
+ function jn(e) {
1582
+ return On[e] ?? U[e] ?? e;
1556
1583
  }
1557
- function yn(e, t) {
1584
+ function Mn(e, t) {
1558
1585
  W.set(e, t);
1559
1586
  }
1560
- function bn(e) {
1587
+ function Nn(e) {
1561
1588
  return W.get(e ?? G) ?? U;
1562
1589
  }
1563
1590
  function K(e, t = 2, n) {
@@ -1565,10 +1592,10 @@ function K(e, t = 2, n) {
1565
1592
  for (let e = l.length - 1, t = 0; e >= 0; e--, t++) t > 0 && t % 3 == 0 && (u = a + u), u = l[e] + u;
1566
1593
  return c && (u = "-" + u), s ? u + i + s : u;
1567
1594
  }
1568
- function xn(e) {
1595
+ function Pn(e) {
1569
1596
  return K(e, 0, "vi");
1570
1597
  }
1571
- function Sn(e, t) {
1598
+ function Fn(e, t) {
1572
1599
  return e >= 1e9 ? K(e / 1e9, 2, t ?? G) + "B" : e >= 1e6 ? K(e / 1e6, 2, t ?? G) + "M" : e >= 1e3 ? K(e / 1e3, 2, t ?? G) + "K" : K(e, 0, t ?? G);
1573
1600
  }
1574
1601
  //#endregion
@@ -1580,7 +1607,7 @@ var q = {
1580
1607
  ceiling: "#D946EF",
1581
1608
  floor: "#06B6D4",
1582
1609
  reference: "#EAB308"
1583
- }, J = "Asia/Ho_Chi_Minh", Cn = [
1610
+ }, J = "Asia/Ho_Chi_Minh", In = [
1584
1611
  {
1585
1612
  name: "ATO",
1586
1613
  startTime: "09:00",
@@ -1611,7 +1638,7 @@ var q = {
1611
1638
  endTime: "14:45",
1612
1639
  type: "preClose"
1613
1640
  }
1614
- ], wn = [
1641
+ ], Ln = [
1615
1642
  {
1616
1643
  name: "Phiên 1",
1617
1644
  startTime: "09:15",
@@ -1642,7 +1669,7 @@ var q = {
1642
1669
  endTime: "15:00",
1643
1670
  type: "postClose"
1644
1671
  }
1645
- ], Tn = [
1672
+ ], Rn = [
1646
1673
  {
1647
1674
  name: "Phiên 1",
1648
1675
  startTime: "09:15",
@@ -1661,7 +1688,7 @@ var q = {
1661
1688
  endTime: "14:30",
1662
1689
  type: "continuous"
1663
1690
  }
1664
- ], En = [
1691
+ ], zn = [
1665
1692
  {
1666
1693
  name: "ATO",
1667
1694
  startTime: "08:45",
@@ -1692,7 +1719,7 @@ var q = {
1692
1719
  endTime: "14:45",
1693
1720
  type: "preClose"
1694
1721
  }
1695
- ], Dn = {
1722
+ ], Bn = {
1696
1723
  type: "stock",
1697
1724
  exchange: "HOSE",
1698
1725
  currency: "VND",
@@ -1719,12 +1746,12 @@ var q = {
1719
1746
  ceilingPercent: 7,
1720
1747
  floorPercent: 7
1721
1748
  },
1722
- sessions: Cn,
1749
+ sessions: In,
1723
1750
  colorScheme: q
1724
- }, On = {
1725
- ...Dn,
1751
+ }, Vn = {
1752
+ ...Bn,
1726
1753
  priceSteps: void 0
1727
- }, kn = {
1754
+ }, Hn = {
1728
1755
  type: "stock",
1729
1756
  exchange: "HNX",
1730
1757
  currency: "VND",
@@ -1737,9 +1764,9 @@ var q = {
1737
1764
  ceilingPercent: 10,
1738
1765
  floorPercent: 10
1739
1766
  },
1740
- sessions: wn,
1767
+ sessions: Ln,
1741
1768
  colorScheme: q
1742
- }, An = {
1769
+ }, Un = {
1743
1770
  type: "stock",
1744
1771
  exchange: "UPCOM",
1745
1772
  currency: "VND",
@@ -1752,9 +1779,9 @@ var q = {
1752
1779
  ceilingPercent: 15,
1753
1780
  floorPercent: 15
1754
1781
  },
1755
- sessions: Tn,
1782
+ sessions: Rn,
1756
1783
  colorScheme: q
1757
- }, jn = {
1784
+ }, Wn = {
1758
1785
  type: "futures",
1759
1786
  exchange: "HNX",
1760
1787
  currency: "VND",
@@ -1768,14 +1795,14 @@ var q = {
1768
1795
  ceilingPercent: 7,
1769
1796
  floorPercent: 7
1770
1797
  },
1771
- sessions: En,
1798
+ sessions: zn,
1772
1799
  colorScheme: q
1773
- }, Mn = {
1800
+ }, Gn = {
1774
1801
  type: "crypto",
1775
1802
  currency: "USDT",
1776
1803
  pricePrecision: 2,
1777
1804
  priceLimits: { enabled: !1 }
1778
- }, Nn = {
1805
+ }, Kn = {
1779
1806
  type: "stock",
1780
1807
  exchange: "NYSE",
1781
1808
  currency: "USD",
@@ -1804,77 +1831,75 @@ var q = {
1804
1831
  }
1805
1832
  ]
1806
1833
  };
1807
- function Pn(e) {
1834
+ function qn(e) {
1808
1835
  return {
1809
1836
  ...e,
1810
1837
  candleUp: q.up,
1811
1838
  candleDown: q.down,
1812
1839
  candleUpWick: q.up,
1813
- candleDownWick: q.down,
1814
- volumeUp: P(q.up),
1815
- volumeDown: P(q.down)
1840
+ candleDownWick: q.down
1816
1841
  };
1817
1842
  }
1818
1843
  var Y = 1e-9;
1819
- function Fn(e, t) {
1844
+ function X(e, t) {
1820
1845
  let n = t.priceStep;
1821
1846
  for (let r of t.priceSteps ?? []) e + Y >= r.from && (n = r.step);
1822
1847
  return n !== void 0 && n > 0 ? n : void 0;
1823
1848
  }
1824
- function In(e, t) {
1849
+ function Jn(e, t) {
1825
1850
  let n = t.priceStep;
1826
1851
  for (let r of t.priceSteps ?? []) e - Y > r.from && (n = r.step);
1827
1852
  return n !== void 0 && n > 0 ? n : void 0;
1828
1853
  }
1829
- function X(e, t, n = "nearest") {
1830
- let r = Fn(e, t);
1854
+ function Z(e, t, n = "nearest") {
1855
+ let r = X(e, t);
1831
1856
  if (r === void 0 || !Number.isFinite(e)) return e;
1832
1857
  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(mt(r)));
1858
+ return Number((a * r).toFixed(ft(r)));
1834
1859
  }
1835
- function Ln(e, t) {
1860
+ function Yn(e, t) {
1836
1861
  if (!t.priceLimits?.enabled || !t.priceLimits.ceilingPercent) return null;
1837
- 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 = Fn(i, t);
1862
+ let n = t.priceLimits.ceilingPercent / 100, r = (t.priceLimits.floorPercent ?? t.priceLimits.ceilingPercent) / 100, i = e, a = i * (1 + n), o = i * (1 - r), s = X(i, t);
1838
1863
  if (s === void 0) return {
1839
1864
  ceiling: a,
1840
1865
  floor: o,
1841
1866
  reference: i
1842
1867
  };
1843
- let c = X(i + s, t);
1868
+ let c = Z(i + s, t);
1844
1869
  if (Math.abs(i - s) < Y) return {
1845
1870
  ceiling: c,
1846
1871
  floor: i,
1847
1872
  reference: i
1848
1873
  };
1849
- let l = X(a, t, "down"), u = X(o, t, "up");
1850
- return l <= i && (l = c), u >= i && (u = X(i - (In(i, t) ?? s), t)), u <= 0 && (u = i), {
1874
+ let l = Z(a, t, "down"), u = Z(o, t, "up");
1875
+ return l <= i && (l = c), u >= i && (u = Z(i - (Jn(i, t) ?? s), t)), u <= 0 && (u = i), {
1851
1876
  ceiling: l,
1852
1877
  floor: u,
1853
1878
  reference: i
1854
1879
  };
1855
1880
  }
1856
- var Z = (e, t) => Math.round(e * t * 1e9) / 1e9;
1857
- function Rn(e, t) {
1881
+ var Q = (e, t) => Math.round(e * t * 1e9) / 1e9;
1882
+ function Xn(e, t) {
1858
1883
  let n = Math.round(Math.log10(t));
1859
1884
  return {
1860
1885
  ...e,
1861
1886
  pricePrecision: e.pricePrecision === void 0 ? void 0 : Math.max(0, e.pricePrecision - n),
1862
- priceStep: e.priceStep === void 0 ? void 0 : Z(e.priceStep, t),
1887
+ priceStep: e.priceStep === void 0 ? void 0 : Q(e.priceStep, t),
1863
1888
  priceSteps: e.priceSteps?.map((e) => ({
1864
- from: Z(e.from, t),
1865
- step: Z(e.step, t)
1889
+ from: Q(e.from, t),
1890
+ step: Q(e.step, t)
1866
1891
  })),
1867
1892
  priceLimits: e.priceLimits && {
1868
1893
  ...e.priceLimits,
1869
- referencePrice: e.priceLimits.referencePrice === void 0 ? void 0 : Z(e.priceLimits.referencePrice, t)
1894
+ referencePrice: e.priceLimits.referencePrice === void 0 ? void 0 : Q(e.priceLimits.referencePrice, t)
1870
1895
  }
1871
1896
  };
1872
1897
  }
1873
- var zn = 6e4, Bn = 864e5;
1874
- function Vn(e, t) {
1898
+ var Zn = 6e4, Qn = 864e5;
1899
+ function $n(e, t) {
1875
1900
  let n, r;
1876
1901
  if (t) {
1877
- let i = new Date(e + y(t, e) * zn);
1902
+ let i = new Date(e + S(t, e) * Zn);
1878
1903
  n = i.getUTCHours(), r = i.getUTCMinutes();
1879
1904
  } else {
1880
1905
  let t = new Date(e);
@@ -1882,31 +1907,31 @@ function Vn(e, t) {
1882
1907
  }
1883
1908
  return `${String(n).padStart(2, "0")}:${String(r).padStart(2, "0")}`;
1884
1909
  }
1885
- function Hn(e, t = Date.now(), n) {
1886
- if (n !== void 0 && !Ee(n)) return null;
1887
- let r = Vn(t, n);
1910
+ function er(e, t = Date.now(), n) {
1911
+ if (n !== void 0 && !x(n)) return null;
1912
+ let r = $n(t, n);
1888
1913
  for (let t of e) if (r >= t.startTime && r < t.endTime) return t;
1889
1914
  return null;
1890
1915
  }
1891
- var Q = (e) => String(e).padStart(2, "0"), $ = (e) => {
1916
+ var $ = (e) => String(e).padStart(2, "0"), tr = (e) => {
1892
1917
  let t = new Date(e);
1893
- return `${t.getUTCFullYear()}-${Q(t.getUTCMonth() + 1)}-${Q(t.getUTCDate())}`;
1894
- }, Un = 4, Wn = 7 * 36e5;
1895
- function Gn(e, t, n) {
1896
- let r = Date.UTC(e, t - 1, 1), i = 1 + (Un - new Date(r).getUTCDay() + 7) % 7, a = Date.UTC(e, t - 1, i + 14), o = (e) => {
1918
+ return `${t.getUTCFullYear()}-${$(t.getUTCMonth() + 1)}-${$(t.getUTCDate())}`;
1919
+ }, nr = 4, rr = 7 * 36e5;
1920
+ function ir(e, t, n) {
1921
+ 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) => {
1897
1922
  let t = new Date(e).getUTCDay();
1898
- return t === 0 || t === 6 || (n?.($(e)) ?? !1);
1923
+ return t === 0 || t === 6 || (n?.(tr(e)) ?? !1);
1899
1924
  };
1900
- for (; o(a);) a -= Bn;
1901
- return $(a);
1925
+ for (; o(a);) a -= Qn;
1926
+ return tr(a);
1902
1927
  }
1903
- function Kn(e, t) {
1904
- let n = $(e + Wn), r = (e, n) => ({
1905
- symbol: `VN30F${Q(e % 100)}${Q(n)}`,
1928
+ function ar(e, t) {
1929
+ let n = tr(e + rr), r = (e, n) => ({
1930
+ symbol: `VN30F${$(e % 100)}${$(n)}`,
1906
1931
  year: e,
1907
1932
  month: n,
1908
- lastTradingDay: Gn(e, n, t)
1909
- }), i = (e) => e.month === 12 ? r(e.year + 1, 1) : r(e.year, e.month + 1), a = new Date(e + Wn), o = r(a.getUTCFullYear(), a.getUTCMonth() + 1);
1933
+ lastTradingDay: ir(e, n, t)
1934
+ }), i = (e) => e.month === 12 ? r(e.year + 1, 1) : r(e.year, e.month + 1), a = new Date(e + rr), o = r(a.getUTCFullYear(), a.getUTCMonth() + 1);
1910
1935
  n > o.lastTradingDay && (o = i(o));
1911
1936
  let s = [o, i(o)], c = i(s[1]);
1912
1937
  for (; s.length < 4;) c.month % 3 == 0 && s.push(c), c = i(c);
@@ -1914,7 +1939,7 @@ function Kn(e, t) {
1914
1939
  }
1915
1940
  //#endregion
1916
1941
  //#region src/icons/iconSet.ts
1917
- var qn = {
1942
+ var or = {
1918
1943
  cursor: { d: "M6 3.5L18.5 12.5L12.6 13.6L9.7 19.4z" },
1919
1944
  trendingUp: { d: "M3 17L9 11L13 14.5L21 6.5M15 6.5H21V12.5" },
1920
1945
  trendingDown: { d: "M3 7L9 13L13 9.5L21 17.5M15 17.5H21V11.5" },
@@ -2021,7 +2046,7 @@ var qn = {
2021
2046
  ]
2022
2047
  ] },
2023
2048
  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 = {
2049
+ }, sr = {
2025
2050
  trendLine: {
2026
2051
  d: "M5 18L19 6",
2027
2052
  dots: [[5, 18], [19, 6]]
@@ -2374,7 +2399,7 @@ var qn = {
2374
2399
  ],
2375
2400
  dash: "M12 3V21"
2376
2401
  }
2377
- }, Yn = {
2402
+ }, cr = {
2378
2403
  candlestick: {
2379
2404
  d: "M8 3.5V7M8 16V20.5M16 5V8.5M16 15.5V19",
2380
2405
  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"]
@@ -2441,21 +2466,21 @@ var qn = {
2441
2466
  "M16 4.5h3v6h-3z"
2442
2467
  ]
2443
2468
  }
2444
- }, Xn = 1.75, Zn = .22, Qn = /* @__PURE__ */ new WeakMap();
2445
- function $n(e) {
2446
- let t = Qn.get(e);
2469
+ }, lr = 1.75, ur = .22, dr = /* @__PURE__ */ new WeakMap();
2470
+ function fr(e) {
2471
+ let t = dr.get(e);
2447
2472
  if (t) return t;
2448
2473
  let n = "";
2449
- e.soft && (n += `<path d="${e.soft}" fill="currentColor" fill-opacity="${Zn}" stroke="none"/>`);
2474
+ e.soft && (n += `<path d="${e.soft}" fill="currentColor" fill-opacity="${ur}" stroke="none"/>`);
2450
2475
  for (let t of e.fills ?? []) n += `<path d="${t}" fill="currentColor" stroke="none"/>`;
2451
2476
  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;
2477
+ for (let [t, r, i = lr] of e.dots ?? []) n += `<circle cx="${t}" cy="${r}" r="${i}" fill="currentColor" stroke="none"/>`;
2478
+ return dr.set(e, n), n;
2454
2479
  }
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>`;
2480
+ function pr(e, t) {
2481
+ 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">${fr(e)}</svg>`;
2457
2482
  }
2458
2483
  //#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 };
2484
+ export { t as CHART_STYLE_KEYS, cr as CHART_TYPE_ICONS, qt as DARK_TERMINAL, Gt as DARK_THEME, yn as DEFAULT_BAR_SPACING, vn as DEFAULT_BAR_WIDTH, pn as DEFAULT_CHART_OPTIONS, n as DEFAULT_DRAWING_STYLE, Nt as DEFAULT_FONT_FAMILY, Cn as DEFAULT_PANEL_HEIGHT, o as DEFAULT_RECONNECT, i as DEFAULT_SIGNAL_STYLE, s as DEFAULT_STREAM_CONFIG, _n as DEFAULT_TIMEFRAME_FAVORITES, a as DEFAULT_TRADE_ZONE_STYLE, r as DEFAULT_TRADING_CONFIG, sr as DRAWING_TOOL_ICONS, Tn as FIBONACCI, Ln as HNX_SESSIONS, In as HOSE_SESSIONS, lr as ICON_DOT_RADIUS, ur as ICON_SOFT_OPACITY, Kt as LIGHT_THEME, e as LayerType, Gn as MARKET_CRYPTO, Hn as MARKET_HNX, Bn as MARKET_HOSE, Vn as MARKET_HOSE_ETF, Kn as MARKET_NYSE, Un as MARKET_UPCOM, Wn as MARKET_VN30F, Sn as MIN_PANEL_HEIGHT, se as MS_TIME_THRESHOLD, wn as PHI, bn as PRICE_AXIS_WIDTH, et as PRICE_SOURCES, I as TC_PALETTE, Wt as TC_SERIES_COLORS, mn as TIMEFRAMES_CRYPTO, gn as TIMEFRAMES_FOREX, hn as TIMEFRAMES_STOCK, xn as TIME_AXIS_HEIGHT, or as UI_ICONS, Rn as UPCOM_SESSIONS, zn as VN30F_SESSIONS, q as VN_COLORS, Ft as VOLUME_ALPHA, Ie as alignToTimeframe, qe as autoPricePrecision, ce as barTimeUnit, Be as barsAreDaily, fn as chartStyleValue, ne as clamp, Yn as computePriceLimits, he as computePriceRange, oe as computeTickStep, qn as createVNTheme, $e as detectPrecision, St as drawingOption, U as en, fe as findBarIndex, me as fitPriceRange, Ye as formatFraction, K as formatNumber, O as formatPrice, Je as formatPriceScaleLabel, Fe as formatTimestamp, Pn as formatVND, Qe as formatVolume, Fn as formatVolumeLoc, Xe as fractionTick, er as getCurrentSession, An as getLocale, Nn as getLocaleStrings, _e as hexToRgba, pr as iconSvg, it as indicatorSource, ie as inverseLerp, Re as isDateOnly, tt as isPriceSource, Pe as isTimeFrame, x as isValidTimeZone, re as lerp, ve as lerpColor, sn as lineDash, mt as marketStatus, ge as mergeBar, m as niceNumber, ue as normalizeBar, le as normalizeBarTime, w as offsetAt, pe as padPriceRange, at as parseIndicatorSource, T as parseTimeframe, En as phiStep, lt as pickBaseTimeframe, Ze as priceFormatterFor, X as priceStepAt, Ke as priceTagText, dt as rankSymbols, nn as readChartStyleOverrides, Mt as readChartTypeOptions, on as readIndicatorPlotStyles, te as readNews, rn as readPaneStyle, l as readQuote, Mn as registerLocale, st as resampleBars, ln as resolveChartTheme, Ct as resolveDrawingOptions, B as resolveVolumeColors, Z as roundToPriceStep, ae as roundToStep, bt as sanitizeDrawingOptions, jt as sanitizeDrawingStyle, Xn as scaleMarketPrices, A as sessionMinute, kn as setLocale, de as sliceVisibleData, nt as sourcePrice, ft as stepDecimals, jn as t, Ne as tickBarCount, Le as timeParts, Ue as timeframeBucketStart, E as timeframeToMs, Ve as tzLabel, Dn as vi, ar as vn30fContracts, ir as vn30fLastTradingDay, L as volumeColor, Ee as wallToUtc, h as withAlpha, S as zoneOffsetMinutes, Oe as zonedDateFormatter };
2460
2485
 
2461
2486
  //# sourceMappingURL=index.js.map