@tradecanvas/commons 1.79.2 → 1.80.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
@@ -249,26 +249,26 @@ function ce(e, t, n) {
249
249
  function le(e, t) {
250
250
  return Math.round(e / t) * t;
251
251
  }
252
- function ue(e, t) {
252
+ function p(e, t) {
253
253
  let n = Math.floor(Math.log10(e)), r = e / 10 ** n, i;
254
254
  return i = t ? r < 1.5 ? 1 : r < 3 ? 2 : r < 7 ? 5 : 10 : r <= 1 ? 1 : r <= 2 ? 2 : r <= 5 ? 5 : 10, i * 10 ** n;
255
255
  }
256
- function de(e, t, n) {
257
- return ue(ue(t - e, !1) / (n - 1), !0);
256
+ function ue(e, t, n) {
257
+ return p(p(t - e, !1) / (n - 1), !0);
258
258
  }
259
259
  //#endregion
260
260
  //#region src/utils/data.ts
261
- var fe = 1e11;
262
- function pe(e) {
261
+ var de = 1e11;
262
+ function fe(e) {
263
263
  let t = e.length > 0 ? e[e.length - 1].time : NaN;
264
264
  return Number.isFinite(t) ? Math.abs(t) >= 1e11 ? 1 : 1e3 : 1;
265
265
  }
266
- function me(e, t) {
266
+ function pe(e, t) {
267
267
  return t === void 0 ? Math.abs(e) >= 1e11 ? e : e * 1e3 : e * t;
268
268
  }
269
- function he(e) {
269
+ function me(e) {
270
270
  return {
271
- time: me(e.time ?? e.t ?? 0),
271
+ time: pe(e.time ?? e.t ?? 0),
272
272
  open: e.open ?? e.o ?? 0,
273
273
  high: e.high ?? e.h ?? 0,
274
274
  low: e.low ?? e.l ?? 0,
@@ -276,11 +276,11 @@ function he(e) {
276
276
  volume: e.volume ?? e.v ?? 0
277
277
  };
278
278
  }
279
- function ge(e, t, n) {
279
+ function he(e, t, n) {
280
280
  let r = Math.max(0, t), i = Math.min(e.length, n + 1);
281
281
  return e.slice(r, i);
282
282
  }
283
- function _e(e, t) {
283
+ function ge(e, t) {
284
284
  let n = 0, r = e.length - 1;
285
285
  for (; n <= r;) {
286
286
  let i = n + r >>> 1;
@@ -290,7 +290,7 @@ function _e(e, t) {
290
290
  }
291
291
  return n;
292
292
  }
293
- function ve(e, t, n, r = !1) {
293
+ function _e(e, t, n, r = !1) {
294
294
  let i = r && e > 0 && t > 0 ? Math.log(t / e) : NaN;
295
295
  if (Number.isFinite(i)) {
296
296
  let r = i || Math.log(1 + 2 * n), a = Math.exp(r * n);
@@ -305,7 +305,7 @@ function ve(e, t, n, r = !1) {
305
305
  max: t + a * n
306
306
  };
307
307
  }
308
- function ye(e, t, n, r = !1) {
308
+ function ve(e, t, n, r = !1) {
309
309
  let i = Math.max(1 - n.top - n.bottom, 2 ** -52), a = r && e > 0 && t > 0 ? Math.log(t / e) : NaN;
310
310
  if (Number.isFinite(a)) {
311
311
  let r = (a || Math.log(1.01)) / i;
@@ -320,7 +320,7 @@ function ye(e, t, n, r = !1) {
320
320
  max: t + o * n.top
321
321
  };
322
322
  }
323
- function be(e, t, n, r = .05, i = !1) {
323
+ function ye(e, t, n, r = .05, i = !1) {
324
324
  if (e.length === 0) return {
325
325
  min: 0,
326
326
  max: 1
@@ -330,9 +330,9 @@ function be(e, t, n, r = .05, i = !1) {
330
330
  return s === Infinity ? {
331
331
  min: 0,
332
332
  max: 1
333
- } : ve(s, c, r, i);
333
+ } : _e(s, c, r, i);
334
334
  }
335
- function xe(e, t) {
335
+ function be(e, t) {
336
336
  return {
337
337
  ...e,
338
338
  high: Math.max(e.high, t.price),
@@ -343,18 +343,18 @@ function xe(e, t) {
343
343
  }
344
344
  //#endregion
345
345
  //#region src/utils/color.ts
346
- function Se(e, t = 1) {
346
+ function xe(e, t = 1) {
347
347
  let n = e.slice(1);
348
348
  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})`;
349
349
  }
350
- function p(e, t) {
350
+ function m(e, t) {
351
351
  let n = e.trim();
352
- if (/^#([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i.test(n)) return Se(n, t);
352
+ if (/^#([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i.test(n)) return xe(n, t);
353
353
  let r = n.match(/^rgba?\(\s*(\d+(?:\.\d+)?)[\s,]+(\d+(?:\.\d+)?)[\s,]+(\d+(?:\.\d+)?)/i);
354
354
  return r ? `rgba(${r[1]}, ${r[2]}, ${r[3]}, ${t})` : e;
355
355
  }
356
- var Ce = 3;
357
- function we(e) {
356
+ var Se = 3;
357
+ function Ce(e) {
358
358
  let t = e.trim(), n = /^#([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i.exec(t);
359
359
  if (n) {
360
360
  let e = n[1];
@@ -377,14 +377,14 @@ function we(e) {
377
377
  a: Math.min(1, Math.max(0, i))
378
378
  };
379
379
  }
380
- function Te(e, t, n) {
381
- let r = we(e), i = we(t);
380
+ function we(e, t, n) {
381
+ let r = Ce(e), i = Ce(t);
382
382
  if (!r || !i) return n < .5 ? e : t;
383
383
  let a = r.a + (i.a - r.a) * n, o = (e, t) => a === 0 ? 0 : Math.round((e * r.a + (t * i.a - e * r.a) * n) / a), s = `${o(r.r, i.r)},${o(r.g, i.g)},${o(r.b, i.b)}`;
384
- return a >= 1 ? `rgb(${s})` : `rgba(${s},${Number(a.toFixed(Ce))})`;
384
+ return a >= 1 ? `rgb(${s})` : `rgba(${s},${Number(a.toFixed(Se))})`;
385
385
  }
386
- function Ee(e) {
387
- let t = we(e);
386
+ function Te(e) {
387
+ let t = Ce(e);
388
388
  if (!t) return null;
389
389
  let n = (e) => {
390
390
  let t = e / 255;
@@ -392,26 +392,26 @@ function Ee(e) {
392
392
  };
393
393
  return .2126 * n(t.r) + .7152 * n(t.g) + .0722 * n(t.b);
394
394
  }
395
- function m(e, t) {
396
- let n = Ee(e), r = Ee(t);
395
+ function h(e, t) {
396
+ let n = Te(e), r = Te(t);
397
397
  return n === null || r === null ? null : (Math.max(n, r) + .05) / (Math.min(n, r) + .05);
398
398
  }
399
- var De = 20;
400
- function Oe(e, t, n, r) {
401
- let i = m(e, t);
399
+ var Ee = 20;
400
+ function De(e, t, n, r) {
401
+ let i = h(e, t);
402
402
  if (i === null || i >= r) return e;
403
- for (let i = 1; i <= De; i++) {
404
- let a = Te(e, n, i / De);
405
- if ((m(a, t) ?? 0) >= r) return a;
403
+ for (let i = 1; i <= Ee; i++) {
404
+ let a = we(e, n, i / Ee);
405
+ if ((h(a, t) ?? 0) >= r) return a;
406
406
  }
407
407
  return n;
408
408
  }
409
- function ke(e, t, n) {
410
- return (m(e, t) ?? 0) >= (m(e, n) ?? 0) ? t : n;
409
+ function Oe(e, t, n) {
410
+ return (h(e, t) ?? 0) >= (h(e, n) ?? 0) ? t : n;
411
411
  }
412
412
  //#endregion
413
413
  //#region src/utils/timezone.ts
414
- var h = 6e4, Ae = 1440 * h, g = 15 * h, je = 8192, _ = 7 * Ae, Me = 4096, Ne = new Set([
414
+ var g = 6e4, ke = 1440 * g, _ = 15 * g, Ae = 8192, je = 7 * ke, Me = 4096, Ne = new Set([
415
415
  "UTC",
416
416
  "Etc/UTC",
417
417
  "GMT",
@@ -448,20 +448,20 @@ function b(e, t) {
448
448
  if (!Number.isFinite(t) || Ne.has(e)) return 0;
449
449
  let n = Fe.get(e);
450
450
  n || (n = /* @__PURE__ */ new Map(), Fe.set(e, n));
451
- let r = Math.floor(t / _), i = n.get(r);
452
- return i || (i = Le(e, r * _), n.size >= Me && n.clear(), n.set(r, i)), t < i.change ? i.before : i.after;
451
+ let r = Math.floor(t / je), i = n.get(r);
452
+ return i || (i = Le(e, r * je), n.size >= Me && n.clear(), n.set(r, i)), t < i.change ? i.before : i.after;
453
453
  }
454
454
  function Le(e, t) {
455
- let n = Re(e, t), r = t + _ - g, i = Re(e, r);
455
+ let n = x(e, t), r = t + je - _, i = x(e, r);
456
456
  if (i === n) return {
457
457
  before: n,
458
458
  change: Infinity,
459
459
  after: i
460
460
  };
461
461
  let a = t;
462
- for (; r - a > g;) {
463
- let t = a + Math.floor((r - a) / g / 2) * g;
464
- Re(e, t) === n ? a = t : r = t;
462
+ for (; r - a > _;) {
463
+ let t = a + Math.floor((r - a) / _ / 2) * _;
464
+ x(e, t) === n ? a = t : r = t;
465
465
  }
466
466
  return {
467
467
  before: n,
@@ -469,10 +469,10 @@ function Le(e, t) {
469
469
  after: i
470
470
  };
471
471
  }
472
- function Re(e, t) {
473
- let n = Math.floor(t / g), r = `${e}|${n}`, i = v.get(r);
472
+ function x(e, t) {
473
+ let n = Math.floor(t / _), r = `${e}|${n}`, i = v.get(r);
474
474
  if (i !== void 0) return i;
475
- let a = n * g, o = 1970, s = 1, c = 1, l = 0, u = 0, d = 0;
475
+ let a = n * _, o = 1970, s = 1, c = 1, l = 0, u = 0, d = 0;
476
476
  for (let t of Ie(e).formatToParts(new Date(a))) {
477
477
  let e = Number(t.value);
478
478
  switch (t.type) {
@@ -496,24 +496,24 @@ function Re(e, t) {
496
496
  break;
497
497
  }
498
498
  }
499
- let ee = Math.round((Date.UTC(o, s - 1, c, l, u, d) - a) / h);
500
- return v.size >= je && v.clear(), v.set(r, ee), ee;
499
+ let ee = Math.round((Date.UTC(o, s - 1, c, l, u, d) - a) / g);
500
+ return v.size >= Ae && v.clear(), v.set(r, ee), ee;
501
501
  }
502
- function x(e) {
502
+ function S(e) {
503
503
  return e === 0 || typeof e == "string" && Ne.has(e);
504
504
  }
505
- function S(e, t) {
505
+ function C(e, t) {
506
506
  return e === null ? -new Date(t).getTimezoneOffset() : typeof e == "number" ? e : b(e, t);
507
507
  }
508
- function ze(e, t) {
509
- let n = e - S(t, e - Ae) * h;
510
- if (n + S(t, n) * h === e) return n;
511
- let r = e - S(t, e + Ae) * h;
512
- return r + S(t, r) * h === e ? r : n;
513
- }
514
- var Be = /* @__PURE__ */ new Map();
515
- function Ve(e, t, n) {
516
- let r = `${e}|${JSON.stringify(t)}|${n === null ? "local" : typeof n == "number" ? `fixed:${n}` : n}`, i = Be.get(r);
508
+ function Re(e, t) {
509
+ let n = e - C(t, e - ke) * g;
510
+ if (n + C(t, n) * g === e) return n;
511
+ let r = e - C(t, e + ke) * g;
512
+ return r + C(t, r) * g === e ? r : n;
513
+ }
514
+ var ze = /* @__PURE__ */ new Map();
515
+ function Be(e, t, n) {
516
+ let r = `${e}|${JSON.stringify(t)}|${n === null ? "local" : typeof n == "number" ? `fixed:${n}` : n}`, i = ze.get(r);
517
517
  if (i) return i;
518
518
  let a = n === null ? void 0 : typeof n == "number" ? "UTC" : n, o;
519
519
  try {
@@ -527,12 +527,12 @@ function Ve(e, t, n) {
527
527
  timeZone: a
528
528
  });
529
529
  }
530
- let s = typeof n == "number" ? n * h : 0;
531
- return i = (e) => o.format(new Date(e + s)), Be.set(r, i), i;
530
+ let s = typeof n == "number" ? n * g : 0;
531
+ return i = (e) => o.format(new Date(e + s)), ze.set(r, i), i;
532
532
  }
533
533
  //#endregion
534
534
  //#region src/utils/time.ts
535
- var He = {
535
+ var Ve = {
536
536
  "1s": 1e3,
537
537
  "5s": 5e3,
538
538
  "15s": 15e3,
@@ -559,16 +559,16 @@ var He = {
559
559
  "3M": 7776e6,
560
560
  "6M": 15552e6,
561
561
  "12M": 31536e6
562
- }, C = {
562
+ }, w = {
563
563
  s: 1e3,
564
564
  m: 6e4,
565
565
  h: 36e5,
566
566
  d: 864e5,
567
567
  w: 6048e5,
568
568
  M: 2592e6
569
- }, Ue = /^([1-9]\d*)([smhdwM])$/;
570
- function w(e) {
571
- let t = Ue.exec(e);
569
+ }, He = /^([1-9]\d*)([smhdwM])$/;
570
+ function T(e) {
571
+ let t = He.exec(e);
572
572
  if (!t) return null;
573
573
  let n = Number(t[1]);
574
574
  return Number.isSafeInteger(n) ? {
@@ -576,24 +576,24 @@ function w(e) {
576
576
  unit: t[2]
577
577
  } : null;
578
578
  }
579
- var We = 1e6;
580
- function Ge(e) {
579
+ var Ue = 1e6;
580
+ function We(e) {
581
581
  let t = /^([1-9]\d*)T$/.exec(e);
582
582
  if (!t) return null;
583
583
  let n = Number(t[1]);
584
- return Number.isSafeInteger(n) && n <= We ? n : null;
584
+ return Number.isSafeInteger(n) && n <= Ue ? n : null;
585
585
  }
586
- function Ke(e) {
587
- return w(e) !== null;
586
+ function Ge(e) {
587
+ return T(e) !== null;
588
588
  }
589
- function T(e) {
590
- let t = He[e];
589
+ function E(e) {
590
+ let t = Ve[e];
591
591
  if (t !== void 0) return t;
592
- let n = w(e);
593
- return n ? n.count * C[n.unit] : NaN;
592
+ let n = T(e);
593
+ return n ? n.count * w[n.unit] : NaN;
594
594
  }
595
- function qe(e, t) {
596
- let n = new Date(e), r = T(t);
595
+ function Ke(e, t) {
596
+ let n = new Date(e), r = E(t);
597
597
  return r >= 864e5 ? n.toLocaleDateString(void 0, {
598
598
  month: "short",
599
599
  day: "numeric"
@@ -606,11 +606,11 @@ function qe(e, t) {
606
606
  second: "2-digit"
607
607
  });
608
608
  }
609
- function Je(e, t) {
610
- let n = T(t);
609
+ function qe(e, t) {
610
+ let n = E(t);
611
611
  return Math.floor(e / n) * n;
612
612
  }
613
- function Ye(e, t) {
613
+ function Je(e, t) {
614
614
  if (t === null) {
615
615
  let t = new Date(e);
616
616
  return {
@@ -621,7 +621,7 @@ function Ye(e, t) {
621
621
  minutes: t.getMinutes()
622
622
  };
623
623
  }
624
- let n = new Date(e + S(t, e) * 6e4);
624
+ let n = new Date(e + C(t, e) * 6e4);
625
625
  return {
626
626
  year: n.getUTCFullYear(),
627
627
  month: n.getUTCMonth() + 1,
@@ -630,122 +630,122 @@ function Ye(e, t) {
630
630
  minutes: n.getUTCMinutes()
631
631
  };
632
632
  }
633
- function Xe(e) {
633
+ function Ye(e) {
634
634
  return e.hours === 0 && e.minutes === 0;
635
635
  }
636
- var Ze = 20 * 36e5;
637
- function Qe(e) {
636
+ var Xe = 20 * 36e5;
637
+ function Ze(e) {
638
638
  let t = Math.min(e.length, 64);
639
639
  if (t < 2) return;
640
- let n = pe(e), r = Infinity;
640
+ let n = fe(e), r = Infinity;
641
641
  for (let i = 1; i < t; i++) {
642
642
  let t = Math.abs(e[i].time - e[i - 1].time) * n;
643
643
  t > 0 && t < r && (r = t);
644
644
  }
645
- return r === Infinity ? void 0 : r >= Ze;
645
+ return r === Infinity ? void 0 : r >= Xe;
646
646
  }
647
- function $e(e, t = Date.now()) {
648
- let n = S(e, t), r = n >= 0 ? "+" : "-", i = Math.abs(n), a = Math.floor(i / 60), o = i % 60;
647
+ function Qe(e, t = Date.now()) {
648
+ let n = C(e, t), r = n >= 0 ? "+" : "-", i = Math.abs(n), a = Math.floor(i / 60), o = i % 60;
649
649
  return o === 0 ? `UTC${r}${a}` : `UTC${r}${a}:${String(o).padStart(2, "0")}`;
650
650
  }
651
- var et = Date.UTC(1970, 0, 5), tt = C.m, E = C.d, nt = 24, rt = {
651
+ var $e = Date.UTC(1970, 0, 5), et = w.m, D = w.d, tt = 24, nt = {
652
652
  count: 1,
653
653
  unit: "m"
654
- }, it = 256, D = /* @__PURE__ */ new Map();
655
- function at(e) {
656
- let t = D.get(e);
657
- return t || (t = w(e) ?? rt, D.size >= it && D.clear(), D.set(e, t)), t;
654
+ }, rt = 256, O = /* @__PURE__ */ new Map();
655
+ function k(e) {
656
+ let t = O.get(e);
657
+ return t || (t = T(e) ?? nt, O.size >= rt && O.clear(), O.set(e, t)), t;
658
658
  }
659
- function ot({ unit: e }) {
659
+ function it({ unit: e }) {
660
660
  return e === "d" || e === "w" || e === "M";
661
661
  }
662
- function st(e) {
663
- return e.unit === "h" ? e.count > 1 && nt % e.count === 0 : ot(e);
662
+ function at(e) {
663
+ return e.unit === "h" ? e.count > 1 && tt % e.count === 0 : it(e);
664
664
  }
665
- function ct(e) {
666
- return st(at(e));
665
+ function ot(e) {
666
+ return at(k(e));
667
667
  }
668
- function lt(e) {
669
- return ot(at(e));
668
+ function st(e) {
669
+ return it(k(e));
670
670
  }
671
- function ut(e) {
672
- return e !== void 0 && !x(e);
671
+ function ct(e) {
672
+ return e !== void 0 && !S(e);
673
673
  }
674
- function O(e, t, n = 1) {
675
- let r = at(t), i = typeof n == "number" ? n : n.weekStartsOn ?? 1, a = typeof n == "number" ? void 0 : n.timeZone;
676
- return !ut(a) || !st(r) || typeof n == "object" && n.dates && e % E === 0 ? dt(e, r, i) : ze(dt(e + S(a, e) * tt, r, i), a);
674
+ function lt(e, t, n = 1) {
675
+ let r = k(t), i = typeof n == "number" ? n : n.weekStartsOn ?? 1, a = typeof n == "number" ? void 0 : n.timeZone;
676
+ return !ct(a) || !at(r) || typeof n == "object" && n.dates && e % D === 0 ? ut(e, r, i) : Re(ut(e + C(a, e) * et, r, i), a);
677
677
  }
678
- function dt(e, { count: t, unit: n }, r) {
678
+ function ut(e, { count: t, unit: n }, r) {
679
679
  if (n === "s" || n === "m" || n === "h" || n === "d") {
680
- let r = t * C[n];
680
+ let r = t * w[n];
681
681
  return Math.floor(e / r) * r;
682
682
  }
683
683
  let i = new Date(e);
684
684
  if (n === "w") {
685
685
  let e = (i.getUTCDay() - r + 7) % 7, n = Date.UTC(i.getUTCFullYear(), i.getUTCMonth(), i.getUTCDate() - e);
686
686
  if (t <= 1) return n;
687
- let a = Math.floor((n - et) / (7 * E));
688
- return et + Math.floor(a / t) * t * 7 * E;
687
+ let a = Math.floor((n - $e) / (7 * D));
688
+ return $e + Math.floor(a / t) * t * 7 * D;
689
689
  }
690
690
  let a = i.getUTCFullYear() * 12 + i.getUTCMonth(), o = Math.floor(a / t) * t;
691
691
  return Date.UTC(Math.floor(o / 12), o % 12, 1);
692
692
  }
693
- function ft(e, t, n) {
694
- return e % E === 0 ? 0 : n && O(e, "1d", { timeZone: n }) === e ? n : t;
693
+ function dt(e, t, n) {
694
+ return e % D === 0 ? 0 : n && lt(e, "1d", { timeZone: n }) === e ? n : t;
695
695
  }
696
- function pt(e, t, n) {
697
- return Ye(e, ft(e, t, n));
696
+ function ft(e, t, n) {
697
+ return Je(e, dt(e, t, n));
698
698
  }
699
699
  //#endregion
700
700
  //#region src/utils/precision.ts
701
- var mt = 64, k = /* @__PURE__ */ new Map();
702
- function ht(e, t) {
703
- let n = `${e}|${t}`, r = k.get(n);
704
- return r || (k.size >= mt && k.clear(), r = new Intl.NumberFormat(e, {
701
+ var pt = 64, A = /* @__PURE__ */ new Map();
702
+ function mt(e, t) {
703
+ let n = `${e}|${t}`, r = A.get(n);
704
+ return r || (A.size >= pt && A.clear(), r = new Intl.NumberFormat(e, {
705
705
  minimumFractionDigits: t,
706
706
  maximumFractionDigits: t
707
- }), k.set(n, r)), r;
707
+ }), A.set(n, r)), r;
708
708
  }
709
- function gt(e, t, n) {
710
- return t.formatPrice ? t.formatPrice(e) : A(e, n ?? t.pricePrecision ?? _t(t.priceRange.min, t.priceRange.max), t.numberLocale ?? "en-US");
709
+ function ht(e, t, n) {
710
+ return t.formatPrice ? t.formatPrice(e) : j(e, n ?? t.pricePrecision ?? gt(t.priceRange.min, t.priceRange.max), t.numberLocale ?? "en-US");
711
711
  }
712
- function A(e, t = 2, n = "en-US") {
713
- return ht(n, t).format(e);
712
+ function j(e, t = 2, n = "en-US") {
713
+ return mt(n, t).format(e);
714
714
  }
715
- function _t(e, t) {
715
+ function gt(e, t) {
716
716
  if (!(t > e) || !Number.isFinite(e) || !Number.isFinite(t)) return 2;
717
- let n = de(e, t, 8);
717
+ let n = ue(e, t, 8);
718
718
  return n > 0 && n < 1 ? Math.ceil(-Math.log10(n)) + 1 : 2;
719
719
  }
720
- var vt = 2;
721
- function yt(e, t, n, r = 2, i = "en-US") {
720
+ var _t = 2;
721
+ function vt(e, t, n, r = 2, i = "en-US") {
722
722
  if ((t === "percentage" || t === "indexedTo100") && n && n !== 0) {
723
723
  if (t === "percentage") {
724
- let t = (e / n - 1) * 100, r = A(Math.abs(t), vt, i);
725
- return `${r === A(0, vt, i) ? "" : t > 0 ? "+" : "-"}${r}%`;
724
+ let t = (e / n - 1) * 100, r = j(Math.abs(t), _t, i);
725
+ return `${r === j(0, _t, i) ? "" : t > 0 ? "+" : "-"}${r}%`;
726
726
  }
727
- return A(e / n * 100, 2, i);
727
+ return j(e / n * 100, 2, i);
728
728
  }
729
- return A(e, r, i);
729
+ return j(e, r, i);
730
730
  }
731
- function bt(e, t, n = 1) {
731
+ function yt(e, t, n = 1) {
732
732
  let r = Number.isInteger(n) && n > 1 ? n : 1;
733
733
  if (!Number.isFinite(e) || !Number.isInteger(t) || t < 2) return String(e);
734
734
  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)) : "";
735
735
  return `${e < 0 && a > 0 ? "-" : ""}${o}'${String(c).padStart(l, "0")}${u}`;
736
736
  }
737
- function xt(e) {
737
+ function bt(e) {
738
738
  if (!Number.isInteger(e.denominator) || e.denominator < 2) return null;
739
739
  let t = Number.isInteger(e.subDenominator) && (e.subDenominator ?? 0) > 1 ? e.subDenominator : 1;
740
740
  return 1 / (e.denominator * t);
741
741
  }
742
- function St(e) {
743
- return e ? typeof e == "function" ? e : xt(e) === null ? null : (t) => bt(t, e.denominator, e.subDenominator) : null;
742
+ function xt(e) {
743
+ return e ? typeof e == "function" ? e : bt(e) === null ? null : (t) => yt(t, e.denominator, e.subDenominator) : null;
744
744
  }
745
- function Ct(e) {
745
+ function St(e) {
746
746
  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);
747
747
  }
748
- function wt(e) {
748
+ function Ct(e) {
749
749
  let t = 0;
750
750
  for (let n of e) {
751
751
  let e = n.toString(), r = e.indexOf(".");
@@ -755,7 +755,7 @@ function wt(e) {
755
755
  }
756
756
  //#endregion
757
757
  //#region src/utils/priceSource.ts
758
- var Tt = [
758
+ var wt = [
759
759
  "close",
760
760
  "open",
761
761
  "high",
@@ -765,10 +765,10 @@ var Tt = [
765
765
  "ohlc4",
766
766
  "hlcc4"
767
767
  ];
768
- function Et(e) {
769
- return typeof e == "string" && Tt.includes(e);
768
+ function Tt(e) {
769
+ return typeof e == "string" && wt.includes(e);
770
770
  }
771
- function Dt(e, t) {
771
+ function Et(e, t) {
772
772
  switch (t) {
773
773
  case "open": return e.open;
774
774
  case "high": return e.high;
@@ -780,13 +780,13 @@ function Dt(e, t) {
780
780
  default: return e.close;
781
781
  }
782
782
  }
783
- var Ot = /^ind:([^:]+):(.+)$/;
784
- function kt(e, t) {
783
+ var Dt = /^ind:([^:]+):(.+)$/;
784
+ function Ot(e, t) {
785
785
  return `ind:${e}:${t}`;
786
786
  }
787
- function At(e) {
787
+ function kt(e) {
788
788
  if (typeof e != "string") return null;
789
- let t = Ot.exec(e);
789
+ let t = Dt.exec(e);
790
790
  return t ? {
791
791
  instanceId: t[1],
792
792
  key: t[2]
@@ -794,11 +794,11 @@ function At(e) {
794
794
  }
795
795
  //#endregion
796
796
  //#region src/utils/resample.ts
797
- var jt = 864e5, Mt = 6e4;
798
- function Nt(e, t, n = 1) {
799
- let r = Pt(e, t, n), i = [], a = null;
797
+ var At = 864e5, jt = 6e4;
798
+ function Mt(e, t, n = 1) {
799
+ let r = Nt(e, t, n), i = [], a = null;
800
800
  for (let n of e) {
801
- let e = O(n.time, t, r);
801
+ let e = lt(n.time, t, r);
802
802
  a === null || e !== a.time ? (a = {
803
803
  time: e,
804
804
  open: n.open,
@@ -810,36 +810,40 @@ function Nt(e, t, n = 1) {
810
810
  }
811
811
  return i;
812
812
  }
813
- function Pt(e, t, n) {
814
- return typeof n == "number" || n.timeZone === void 0 || n.dates !== void 0 || x(n.timeZone) || !ct(t) ? n : {
813
+ function Nt(e, t, n) {
814
+ return typeof n == "number" || n.timeZone === void 0 || n.dates !== void 0 || S(n.timeZone) || !ot(t) ? n : {
815
815
  ...n,
816
- dates: Qe(e) === !0
816
+ dates: Ze(e) === !0
817
817
  };
818
818
  }
819
- var Ft = (e) => e === "s" || e === "m" || e === "h" || e === "d";
820
- function It(e, t) {
821
- let n = w(e), r = w(t);
819
+ var Pt = (e) => e === "s" || e === "m" || e === "h" || e === "d";
820
+ function Ft(e, t) {
821
+ let n = T(e), r = T(t);
822
822
  if (!n || !r) return !1;
823
- let i = T(e);
824
- return n.unit === "d" && n.count > 1 ? !1 : Ft(r.unit) ? Ft(n.unit) && T(t) % i === 0 : n.unit === r.unit ? r.count % n.count === 0 : Ft(n.unit) && jt % i === 0;
823
+ let i = E(e);
824
+ return n.unit === "d" && n.count > 1 ? !1 : Pt(r.unit) ? Pt(n.unit) && E(t) % i === 0 : n.unit === r.unit ? r.count % n.count === 0 : Pt(n.unit) && At % i === 0;
825
825
  }
826
- function Lt(e, t) {
827
- let n = T(e);
828
- if (!(n < jt)) return !0;
826
+ function It(e, t) {
827
+ let n = E(e);
828
+ if (!(n < At)) return !0;
829
829
  let r = (/* @__PURE__ */ new Date()).getUTCFullYear();
830
- return [Date.UTC(r, 0, 1), Date.UTC(r, 6, 1)].every((e) => S(t, e) * Mt % n === 0);
830
+ return [Date.UTC(r, 0, 1), Date.UTC(r, 6, 1)].every((e) => C(t, e) * jt % n === 0);
831
831
  }
832
- function Rt(e, t, n = {}) {
833
- let { timeZone: r } = n, i = r !== void 0 && !x(r) && ct(e) ? r : void 0, a = null, o = 0;
832
+ function Lt(e, t, n = {}) {
833
+ let { timeZone: r } = n, i = r !== void 0 && !S(r) && ot(e) ? r : void 0, a = null, o = 0;
834
834
  for (let n of t) {
835
- if (!It(n, e) || i !== void 0 && !Lt(n, i)) continue;
836
- let t = T(n);
835
+ if (!Ft(n, e) || i !== void 0 && !It(n, i)) continue;
836
+ let t = E(n);
837
837
  t > o && (a = n, o = t);
838
838
  }
839
839
  return a;
840
840
  }
841
841
  //#endregion
842
842
  //#region src/utils/symbols.ts
843
+ function Rt(e) {
844
+ let t = e.lastIndexOf(":");
845
+ return t <= 0 || t === e.length - 1 ? e : e.slice(t + 1);
846
+ }
843
847
  function zt(e, t) {
844
848
  if (!e) return 0;
845
849
  if (e === t) return 1e3;
@@ -880,7 +884,7 @@ function Ut(e) {
880
884
  }
881
885
  //#endregion
882
886
  //#region src/utils/marketStatus.ts
883
- var j = 864e5, M = 6e4, Wt = 8;
887
+ var M = 864e5, N = 6e4, Wt = 8;
884
888
  function Gt(e, t) {
885
889
  let n = Ht(e), r = (e?.sessions ?? []).flatMap((e) => {
886
890
  let t = Ut(e.start), n = Ut(e.end);
@@ -894,12 +898,12 @@ function Gt(e, t) {
894
898
  state: "always",
895
899
  next: null
896
900
  };
897
- let i = b(n, t) * M, a = Math.floor((t + i) / j) * j, o = (e) => e - b(n, e - b(n, e - i) * M) * M, s = [];
901
+ let i = b(n, t) * N, a = Math.floor((t + i) / M) * M, o = (e) => e - b(n, e - b(n, e - i) * N) * N, s = [];
898
902
  for (let e = -1; e <= Wt; e++) {
899
- let t = a + e * j, n = (Math.floor(t / j) + 4) % 7;
903
+ let t = a + e * M, n = (Math.floor(t / M) + 4) % 7;
900
904
  for (let e of r) {
901
905
  if (e.days && !e.days.includes(n)) continue;
902
- let r = t + e.start * M, i = (e.end > e.start ? t : t + j) + e.end * M;
906
+ let r = t + e.start * N, i = (e.end > e.start ? t : t + M) + e.end * N;
903
907
  s.push([o(r), o(i)]);
904
908
  }
905
909
  }
@@ -989,16 +993,16 @@ var tn = [
989
993
  function dn(e, t, n) {
990
994
  return typeof e == "number" && Number.isFinite(e) ? Math.min(n, Math.max(t, e)) : void 0;
991
995
  }
992
- function N(e) {
996
+ function P(e) {
993
997
  return typeof e == "string" && e.length > 0 && e.length <= nn ? e : void 0;
994
998
  }
995
999
  function fn(e) {
996
1000
  if (typeof e != "object" || !e) return {};
997
- let t = e, n = {}, r = N(t.color);
1001
+ let t = e, n = {}, r = P(t.color);
998
1002
  r !== void 0 && (n.color = r);
999
1003
  let i = dn(t.lineWidth, .5, an);
1000
1004
  i !== void 0 && (n.lineWidth = i), tn.includes(t.lineStyle) && (n.lineStyle = t.lineStyle);
1001
- let a = N(t.fillColor);
1005
+ let a = P(t.fillColor);
1002
1006
  a !== void 0 && (n.fillColor = a);
1003
1007
  let o = dn(t.fillOpacity, 0, 1);
1004
1008
  o !== void 0 && (n.fillOpacity = o);
@@ -1011,56 +1015,56 @@ function fn(e) {
1011
1015
  "textBorder"
1012
1016
  ]) typeof t[e] == "boolean" && (n[e] = t[e]);
1013
1017
  ln.includes(t.textAlign) && (n.textAlign = t.textAlign), un.includes(t.textVAlign) && (n.textVAlign = t.textVAlign);
1014
- let c = N(t.textColor);
1018
+ let c = P(t.textColor);
1015
1019
  c !== void 0 && (n.textColor = c);
1016
- let l = N(t.borderColor);
1020
+ let l = P(t.borderColor);
1017
1021
  return l !== void 0 && (n.borderColor = l), typeof t.textWrap == "number" && Number.isFinite(t.textWrap) && t.textWrap >= 0 && (n.textWrap = t.textWrap === 0 ? 0 : Math.min(sn, Math.max(cn, t.textWrap))), n;
1018
1022
  }
1019
1023
  //#endregion
1020
1024
  //#region src/utils/chartTypeOptions.ts
1021
- var P = (e) => typeof e == "number" && Number.isFinite(e) && e > 0, pn = (e, t, n) => typeof e == "number" && Number.isInteger(e) && e >= t && e <= n, F = (e) => typeof e == "object" && !!e && !Array.isArray(e);
1022
- function mn(e) {
1023
- if (!F(e)) return {};
1025
+ var F = (e) => typeof e == "number" && Number.isFinite(e) && e > 0, I = (e, t, n) => typeof e == "number" && Number.isInteger(e) && e >= t && e <= n, L = (e) => typeof e == "object" && !!e && !Array.isArray(e);
1026
+ function pn(e) {
1027
+ if (!L(e)) return {};
1024
1028
  let t = {};
1025
- if (F(e.renko)) {
1029
+ if (L(e.renko)) {
1026
1030
  let { boxSize: n, atrPeriod: r } = e.renko;
1027
1031
  t.renko = {
1028
- ...P(n) || n === "atr" ? { boxSize: n } : {},
1029
- ...pn(r, 1, 500) ? { atrPeriod: r } : {}
1032
+ ...F(n) || n === "atr" ? { boxSize: n } : {},
1033
+ ...I(r, 1, 500) ? { atrPeriod: r } : {}
1030
1034
  };
1031
1035
  }
1032
- if (F(e.lineBreak)) {
1036
+ if (L(e.lineBreak)) {
1033
1037
  let { lines: n } = e.lineBreak;
1034
- t.lineBreak = pn(n, 1, 10) ? { lines: n } : {};
1038
+ t.lineBreak = I(n, 1, 10) ? { lines: n } : {};
1035
1039
  }
1036
- if (F(e.kagi)) {
1040
+ if (L(e.kagi)) {
1037
1041
  let { reversal: n, reversalType: r } = e.kagi;
1038
1042
  t.kagi = {
1039
- ...P(n) ? { reversal: n } : {},
1043
+ ...F(n) ? { reversal: n } : {},
1040
1044
  ...r === "percent" || r === "price" ? { reversalType: r } : {}
1041
1045
  };
1042
1046
  }
1043
- if (F(e.pointAndFigure)) {
1047
+ if (L(e.pointAndFigure)) {
1044
1048
  let { boxSize: n, reversal: r } = e.pointAndFigure;
1045
1049
  t.pointAndFigure = {
1046
- ...P(n) || n === "auto" ? { boxSize: n } : {},
1047
- ...pn(r, 1, 10) ? { reversal: r } : {}
1050
+ ...F(n) || n === "auto" ? { boxSize: n } : {},
1051
+ ...I(r, 1, 10) ? { reversal: r } : {}
1048
1052
  };
1049
1053
  }
1050
- if (F(e.rangeBars)) {
1054
+ if (L(e.rangeBars)) {
1051
1055
  let { range: n } = e.rangeBars;
1052
- t.rangeBars = P(n) || n === "auto" ? { range: n } : {};
1056
+ t.rangeBars = F(n) || n === "auto" ? { range: n } : {};
1053
1057
  }
1054
1058
  return t;
1055
1059
  }
1056
1060
  //#endregion
1057
1061
  //#region src/constants/themes.ts
1058
- var hn = "'Cascadia Mono', 'SF Mono', ui-monospace, Menlo, Consolas, monospace", gn = "-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif", _n = {
1059
- family: hn,
1062
+ var mn = "'Cascadia Mono', 'SF Mono', ui-monospace, Menlo, Consolas, monospace", hn = "-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif", gn = {
1063
+ family: mn,
1060
1064
  sizeSmall: 11,
1061
1065
  sizeMedium: 13,
1062
1066
  sizeLarge: 15
1063
- }, I = {
1067
+ }, R = {
1064
1068
  amber: "#f2a93b",
1065
1069
  up: "#1c9e6d",
1066
1070
  down: "#e8505b",
@@ -1071,67 +1075,67 @@ var hn = "'Cascadia Mono', 'SF Mono', ui-monospace, Menlo, Consolas, monospace",
1071
1075
  rose: "#e25592",
1072
1076
  neutral: "#7d8696",
1073
1077
  ink: "#131416"
1074
- }, vn = .22;
1075
- function L(e) {
1076
- return p(e, vn);
1078
+ }, _n = .22;
1079
+ function z(e) {
1080
+ return m(e, _n);
1077
1081
  }
1078
- var yn = "#fbfaf6", R = "#1b1d21", bn = "#131416", z = "#e6e3dc", xn = "#1f7a5c", Sn = "#b8423f", Cn = "#4fae8a", wn = "#e2706b", Tn = "#6a6966", En = "#8d8a84", Dn = {
1082
+ var vn = "#fbfaf6", B = "#1b1d21", yn = "#131416", V = "#e6e3dc", bn = "#1f7a5c", xn = "#b8423f", Sn = "#4fae8a", Cn = "#e2706b", wn = "#6a6966", Tn = "#8d8a84", En = {
1079
1083
  ceiling: "#FF00FF",
1080
1084
  floor: "#00FFFF",
1081
1085
  reference: "#FFD700"
1082
- }, On = {
1086
+ }, Dn = {
1083
1087
  ceiling: "#a21caf",
1084
1088
  floor: "#0e7490",
1085
1089
  reference: "#8a6a00"
1086
- }, kn = [
1087
- I.blue,
1088
- I.ochre,
1089
- I.violet,
1090
- I.cyan,
1091
- I.rose
1092
- ], An = {
1090
+ }, On = [
1091
+ R.blue,
1092
+ R.ochre,
1093
+ R.violet,
1094
+ R.cyan,
1095
+ R.rose
1096
+ ], kn = {
1093
1097
  name: "dark",
1094
- background: bn,
1095
- text: z,
1098
+ background: yn,
1099
+ text: V,
1096
1100
  textSecondary: "#8d8b86",
1097
1101
  grid: "#1d1e21",
1098
- crosshair: Tn,
1099
- candleUp: Cn,
1100
- candleDown: wn,
1101
- candleUpWick: Cn,
1102
- candleDownWick: wn,
1103
- lineColor: z,
1104
- areaTopColor: p(z, .14),
1105
- areaBottomColor: p(z, 0),
1106
- volumeUp: p(z, .14),
1107
- volumeDown: p(z, .08),
1102
+ crosshair: wn,
1103
+ candleUp: Sn,
1104
+ candleDown: Cn,
1105
+ candleUpWick: Sn,
1106
+ candleDownWick: Cn,
1107
+ lineColor: V,
1108
+ areaTopColor: m(V, .14),
1109
+ areaBottomColor: m(V, 0),
1110
+ volumeUp: m(V, .14),
1111
+ volumeDown: m(V, .08),
1108
1112
  axisLine: "#2a2b2f",
1109
1113
  axisLabel: "#a9a6a0",
1110
1114
  axisLabelBackground: "#232427",
1111
- font: _n,
1112
- priceLimits: Dn
1113
- }, jn = {
1115
+ font: gn,
1116
+ priceLimits: En
1117
+ }, An = {
1114
1118
  name: "light",
1115
- background: yn,
1116
- text: R,
1119
+ background: vn,
1120
+ text: B,
1117
1121
  textSecondary: "#6b6f76",
1118
1122
  grid: "#ece8df",
1119
- crosshair: En,
1120
- candleUp: xn,
1121
- candleDown: Sn,
1122
- candleUpWick: xn,
1123
- candleDownWick: Sn,
1124
- lineColor: R,
1125
- areaTopColor: p(R, .12),
1126
- areaBottomColor: p(R, 0),
1127
- volumeUp: p(R, .13),
1128
- volumeDown: p(R, .08),
1123
+ crosshair: Tn,
1124
+ candleUp: bn,
1125
+ candleDown: xn,
1126
+ candleUpWick: bn,
1127
+ candleDownWick: xn,
1128
+ lineColor: B,
1129
+ areaTopColor: m(B, .12),
1130
+ areaBottomColor: m(B, 0),
1131
+ volumeUp: m(B, .13),
1132
+ volumeDown: m(B, .08),
1129
1133
  axisLine: "#cfcac0",
1130
1134
  axisLabel: "#4a4e57",
1131
1135
  axisLabelBackground: "#eeebe3",
1132
- font: _n,
1133
- priceLimits: On
1134
- }, B = {
1136
+ font: gn,
1137
+ priceLimits: Dn
1138
+ }, jn = {
1135
1139
  name: "terminal",
1136
1140
  background: "#0E0E0E",
1137
1141
  text: "#C0C0C0",
@@ -1145,8 +1149,8 @@ var yn = "#fbfaf6", R = "#1b1d21", bn = "#131416", z = "#e6e3dc", xn = "#1f7a5c"
1145
1149
  lineColor: "#3D8BFD",
1146
1150
  areaTopColor: "rgba(61, 139, 253, 0.3)",
1147
1151
  areaBottomColor: "rgba(61, 139, 253, 0.0)",
1148
- volumeUp: L("#00FF87"),
1149
- volumeDown: L("#FF3B4D"),
1152
+ volumeUp: z("#00FF87"),
1153
+ volumeDown: z("#FF3B4D"),
1150
1154
  axisLine: "#1A1A1A",
1151
1155
  axisLabel: "#8A8A8A",
1152
1156
  axisLabelBackground: "#1A1A1A",
@@ -1156,11 +1160,11 @@ var yn = "#fbfaf6", R = "#1b1d21", bn = "#131416", z = "#e6e3dc", xn = "#1f7a5c"
1156
1160
  sizeMedium: 12,
1157
1161
  sizeLarge: 14
1158
1162
  }
1159
- }, Mn = new Set([B.volumeUp, B.volumeDown]);
1160
- function V(e) {
1163
+ }, Mn = new Set([jn.volumeUp, jn.volumeDown]);
1164
+ function Nn(e) {
1161
1165
  let t = (e, t) => {
1162
1166
  if (!Mn.has(e)) return e;
1163
- let n = L(t);
1167
+ let n = z(t);
1164
1168
  return n === t ? e : n;
1165
1169
  };
1166
1170
  return {
@@ -1170,67 +1174,67 @@ function V(e) {
1170
1174
  }
1171
1175
  //#endregion
1172
1176
  //#region src/utils/chartStyle.ts
1173
- var Nn = [
1177
+ var Pn = [
1174
1178
  "solid",
1175
1179
  "dashed",
1176
1180
  "dotted"
1177
- ], Pn = 20, Fn = 64, In = 2, Ln = [
1181
+ ], Fn = 20, In = 64, Ln = 2, Rn = [
1178
1182
  /^#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i,
1179
1183
  /^[a-z]{3,30}$/i,
1180
1184
  /^(?:rgba?|hsla?|hwb|lab|lch|oklab|oklch|color)\([0-9a-z.,%/\s-]*\)$/i
1181
1185
  ];
1182
- function Rn(e) {
1183
- return typeof e == "string" && e.length <= Fn && Ln.some((t) => t.test(e.trim()));
1186
+ function zn(e) {
1187
+ return typeof e == "string" && e.length <= In && Rn.some((t) => t.test(e.trim()));
1184
1188
  }
1185
- function zn(e, t) {
1189
+ function Bn(e, t) {
1186
1190
  switch (e) {
1187
- case "color": return Rn(t);
1188
- case "lineStyle": return Nn.includes(t);
1189
- case "width": return typeof t == "number" && Number.isFinite(t) && t > 0 && t <= Pn;
1191
+ case "color": return zn(t);
1192
+ case "lineStyle": return Pn.includes(t);
1193
+ case "width": return typeof t == "number" && Number.isFinite(t) && t > 0 && t <= Fn;
1190
1194
  case "boolean": return typeof t == "boolean";
1191
1195
  }
1192
1196
  }
1193
- function Bn(e) {
1197
+ function Vn(e) {
1194
1198
  return Object.prototype.hasOwnProperty.call(t, e);
1195
1199
  }
1196
- function Vn(e) {
1200
+ function Hn(e) {
1197
1201
  let n = {}, r = [];
1198
1202
  if (typeof e != "object" || !e || Array.isArray(e)) return {
1199
1203
  overrides: {},
1200
1204
  rejected: r
1201
1205
  };
1202
- for (let [i, a] of Object.entries(e)) Bn(i) ? a === null ? n[i] = null : zn(t[i], a) ? n[i] = a : r.push(i) : r.push(i);
1206
+ for (let [i, a] of Object.entries(e)) Vn(i) ? a === null ? n[i] = null : Bn(t[i], a) ? n[i] = a : r.push(i) : r.push(i);
1203
1207
  return {
1204
1208
  overrides: n,
1205
1209
  rejected: r
1206
1210
  };
1207
1211
  }
1208
- function Hn(e) {
1212
+ function Un(e) {
1209
1213
  if (typeof e != "object" || !e || Array.isArray(e)) return null;
1210
1214
  let { background: t, separator: n } = e, r = {
1211
- ...Rn(t) ? { background: t } : {},
1212
- ...Rn(n) ? { separator: n } : {}
1215
+ ...zn(t) ? { background: t } : {},
1216
+ ...zn(n) ? { separator: n } : {}
1213
1217
  };
1214
1218
  return Object.keys(r).length > 0 ? r : null;
1215
1219
  }
1216
- var Un = /^[A-Za-z0-9_]{1,32}$/;
1217
- function Wn(e) {
1220
+ var Wn = /^[A-Za-z0-9_]{1,32}$/;
1221
+ function Gn(e) {
1218
1222
  if (typeof e != "object" || !e || Array.isArray(e)) return;
1219
1223
  let t = {};
1220
1224
  for (let [n, r] of Object.entries(e)) {
1221
- if (!Un.test(n) || typeof r != "object" || !r) continue;
1225
+ if (!Wn.test(n) || typeof r != "object" || !r) continue;
1222
1226
  let { lineStyle: e, visible: i } = r, a = {
1223
- ...Nn.includes(e) ? { lineStyle: e } : {},
1227
+ ...Pn.includes(e) ? { lineStyle: e } : {},
1224
1228
  ...typeof i == "boolean" ? { visible: i } : {}
1225
1229
  };
1226
1230
  Object.keys(a).length > 0 && (t[n] = a);
1227
1231
  }
1228
1232
  return Object.keys(t).length > 0 ? t : void 0;
1229
1233
  }
1230
- function Gn(e, t, n = 1) {
1234
+ function Kn(e, t, n = 1) {
1231
1235
  return e === "solid" ? [] : e === "dotted" ? [n, n * 2] : [...t];
1232
1236
  }
1233
- function Kn(e, t, n) {
1237
+ function qn(e, t, n) {
1234
1238
  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;
1235
1239
  return {
1236
1240
  up: o,
@@ -1238,7 +1242,7 @@ function Kn(e, t, n) {
1238
1242
  wickUp: r("wickUpColor") ?? t("series.candlestick.wickUpColor") ?? (i === void 0 ? e.candleUpWick : o),
1239
1243
  wickDown: r("wickDownColor") ?? t("series.candlestick.wickDownColor") ?? (a === void 0 ? e.candleDownWick : s),
1240
1244
  line: r("color") ?? r("lineColor") ?? t("series.line.color") ?? e.lineColor,
1241
- lineWidth: r("lineWidth") ?? t("series.line.lineWidth") ?? In,
1245
+ lineWidth: r("lineWidth") ?? t("series.line.lineWidth") ?? Ln,
1242
1246
  top: r("topColor") ?? t("series.area.topColor") ?? e.areaTopColor,
1243
1247
  bottom: r("bottomColor") ?? t("series.area.bottomColor") ?? e.areaBottomColor
1244
1248
  };
@@ -1251,8 +1255,8 @@ function H(e, t, n) {
1251
1255
  width: e(`${t}.width`) ?? n.width
1252
1256
  };
1253
1257
  }
1254
- function qn(e, t, n) {
1255
- let { style: r, ...i } = e, a = n, o = (e) => a[e], s = Kn(i, o, t), c = o("background.color") ?? i.background, l = (e, t) => o(e) ?? t, u = (e) => o(e) ?? null, d = {
1258
+ function Jn(e, t, n) {
1259
+ let { style: r, ...i } = e, a = n, o = (e) => a[e], s = qn(i, o, t), c = o("background.color") ?? i.background, l = (e, t) => o(e) ?? t, u = (e) => o(e) ?? null, d = {
1256
1260
  panes: {
1257
1261
  background: l("panes.background", c),
1258
1262
  separator: l("panes.separatorColor", i.axisLine),
@@ -1351,7 +1355,7 @@ function qn(e, t, n) {
1351
1355
  style: d
1352
1356
  };
1353
1357
  }
1354
- var Jn = {
1358
+ var Yn = {
1355
1359
  "background.color": (e) => e.background,
1356
1360
  "panes.background": (e, t) => t.panes.background,
1357
1361
  "panes.separatorColor": (e, t) => t.panes.separator,
@@ -1370,8 +1374,8 @@ var Jn = {
1370
1374
  "lastPrice.downColor": (e, t) => t.lastPrice.down,
1371
1375
  "lastPrice.style": (e, t) => t.lastPrice.style,
1372
1376
  "lastPrice.width": (e, t) => t.lastPrice.width,
1373
- "volume.upColor": (e) => V(e).up,
1374
- "volume.downColor": (e) => V(e).down,
1377
+ "volume.upColor": (e) => Nn(e).up,
1378
+ "volume.downColor": (e) => Nn(e).down,
1375
1379
  "sessionBreaks.color": (e, t) => t.sessionBreaks.color,
1376
1380
  "sessionBreaks.style": (e, t) => t.sessionBreaks.style,
1377
1381
  "sessionBreaks.width": (e, t) => t.sessionBreaks.width,
@@ -1388,16 +1392,16 @@ var Jn = {
1388
1392
  "tradeZones.lossColor": (e, t) => t.tradeZones.loss,
1389
1393
  "tradeZones.activeColor": (e, t) => t.tradeZones.active,
1390
1394
  "drawings.handleColor": (e, t) => t.drawings.handle
1391
- }, Yn = {
1395
+ }, Xn = {
1392
1396
  visible: "visible",
1393
1397
  color: "color",
1394
1398
  style: "style",
1395
1399
  width: "width"
1396
1400
  };
1397
- function Xn(e, t, n, r = "candlestick") {
1401
+ function Zn(e, t, n, r = "candlestick") {
1398
1402
  let i = n.split(".");
1399
1403
  if (i[0] === "series") {
1400
- let n = Kn(e, (e) => t[e], i[1]);
1404
+ let n = qn(e, (e) => t[e], i[1]);
1401
1405
  switch (i[2]) {
1402
1406
  case "upColor": return n.up;
1403
1407
  case "downColor": return n.down;
@@ -1410,12 +1414,12 @@ function Xn(e, t, n, r = "candlestick") {
1410
1414
  case "bottomColor": return n.bottom;
1411
1415
  }
1412
1416
  }
1413
- let a = qn(e, r, t), o = a.style;
1414
- return i[0] === "grid" || i[0] === "crosshair" && (i[1] === "horizontal" || i[1] === "vertical") ? (i[0] === "grid" ? o.grid : o.crosshair)[i[1]][Yn[i[2]]] : Jn[n]?.(a, o) ?? null;
1417
+ let a = Jn(e, r, t), o = a.style;
1418
+ return i[0] === "grid" || i[0] === "crosshair" && (i[1] === "horizontal" || i[1] === "vertical") ? (i[0] === "grid" ? o.grid : o.crosshair)[i[1]][Xn[i[2]]] : Yn[n]?.(a, o) ?? null;
1415
1419
  }
1416
1420
  //#endregion
1417
1421
  //#region src/constants/defaults.ts
1418
- var Zn = {
1422
+ var Qn = {
1419
1423
  autoScale: !0,
1420
1424
  rightMargin: 5,
1421
1425
  minBarSpacing: 2,
@@ -1426,7 +1430,7 @@ var Zn = {
1426
1430
  vLineStyle: "solid"
1427
1431
  },
1428
1432
  crosshair: { mode: "magnet" }
1429
- }, Qn = [
1433
+ }, $n = [
1430
1434
  "1s",
1431
1435
  "1m",
1432
1436
  "3m",
@@ -1443,7 +1447,7 @@ var Zn = {
1443
1447
  "3d",
1444
1448
  "1w",
1445
1449
  "1M"
1446
- ], $n = [
1450
+ ], er = [
1447
1451
  "1m",
1448
1452
  "5m",
1449
1453
  "15m",
@@ -1457,7 +1461,7 @@ var Zn = {
1457
1461
  "3M",
1458
1462
  "6M",
1459
1463
  "12M"
1460
- ], er = [
1464
+ ], tr = [
1461
1465
  "1m",
1462
1466
  "5m",
1463
1467
  "15m",
@@ -1467,7 +1471,7 @@ var Zn = {
1467
1471
  "1d",
1468
1472
  "1w",
1469
1473
  "1M"
1470
- ], tr = [
1474
+ ], nr = [
1471
1475
  "1m",
1472
1476
  "5m",
1473
1477
  "15m",
@@ -1475,7 +1479,7 @@ var Zn = {
1475
1479
  "4h",
1476
1480
  "1d",
1477
1481
  "1w"
1478
- ], nr = 8, rr = 2, ir = 70, ar = 30, or = 60, sr = 120, cr = (1 + Math.sqrt(5)) / 2, lr = [
1482
+ ], rr = 8, ir = 2, ar = 70, or = 30, sr = 60, cr = 120, lr = (1 + Math.sqrt(5)) / 2, ur = [
1479
1483
  1,
1480
1484
  2,
1481
1485
  3,
@@ -1487,8 +1491,8 @@ var Zn = {
1487
1491
  55,
1488
1492
  89
1489
1493
  ];
1490
- function ur(e, t, n = 1) {
1491
- return Math.round(e * cr ** (t / n));
1494
+ function dr(e, t, n = 1) {
1495
+ return Math.round(e * lr ** (t / n));
1492
1496
  }
1493
1497
  //#endregion
1494
1498
  //#region src/i18n/en.ts
@@ -1595,7 +1599,7 @@ var U = {
1595
1599
  error: "Error",
1596
1600
  numberDecimalSeparator: ".",
1597
1601
  numberGroupSeparator: ","
1598
- }, dr = {
1602
+ }, fr = {
1599
1603
  candlestick: "Nến",
1600
1604
  line: "Đường",
1601
1605
  area: "Vùng",
@@ -1698,20 +1702,20 @@ var U = {
1698
1702
  error: "Lỗi",
1699
1703
  numberDecimalSeparator: ",",
1700
1704
  numberGroupSeparator: "."
1701
- }, W = new Map([["en", U], ["vi", dr]]), G = "en", fr = U;
1702
- function pr(e) {
1703
- G = e, fr = W.get(e) ?? U;
1705
+ }, W = new Map([["en", U], ["vi", fr]]), G = "en", pr = U;
1706
+ function mr(e) {
1707
+ G = e, pr = W.get(e) ?? U;
1704
1708
  }
1705
- function mr() {
1709
+ function hr() {
1706
1710
  return G;
1707
1711
  }
1708
- function hr(e) {
1709
- return fr[e] ?? U[e] ?? e;
1712
+ function gr(e) {
1713
+ return pr[e] ?? U[e] ?? e;
1710
1714
  }
1711
- function gr(e, t) {
1715
+ function _r(e, t) {
1712
1716
  W.set(e, t);
1713
1717
  }
1714
- function _r(e) {
1718
+ function vr(e) {
1715
1719
  return W.get(e ?? G) ?? U;
1716
1720
  }
1717
1721
  function K(e, t = 2, n) {
@@ -1719,32 +1723,32 @@ function K(e, t = 2, n) {
1719
1723
  for (let e = l.length - 1, t = 0; e >= 0; e--, t++) t > 0 && t % 3 == 0 && (u = a + u), u = l[e] + u;
1720
1724
  return c && (u = "-" + u), s ? u + i + s : u;
1721
1725
  }
1722
- function vr(e) {
1726
+ function yr(e) {
1723
1727
  return K(e, 0, "vi");
1724
1728
  }
1725
- var yr = [
1729
+ var br = [
1726
1730
  [0xe8d4a51000, "조"],
1727
1731
  [1e8, "억"],
1728
1732
  [1e4, "만"]
1729
1733
  ];
1730
- function br(e) {
1734
+ function xr(e) {
1731
1735
  return /^ko([-_]|$)/i.test(e);
1732
1736
  }
1733
- function xr(e, t, n) {
1737
+ function Sr(e, t, n) {
1734
1738
  try {
1735
- return A(e, t, n);
1739
+ return j(e, t, n);
1736
1740
  } catch {
1737
1741
  return K(e, t, "en");
1738
1742
  }
1739
1743
  }
1740
- function Sr(e, t) {
1744
+ function Cr(e, t) {
1741
1745
  let n = t ?? G;
1742
1746
  if (!Number.isFinite(e)) return String(e);
1743
- if (br(n)) {
1744
- for (let [t, r] of yr) if (Math.round(e / t * 100) >= 100) return K(e / t, 2, n) + r;
1747
+ if (xr(n)) {
1748
+ for (let [t, r] of br) if (Math.round(e / t * 100) >= 100) return K(e / t, 2, n) + r;
1745
1749
  return K(e, 0, n);
1746
1750
  }
1747
- let r = W.has(n) ? (e, t) => K(e, t, n) : (e, t) => xr(e, t, n);
1751
+ let r = W.has(n) ? (e, t) => K(e, t, n) : (e, t) => Sr(e, t, n);
1748
1752
  return e >= 1e9 ? r(e / 1e9, 2) + "B" : e >= 1e6 ? r(e / 1e6, 2) + "M" : e >= 1e3 ? r(e / 1e3, 2) + "K" : r(e, 0);
1749
1753
  }
1750
1754
  //#endregion
@@ -1756,14 +1760,14 @@ var q = {
1756
1760
  ceiling: "#D946EF",
1757
1761
  floor: "#06B6D4",
1758
1762
  reference: "#EAB308"
1759
- }, J = "Asia/Ho_Chi_Minh", Y = {
1763
+ }, J = "Asia/Ho_Chi_Minh", wr = {
1760
1764
  up: "#E8313F",
1761
1765
  down: "#2F6FEB",
1762
1766
  unchanged: "#8B8F99",
1763
1767
  ceiling: "#C2121F",
1764
1768
  floor: "#1E4FC2",
1765
1769
  reference: "#8B8F99"
1766
- }, Cr = "Asia/Seoul", wr = [
1770
+ }, Tr = "Asia/Seoul", Er = [
1767
1771
  {
1768
1772
  name: "ATO",
1769
1773
  startTime: "09:00",
@@ -1794,7 +1798,7 @@ var q = {
1794
1798
  endTime: "14:45",
1795
1799
  type: "preClose"
1796
1800
  }
1797
- ], Tr = [
1801
+ ], Dr = [
1798
1802
  {
1799
1803
  name: "Phiên 1",
1800
1804
  startTime: "09:15",
@@ -1825,7 +1829,7 @@ var q = {
1825
1829
  endTime: "15:00",
1826
1830
  type: "postClose"
1827
1831
  }
1828
- ], Er = [
1832
+ ], Or = [
1829
1833
  {
1830
1834
  name: "Phiên 1",
1831
1835
  startTime: "09:15",
@@ -1844,7 +1848,7 @@ var q = {
1844
1848
  endTime: "14:30",
1845
1849
  type: "continuous"
1846
1850
  }
1847
- ], Dr = [
1851
+ ], kr = [
1848
1852
  {
1849
1853
  name: "ATO",
1850
1854
  startTime: "08:45",
@@ -1875,7 +1879,7 @@ var q = {
1875
1879
  endTime: "14:45",
1876
1880
  type: "preClose"
1877
1881
  }
1878
- ], Or = [
1882
+ ], Ar = [
1879
1883
  {
1880
1884
  name: "장전 동시호가",
1881
1885
  startTime: "08:30",
@@ -1906,7 +1910,7 @@ var q = {
1906
1910
  endTime: "20:00",
1907
1911
  type: "postClose"
1908
1912
  }
1909
- ], kr = [
1913
+ ], jr = [
1910
1914
  {
1911
1915
  name: "프리마켓",
1912
1916
  startTime: "08:00",
@@ -1925,7 +1929,7 @@ var q = {
1925
1929
  endTime: "20:00",
1926
1930
  type: "postClose"
1927
1931
  }
1928
- ], Ar = [
1932
+ ], Mr = [
1929
1933
  {
1930
1934
  from: 0,
1931
1935
  step: 1
@@ -1954,7 +1958,7 @@ var q = {
1954
1958
  from: 5e5,
1955
1959
  step: 1e3
1956
1960
  }
1957
- ], jr = [
1961
+ ], Nr = [
1958
1962
  {
1959
1963
  from: 0,
1960
1964
  step: 1e-8
@@ -2015,7 +2019,7 @@ var q = {
2015
2019
  from: 1e6,
2016
2020
  step: 1e3
2017
2021
  }
2018
- ], Mr = {
2022
+ ], Pr = {
2019
2023
  type: "stock",
2020
2024
  exchange: "HOSE",
2021
2025
  currency: "VND",
@@ -2042,12 +2046,12 @@ var q = {
2042
2046
  ceilingPercent: 7,
2043
2047
  floorPercent: 7
2044
2048
  },
2045
- sessions: wr,
2049
+ sessions: Er,
2046
2050
  colorScheme: q
2047
- }, Nr = {
2048
- ...Mr,
2051
+ }, Fr = {
2052
+ ...Pr,
2049
2053
  priceSteps: void 0
2050
- }, Pr = {
2054
+ }, Ir = {
2051
2055
  type: "stock",
2052
2056
  exchange: "HNX",
2053
2057
  currency: "VND",
@@ -2060,9 +2064,9 @@ var q = {
2060
2064
  ceilingPercent: 10,
2061
2065
  floorPercent: 10
2062
2066
  },
2063
- sessions: Tr,
2067
+ sessions: Dr,
2064
2068
  colorScheme: q
2065
- }, Fr = {
2069
+ }, Lr = {
2066
2070
  type: "stock",
2067
2071
  exchange: "UPCOM",
2068
2072
  currency: "VND",
@@ -2075,9 +2079,9 @@ var q = {
2075
2079
  ceilingPercent: 15,
2076
2080
  floorPercent: 15
2077
2081
  },
2078
- sessions: Er,
2082
+ sessions: Or,
2079
2083
  colorScheme: q
2080
- }, Ir = {
2084
+ }, Rr = {
2081
2085
  type: "futures",
2082
2086
  exchange: "HNX",
2083
2087
  currency: "VND",
@@ -2091,44 +2095,44 @@ var q = {
2091
2095
  ceilingPercent: 7,
2092
2096
  floorPercent: 7
2093
2097
  },
2094
- sessions: Dr,
2098
+ sessions: kr,
2095
2099
  colorScheme: q
2096
- }, Lr = {
2100
+ }, zr = {
2097
2101
  type: "stock",
2098
2102
  exchange: "KRX",
2099
2103
  currency: "KRW",
2100
2104
  pricePrecision: 0,
2101
2105
  volumeUnit: 1,
2102
2106
  priceStep: 1,
2103
- priceSteps: Ar,
2104
- timeZone: Cr,
2107
+ priceSteps: Mr,
2108
+ timeZone: Tr,
2105
2109
  priceLimits: {
2106
2110
  enabled: !0,
2107
2111
  ceilingPercent: 30,
2108
2112
  floorPercent: 30,
2109
2113
  roundMove: !0
2110
2114
  },
2111
- sessions: Or,
2112
- colorScheme: Y
2113
- }, Rr = {
2114
- ...Lr,
2115
+ sessions: Ar,
2116
+ colorScheme: wr
2117
+ }, Br = {
2118
+ ...zr,
2115
2119
  exchange: "NXT",
2116
- sessions: kr
2117
- }, zr = {
2120
+ sessions: jr
2121
+ }, Vr = {
2118
2122
  type: "crypto",
2119
2123
  exchange: "UPBIT",
2120
2124
  currency: "KRW",
2121
2125
  priceStep: 1e-8,
2122
- priceSteps: jr,
2123
- timeZone: Cr,
2126
+ priceSteps: Nr,
2127
+ timeZone: Tr,
2124
2128
  priceLimits: { enabled: !1 },
2125
- colorScheme: Y
2126
- }, Br = {
2129
+ colorScheme: wr
2130
+ }, Hr = {
2127
2131
  type: "crypto",
2128
2132
  currency: "USDT",
2129
2133
  pricePrecision: 2,
2130
2134
  priceLimits: { enabled: !1 }
2131
- }, Vr = {
2135
+ }, Ur = {
2132
2136
  type: "stock",
2133
2137
  exchange: "NYSE",
2134
2138
  currency: "USD",
@@ -2157,10 +2161,10 @@ var q = {
2157
2161
  }
2158
2162
  ]
2159
2163
  };
2160
- function Hr(e) {
2161
- return Ur(e, q);
2164
+ function Wr(e) {
2165
+ return Gr(e, q);
2162
2166
  }
2163
- function Ur(e, t) {
2167
+ function Gr(e, t) {
2164
2168
  return {
2165
2169
  ...e,
2166
2170
  candleUp: t.up,
@@ -2169,33 +2173,33 @@ function Ur(e, t) {
2169
2173
  candleDownWick: t.down
2170
2174
  };
2171
2175
  }
2172
- var X = 1e-9;
2173
- function Wr(e, t) {
2176
+ var Y = 1e-9;
2177
+ function Kr(e, t) {
2174
2178
  let n = t.priceStep;
2175
- for (let r of t.priceSteps ?? []) e + X >= r.from && (n = r.step);
2179
+ for (let r of t.priceSteps ?? []) e + Y >= r.from && (n = r.step);
2176
2180
  return n !== void 0 && n > 0 ? n : void 0;
2177
2181
  }
2178
- function Gr(e, t) {
2182
+ function qr(e, t) {
2179
2183
  let n = t.priceStep;
2180
- for (let r of t.priceSteps ?? []) e - X > r.from && (n = r.step);
2184
+ for (let r of t.priceSteps ?? []) e - Y > r.from && (n = r.step);
2181
2185
  return n !== void 0 && n > 0 ? n : void 0;
2182
2186
  }
2183
- function Z(e, t, n = "nearest") {
2184
- let r = Wr(e, t);
2187
+ function X(e, t, n = "nearest") {
2188
+ let r = Kr(e, t);
2185
2189
  if (r === void 0 || !Number.isFinite(e)) return e;
2186
- let i = e / r, a = n === "down" ? Math.floor(i + X) : n === "up" ? Math.ceil(i - X) : Math.round(i);
2190
+ let i = e / r, a = n === "down" ? Math.floor(i + Y) : n === "up" ? Math.ceil(i - Y) : Math.round(i);
2187
2191
  return Number((a * r).toFixed(Vt(r)));
2188
2192
  }
2189
- function Kr(e, t) {
2193
+ function Jr(e, t) {
2190
2194
  if (!t.priceLimits?.enabled || !t.priceLimits.ceilingPercent) return null;
2191
- let n = t.priceLimits.ceilingPercent / 100, r = (t.priceLimits.floorPercent ?? t.priceLimits.ceilingPercent) / 100, i = e, a = i * (1 + n), o = i * (1 - r), s = Wr(i, t);
2195
+ 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 = Kr(i, t);
2192
2196
  if (s === void 0) return {
2193
2197
  ceiling: a,
2194
2198
  floor: o,
2195
2199
  reference: i
2196
2200
  };
2197
- let c = Z(i + s, t);
2198
- if (Math.abs(i - s) < X) return {
2201
+ let c = X(i + s, t);
2202
+ if (Math.abs(i - s) < Y) return {
2199
2203
  ceiling: c,
2200
2204
  floor: i,
2201
2205
  reference: i
@@ -2207,36 +2211,36 @@ function Kr(e, t) {
2207
2211
  priceStep: s,
2208
2212
  priceSteps: void 0
2209
2213
  };
2210
- l = Z(i + Z(i * n, e, "down"), t, "down"), u = Z(i - Z(i * r, e, "down"), t, "down");
2211
- } else l = Z(a, t, "down"), u = Z(o, t, "up");
2212
- return l <= i && (l = c), u >= i && (u = Z(i - (Gr(i, t) ?? s), t)), u <= 0 && (u = i), {
2214
+ l = X(i + X(i * n, e, "down"), t, "down"), u = X(i - X(i * r, e, "down"), t, "down");
2215
+ } else l = X(a, t, "down"), u = X(o, t, "up");
2216
+ return l <= i && (l = c), u >= i && (u = X(i - (qr(i, t) ?? s), t)), u <= 0 && (u = i), {
2213
2217
  ceiling: l,
2214
2218
  floor: u,
2215
2219
  reference: i
2216
2220
  };
2217
2221
  }
2218
- var Q = (e, t) => Math.round(e * t * 1e9) / 1e9;
2219
- function qr(e, t) {
2222
+ var Z = (e, t) => Math.round(e * t * 1e9) / 1e9;
2223
+ function Yr(e, t) {
2220
2224
  let n = Math.round(Math.log10(t));
2221
2225
  return {
2222
2226
  ...e,
2223
2227
  pricePrecision: e.pricePrecision === void 0 ? void 0 : Math.max(0, e.pricePrecision - n),
2224
- priceStep: e.priceStep === void 0 ? void 0 : Q(e.priceStep, t),
2228
+ priceStep: e.priceStep === void 0 ? void 0 : Z(e.priceStep, t),
2225
2229
  priceSteps: e.priceSteps?.map((e) => ({
2226
- from: Q(e.from, t),
2227
- step: Q(e.step, t)
2230
+ from: Z(e.from, t),
2231
+ step: Z(e.step, t)
2228
2232
  })),
2229
2233
  priceLimits: e.priceLimits && {
2230
2234
  ...e.priceLimits,
2231
- referencePrice: e.priceLimits.referencePrice === void 0 ? void 0 : Q(e.priceLimits.referencePrice, t)
2235
+ referencePrice: e.priceLimits.referencePrice === void 0 ? void 0 : Z(e.priceLimits.referencePrice, t)
2232
2236
  }
2233
2237
  };
2234
2238
  }
2235
- var Jr = 6e4, Yr = 864e5;
2236
- function Xr(e, t) {
2239
+ var Xr = 6e4, Zr = 864e5;
2240
+ function Qr(e, t) {
2237
2241
  let n, r;
2238
2242
  if (t) {
2239
- let i = new Date(e + b(t, e) * Jr);
2243
+ let i = new Date(e + b(t, e) * Xr);
2240
2244
  n = i.getUTCHours(), r = i.getUTCMinutes();
2241
2245
  } else {
2242
2246
  let t = new Date(e);
@@ -2244,31 +2248,31 @@ function Xr(e, t) {
2244
2248
  }
2245
2249
  return `${String(n).padStart(2, "0")}:${String(r).padStart(2, "0")}`;
2246
2250
  }
2247
- function Zr(e, t = Date.now(), n) {
2251
+ function $r(e, t = Date.now(), n) {
2248
2252
  if (n !== void 0 && !y(n)) return null;
2249
- let r = Xr(t, n);
2253
+ let r = Qr(t, n);
2250
2254
  for (let t of e) if (r >= t.startTime && r < t.endTime) return t;
2251
2255
  return null;
2252
2256
  }
2253
- var $ = (e) => String(e).padStart(2, "0"), Qr = (e) => {
2257
+ var Q = (e) => String(e).padStart(2, "0"), $ = (e) => {
2254
2258
  let t = new Date(e);
2255
- return `${t.getUTCFullYear()}-${$(t.getUTCMonth() + 1)}-${$(t.getUTCDate())}`;
2256
- }, $r = 4, ei = 7 * 36e5;
2257
- function ti(e, t, n) {
2258
- let r = Date.UTC(e, t - 1, 1), i = 1 + ($r - new Date(r).getUTCDay() + 7) % 7, a = Date.UTC(e, t - 1, i + 14), o = (e) => {
2259
+ return `${t.getUTCFullYear()}-${Q(t.getUTCMonth() + 1)}-${Q(t.getUTCDate())}`;
2260
+ }, ei = 4, ti = 7 * 36e5;
2261
+ function ni(e, t, n) {
2262
+ let r = Date.UTC(e, t - 1, 1), i = 1 + (ei - new Date(r).getUTCDay() + 7) % 7, a = Date.UTC(e, t - 1, i + 14), o = (e) => {
2259
2263
  let t = new Date(e).getUTCDay();
2260
- return t === 0 || t === 6 || (n?.(Qr(e)) ?? !1);
2264
+ return t === 0 || t === 6 || (n?.($(e)) ?? !1);
2261
2265
  };
2262
- for (; o(a);) a -= Yr;
2263
- return Qr(a);
2266
+ for (; o(a);) a -= Zr;
2267
+ return $(a);
2264
2268
  }
2265
- function ni(e, t) {
2266
- let n = Qr(e + ei), r = (e, n) => ({
2267
- symbol: `VN30F${$(e % 100)}${$(n)}`,
2269
+ function ri(e, t) {
2270
+ let n = $(e + ti), r = (e, n) => ({
2271
+ symbol: `VN30F${Q(e % 100)}${Q(n)}`,
2268
2272
  year: e,
2269
2273
  month: n,
2270
- lastTradingDay: ti(e, n, t)
2271
- }), i = (e) => e.month === 12 ? r(e.year + 1, 1) : r(e.year, e.month + 1), a = new Date(e + ei), o = r(a.getUTCFullYear(), a.getUTCMonth() + 1);
2274
+ lastTradingDay: ni(e, n, t)
2275
+ }), i = (e) => e.month === 12 ? r(e.year + 1, 1) : r(e.year, e.month + 1), a = new Date(e + ti), o = r(a.getUTCFullYear(), a.getUTCMonth() + 1);
2272
2276
  n > o.lastTradingDay && (o = i(o));
2273
2277
  let s = [o, i(o)], c = i(s[1]);
2274
2278
  for (; s.length < 4;) c.month % 3 == 0 && s.push(c), c = i(c);
@@ -2276,7 +2280,7 @@ function ni(e, t) {
2276
2280
  }
2277
2281
  //#endregion
2278
2282
  //#region src/icons/iconSet.ts
2279
- var ri = {
2283
+ var ii = {
2280
2284
  cursor: { d: "M6 3.5L18.5 12.5L12.6 13.6L9.7 19.4z" },
2281
2285
  trendingUp: { d: "M3 17L9 11L13 14.5L21 6.5M15 6.5H21V12.5" },
2282
2286
  trendingDown: { d: "M3 7L9 13L13 9.5L21 17.5M15 17.5H21V11.5" },
@@ -2443,7 +2447,7 @@ var ri = {
2443
2447
  ]
2444
2448
  ] },
2445
2449
  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" }
2446
- }, ii = {
2450
+ }, ai = {
2447
2451
  trendLine: {
2448
2452
  d: "M5 18L19 6",
2449
2453
  dots: [[5, 18], [19, 6]]
@@ -2803,7 +2807,7 @@ var ri = {
2803
2807
  ],
2804
2808
  dash: "M12 3V21"
2805
2809
  }
2806
- }, ai = {
2810
+ }, oi = {
2807
2811
  candlestick: {
2808
2812
  d: "M8 3.5V7M8 16V20.5M16 5V8.5M16 15.5V19",
2809
2813
  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"]
@@ -2870,21 +2874,21 @@ var ri = {
2870
2874
  "M16 4.5h3v6h-3z"
2871
2875
  ]
2872
2876
  }
2873
- }, oi = 1.75, si = .22, ci = /* @__PURE__ */ new WeakMap();
2874
- function li(e) {
2875
- let t = ci.get(e);
2877
+ }, si = 1.75, ci = .22, li = /* @__PURE__ */ new WeakMap();
2878
+ function ui(e) {
2879
+ let t = li.get(e);
2876
2880
  if (t) return t;
2877
2881
  let n = "";
2878
- e.soft && (n += `<path d="${e.soft}" fill="currentColor" fill-opacity="${si}" stroke="none"/>`);
2882
+ e.soft && (n += `<path d="${e.soft}" fill="currentColor" fill-opacity="${ci}" stroke="none"/>`);
2879
2883
  for (let t of e.fills ?? []) n += `<path d="${t}" fill="currentColor" stroke="none"/>`;
2880
2884
  e.d && (n += `<path d="${e.d}"/>`), e.dash && (n += `<path d="${e.dash}" stroke-dasharray="2 2.5"/>`);
2881
- for (let [t, r, i = oi] of e.dots ?? []) n += `<circle cx="${t}" cy="${r}" r="${i}" fill="currentColor" stroke="none"/>`;
2882
- return ci.set(e, n), n;
2885
+ for (let [t, r, i = si] of e.dots ?? []) n += `<circle cx="${t}" cy="${r}" r="${i}" fill="currentColor" stroke="none"/>`;
2886
+ return li.set(e, n), n;
2883
2887
  }
2884
- function ui(e, t) {
2885
- return `<svg xmlns="http://www.w3.org/2000/svg" class="tc-icon" 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">${li(e)}</svg>`;
2888
+ function di(e, t) {
2889
+ return `<svg xmlns="http://www.w3.org/2000/svg" class="tc-icon" 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">${ui(e)}</svg>`;
2886
2890
  }
2887
2891
  //#endregion
2888
- export { t as CHART_STYLE_KEYS, ai as CHART_TYPE_ICONS, Dn as DARK_PRICE_LIMITS, B as DARK_TERMINAL, An as DARK_THEME, rr as DEFAULT_BAR_SPACING, nr as DEFAULT_BAR_WIDTH, Zn as DEFAULT_CHART_OPTIONS, a as DEFAULT_DRAWING_STYLE, hn as DEFAULT_FONT_FAMILY, sr as DEFAULT_PANEL_HEIGHT, l as DEFAULT_RECONNECT, s as DEFAULT_SIGNAL_STYLE, u as DEFAULT_STREAM_CONFIG, tr as DEFAULT_TIMEFRAME_FAVORITES, c as DEFAULT_TRADE_ZONE_STYLE, o as DEFAULT_TRADING_CONFIG, ii as DRAWING_TOOL_ICONS, lr as FIBONACCI, Tr as HNX_SESSIONS, wr as HOSE_SESSIONS, oi as ICON_DOT_RADIUS, si as ICON_SOFT_OPACITY, Or as KRX_SESSIONS, Y as KR_COLORS, On as LIGHT_PRICE_LIMITS, jn as LIGHT_THEME, n as LINE_TINT_FILL, e as LayerType, Br as MARKET_CRYPTO, Pr as MARKET_HNX, Mr as MARKET_HOSE, Nr as MARKET_HOSE_ETF, Lr as MARKET_KRX, Rr as MARKET_NXT, Vr as MARKET_NYSE, zr as MARKET_UPBIT_KRW, Fr as MARKET_UPCOM, Ir as MARKET_VN30F, or as MIN_PANEL_HEIGHT, fe as MS_TIME_THRESHOLD, kr as NXT_SESSIONS, cr as PHI, ir as PRICE_AXIS_WIDTH, Tt as PRICE_SOURCES, gn as SANS_FONT_FAMILY, I as TC_PALETTE, kn as TC_SERIES_COLORS, Qn as TIMEFRAMES_CRYPTO, er as TIMEFRAMES_FOREX, $n as TIMEFRAMES_STOCK, ar as TIME_AXIS_HEIGHT, ri as UI_ICONS, Er as UPCOM_SESSIONS, Dr as VN30F_SESSIONS, q as VN_COLORS, vn as VOLUME_ALPHA, Je as alignToTimeframe, _t as autoPricePrecision, pt as barDateParts, ft as barDateZone, pe as barTimeUnit, Qe as barsAreDaily, Xn as chartStyleValue, oe as clamp, Kr as computePriceLimits, be as computePriceRange, de as computeTickStep, m as contrastRatio, Ur as createMarketTheme, Hr as createVNTheme, wt as detectPrecision, $t as drawingOption, U as en, _e as findBarIndex, ye as fitPriceRange, bt as formatFraction, K as formatNumber, A as formatPrice, yt as formatPriceScaleLabel, qe as formatTimestamp, vr as formatVND, Ct as formatVolume, Sr as formatVolumeLoc, xt as fractionTick, Zr as getCurrentSession, mr as getLocale, _r as getLocaleStrings, Se as hexToRgba, ui as iconSvg, kt as indicatorSource, ke as inkOn, ce as inverseLerp, Xe as isDateOnly, Et as isPriceSource, Ke as isTimeFrame, x as isUtcTimeZone, y as isValidTimeZone, se as lerp, Te as lerpColor, Gn as lineDash, Gt as marketStatus, xe as mergeBar, ue as niceNumber, he as normalizeBar, me as normalizeBarTime, S as offsetAt, r as ownFillColor, ve as padPriceRange, At as parseIndicatorSource, w as parseTimeframe, ur as phiStep, Rt as pickBaseTimeframe, St as priceFormatterFor, Wr as priceStepAt, gt as priceTagText, Bt as rankSymbols, Vn as readChartStyleOverrides, mn as readChartTypeOptions, Wn as readIndicatorPlotStyles, ae as readNews, Hn as readPaneStyle, ee as readQuote, Oe as readableOn, gr as registerLocale, Nt as resampleBars, qn as resolveChartTheme, en as resolveDrawingOptions, V as resolveVolumeColors, Z as roundToPriceStep, le as roundToStep, Zt as sanitizeDrawingOptions, fn as sanitizeDrawingStyle, qr as scaleMarketPrices, Ut as sessionMinute, pr as setLocale, ge as sliceVisibleData, Dt as sourcePrice, Vt as stepDecimals, Ht as symbolTimeZone, hr as t, Ge as tickBarCount, Ye as timeParts, O as timeframeBucketStart, ct as timeframeFollowsDays, lt as timeframeSpansDays, T as timeframeToMs, $e as tzLabel, br as usesKoreanUnits, dr as vi, ni as vn30fContracts, ti as vn30fLastTradingDay, L as volumeColor, ze as wallToUtc, p as withAlpha, b as zoneOffsetMinutes, Ve as zonedDateFormatter };
2892
+ export { t as CHART_STYLE_KEYS, oi as CHART_TYPE_ICONS, En as DARK_PRICE_LIMITS, jn as DARK_TERMINAL, kn as DARK_THEME, ir as DEFAULT_BAR_SPACING, rr as DEFAULT_BAR_WIDTH, Qn as DEFAULT_CHART_OPTIONS, a as DEFAULT_DRAWING_STYLE, mn as DEFAULT_FONT_FAMILY, cr as DEFAULT_PANEL_HEIGHT, l as DEFAULT_RECONNECT, s as DEFAULT_SIGNAL_STYLE, u as DEFAULT_STREAM_CONFIG, nr as DEFAULT_TIMEFRAME_FAVORITES, c as DEFAULT_TRADE_ZONE_STYLE, o as DEFAULT_TRADING_CONFIG, ai as DRAWING_TOOL_ICONS, ur as FIBONACCI, Dr as HNX_SESSIONS, Er as HOSE_SESSIONS, si as ICON_DOT_RADIUS, ci as ICON_SOFT_OPACITY, Ar as KRX_SESSIONS, wr as KR_COLORS, Dn as LIGHT_PRICE_LIMITS, An as LIGHT_THEME, n as LINE_TINT_FILL, e as LayerType, Hr as MARKET_CRYPTO, Ir as MARKET_HNX, Pr as MARKET_HOSE, Fr as MARKET_HOSE_ETF, zr as MARKET_KRX, Br as MARKET_NXT, Ur as MARKET_NYSE, Vr as MARKET_UPBIT_KRW, Lr as MARKET_UPCOM, Rr as MARKET_VN30F, sr as MIN_PANEL_HEIGHT, de as MS_TIME_THRESHOLD, jr as NXT_SESSIONS, lr as PHI, ar as PRICE_AXIS_WIDTH, wt as PRICE_SOURCES, hn as SANS_FONT_FAMILY, R as TC_PALETTE, On as TC_SERIES_COLORS, $n as TIMEFRAMES_CRYPTO, tr as TIMEFRAMES_FOREX, er as TIMEFRAMES_STOCK, or as TIME_AXIS_HEIGHT, ii as UI_ICONS, Or as UPCOM_SESSIONS, kr as VN30F_SESSIONS, q as VN_COLORS, _n as VOLUME_ALPHA, qe as alignToTimeframe, gt as autoPricePrecision, ft as barDateParts, dt as barDateZone, fe as barTimeUnit, Ze as barsAreDaily, Zn as chartStyleValue, oe as clamp, Jr as computePriceLimits, ye as computePriceRange, ue as computeTickStep, h as contrastRatio, Gr as createMarketTheme, Wr as createVNTheme, Ct as detectPrecision, $t as drawingOption, U as en, ge as findBarIndex, ve as fitPriceRange, yt as formatFraction, K as formatNumber, j as formatPrice, vt as formatPriceScaleLabel, Ke as formatTimestamp, yr as formatVND, St as formatVolume, Cr as formatVolumeLoc, bt as fractionTick, $r as getCurrentSession, hr as getLocale, vr as getLocaleStrings, xe as hexToRgba, di as iconSvg, Ot as indicatorSource, Oe as inkOn, ce as inverseLerp, Ye as isDateOnly, Tt as isPriceSource, Ge as isTimeFrame, S as isUtcTimeZone, y as isValidTimeZone, se as lerp, we as lerpColor, Kn as lineDash, Gt as marketStatus, be as mergeBar, p as niceNumber, me as normalizeBar, pe as normalizeBarTime, C as offsetAt, r as ownFillColor, _e as padPriceRange, kt as parseIndicatorSource, T as parseTimeframe, dr as phiStep, Lt as pickBaseTimeframe, xt as priceFormatterFor, Kr as priceStepAt, ht as priceTagText, Bt as rankSymbols, Hn as readChartStyleOverrides, pn as readChartTypeOptions, Gn as readIndicatorPlotStyles, ae as readNews, Un as readPaneStyle, ee as readQuote, De as readableOn, _r as registerLocale, Mt as resampleBars, Jn as resolveChartTheme, en as resolveDrawingOptions, Nn as resolveVolumeColors, X as roundToPriceStep, le as roundToStep, Zt as sanitizeDrawingOptions, fn as sanitizeDrawingStyle, Yr as scaleMarketPrices, Ut as sessionMinute, mr as setLocale, he as sliceVisibleData, Et as sourcePrice, Vt as stepDecimals, Ht as symbolTimeZone, gr as t, We as tickBarCount, Rt as tickerOf, Je as timeParts, lt as timeframeBucketStart, ot as timeframeFollowsDays, st as timeframeSpansDays, E as timeframeToMs, Qe as tzLabel, xr as usesKoreanUnits, fr as vi, ri as vn30fContracts, ni as vn30fLastTradingDay, z as volumeColor, Re as wallToUtc, m as withAlpha, b as zoneOffsetMinutes, Be as zonedDateFormatter };
2889
2893
 
2890
2894
  //# sourceMappingURL=index.js.map