@tradecanvas/commons 1.24.0 → 1.26.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
@@ -255,12 +255,17 @@ function oe(e, t, n) {
255
255
  }
256
256
  //#endregion
257
257
  //#region src/utils/data.ts
258
- function se(e) {
259
- return e > 0xe8d4a51000 ? e : e * 1e3;
260
- }
258
+ var se = 1e11;
261
259
  function ce(e) {
260
+ let t = e.length > 0 ? e[e.length - 1].time : NaN;
261
+ return Number.isFinite(t) ? Math.abs(t) >= 1e11 ? 1 : 1e3 : 1;
262
+ }
263
+ function le(e, t) {
264
+ return t === void 0 ? Math.abs(e) >= 1e11 ? e : e * 1e3 : e * t;
265
+ }
266
+ function ue(e) {
262
267
  return {
263
- time: se(e.time ?? e.t ?? 0),
268
+ time: le(e.time ?? e.t ?? 0),
264
269
  open: e.open ?? e.o ?? 0,
265
270
  high: e.high ?? e.h ?? 0,
266
271
  low: e.low ?? e.l ?? 0,
@@ -268,11 +273,11 @@ function ce(e) {
268
273
  volume: e.volume ?? e.v ?? 0
269
274
  };
270
275
  }
271
- function le(e, t, n) {
276
+ function de(e, t, n) {
272
277
  let r = Math.max(0, t), i = Math.min(e.length, n + 1);
273
278
  return e.slice(r, i);
274
279
  }
275
- function ue(e, t) {
280
+ function fe(e, t) {
276
281
  let n = 0, r = e.length - 1;
277
282
  for (; n <= r;) {
278
283
  let i = n + r >>> 1;
@@ -282,24 +287,34 @@ function ue(e, t) {
282
287
  }
283
288
  return n;
284
289
  }
285
- function de(e, t, n, r = .05) {
290
+ function pe(e, t, n, r = !1) {
291
+ let i = r && e > 0 && t > 0 ? Math.log(t / e) : NaN;
292
+ if (Number.isFinite(i)) {
293
+ let r = i || Math.log(1 + 2 * n), a = Math.exp(r * n);
294
+ return {
295
+ min: e / a,
296
+ max: t * a
297
+ };
298
+ }
299
+ let a = t - e || 1;
300
+ return {
301
+ min: e - a * n,
302
+ max: t + a * n
303
+ };
304
+ }
305
+ function me(e, t, n, r = .05, i = !1) {
286
306
  if (e.length === 0) return {
287
307
  min: 0,
288
308
  max: 1
289
309
  };
290
- let i = Math.max(0, t), a = Math.min(e.length - 1, n), o = Infinity, s = -Infinity;
291
- for (let t = i; t <= a; t++) e[t].low < o && (o = e[t].low), e[t].high > s && (s = e[t].high);
292
- if (o === Infinity) return {
310
+ let a = Math.max(0, t), o = Math.min(e.length - 1, n), s = Infinity, c = -Infinity;
311
+ for (let t = a; t <= o; t++) e[t].low < s && (s = e[t].low), e[t].high > c && (c = e[t].high);
312
+ return s === Infinity ? {
293
313
  min: 0,
294
314
  max: 1
295
- };
296
- let c = s - o || 1;
297
- return {
298
- min: o - c * r,
299
- max: s + c * r
300
- };
315
+ } : pe(s, c, r, i);
301
316
  }
302
- function fe(e, t) {
317
+ function he(e, t) {
303
318
  return {
304
319
  ...e,
305
320
  high: Math.max(e.high, t.price),
@@ -311,17 +326,17 @@ function fe(e, t) {
311
326
  }
312
327
  //#endregion
313
328
  //#region src/utils/color.ts
314
- function pe(e, t = 1) {
329
+ function ge(e, t = 1) {
315
330
  let n = e.slice(1);
316
331
  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})`;
317
332
  }
318
- function me(e, t) {
333
+ function _e(e, t) {
319
334
  let n = e.trim();
320
- if (/^#([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i.test(n)) return pe(n, t);
335
+ if (/^#([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i.test(n)) return ge(n, t);
321
336
  let r = n.match(/^rgba?\(\s*(\d+(?:\.\d+)?)[\s,]+(\d+(?:\.\d+)?)[\s,]+(\d+(?:\.\d+)?)/i);
322
337
  return r ? `rgba(${r[1]}, ${r[2]}, ${r[3]}, ${t})` : e;
323
338
  }
324
- function he(e, t, n) {
339
+ function ve(e, t, n) {
325
340
  let r = (e) => (e = e.replace("#", ""), e.length === 3 && (e = e[0] + e[0] + e[1] + e[1] + e[2] + e[2]), {
326
341
  r: parseInt(e.slice(0, 2), 16),
327
342
  g: parseInt(e.slice(2, 4), 16),
@@ -331,7 +346,7 @@ function he(e, t, n) {
331
346
  }
332
347
  //#endregion
333
348
  //#region src/utils/timezone.ts
334
- var h = 6e4, g = 1440 * h, _ = 15 * h, ge = 8192, v = 7 * g, _e = 4096, ve = new Set([
349
+ var h = 6e4, ye = 1440 * h, g = 15 * h, be = 8192, xe = 7 * ye, Se = 4096, Ce = new Set([
335
350
  "UTC",
336
351
  "Etc/UTC",
337
352
  "GMT",
@@ -342,9 +357,9 @@ var h = 6e4, g = 1440 * h, _ = 15 * h, ge = 8192, v = 7 * g, _e = 4096, ve = new
342
357
  "Etc/Universal",
343
358
  "Zulu",
344
359
  "Etc/Zulu"
345
- ]), ye = /* @__PURE__ */ new Map(), y = /* @__PURE__ */ new Map(), be = /* @__PURE__ */ new Map();
346
- function xe(e) {
347
- let t = ye.get(e);
360
+ ]), we = /* @__PURE__ */ new Map(), _ = /* @__PURE__ */ new Map(), Te = /* @__PURE__ */ new Map();
361
+ function Ee(e) {
362
+ let t = we.get(e);
348
363
  return t || (t = new Intl.DateTimeFormat("en-US", {
349
364
  timeZone: e,
350
365
  hourCycle: "h23",
@@ -354,34 +369,34 @@ function xe(e) {
354
369
  hour: "numeric",
355
370
  minute: "numeric",
356
371
  second: "numeric"
357
- }), ye.set(e, t)), t;
372
+ }), we.set(e, t)), t;
358
373
  }
359
- function b(e) {
374
+ function v(e) {
360
375
  if (!e) return !1;
361
376
  try {
362
- return xe(e), !0;
377
+ return Ee(e), !0;
363
378
  } catch {
364
379
  return !1;
365
380
  }
366
381
  }
367
- function x(e, t) {
368
- if (!Number.isFinite(t) || ve.has(e)) return 0;
369
- let n = be.get(e);
370
- n || (n = /* @__PURE__ */ new Map(), be.set(e, n));
371
- let r = Math.floor(t / v), i = n.get(r);
372
- return i || (i = Se(e, r * v), n.size >= _e && n.clear(), n.set(r, i)), t < i.change ? i.before : i.after;
373
- }
374
- function Se(e, t) {
375
- let n = S(e, t), r = t + v - _, i = S(e, r);
382
+ function y(e, t) {
383
+ if (!Number.isFinite(t) || Ce.has(e)) return 0;
384
+ let n = Te.get(e);
385
+ n || (n = /* @__PURE__ */ new Map(), Te.set(e, n));
386
+ let r = Math.floor(t / xe), i = n.get(r);
387
+ return i || (i = De(e, r * xe), n.size >= Se && n.clear(), n.set(r, i)), t < i.change ? i.before : i.after;
388
+ }
389
+ function De(e, t) {
390
+ let n = b(e, t), r = t + xe - g, i = b(e, r);
376
391
  if (i === n) return {
377
392
  before: n,
378
393
  change: Infinity,
379
394
  after: i
380
395
  };
381
396
  let a = t;
382
- for (; r - a > _;) {
383
- let t = a + Math.floor((r - a) / _ / 2) * _;
384
- S(e, t) === n ? a = t : r = t;
397
+ for (; r - a > g;) {
398
+ let t = a + Math.floor((r - a) / g / 2) * g;
399
+ b(e, t) === n ? a = t : r = t;
385
400
  }
386
401
  return {
387
402
  before: n,
@@ -389,11 +404,11 @@ function Se(e, t) {
389
404
  after: i
390
405
  };
391
406
  }
392
- function S(e, t) {
393
- let n = Math.floor(t / _), r = `${e}|${n}`, i = y.get(r);
407
+ function b(e, t) {
408
+ let n = Math.floor(t / g), r = `${e}|${n}`, i = _.get(r);
394
409
  if (i !== void 0) return i;
395
- let a = n * _, o = 1970, s = 1, c = 1, l = 0, u = 0, d = 0;
396
- for (let t of xe(e).formatToParts(new Date(a))) {
410
+ let a = n * g, o = 1970, s = 1, c = 1, l = 0, u = 0, d = 0;
411
+ for (let t of Ee(e).formatToParts(new Date(a))) {
397
412
  let e = Number(t.value);
398
413
  switch (t.type) {
399
414
  case "year":
@@ -417,20 +432,20 @@ function S(e, t) {
417
432
  }
418
433
  }
419
434
  let f = Math.round((Date.UTC(o, s - 1, c, l, u, d) - a) / h);
420
- return y.size >= ge && y.clear(), y.set(r, f), f;
435
+ return _.size >= be && _.clear(), _.set(r, f), f;
421
436
  }
422
- function C(e, t) {
423
- return e === null ? -new Date(t).getTimezoneOffset() : typeof e == "number" ? e : x(e, t);
437
+ function x(e, t) {
438
+ return e === null ? -new Date(t).getTimezoneOffset() : typeof e == "number" ? e : y(e, t);
424
439
  }
425
- function Ce(e, t) {
426
- let n = e - C(t, e - g) * h;
427
- if (n + C(t, n) * h === e) return n;
428
- let r = e - C(t, e + g) * h;
429
- return r + C(t, r) * h === e ? r : n;
440
+ function Oe(e, t) {
441
+ let n = e - x(t, e - ye) * h;
442
+ if (n + x(t, n) * h === e) return n;
443
+ let r = e - x(t, e + ye) * h;
444
+ return r + x(t, r) * h === e ? r : n;
430
445
  }
431
- var we = /* @__PURE__ */ new Map();
432
- function Te(e, t, n) {
433
- let r = `${e}|${JSON.stringify(t)}|${n === null ? "local" : typeof n == "number" ? `fixed:${n}` : n}`, i = we.get(r);
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);
434
449
  if (i) return i;
435
450
  let a = n === null ? void 0 : typeof n == "number" ? "UTC" : n, o;
436
451
  try {
@@ -445,11 +460,11 @@ function Te(e, t, n) {
445
460
  });
446
461
  }
447
462
  let s = typeof n == "number" ? n * h : 0;
448
- return i = (e) => o.format(new Date(e + s)), we.set(r, i), i;
463
+ return i = (e) => o.format(new Date(e + s)), ke.set(r, i), i;
449
464
  }
450
465
  //#endregion
451
466
  //#region src/utils/time.ts
452
- var Ee = {
467
+ var je = {
453
468
  "1s": 1e3,
454
469
  "5s": 5e3,
455
470
  "15s": 15e3,
@@ -476,16 +491,16 @@ var Ee = {
476
491
  "3M": 7776e6,
477
492
  "6M": 15552e6,
478
493
  "12M": 31536e6
479
- }, w = {
494
+ }, S = {
480
495
  s: 1e3,
481
496
  m: 6e4,
482
497
  h: 36e5,
483
498
  d: 864e5,
484
499
  w: 6048e5,
485
500
  M: 2592e6
486
- }, De = /^([1-9]\d*)([smhdwM])$/;
487
- function T(e) {
488
- let t = De.exec(e);
501
+ }, Me = /^([1-9]\d*)([smhdwM])$/;
502
+ function C(e) {
503
+ let t = Me.exec(e);
489
504
  if (!t) return null;
490
505
  let n = Number(t[1]);
491
506
  return Number.isSafeInteger(n) ? {
@@ -493,24 +508,24 @@ function T(e) {
493
508
  unit: t[2]
494
509
  } : null;
495
510
  }
496
- var Oe = 1e6;
497
- function ke(e) {
511
+ var Ne = 1e6;
512
+ function Pe(e) {
498
513
  let t = /^([1-9]\d*)T$/.exec(e);
499
514
  if (!t) return null;
500
515
  let n = Number(t[1]);
501
- return Number.isSafeInteger(n) && n <= Oe ? n : null;
516
+ return Number.isSafeInteger(n) && n <= Ne ? n : null;
502
517
  }
503
- function Ae(e) {
504
- return T(e) !== null;
518
+ function Fe(e) {
519
+ return C(e) !== null;
505
520
  }
506
- function E(e) {
507
- let t = Ee[e];
521
+ function w(e) {
522
+ let t = je[e];
508
523
  if (t !== void 0) return t;
509
- let n = T(e);
510
- return n ? n.count * w[n.unit] : NaN;
524
+ let n = C(e);
525
+ return n ? n.count * S[n.unit] : NaN;
511
526
  }
512
- function je(e, t) {
513
- let n = new Date(e), r = E(t);
527
+ function Ie(e, t) {
528
+ let n = new Date(e), r = w(t);
514
529
  return r >= 864e5 ? n.toLocaleDateString(void 0, {
515
530
  month: "short",
516
531
  day: "numeric"
@@ -523,11 +538,11 @@ function je(e, t) {
523
538
  second: "2-digit"
524
539
  });
525
540
  }
526
- function Me(e, t) {
527
- let n = E(t);
541
+ function Le(e, t) {
542
+ let n = w(t);
528
543
  return Math.floor(e / n) * n;
529
544
  }
530
- function Ne(e, t) {
545
+ function Re(e, t) {
531
546
  if (t === null) {
532
547
  let t = new Date(e);
533
548
  return {
@@ -538,7 +553,7 @@ function Ne(e, t) {
538
553
  minutes: t.getMinutes()
539
554
  };
540
555
  }
541
- let n = new Date(e + C(t, e) * 6e4);
556
+ let n = new Date(e + x(t, e) * 6e4);
542
557
  return {
543
558
  year: n.getUTCFullYear(),
544
559
  month: n.getUTCMonth() + 1,
@@ -547,90 +562,90 @@ function Ne(e, t) {
547
562
  minutes: n.getUTCMinutes()
548
563
  };
549
564
  }
550
- function Pe(e) {
565
+ function ze(e) {
551
566
  return e.hours === 0 && e.minutes === 0;
552
567
  }
553
- var Fe = 20 * 36e5;
554
- function Ie(e) {
568
+ var Be = 20 * 36e5;
569
+ function Ve(e) {
555
570
  let t = Math.min(e.length, 64);
556
571
  if (t < 2) return;
557
- let n = (e) => e > 0xe8d4a51000 ? e : e * 1e3, r = Infinity;
572
+ let n = ce(e), r = Infinity;
558
573
  for (let i = 1; i < t; i++) {
559
- let t = Math.abs(n(e[i].time) - n(e[i - 1].time));
574
+ let t = Math.abs(e[i].time - e[i - 1].time) * n;
560
575
  t > 0 && t < r && (r = t);
561
576
  }
562
- return r === Infinity ? void 0 : r >= Fe;
577
+ return r === Infinity ? void 0 : r >= Be;
563
578
  }
564
- function Le(e, t = Date.now()) {
565
- let n = C(e, t), r = n >= 0 ? "+" : "-", i = Math.abs(n), a = Math.floor(i / 60), o = i % 60;
579
+ function He(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;
566
581
  return o === 0 ? `UTC${r}${a}` : `UTC${r}${a}:${String(o).padStart(2, "0")}`;
567
582
  }
568
- var Re = Date.UTC(1970, 0, 5);
569
- function ze(e, t, n = 1) {
570
- let { count: r, unit: i } = T(t) ?? {
583
+ var Ue = Date.UTC(1970, 0, 5);
584
+ function We(e, t, n = 1) {
585
+ let { count: r, unit: i } = C(t) ?? {
571
586
  count: 1,
572
587
  unit: "m"
573
588
  };
574
589
  if (i === "s" || i === "m" || i === "h" || i === "d") {
575
- let t = r * w[i];
590
+ let t = r * S[i];
576
591
  return Math.floor(e / t) * t;
577
592
  }
578
593
  let a = new Date(e);
579
594
  if (i === "w") {
580
- let e = w.d, t = (a.getUTCDay() - n + 7) % 7, i = Date.UTC(a.getUTCFullYear(), a.getUTCMonth(), a.getUTCDate() - t);
595
+ let e = S.d, t = (a.getUTCDay() - n + 7) % 7, i = Date.UTC(a.getUTCFullYear(), a.getUTCMonth(), a.getUTCDate() - t);
581
596
  if (r <= 1) return i;
582
- let o = Math.floor((i - Re) / (7 * e));
583
- return Re + Math.floor(o / r) * r * 7 * e;
597
+ let o = Math.floor((i - Ue) / (7 * e));
598
+ return Ue + Math.floor(o / r) * r * 7 * e;
584
599
  }
585
600
  let o = a.getUTCFullYear() * 12 + a.getUTCMonth(), s = Math.floor(o / r) * r;
586
601
  return Date.UTC(Math.floor(s / 12), s % 12, 1);
587
602
  }
588
603
  //#endregion
589
604
  //#region src/utils/precision.ts
590
- var Be = 64, D = /* @__PURE__ */ new Map();
591
- function Ve(e, t) {
592
- let n = `${e}|${t}`, r = D.get(n);
593
- return r || (D.size >= Be && D.clear(), r = new Intl.NumberFormat(e, {
605
+ var Ge = 64, T = /* @__PURE__ */ new Map();
606
+ function Ke(e, t) {
607
+ let n = `${e}|${t}`, r = T.get(n);
608
+ return r || (T.size >= Ge && T.clear(), r = new Intl.NumberFormat(e, {
594
609
  minimumFractionDigits: t,
595
610
  maximumFractionDigits: t
596
- }), D.set(n, r)), r;
611
+ }), T.set(n, r)), r;
597
612
  }
598
- function He(e, t = 2, n = "en-US") {
599
- return Ve(n, t).format(e);
613
+ function E(e, t = 2, n = "en-US") {
614
+ return Ke(n, t).format(e);
600
615
  }
601
- function Ue(e, t) {
616
+ function qe(e, t) {
602
617
  if (!(t > e) || !Number.isFinite(e) || !Number.isFinite(t)) return 2;
603
618
  let n = oe(e, t, 8);
604
619
  return n > 0 && n < 1 ? Math.ceil(-Math.log10(n)) + 1 : 2;
605
620
  }
606
- function We(e, t, n, r = 2, i = "en-US") {
621
+ function Je(e, t, n, r = 2, i = "en-US") {
607
622
  if ((t === "percentage" || t === "indexedTo100") && n && n !== 0) {
608
623
  if (t === "percentage") {
609
624
  let t = (e / n - 1) * 100;
610
625
  return `${t > 0 ? "+" : ""}${t.toFixed(2)}%`;
611
626
  }
612
- return He(e / n * 100, 2, i);
627
+ return E(e / n * 100, 2, i);
613
628
  }
614
- return He(e, r, i);
629
+ return E(e, r, i);
615
630
  }
616
- function Ge(e, t, n = 1) {
631
+ function Ye(e, t, n = 1) {
617
632
  let r = Number.isInteger(n) && n > 1 ? n : 1;
618
633
  if (!Number.isFinite(e) || !Number.isInteger(t) || t < 2) return String(e);
619
634
  let i = t * r, a = Math.round(Math.abs(e) * i), o = Math.floor(a / i), s = a - o * i, c = Math.floor(s / r), l = String(t - 1).length, u = r > 1 ? String(Math.floor((s - c * r) / r * 10)) : "";
620
635
  return `${e < 0 && a > 0 ? "-" : ""}${o}'${String(c).padStart(l, "0")}${u}`;
621
636
  }
622
- function Ke(e) {
637
+ function Xe(e) {
623
638
  if (!Number.isInteger(e.denominator) || e.denominator < 2) return null;
624
639
  let t = Number.isInteger(e.subDenominator) && (e.subDenominator ?? 0) > 1 ? e.subDenominator : 1;
625
640
  return 1 / (e.denominator * t);
626
641
  }
627
- function qe(e) {
628
- return e ? typeof e == "function" ? e : Ke(e) === null ? null : (t) => Ge(t, e.denominator, e.subDenominator) : null;
642
+ function Ze(e) {
643
+ return e ? typeof e == "function" ? e : Xe(e) === null ? null : (t) => Ye(t, e.denominator, e.subDenominator) : null;
629
644
  }
630
- function Je(e) {
645
+ function Qe(e) {
631
646
  return e >= 1e9 ? (e / 1e9).toFixed(2) + "B" : e >= 1e6 ? (e / 1e6).toFixed(2) + "M" : e >= 1e3 ? (e / 1e3).toFixed(2) + "K" : e.toFixed(0);
632
647
  }
633
- function Ye(e) {
648
+ function $e(e) {
634
649
  let t = 0;
635
650
  for (let n of e) {
636
651
  let e = n.toString(), r = e.indexOf(".");
@@ -640,7 +655,7 @@ function Ye(e) {
640
655
  }
641
656
  //#endregion
642
657
  //#region src/utils/priceSource.ts
643
- var Xe = [
658
+ var et = [
644
659
  "close",
645
660
  "open",
646
661
  "high",
@@ -650,10 +665,10 @@ var Xe = [
650
665
  "ohlc4",
651
666
  "hlcc4"
652
667
  ];
653
- function Ze(e) {
654
- return typeof e == "string" && Xe.includes(e);
668
+ function tt(e) {
669
+ return typeof e == "string" && et.includes(e);
655
670
  }
656
- function Qe(e, t) {
671
+ function nt(e, t) {
657
672
  switch (t) {
658
673
  case "open": return e.open;
659
674
  case "high": return e.high;
@@ -665,13 +680,13 @@ function Qe(e, t) {
665
680
  default: return e.close;
666
681
  }
667
682
  }
668
- var $e = /^ind:([^:]+):(.+)$/;
669
- function et(e, t) {
683
+ var rt = /^ind:([^:]+):(.+)$/;
684
+ function it(e, t) {
670
685
  return `ind:${e}:${t}`;
671
686
  }
672
- function tt(e) {
687
+ function at(e) {
673
688
  if (typeof e != "string") return null;
674
- let t = $e.exec(e);
689
+ let t = rt.exec(e);
675
690
  return t ? {
676
691
  instanceId: t[1],
677
692
  key: t[2]
@@ -679,11 +694,11 @@ function tt(e) {
679
694
  }
680
695
  //#endregion
681
696
  //#region src/utils/resample.ts
682
- var nt = 864e5;
683
- function rt(e, t, n = 1) {
697
+ var ot = 864e5;
698
+ function st(e, t, n = 1) {
684
699
  let r = [], i = null;
685
700
  for (let a of e) {
686
- let e = ze(a.time, t, n);
701
+ let e = We(a.time, t, n);
687
702
  i === null || e !== i.time ? (i = {
688
703
  time: e,
689
704
  open: a.open,
@@ -695,37 +710,37 @@ function rt(e, t, n = 1) {
695
710
  }
696
711
  return r;
697
712
  }
698
- var it = (e) => e === "s" || e === "m" || e === "h" || e === "d";
699
- function at(e, t) {
700
- let n = T(e), r = T(t);
713
+ var D = (e) => e === "s" || e === "m" || e === "h" || e === "d";
714
+ function ct(e, t) {
715
+ let n = C(e), r = C(t);
701
716
  if (!n || !r) return !1;
702
- let i = E(e);
703
- return n.unit === "d" && n.count > 1 ? !1 : it(r.unit) ? it(n.unit) && E(t) % i === 0 : n.unit === r.unit ? r.count % n.count === 0 : it(n.unit) && nt % i === 0;
717
+ let i = w(e);
718
+ return n.unit === "d" && n.count > 1 ? !1 : D(r.unit) ? D(n.unit) && w(t) % i === 0 : n.unit === r.unit ? r.count % n.count === 0 : D(n.unit) && ot % i === 0;
704
719
  }
705
- function ot(e, t) {
720
+ function lt(e, t) {
706
721
  let n = null, r = 0;
707
722
  for (let i of t) {
708
- if (!at(i, e)) continue;
709
- let t = E(i);
723
+ if (!ct(i, e)) continue;
724
+ let t = w(i);
710
725
  t > r && (n = i, r = t);
711
726
  }
712
727
  return n;
713
728
  }
714
729
  //#endregion
715
730
  //#region src/utils/symbols.ts
716
- function st(e, t) {
731
+ function ut(e, t) {
717
732
  if (!e) return 0;
718
733
  if (e === t) return 1e3;
719
734
  if (e.startsWith(t)) return 600 - Math.min(100, e.length - t.length);
720
735
  let n = e.indexOf(t);
721
736
  return n >= 0 ? 300 - Math.min(100, n) : 0;
722
737
  }
723
- function ct(e, t, n = 50, r) {
738
+ function dt(e, t, n = 50, r) {
724
739
  let i = t.trim().toUpperCase();
725
740
  if (!i) return e.slice(0, n);
726
741
  let a = [];
727
742
  for (let t of e) {
728
- let e = Math.max(st(t.symbol.toUpperCase(), i), st((t.description ?? "").toUpperCase(), i) * .8);
743
+ let e = Math.max(ut(t.symbol.toUpperCase(), i), ut((t.description ?? "").toUpperCase(), i) * .8);
729
744
  e > 0 && a.push({
730
745
  info: t,
731
746
  score: e + (r?.(t) ?? 0)
@@ -733,7 +748,7 @@ function ct(e, t, n = 50, r) {
733
748
  }
734
749
  return a.sort((e, t) => t.score - e.score || e.info.symbol.localeCompare(t.info.symbol)), a.slice(0, n).map((e) => e.info);
735
750
  }
736
- function lt(e) {
751
+ function ft(e) {
737
752
  let t = typeof e == "number" ? e : Number(e);
738
753
  if (!Number.isFinite(t) || t <= 0) return 0;
739
754
  for (let e = 0; e <= 12; e++) {
@@ -742,7 +757,7 @@ function lt(e) {
742
757
  }
743
758
  return 12;
744
759
  }
745
- function ut(e) {
760
+ function O(e) {
746
761
  let t = /^(\d{1,2}):(\d{2})$/.exec(e.trim());
747
762
  if (!t) return null;
748
763
  let n = Number(t[1]), r = Number(t[2]);
@@ -750,26 +765,26 @@ function ut(e) {
750
765
  }
751
766
  //#endregion
752
767
  //#region src/utils/marketStatus.ts
753
- var O = 864e5, k = 6e4, dt = 8;
754
- function ft(e, t) {
768
+ var k = 864e5, A = 6e4, pt = 8;
769
+ function mt(e, t) {
755
770
  let n = e?.timezone, r = (e?.sessions ?? []).flatMap((e) => {
756
- let t = ut(e.start), n = ut(e.end);
771
+ let t = O(e.start), n = O(e.end);
757
772
  return t === null || n === null || t === n ? [] : [{
758
773
  start: t,
759
774
  end: n,
760
775
  days: Array.isArray(e.days) ? e.days : null
761
776
  }];
762
777
  });
763
- if (!n || !b(n) || r.length === 0 || !Number.isFinite(t)) return {
778
+ if (!n || !v(n) || r.length === 0 || !Number.isFinite(t)) return {
764
779
  state: "always",
765
780
  next: null
766
781
  };
767
- let i = x(n, t) * k, a = Math.floor((t + i) / O) * O, o = (e) => e - x(n, e - x(n, e - i) * k) * k, s = [];
768
- for (let e = -1; e <= dt; e++) {
769
- let t = a + e * O, n = (Math.floor(t / O) + 4) % 7;
782
+ let i = y(n, t) * A, a = Math.floor((t + i) / k) * k, o = (e) => e - y(n, e - y(n, e - i) * A) * A, s = [];
783
+ for (let e = -1; e <= pt; e++) {
784
+ let t = a + e * k, n = (Math.floor(t / k) + 4) % 7;
770
785
  for (let e of r) {
771
786
  if (e.days && !e.days.includes(n)) continue;
772
- let r = t + e.start * k, i = (e.end > e.start ? t : t + O) + e.end * k;
787
+ let r = t + e.start * A, i = (e.end > e.start ? t : t + k) + e.end * A;
773
788
  s.push([o(r), o(i)]);
774
789
  }
775
790
  }
@@ -792,15 +807,15 @@ function ft(e, t) {
792
807
  }
793
808
  //#endregion
794
809
  //#region src/utils/drawingOptions.ts
795
- var pt = 48, mt = 2e3, ht = 1e4;
796
- function gt(e) {
810
+ var ht = 48, gt = 2e3, _t = 1e4;
811
+ function vt(e) {
797
812
  if (!Array.isArray(e)) return;
798
813
  let t = [];
799
814
  for (let n of e) {
800
- if (t.length >= pt) break;
815
+ if (t.length >= ht) break;
801
816
  if (typeof n != "object" || !n) continue;
802
817
  let { value: e, visible: r, color: i } = n;
803
- if (typeof e != "number" || !Number.isFinite(e) || Math.abs(e) > ht || r !== void 0 && typeof r != "boolean") continue;
818
+ if (typeof e != "number" || !Number.isFinite(e) || Math.abs(e) > _t || r !== void 0 && typeof r != "boolean") continue;
804
819
  let a = {
805
820
  value: e,
806
821
  visible: r ?? !0
@@ -809,109 +824,109 @@ function gt(e) {
809
824
  }
810
825
  return t;
811
826
  }
812
- function _t(e, t) {
827
+ function yt(e, t) {
813
828
  switch (e.kind) {
814
829
  case "boolean": return typeof t == "boolean" ? t : void 0;
815
830
  case "number": return typeof t != "number" || !Number.isFinite(t) ? void 0 : Math.min(e.max ?? Infinity, Math.max(e.min ?? -Infinity, t));
816
831
  case "choice": return typeof t == "string" && e.choices.some((e) => e.value === t) ? t : void 0;
817
- case "levels": return gt(t);
818
- case "text": return typeof t == "string" ? t.slice(0, mt) : void 0;
832
+ case "levels": return vt(t);
833
+ case "text": return typeof t == "string" ? t.slice(0, gt) : void 0;
819
834
  }
820
835
  }
821
- function vt(e, t) {
836
+ function bt(e, t) {
822
837
  if (!e || typeof t != "object" || !t) return {};
823
838
  let n = {};
824
839
  for (let [r, i] of Object.entries(t)) {
825
840
  let t = e[r];
826
841
  if (!t) continue;
827
- let a = _t(t, i);
842
+ let a = yt(t, i);
828
843
  a !== void 0 && (n[r] = a);
829
844
  }
830
845
  return n;
831
846
  }
832
- function yt(e) {
847
+ function xt(e) {
833
848
  return Array.isArray(e) ? e.map((e) => ({ ...e })) : e;
834
849
  }
835
- function bt(e, t, n) {
850
+ function St(e, t, n) {
836
851
  let r = e?.[n];
837
- return r ? yt((t && n in t ? _t(r, t[n]) : void 0) ?? r.default) : t?.[n];
852
+ return r ? xt((t && n in t ? yt(r, t[n]) : void 0) ?? r.default) : t?.[n];
838
853
  }
839
- function xt(e, t) {
854
+ function Ct(e, t) {
840
855
  let n = {};
841
- for (let r of Object.keys(e ?? {})) n[r] = bt(e, t, r);
856
+ for (let r of Object.keys(e ?? {})) n[r] = St(e, t, r);
842
857
  return n;
843
858
  }
844
859
  //#endregion
845
860
  //#region src/utils/drawingStyle.ts
846
- var St = [
861
+ var wt = [
847
862
  "solid",
848
863
  "dashed",
849
864
  "dotted"
850
- ], Ct = 64, wt = 2e3, Tt = 20, Et = 200;
851
- function A(e, t, n) {
865
+ ], Tt = 64, Et = 2e3, Dt = 20, Ot = 200;
866
+ function j(e, t, n) {
852
867
  return typeof e == "number" && Number.isFinite(e) ? Math.min(n, Math.max(t, e)) : void 0;
853
868
  }
854
- function Dt(e) {
855
- return typeof e == "string" && e.length > 0 && e.length <= Ct ? e : void 0;
869
+ function kt(e) {
870
+ return typeof e == "string" && e.length > 0 && e.length <= Tt ? e : void 0;
856
871
  }
857
- function Ot(e) {
872
+ function At(e) {
858
873
  if (typeof e != "object" || !e) return {};
859
- let t = e, n = {}, r = Dt(t.color);
874
+ let t = e, n = {}, r = kt(t.color);
860
875
  r !== void 0 && (n.color = r);
861
- let i = A(t.lineWidth, .5, Tt);
862
- i !== void 0 && (n.lineWidth = i), St.includes(t.lineStyle) && (n.lineStyle = t.lineStyle);
863
- let a = Dt(t.fillColor);
876
+ let i = j(t.lineWidth, .5, Dt);
877
+ i !== void 0 && (n.lineWidth = i), wt.includes(t.lineStyle) && (n.lineStyle = t.lineStyle);
878
+ let a = kt(t.fillColor);
864
879
  a !== void 0 && (n.fillColor = a);
865
- let o = A(t.fillOpacity, 0, 1);
880
+ let o = j(t.fillOpacity, 0, 1);
866
881
  o !== void 0 && (n.fillOpacity = o);
867
- let s = A(t.fontSize, 6, Et);
868
- return s !== void 0 && (n.fontSize = s), typeof t.text == "string" && (n.text = t.text.slice(0, wt)), n;
882
+ let s = j(t.fontSize, 6, Ot);
883
+ return s !== void 0 && (n.fontSize = s), typeof t.text == "string" && (n.text = t.text.slice(0, Et)), n;
869
884
  }
870
885
  //#endregion
871
886
  //#region src/utils/chartTypeOptions.ts
872
- var j = (e) => typeof e == "number" && Number.isFinite(e) && e > 0, M = (e, t, n) => typeof e == "number" && Number.isInteger(e) && e >= t && e <= n, N = (e) => typeof e == "object" && !!e && !Array.isArray(e);
873
- function kt(e) {
874
- if (!N(e)) return {};
887
+ var M = (e) => typeof e == "number" && Number.isFinite(e) && e > 0, N = (e, t, n) => typeof e == "number" && Number.isInteger(e) && e >= t && e <= n, P = (e) => typeof e == "object" && !!e && !Array.isArray(e);
888
+ function jt(e) {
889
+ if (!P(e)) return {};
875
890
  let t = {};
876
- if (N(e.renko)) {
891
+ if (P(e.renko)) {
877
892
  let { boxSize: n, atrPeriod: r } = e.renko;
878
893
  t.renko = {
879
- ...j(n) || n === "atr" ? { boxSize: n } : {},
880
- ...M(r, 1, 500) ? { atrPeriod: r } : {}
894
+ ...M(n) || n === "atr" ? { boxSize: n } : {},
895
+ ...N(r, 1, 500) ? { atrPeriod: r } : {}
881
896
  };
882
897
  }
883
- if (N(e.lineBreak)) {
898
+ if (P(e.lineBreak)) {
884
899
  let { lines: n } = e.lineBreak;
885
- t.lineBreak = M(n, 1, 10) ? { lines: n } : {};
900
+ t.lineBreak = N(n, 1, 10) ? { lines: n } : {};
886
901
  }
887
- if (N(e.kagi)) {
902
+ if (P(e.kagi)) {
888
903
  let { reversal: n, reversalType: r } = e.kagi;
889
904
  t.kagi = {
890
- ...j(n) ? { reversal: n } : {},
905
+ ...M(n) ? { reversal: n } : {},
891
906
  ...r === "percent" || r === "price" ? { reversalType: r } : {}
892
907
  };
893
908
  }
894
- if (N(e.pointAndFigure)) {
909
+ if (P(e.pointAndFigure)) {
895
910
  let { boxSize: n, reversal: r } = e.pointAndFigure;
896
911
  t.pointAndFigure = {
897
- ...j(n) || n === "auto" ? { boxSize: n } : {},
898
- ...M(r, 1, 10) ? { reversal: r } : {}
912
+ ...M(n) || n === "auto" ? { boxSize: n } : {},
913
+ ...N(r, 1, 10) ? { reversal: r } : {}
899
914
  };
900
915
  }
901
- if (N(e.rangeBars)) {
916
+ if (P(e.rangeBars)) {
902
917
  let { range: n } = e.rangeBars;
903
- t.rangeBars = j(n) || n === "auto" ? { range: n } : {};
918
+ t.rangeBars = M(n) || n === "auto" ? { range: n } : {};
904
919
  }
905
920
  return t;
906
921
  }
907
922
  //#endregion
908
923
  //#region src/constants/themes.ts
909
- var At = "-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif", jt = {
910
- family: At,
924
+ var Mt = "-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif", Nt = {
925
+ family: Mt,
911
926
  sizeSmall: 10,
912
927
  sizeMedium: 12,
913
928
  sizeLarge: 14
914
- }, P = {
929
+ }, F = {
915
930
  amber: "#f2a93b",
916
931
  up: "#1fa874",
917
932
  down: "#e8505b",
@@ -922,37 +937,37 @@ var At = "-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif",
922
937
  rose: "#e25592",
923
938
  neutral: "#7d8696",
924
939
  ink: "#0c1016"
925
- }, Mt = .22;
926
- function F(e) {
927
- return me(e, Mt);
928
- }
929
- var I = "#2eb88a", L = "#e85a67", Nt = [
930
- P.blue,
931
- P.ochre,
932
- P.violet,
933
- P.cyan,
934
- P.rose
935
- ], R = {
940
+ }, Pt = .22;
941
+ function I(e) {
942
+ return _e(e, Pt);
943
+ }
944
+ var L = "#2eb88a", R = "#e85a67", Ft = [
945
+ F.blue,
946
+ F.ochre,
947
+ F.violet,
948
+ F.cyan,
949
+ F.rose
950
+ ], z = {
936
951
  name: "dark",
937
- background: P.ink,
952
+ background: F.ink,
938
953
  text: "#d9dde4",
939
954
  textSecondary: "#7d8696",
940
955
  grid: "#161b23",
941
956
  crosshair: "#8a93a3",
942
- candleUp: I,
943
- candleDown: L,
944
- candleUpWick: I,
945
- candleDownWick: L,
946
- lineColor: P.amber,
957
+ candleUp: L,
958
+ candleDown: R,
959
+ candleUpWick: L,
960
+ candleDownWick: R,
961
+ lineColor: F.amber,
947
962
  areaTopColor: "rgba(242, 169, 59, 0.32)",
948
963
  areaBottomColor: "rgba(242, 169, 59, 0.0)",
949
- volumeUp: F(I),
950
- volumeDown: F(L),
964
+ volumeUp: I(L),
965
+ volumeDown: I(R),
951
966
  axisLine: "#1f2630",
952
967
  axisLabel: "#9aa3b2",
953
968
  axisLabelBackground: "#1f2630",
954
- font: jt
955
- }, z = {
969
+ font: Nt
970
+ }, B = {
956
971
  name: "light",
957
972
  background: "#ffffff",
958
973
  text: "#0f131a",
@@ -966,13 +981,13 @@ var I = "#2eb88a", L = "#e85a67", Nt = [
966
981
  lineColor: "#c77a0a",
967
982
  areaTopColor: "rgba(199, 122, 10, 0.24)",
968
983
  areaBottomColor: "rgba(199, 122, 10, 0.0)",
969
- volumeUp: F("#16a36a"),
970
- volumeDown: F("#d9414f"),
984
+ volumeUp: I("#16a36a"),
985
+ volumeDown: I("#d9414f"),
971
986
  axisLine: "#dde1e7",
972
987
  axisLabel: "#5b6472",
973
988
  axisLabelBackground: "#eef0f3",
974
- font: jt
975
- }, B = {
989
+ font: Nt
990
+ }, V = {
976
991
  name: "terminal",
977
992
  background: "#0E0E0E",
978
993
  text: "#C0C0C0",
@@ -997,18 +1012,18 @@ var I = "#2eb88a", L = "#e85a67", Nt = [
997
1012
  sizeMedium: 12,
998
1013
  sizeLarge: 14
999
1014
  }
1000
- }, Pt = new Set([
1001
- R.volumeUp,
1002
- R.volumeDown,
1015
+ }, It = new Set([
1003
1016
  z.volumeUp,
1004
1017
  z.volumeDown,
1005
1018
  B.volumeUp,
1006
- B.volumeDown
1019
+ B.volumeDown,
1020
+ V.volumeUp,
1021
+ V.volumeDown
1007
1022
  ]);
1008
- function V(e) {
1023
+ function Lt(e) {
1009
1024
  let t = (e, t) => {
1010
- if (!Pt.has(e)) return e;
1011
- let n = F(t);
1025
+ if (!It.has(e)) return e;
1026
+ let n = I(t);
1012
1027
  return n === t ? e : n;
1013
1028
  };
1014
1029
  return {
@@ -1018,67 +1033,67 @@ function V(e) {
1018
1033
  }
1019
1034
  //#endregion
1020
1035
  //#region src/utils/chartStyle.ts
1021
- var Ft = [
1036
+ var Rt = [
1022
1037
  "solid",
1023
1038
  "dashed",
1024
1039
  "dotted"
1025
- ], It = 20, Lt = 64, Rt = 2, zt = [
1040
+ ], zt = 20, Bt = 64, Vt = 2, Ht = [
1026
1041
  /^#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i,
1027
1042
  /^[a-z]{3,30}$/i,
1028
1043
  /^(?:rgba?|hsla?|hwb|lab|lch|oklab|oklch|color)\([0-9a-z.,%/\s-]*\)$/i
1029
1044
  ];
1030
- function H(e) {
1031
- return typeof e == "string" && e.length <= Lt && zt.some((t) => t.test(e.trim()));
1045
+ function Ut(e) {
1046
+ return typeof e == "string" && e.length <= Bt && Ht.some((t) => t.test(e.trim()));
1032
1047
  }
1033
- function Bt(e, t) {
1048
+ function Wt(e, t) {
1034
1049
  switch (e) {
1035
- case "color": return H(t);
1036
- case "lineStyle": return Ft.includes(t);
1037
- case "width": return typeof t == "number" && Number.isFinite(t) && t > 0 && t <= It;
1050
+ case "color": return Ut(t);
1051
+ case "lineStyle": return Rt.includes(t);
1052
+ case "width": return typeof t == "number" && Number.isFinite(t) && t > 0 && t <= zt;
1038
1053
  case "boolean": return typeof t == "boolean";
1039
1054
  }
1040
1055
  }
1041
- function Vt(e) {
1056
+ function Gt(e) {
1042
1057
  return Object.prototype.hasOwnProperty.call(t, e);
1043
1058
  }
1044
- function Ht(e) {
1059
+ function Kt(e) {
1045
1060
  let n = {}, r = [];
1046
1061
  if (typeof e != "object" || !e || Array.isArray(e)) return {
1047
1062
  overrides: {},
1048
1063
  rejected: r
1049
1064
  };
1050
- for (let [i, a] of Object.entries(e)) Vt(i) ? a === null ? n[i] = null : Bt(t[i], a) ? n[i] = a : r.push(i) : r.push(i);
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);
1051
1066
  return {
1052
1067
  overrides: n,
1053
1068
  rejected: r
1054
1069
  };
1055
1070
  }
1056
- function Ut(e) {
1071
+ function qt(e) {
1057
1072
  if (typeof e != "object" || !e || Array.isArray(e)) return null;
1058
1073
  let { background: t, separator: n } = e, r = {
1059
- ...H(t) ? { background: t } : {},
1060
- ...H(n) ? { separator: n } : {}
1074
+ ...Ut(t) ? { background: t } : {},
1075
+ ...Ut(n) ? { separator: n } : {}
1061
1076
  };
1062
1077
  return Object.keys(r).length > 0 ? r : null;
1063
1078
  }
1064
- var Wt = /^[A-Za-z0-9_]{1,32}$/;
1065
- function Gt(e) {
1079
+ var Jt = /^[A-Za-z0-9_]{1,32}$/;
1080
+ function Yt(e) {
1066
1081
  if (typeof e != "object" || !e || Array.isArray(e)) return;
1067
1082
  let t = {};
1068
1083
  for (let [n, r] of Object.entries(e)) {
1069
- if (!Wt.test(n) || typeof r != "object" || !r) continue;
1084
+ if (!Jt.test(n) || typeof r != "object" || !r) continue;
1070
1085
  let { lineStyle: e, visible: i } = r, a = {
1071
- ...Ft.includes(e) ? { lineStyle: e } : {},
1086
+ ...Rt.includes(e) ? { lineStyle: e } : {},
1072
1087
  ...typeof i == "boolean" ? { visible: i } : {}
1073
1088
  };
1074
1089
  Object.keys(a).length > 0 && (t[n] = a);
1075
1090
  }
1076
1091
  return Object.keys(t).length > 0 ? t : void 0;
1077
1092
  }
1078
- function Kt(e, t, n = 1) {
1093
+ function Xt(e, t, n = 1) {
1079
1094
  return e === "solid" ? [] : e === "dotted" ? [n, n * 2] : [...t];
1080
1095
  }
1081
- function qt(e, t, n) {
1096
+ function Zt(e, t, n) {
1082
1097
  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;
1083
1098
  return {
1084
1099
  up: o,
@@ -1086,12 +1101,12 @@ function qt(e, t, n) {
1086
1101
  wickUp: r("wickUpColor") ?? t("series.candlestick.wickUpColor") ?? (i === void 0 ? e.candleUpWick : o),
1087
1102
  wickDown: r("wickDownColor") ?? t("series.candlestick.wickDownColor") ?? (a === void 0 ? e.candleDownWick : s),
1088
1103
  line: r("color") ?? r("lineColor") ?? t("series.line.color") ?? e.lineColor,
1089
- lineWidth: r("lineWidth") ?? t("series.line.lineWidth") ?? Rt,
1104
+ lineWidth: r("lineWidth") ?? t("series.line.lineWidth") ?? Vt,
1090
1105
  top: r("topColor") ?? t("series.area.topColor") ?? e.areaTopColor,
1091
1106
  bottom: r("bottomColor") ?? t("series.area.bottomColor") ?? e.areaBottomColor
1092
1107
  };
1093
1108
  }
1094
- function U(e, t, n) {
1109
+ function H(e, t, n) {
1095
1110
  return {
1096
1111
  visible: e(`${t}.visible`) ?? n.visible,
1097
1112
  color: e(`${t}.color`) ?? n.color,
@@ -1099,21 +1114,21 @@ function U(e, t, n) {
1099
1114
  width: e(`${t}.width`) ?? n.width
1100
1115
  };
1101
1116
  }
1102
- function Jt(e, t, n) {
1103
- let { style: r, ...i } = e, a = n, o = (e) => a[e], s = qt(i, o, t), c = o("background.color") ?? i.background, l = (e, t) => o(e) ?? t, u = (e) => o(e) ?? null, d = {
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 = {
1104
1119
  panes: {
1105
1120
  background: l("panes.background", c),
1106
1121
  separator: l("panes.separatorColor", i.axisLine),
1107
1122
  title: l("panes.titleColor", i.textSecondary)
1108
1123
  },
1109
1124
  grid: {
1110
- horizontal: U(o, "grid.horizontal", {
1125
+ horizontal: H(o, "grid.horizontal", {
1111
1126
  visible: !0,
1112
1127
  color: i.grid,
1113
1128
  style: "solid",
1114
1129
  width: 1
1115
1130
  }),
1116
- vertical: U(o, "grid.vertical", {
1131
+ vertical: H(o, "grid.vertical", {
1117
1132
  visible: !0,
1118
1133
  color: i.grid,
1119
1134
  style: "solid",
@@ -1121,13 +1136,13 @@ function Jt(e, t, n) {
1121
1136
  })
1122
1137
  },
1123
1138
  crosshair: {
1124
- horizontal: U(o, "crosshair.horizontal", {
1139
+ horizontal: H(o, "crosshair.horizontal", {
1125
1140
  visible: !0,
1126
1141
  color: i.crosshair,
1127
1142
  style: "dashed",
1128
1143
  width: 1
1129
1144
  }),
1130
- vertical: U(o, "crosshair.vertical", {
1145
+ vertical: H(o, "crosshair.vertical", {
1131
1146
  visible: !0,
1132
1147
  color: i.crosshair,
1133
1148
  style: "dashed",
@@ -1199,7 +1214,7 @@ function Jt(e, t, n) {
1199
1214
  style: d
1200
1215
  };
1201
1216
  }
1202
- var Yt = {
1217
+ var $t = {
1203
1218
  "background.color": (e) => e.background,
1204
1219
  "panes.background": (e, t) => t.panes.background,
1205
1220
  "panes.separatorColor": (e, t) => t.panes.separator,
@@ -1218,8 +1233,8 @@ var Yt = {
1218
1233
  "lastPrice.downColor": (e, t) => t.lastPrice.down,
1219
1234
  "lastPrice.style": (e, t) => t.lastPrice.style,
1220
1235
  "lastPrice.width": (e, t) => t.lastPrice.width,
1221
- "volume.upColor": (e) => V(e).up,
1222
- "volume.downColor": (e) => V(e).down,
1236
+ "volume.upColor": (e) => Lt(e).up,
1237
+ "volume.downColor": (e) => Lt(e).down,
1223
1238
  "sessionBreaks.color": (e, t) => t.sessionBreaks.color,
1224
1239
  "sessionBreaks.style": (e, t) => t.sessionBreaks.style,
1225
1240
  "sessionBreaks.width": (e, t) => t.sessionBreaks.width,
@@ -1236,16 +1251,16 @@ var Yt = {
1236
1251
  "tradeZones.lossColor": (e, t) => t.tradeZones.loss,
1237
1252
  "tradeZones.activeColor": (e, t) => t.tradeZones.active,
1238
1253
  "drawings.handleColor": (e, t) => t.drawings.handle
1239
- }, Xt = {
1254
+ }, en = {
1240
1255
  visible: "visible",
1241
1256
  color: "color",
1242
1257
  style: "style",
1243
1258
  width: "width"
1244
1259
  };
1245
- function Zt(e, t, n, r = "candlestick") {
1260
+ function tn(e, t, n, r = "candlestick") {
1246
1261
  let i = n.split(".");
1247
1262
  if (i[0] === "series") {
1248
- let n = qt(e, (e) => t[e], i[1]);
1263
+ let n = Zt(e, (e) => t[e], i[1]);
1249
1264
  switch (i[2]) {
1250
1265
  case "upColor": return n.up;
1251
1266
  case "downColor": return n.down;
@@ -1258,12 +1273,12 @@ function Zt(e, t, n, r = "candlestick") {
1258
1273
  case "bottomColor": return n.bottom;
1259
1274
  }
1260
1275
  }
1261
- let a = Jt(e, r, t), o = a.style;
1262
- return i[0] === "grid" || i[0] === "crosshair" && (i[1] === "horizontal" || i[1] === "vertical") ? (i[0] === "grid" ? o.grid : o.crosshair)[i[1]][Xt[i[2]]] : Yt[n]?.(a, o) ?? null;
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;
1263
1278
  }
1264
1279
  //#endregion
1265
1280
  //#region src/constants/defaults.ts
1266
- var Qt = {
1281
+ var nn = {
1267
1282
  autoScale: !0,
1268
1283
  rightMargin: 5,
1269
1284
  minBarSpacing: 2,
@@ -1274,7 +1289,7 @@ var Qt = {
1274
1289
  vLineStyle: "solid"
1275
1290
  },
1276
1291
  crosshair: { mode: "magnet" }
1277
- }, $t = [
1292
+ }, rn = [
1278
1293
  "1s",
1279
1294
  "1m",
1280
1295
  "3m",
@@ -1291,7 +1306,7 @@ var Qt = {
1291
1306
  "3d",
1292
1307
  "1w",
1293
1308
  "1M"
1294
- ], en = [
1309
+ ], an = [
1295
1310
  "1m",
1296
1311
  "5m",
1297
1312
  "15m",
@@ -1305,7 +1320,7 @@ var Qt = {
1305
1320
  "3M",
1306
1321
  "6M",
1307
1322
  "12M"
1308
- ], tn = [
1323
+ ], on = [
1309
1324
  "1m",
1310
1325
  "5m",
1311
1326
  "15m",
@@ -1315,7 +1330,7 @@ var Qt = {
1315
1330
  "1d",
1316
1331
  "1w",
1317
1332
  "1M"
1318
- ], nn = [
1333
+ ], sn = [
1319
1334
  "1m",
1320
1335
  "5m",
1321
1336
  "15m",
@@ -1323,7 +1338,7 @@ var Qt = {
1323
1338
  "4h",
1324
1339
  "1d",
1325
1340
  "1w"
1326
- ], rn = 8, an = 2, on = 70, sn = 30, cn = 60, ln = 120, W = {
1341
+ ], cn = 8, ln = 2, un = 70, dn = 30, fn = 60, pn = 120, U = {
1327
1342
  candlestick: "Candlestick",
1328
1343
  line: "Line",
1329
1344
  area: "Area",
@@ -1426,7 +1441,7 @@ var Qt = {
1426
1441
  error: "Error",
1427
1442
  numberDecimalSeparator: ".",
1428
1443
  numberGroupSeparator: ","
1429
- }, un = {
1444
+ }, mn = {
1430
1445
  candlestick: "Nến",
1431
1446
  line: "Đường",
1432
1447
  area: "Vùng",
@@ -1529,43 +1544,43 @@ var Qt = {
1529
1544
  error: "Lỗi",
1530
1545
  numberDecimalSeparator: ",",
1531
1546
  numberGroupSeparator: "."
1532
- }, G = new Map([["en", W], ["vi", un]]), K = "en", dn = W;
1533
- function fn(e) {
1534
- K = e, dn = G.get(e) ?? W;
1547
+ }, W = new Map([["en", U], ["vi", mn]]), G = "en", hn = U;
1548
+ function gn(e) {
1549
+ G = e, hn = W.get(e) ?? U;
1535
1550
  }
1536
- function pn() {
1537
- return K;
1551
+ function _n() {
1552
+ return G;
1538
1553
  }
1539
- function mn(e) {
1540
- return dn[e] ?? W[e] ?? e;
1554
+ function vn(e) {
1555
+ return hn[e] ?? U[e] ?? e;
1541
1556
  }
1542
- function hn(e, t) {
1543
- G.set(e, t);
1557
+ function yn(e, t) {
1558
+ W.set(e, t);
1544
1559
  }
1545
- function gn(e) {
1546
- return G.get(e ?? K) ?? W;
1560
+ function bn(e) {
1561
+ return W.get(e ?? G) ?? U;
1547
1562
  }
1548
- function q(e, t = 2, n) {
1549
- let r = G.get(n ?? K) ?? W, i = r.numberDecimalSeparator, a = r.numberGroupSeparator, [o, s] = e.toFixed(t).split("."), c = o.startsWith("-"), l = c ? o.slice(1) : o, u = "";
1563
+ function K(e, t = 2, n) {
1564
+ let r = W.get(n ?? G) ?? U, i = r.numberDecimalSeparator, a = r.numberGroupSeparator, [o, s] = e.toFixed(t).split("."), c = o.startsWith("-"), l = c ? o.slice(1) : o, u = "";
1550
1565
  for (let e = l.length - 1, t = 0; e >= 0; e--, t++) t > 0 && t % 3 == 0 && (u = a + u), u = l[e] + u;
1551
1566
  return c && (u = "-" + u), s ? u + i + s : u;
1552
1567
  }
1553
- function _n(e) {
1554
- return q(e, 0, "vi");
1568
+ function xn(e) {
1569
+ return K(e, 0, "vi");
1555
1570
  }
1556
- function vn(e, t) {
1557
- return e >= 1e9 ? q(e / 1e9, 2, t ?? K) + "B" : e >= 1e6 ? q(e / 1e6, 2, t ?? K) + "M" : e >= 1e3 ? q(e / 1e3, 2, t ?? K) + "K" : q(e, 0, t ?? K);
1571
+ function Sn(e, t) {
1572
+ 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);
1558
1573
  }
1559
1574
  //#endregion
1560
1575
  //#region src/market/presets.ts
1561
- var J = {
1576
+ var q = {
1562
1577
  up: "#22C55E",
1563
1578
  down: "#EF4444",
1564
1579
  unchanged: "#EAB308",
1565
1580
  ceiling: "#D946EF",
1566
1581
  floor: "#06B6D4",
1567
1582
  reference: "#EAB308"
1568
- }, Y = "Asia/Ho_Chi_Minh", yn = [
1583
+ }, J = "Asia/Ho_Chi_Minh", Cn = [
1569
1584
  {
1570
1585
  name: "ATO",
1571
1586
  startTime: "09:00",
@@ -1596,7 +1611,7 @@ var J = {
1596
1611
  endTime: "14:45",
1597
1612
  type: "preClose"
1598
1613
  }
1599
- ], bn = [
1614
+ ], wn = [
1600
1615
  {
1601
1616
  name: "Phiên 1",
1602
1617
  startTime: "09:15",
@@ -1627,7 +1642,7 @@ var J = {
1627
1642
  endTime: "15:00",
1628
1643
  type: "postClose"
1629
1644
  }
1630
- ], xn = [
1645
+ ], Tn = [
1631
1646
  {
1632
1647
  name: "Phiên 1",
1633
1648
  startTime: "09:15",
@@ -1646,7 +1661,7 @@ var J = {
1646
1661
  endTime: "14:30",
1647
1662
  type: "continuous"
1648
1663
  }
1649
- ], Sn = [
1664
+ ], En = [
1650
1665
  {
1651
1666
  name: "ATO",
1652
1667
  startTime: "08:45",
@@ -1677,7 +1692,7 @@ var J = {
1677
1692
  endTime: "14:45",
1678
1693
  type: "preClose"
1679
1694
  }
1680
- ], Cn = {
1695
+ ], Dn = {
1681
1696
  type: "stock",
1682
1697
  exchange: "HOSE",
1683
1698
  currency: "VND",
@@ -1698,48 +1713,48 @@ var J = {
1698
1713
  step: .1
1699
1714
  }
1700
1715
  ],
1701
- timeZone: Y,
1716
+ timeZone: J,
1702
1717
  priceLimits: {
1703
1718
  enabled: !0,
1704
1719
  ceilingPercent: 7,
1705
1720
  floorPercent: 7
1706
1721
  },
1707
- sessions: yn,
1708
- colorScheme: J
1709
- }, wn = {
1710
- ...Cn,
1722
+ sessions: Cn,
1723
+ colorScheme: q
1724
+ }, On = {
1725
+ ...Dn,
1711
1726
  priceSteps: void 0
1712
- }, Tn = {
1727
+ }, kn = {
1713
1728
  type: "stock",
1714
1729
  exchange: "HNX",
1715
1730
  currency: "VND",
1716
1731
  pricePrecision: 1,
1717
1732
  volumeUnit: 100,
1718
1733
  priceStep: .1,
1719
- timeZone: Y,
1734
+ timeZone: J,
1720
1735
  priceLimits: {
1721
1736
  enabled: !0,
1722
1737
  ceilingPercent: 10,
1723
1738
  floorPercent: 10
1724
1739
  },
1725
- sessions: bn,
1726
- colorScheme: J
1727
- }, En = {
1740
+ sessions: wn,
1741
+ colorScheme: q
1742
+ }, An = {
1728
1743
  type: "stock",
1729
1744
  exchange: "UPCOM",
1730
1745
  currency: "VND",
1731
1746
  pricePrecision: 1,
1732
1747
  volumeUnit: 100,
1733
1748
  priceStep: .1,
1734
- timeZone: Y,
1749
+ timeZone: J,
1735
1750
  priceLimits: {
1736
1751
  enabled: !0,
1737
1752
  ceilingPercent: 15,
1738
1753
  floorPercent: 15
1739
1754
  },
1740
- sessions: xn,
1741
- colorScheme: J
1742
- }, Dn = {
1755
+ sessions: Tn,
1756
+ colorScheme: q
1757
+ }, jn = {
1743
1758
  type: "futures",
1744
1759
  exchange: "HNX",
1745
1760
  currency: "VND",
@@ -1747,20 +1762,20 @@ var J = {
1747
1762
  volumeUnit: 1,
1748
1763
  priceStep: .1,
1749
1764
  contractMultiplier: 1e5,
1750
- timeZone: Y,
1765
+ timeZone: J,
1751
1766
  priceLimits: {
1752
1767
  enabled: !0,
1753
1768
  ceilingPercent: 7,
1754
1769
  floorPercent: 7
1755
1770
  },
1756
- sessions: Sn,
1757
- colorScheme: J
1758
- }, On = {
1771
+ sessions: En,
1772
+ colorScheme: q
1773
+ }, Mn = {
1759
1774
  type: "crypto",
1760
1775
  currency: "USDT",
1761
1776
  pricePrecision: 2,
1762
1777
  priceLimits: { enabled: !1 }
1763
- }, kn = {
1778
+ }, Nn = {
1764
1779
  type: "stock",
1765
1780
  exchange: "NYSE",
1766
1781
  currency: "USD",
@@ -1789,77 +1804,77 @@ var J = {
1789
1804
  }
1790
1805
  ]
1791
1806
  };
1792
- function An(e) {
1807
+ function Pn(e) {
1793
1808
  return {
1794
1809
  ...e,
1795
- candleUp: J.up,
1796
- candleDown: J.down,
1797
- candleUpWick: J.up,
1798
- candleDownWick: J.down,
1799
- volumeUp: F(J.up),
1800
- volumeDown: F(J.down)
1810
+ candleUp: q.up,
1811
+ candleDown: q.down,
1812
+ candleUpWick: q.up,
1813
+ candleDownWick: q.down,
1814
+ volumeUp: I(q.up),
1815
+ volumeDown: I(q.down)
1801
1816
  };
1802
1817
  }
1803
- var X = 1e-9;
1804
- function jn(e, t) {
1818
+ var Y = 1e-9;
1819
+ function Fn(e, t) {
1805
1820
  let n = t.priceStep;
1806
- for (let r of t.priceSteps ?? []) e + X >= r.from && (n = r.step);
1821
+ for (let r of t.priceSteps ?? []) e + Y >= r.from && (n = r.step);
1807
1822
  return n !== void 0 && n > 0 ? n : void 0;
1808
1823
  }
1809
- function Mn(e, t) {
1824
+ function In(e, t) {
1810
1825
  let n = t.priceStep;
1811
- for (let r of t.priceSteps ?? []) e - X > r.from && (n = r.step);
1826
+ for (let r of t.priceSteps ?? []) e - Y > r.from && (n = r.step);
1812
1827
  return n !== void 0 && n > 0 ? n : void 0;
1813
1828
  }
1814
- function Z(e, t, n = "nearest") {
1815
- let r = jn(e, t);
1829
+ function X(e, t, n = "nearest") {
1830
+ let r = Fn(e, t);
1816
1831
  if (r === void 0 || !Number.isFinite(e)) return e;
1817
- let i = e / r, a = n === "down" ? Math.floor(i + X) : n === "up" ? Math.ceil(i - X) : Math.round(i);
1818
- return Number((a * r).toFixed(lt(r)));
1832
+ let i = e / r, a = n === "down" ? Math.floor(i + Y) : n === "up" ? Math.ceil(i - Y) : Math.round(i);
1833
+ return Number((a * r).toFixed(ft(r)));
1819
1834
  }
1820
- function Nn(e, t) {
1835
+ function Ln(e, t) {
1821
1836
  if (!t.priceLimits?.enabled || !t.priceLimits.ceilingPercent) return null;
1822
- 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 = jn(i, t);
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);
1823
1838
  if (s === void 0) return {
1824
1839
  ceiling: a,
1825
1840
  floor: o,
1826
1841
  reference: i
1827
1842
  };
1828
- let c = Z(i + s, t);
1829
- if (Math.abs(i - s) < X) return {
1843
+ let c = X(i + s, t);
1844
+ if (Math.abs(i - s) < Y) return {
1830
1845
  ceiling: c,
1831
1846
  floor: i,
1832
1847
  reference: i
1833
1848
  };
1834
- let l = Z(a, t, "down"), u = Z(o, t, "up");
1835
- return l <= i && (l = c), u >= i && (u = Z(i - (Mn(i, t) ?? s), t)), u <= 0 && (u = i), {
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), {
1836
1851
  ceiling: l,
1837
1852
  floor: u,
1838
1853
  reference: i
1839
1854
  };
1840
1855
  }
1841
- var Q = (e, t) => Math.round(e * t * 1e9) / 1e9;
1842
- function Pn(e, t) {
1856
+ var Z = (e, t) => Math.round(e * t * 1e9) / 1e9;
1857
+ function Rn(e, t) {
1843
1858
  let n = Math.round(Math.log10(t));
1844
1859
  return {
1845
1860
  ...e,
1846
1861
  pricePrecision: e.pricePrecision === void 0 ? void 0 : Math.max(0, e.pricePrecision - n),
1847
- priceStep: e.priceStep === void 0 ? void 0 : Q(e.priceStep, t),
1862
+ priceStep: e.priceStep === void 0 ? void 0 : Z(e.priceStep, t),
1848
1863
  priceSteps: e.priceSteps?.map((e) => ({
1849
- from: Q(e.from, t),
1850
- step: Q(e.step, t)
1864
+ from: Z(e.from, t),
1865
+ step: Z(e.step, t)
1851
1866
  })),
1852
1867
  priceLimits: e.priceLimits && {
1853
1868
  ...e.priceLimits,
1854
- referencePrice: e.priceLimits.referencePrice === void 0 ? void 0 : Q(e.priceLimits.referencePrice, t)
1869
+ referencePrice: e.priceLimits.referencePrice === void 0 ? void 0 : Z(e.priceLimits.referencePrice, t)
1855
1870
  }
1856
1871
  };
1857
1872
  }
1858
- var Fn = 6e4, In = 864e5;
1859
- function Ln(e, t) {
1873
+ var zn = 6e4, Bn = 864e5;
1874
+ function Vn(e, t) {
1860
1875
  let n, r;
1861
1876
  if (t) {
1862
- let i = new Date(e + x(t, e) * Fn);
1877
+ let i = new Date(e + y(t, e) * zn);
1863
1878
  n = i.getUTCHours(), r = i.getUTCMinutes();
1864
1879
  } else {
1865
1880
  let t = new Date(e);
@@ -1867,37 +1882,37 @@ function Ln(e, t) {
1867
1882
  }
1868
1883
  return `${String(n).padStart(2, "0")}:${String(r).padStart(2, "0")}`;
1869
1884
  }
1870
- function Rn(e, t = Date.now(), n) {
1871
- if (n !== void 0 && !b(n)) return null;
1872
- let r = Ln(t, n);
1885
+ function Hn(e, t = Date.now(), n) {
1886
+ if (n !== void 0 && !v(n)) return null;
1887
+ let r = Vn(t, n);
1873
1888
  for (let t of e) if (r >= t.startTime && r < t.endTime) return t;
1874
1889
  return null;
1875
1890
  }
1876
- var $ = (e) => String(e).padStart(2, "0"), zn = (e) => {
1891
+ var Q = (e) => String(e).padStart(2, "0"), $ = (e) => {
1877
1892
  let t = new Date(e);
1878
- return `${t.getUTCFullYear()}-${$(t.getUTCMonth() + 1)}-${$(t.getUTCDate())}`;
1879
- }, Bn = 4, Vn = 7 * 36e5;
1880
- function Hn(e, t, n) {
1881
- let r = Date.UTC(e, t - 1, 1), i = 1 + (Bn - new Date(r).getUTCDay() + 7) % 7, a = Date.UTC(e, t - 1, i + 14), o = (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) => {
1882
1897
  let t = new Date(e).getUTCDay();
1883
- return t === 0 || t === 6 || (n?.(zn(e)) ?? !1);
1898
+ return t === 0 || t === 6 || (n?.($(e)) ?? !1);
1884
1899
  };
1885
- for (; o(a);) a -= In;
1886
- return zn(a);
1900
+ for (; o(a);) a -= Bn;
1901
+ return $(a);
1887
1902
  }
1888
- function Un(e, t) {
1889
- let n = zn(e + Vn), r = (e, n) => ({
1890
- symbol: `VN30F${$(e % 100)}${$(n)}`,
1903
+ function Kn(e, t) {
1904
+ let n = $(e + Wn), r = (e, n) => ({
1905
+ symbol: `VN30F${Q(e % 100)}${Q(n)}`,
1891
1906
  year: e,
1892
1907
  month: n,
1893
- lastTradingDay: Hn(e, n, t)
1894
- }), i = (e) => e.month === 12 ? r(e.year + 1, 1) : r(e.year, e.month + 1), a = new Date(e + Vn), o = r(a.getUTCFullYear(), a.getUTCMonth() + 1);
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);
1895
1910
  n > o.lastTradingDay && (o = i(o));
1896
1911
  let s = [o, i(o)], c = i(s[1]);
1897
1912
  for (; s.length < 4;) c.month % 3 == 0 && s.push(c), c = i(c);
1898
1913
  return s;
1899
1914
  }
1900
1915
  //#endregion
1901
- export { t as CHART_STYLE_KEYS, B as DARK_TERMINAL, R as DARK_THEME, an as DEFAULT_BAR_SPACING, rn as DEFAULT_BAR_WIDTH, Qt as DEFAULT_CHART_OPTIONS, n as DEFAULT_DRAWING_STYLE, At as DEFAULT_FONT_FAMILY, ln as DEFAULT_PANEL_HEIGHT, o as DEFAULT_RECONNECT, i as DEFAULT_SIGNAL_STYLE, s as DEFAULT_STREAM_CONFIG, nn as DEFAULT_TIMEFRAME_FAVORITES, a as DEFAULT_TRADE_ZONE_STYLE, r as DEFAULT_TRADING_CONFIG, bn as HNX_SESSIONS, yn as HOSE_SESSIONS, z as LIGHT_THEME, e as LayerType, On as MARKET_CRYPTO, Tn as MARKET_HNX, Cn as MARKET_HOSE, wn as MARKET_HOSE_ETF, kn as MARKET_NYSE, En as MARKET_UPCOM, Dn as MARKET_VN30F, cn as MIN_PANEL_HEIGHT, on as PRICE_AXIS_WIDTH, Xe as PRICE_SOURCES, P as TC_PALETTE, Nt as TC_SERIES_COLORS, $t as TIMEFRAMES_CRYPTO, tn as TIMEFRAMES_FOREX, en as TIMEFRAMES_STOCK, sn as TIME_AXIS_HEIGHT, xn as UPCOM_SESSIONS, Sn as VN30F_SESSIONS, J as VN_COLORS, Mt as VOLUME_ALPHA, Me as alignToTimeframe, Ue as autoPricePrecision, Ie as barsAreDaily, Zt as chartStyleValue, ne as clamp, Nn as computePriceLimits, de as computePriceRange, oe as computeTickStep, An as createVNTheme, Ye as detectPrecision, bt as drawingOption, W as en, ue as findBarIndex, Ge as formatFraction, q as formatNumber, He as formatPrice, We as formatPriceScaleLabel, je as formatTimestamp, _n as formatVND, Je as formatVolume, vn as formatVolumeLoc, Ke as fractionTick, Rn as getCurrentSession, pn as getLocale, gn as getLocaleStrings, pe as hexToRgba, et as indicatorSource, ie as inverseLerp, Pe as isDateOnly, Ze as isPriceSource, Ae as isTimeFrame, b as isValidTimeZone, re as lerp, he as lerpColor, Kt as lineDash, ft as marketStatus, fe as mergeBar, m as niceNumber, ce as normalizeBar, se as normalizeBarTime, C as offsetAt, tt as parseIndicatorSource, T as parseTimeframe, ot as pickBaseTimeframe, qe as priceFormatterFor, jn as priceStepAt, ct as rankSymbols, Ht as readChartStyleOverrides, kt as readChartTypeOptions, Gt as readIndicatorPlotStyles, te as readNews, Ut as readPaneStyle, l as readQuote, hn as registerLocale, rt as resampleBars, Jt as resolveChartTheme, xt as resolveDrawingOptions, V as resolveVolumeColors, Z as roundToPriceStep, ae as roundToStep, vt as sanitizeDrawingOptions, Ot as sanitizeDrawingStyle, Pn as scaleMarketPrices, ut as sessionMinute, fn as setLocale, le as sliceVisibleData, Qe as sourcePrice, lt as stepDecimals, mn as t, ke as tickBarCount, Ne as timeParts, ze as timeframeBucketStart, E as timeframeToMs, Le as tzLabel, un as vi, Un as vn30fContracts, Hn as vn30fLastTradingDay, F as volumeColor, Ce as wallToUtc, me as withAlpha, x as zoneOffsetMinutes, Te as zonedDateFormatter };
1916
+ export { t as CHART_STYLE_KEYS, V as DARK_TERMINAL, z as DARK_THEME, ln as DEFAULT_BAR_SPACING, cn as DEFAULT_BAR_WIDTH, nn as DEFAULT_CHART_OPTIONS, n as DEFAULT_DRAWING_STYLE, Mt as DEFAULT_FONT_FAMILY, pn as DEFAULT_PANEL_HEIGHT, o as DEFAULT_RECONNECT, i as DEFAULT_SIGNAL_STYLE, s as DEFAULT_STREAM_CONFIG, sn as DEFAULT_TIMEFRAME_FAVORITES, a as DEFAULT_TRADE_ZONE_STYLE, r as DEFAULT_TRADING_CONFIG, wn as HNX_SESSIONS, Cn as HOSE_SESSIONS, B as LIGHT_THEME, e as LayerType, Mn as MARKET_CRYPTO, kn as MARKET_HNX, Dn as MARKET_HOSE, On as MARKET_HOSE_ETF, Nn as MARKET_NYSE, An as MARKET_UPCOM, jn as MARKET_VN30F, fn as MIN_PANEL_HEIGHT, se as MS_TIME_THRESHOLD, un as PRICE_AXIS_WIDTH, et as PRICE_SOURCES, F as TC_PALETTE, Ft as TC_SERIES_COLORS, rn as TIMEFRAMES_CRYPTO, on as TIMEFRAMES_FOREX, an as TIMEFRAMES_STOCK, dn as TIME_AXIS_HEIGHT, Tn as UPCOM_SESSIONS, En as VN30F_SESSIONS, q as VN_COLORS, Pt as VOLUME_ALPHA, Le as alignToTimeframe, qe as autoPricePrecision, ce as barTimeUnit, Ve as barsAreDaily, tn as chartStyleValue, ne as clamp, Ln as computePriceLimits, me as computePriceRange, oe as computeTickStep, Pn as createVNTheme, $e as detectPrecision, St as drawingOption, U as en, fe as findBarIndex, Ye as formatFraction, K as formatNumber, E as formatPrice, Je as formatPriceScaleLabel, Ie as formatTimestamp, xn as formatVND, Qe as formatVolume, Sn as formatVolumeLoc, Xe as fractionTick, Hn as getCurrentSession, _n as getLocale, bn as getLocaleStrings, ge as hexToRgba, it as indicatorSource, ie as inverseLerp, ze as isDateOnly, tt as isPriceSource, Fe as isTimeFrame, v as isValidTimeZone, re as lerp, ve as lerpColor, Xt as lineDash, mt as marketStatus, he as mergeBar, m as niceNumber, ue as normalizeBar, le as normalizeBarTime, x as offsetAt, pe as padPriceRange, at as parseIndicatorSource, C as parseTimeframe, lt as pickBaseTimeframe, Ze as priceFormatterFor, Fn as priceStepAt, dt as rankSymbols, Kt as readChartStyleOverrides, jt as readChartTypeOptions, Yt as readIndicatorPlotStyles, te as readNews, qt as readPaneStyle, l as readQuote, yn as registerLocale, st as resampleBars, Qt as resolveChartTheme, Ct as resolveDrawingOptions, Lt as resolveVolumeColors, X as roundToPriceStep, ae as roundToStep, bt as sanitizeDrawingOptions, At as sanitizeDrawingStyle, Rn as scaleMarketPrices, O as sessionMinute, gn as setLocale, de as sliceVisibleData, nt as sourcePrice, ft as stepDecimals, vn as t, Pe as tickBarCount, Re as timeParts, We as timeframeBucketStart, w as timeframeToMs, He as tzLabel, mn as vi, Kn as vn30fContracts, Gn as vn30fLastTradingDay, I as volumeColor, Oe as wallToUtc, _e as withAlpha, y as zoneOffsetMinutes, Ae as zonedDateFormatter };
1902
1917
 
1903
1918
  //# sourceMappingURL=index.js.map