@tradecanvas/commons 1.60.0 → 1.62.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
@@ -198,11 +198,11 @@ function u(e) {
198
198
  }
199
199
  //#endregion
200
200
  //#region src/types/news.ts
201
- var d = 300, f = 1e3, p = (e, t) => {
201
+ var d = 300, ee = 1e3, f = (e, t) => {
202
202
  if (typeof e != "string") return;
203
203
  let n = e.trim();
204
204
  return n ? n.slice(0, t) : void 0;
205
- }, ee = (e) => {
205
+ }, te = (e) => {
206
206
  if (typeof e == "string") try {
207
207
  let t = new URL(e);
208
208
  return t.protocol === "https:" || t.protocol === "http:" ? t.href : void 0;
@@ -210,61 +210,61 @@ var d = 300, f = 1e3, p = (e, t) => {
210
210
  return;
211
211
  }
212
212
  };
213
- function te(e, t = 20) {
213
+ function ne(e, t = 20) {
214
214
  if (!Array.isArray(e)) return [];
215
215
  let n = [];
216
216
  for (let t of e) {
217
217
  if (!t || typeof t != "object") continue;
218
- let e = t, r = p(e.title, d);
218
+ let e = t, r = f(e.title, d);
219
219
  if (!r || typeof e.time != "number" || !Number.isFinite(e.time)) continue;
220
220
  let i = {
221
221
  title: r,
222
222
  time: e.time
223
- }, a = ee(e.url);
223
+ }, a = te(e.url);
224
224
  a && (i.url = a);
225
- let o = p(e.source, d);
225
+ let o = f(e.source, d);
226
226
  o && (i.source = o);
227
- let s = p(e.summary, f);
227
+ let s = f(e.summary, ee);
228
228
  s && (i.summary = s);
229
- let c = p(e.id, d);
229
+ let c = f(e.id, d);
230
230
  c && (i.id = c), n.push(i);
231
231
  }
232
232
  return n.sort((e, t) => t.time - e.time).slice(0, Math.max(0, t));
233
233
  }
234
234
  //#endregion
235
235
  //#region src/utils/math.ts
236
- function ne(e, t, n) {
236
+ function re(e, t, n) {
237
237
  return Math.max(t, Math.min(n, e));
238
238
  }
239
- function re(e, t, n) {
239
+ function ie(e, t, n) {
240
240
  return e + (t - e) * n;
241
241
  }
242
- function ie(e, t, n) {
242
+ function ae(e, t, n) {
243
243
  return e === t ? 0 : (n - e) / (t - e);
244
244
  }
245
- function ae(e, t) {
245
+ function oe(e, t) {
246
246
  return Math.round(e / t) * t;
247
247
  }
248
- function oe(e, t) {
248
+ function se(e, t) {
249
249
  let n = Math.floor(Math.log10(e)), r = e / 10 ** n, i;
250
250
  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;
251
251
  }
252
- function se(e, t, n) {
253
- return oe(oe(t - e, !1) / (n - 1), !0);
252
+ function ce(e, t, n) {
253
+ return se(se(t - e, !1) / (n - 1), !0);
254
254
  }
255
255
  //#endregion
256
256
  //#region src/utils/data.ts
257
- var ce = 1e11;
258
- function le(e) {
257
+ var le = 1e11;
258
+ function ue(e) {
259
259
  let t = e.length > 0 ? e[e.length - 1].time : NaN;
260
260
  return Number.isFinite(t) ? Math.abs(t) >= 1e11 ? 1 : 1e3 : 1;
261
261
  }
262
- function ue(e, t) {
262
+ function de(e, t) {
263
263
  return t === void 0 ? Math.abs(e) >= 1e11 ? e : e * 1e3 : e * t;
264
264
  }
265
- function de(e) {
265
+ function fe(e) {
266
266
  return {
267
- time: ue(e.time ?? e.t ?? 0),
267
+ time: de(e.time ?? e.t ?? 0),
268
268
  open: e.open ?? e.o ?? 0,
269
269
  high: e.high ?? e.h ?? 0,
270
270
  low: e.low ?? e.l ?? 0,
@@ -272,11 +272,11 @@ function de(e) {
272
272
  volume: e.volume ?? e.v ?? 0
273
273
  };
274
274
  }
275
- function fe(e, t, n) {
275
+ function pe(e, t, n) {
276
276
  let r = Math.max(0, t), i = Math.min(e.length, n + 1);
277
277
  return e.slice(r, i);
278
278
  }
279
- function pe(e, t) {
279
+ function me(e, t) {
280
280
  let n = 0, r = e.length - 1;
281
281
  for (; n <= r;) {
282
282
  let i = n + r >>> 1;
@@ -286,7 +286,7 @@ function pe(e, t) {
286
286
  }
287
287
  return n;
288
288
  }
289
- function me(e, t, n, r = !1) {
289
+ function he(e, t, n, r = !1) {
290
290
  let i = r && e > 0 && t > 0 ? Math.log(t / e) : NaN;
291
291
  if (Number.isFinite(i)) {
292
292
  let r = i || Math.log(1 + 2 * n), a = Math.exp(r * n);
@@ -301,7 +301,7 @@ function me(e, t, n, r = !1) {
301
301
  max: t + a * n
302
302
  };
303
303
  }
304
- function he(e, t, n, r = !1) {
304
+ function ge(e, t, n, r = !1) {
305
305
  let i = Math.max(1 - n.top - n.bottom, 2 ** -52), a = r && e > 0 && t > 0 ? Math.log(t / e) : NaN;
306
306
  if (Number.isFinite(a)) {
307
307
  let r = (a || Math.log(1.01)) / i;
@@ -316,7 +316,7 @@ function he(e, t, n, r = !1) {
316
316
  max: t + o * n.top
317
317
  };
318
318
  }
319
- function ge(e, t, n, r = .05, i = !1) {
319
+ function _e(e, t, n, r = .05, i = !1) {
320
320
  if (e.length === 0) return {
321
321
  min: 0,
322
322
  max: 1
@@ -326,9 +326,9 @@ function ge(e, t, n, r = .05, i = !1) {
326
326
  return s === Infinity ? {
327
327
  min: 0,
328
328
  max: 1
329
- } : me(s, c, r, i);
329
+ } : he(s, c, r, i);
330
330
  }
331
- function _e(e, t) {
331
+ function ve(e, t) {
332
332
  return {
333
333
  ...e,
334
334
  high: Math.max(e.high, t.price),
@@ -339,18 +339,18 @@ function _e(e, t) {
339
339
  }
340
340
  //#endregion
341
341
  //#region src/utils/color.ts
342
- function ve(e, t = 1) {
342
+ function ye(e, t = 1) {
343
343
  let n = e.slice(1);
344
344
  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})`;
345
345
  }
346
- function m(e, t) {
346
+ function p(e, t) {
347
347
  let n = e.trim();
348
- if (/^#([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i.test(n)) return ve(n, t);
348
+ if (/^#([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i.test(n)) return ye(n, t);
349
349
  let r = n.match(/^rgba?\(\s*(\d+(?:\.\d+)?)[\s,]+(\d+(?:\.\d+)?)[\s,]+(\d+(?:\.\d+)?)/i);
350
350
  return r ? `rgba(${r[1]}, ${r[2]}, ${r[3]}, ${t})` : e;
351
351
  }
352
- var ye = 3;
353
- function h(e) {
352
+ var be = 3;
353
+ function xe(e) {
354
354
  let t = e.trim(), n = /^#([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i.exec(t);
355
355
  if (n) {
356
356
  let e = n[1];
@@ -373,14 +373,14 @@ function h(e) {
373
373
  a: Math.min(1, Math.max(0, i))
374
374
  };
375
375
  }
376
- function be(e, t, n) {
377
- let r = h(e), i = h(t);
376
+ function Se(e, t, n) {
377
+ let r = xe(e), i = xe(t);
378
378
  if (!r || !i) return n < .5 ? e : t;
379
379
  let a = r.a + (i.a - r.a) * n, o = (e, t) => a === 0 ? 0 : Math.round((e * r.a + (t * i.a - e * r.a) * n) / a), s = `${o(r.r, i.r)},${o(r.g, i.g)},${o(r.b, i.b)}`;
380
- return a >= 1 ? `rgb(${s})` : `rgba(${s},${Number(a.toFixed(ye))})`;
380
+ return a >= 1 ? `rgb(${s})` : `rgba(${s},${Number(a.toFixed(be))})`;
381
381
  }
382
- function xe(e) {
383
- let t = h(e);
382
+ function Ce(e) {
383
+ let t = xe(e);
384
384
  if (!t) return null;
385
385
  let n = (e) => {
386
386
  let t = e / 255;
@@ -388,26 +388,26 @@ function xe(e) {
388
388
  };
389
389
  return .2126 * n(t.r) + .7152 * n(t.g) + .0722 * n(t.b);
390
390
  }
391
- function g(e, t) {
392
- let n = xe(e), r = xe(t);
391
+ function m(e, t) {
392
+ let n = Ce(e), r = Ce(t);
393
393
  return n === null || r === null ? null : (Math.max(n, r) + .05) / (Math.min(n, r) + .05);
394
394
  }
395
- var Se = 20;
396
- function Ce(e, t, n, r) {
397
- let i = g(e, t);
395
+ var we = 20;
396
+ function Te(e, t, n, r) {
397
+ let i = m(e, t);
398
398
  if (i === null || i >= r) return e;
399
- for (let i = 1; i <= Se; i++) {
400
- let a = be(e, n, i / Se);
401
- if ((g(a, t) ?? 0) >= r) return a;
399
+ for (let i = 1; i <= we; i++) {
400
+ let a = Se(e, n, i / we);
401
+ if ((m(a, t) ?? 0) >= r) return a;
402
402
  }
403
403
  return n;
404
404
  }
405
- function we(e, t, n) {
406
- return (g(e, t) ?? 0) >= (g(e, n) ?? 0) ? t : n;
405
+ function Ee(e, t, n) {
406
+ return (m(e, t) ?? 0) >= (m(e, n) ?? 0) ? t : n;
407
407
  }
408
408
  //#endregion
409
409
  //#region src/utils/timezone.ts
410
- var _ = 6e4, Te = 1440 * _, v = 15 * _, Ee = 8192, De = 7 * Te, Oe = 4096, ke = new Set([
410
+ var h = 6e4, g = 1440 * h, _ = 15 * h, De = 8192, Oe = 7 * g, ke = 4096, Ae = new Set([
411
411
  "UTC",
412
412
  "Etc/UTC",
413
413
  "GMT",
@@ -418,9 +418,9 @@ var _ = 6e4, Te = 1440 * _, v = 15 * _, Ee = 8192, De = 7 * Te, Oe = 4096, ke =
418
418
  "Etc/Universal",
419
419
  "Zulu",
420
420
  "Etc/Zulu"
421
- ]), Ae = /* @__PURE__ */ new Map(), y = /* @__PURE__ */ new Map(), je = /* @__PURE__ */ new Map();
422
- function Me(e) {
423
- let t = Ae.get(e);
421
+ ]), je = /* @__PURE__ */ new Map(), v = /* @__PURE__ */ new Map(), Me = /* @__PURE__ */ new Map();
422
+ function Ne(e) {
423
+ let t = je.get(e);
424
424
  return t || (t = new Intl.DateTimeFormat("en-US", {
425
425
  timeZone: e,
426
426
  hourCycle: "h23",
@@ -430,34 +430,34 @@ function Me(e) {
430
430
  hour: "numeric",
431
431
  minute: "numeric",
432
432
  second: "numeric"
433
- }), Ae.set(e, t)), t;
433
+ }), je.set(e, t)), t;
434
434
  }
435
- function Ne(e) {
435
+ function Pe(e) {
436
436
  if (!e) return !1;
437
437
  try {
438
- return Me(e), !0;
438
+ return Ne(e), !0;
439
439
  } catch {
440
440
  return !1;
441
441
  }
442
442
  }
443
- function b(e, t) {
444
- if (!Number.isFinite(t) || ke.has(e)) return 0;
445
- let n = je.get(e);
446
- n || (n = /* @__PURE__ */ new Map(), je.set(e, n));
447
- let r = Math.floor(t / De), i = n.get(r);
448
- return i || (i = Pe(e, r * De), n.size >= Oe && n.clear(), n.set(r, i)), t < i.change ? i.before : i.after;
449
- }
450
- function Pe(e, t) {
451
- let n = x(e, t), r = t + De - v, i = x(e, r);
443
+ function y(e, t) {
444
+ if (!Number.isFinite(t) || Ae.has(e)) return 0;
445
+ let n = Me.get(e);
446
+ n || (n = /* @__PURE__ */ new Map(), Me.set(e, n));
447
+ let r = Math.floor(t / Oe), i = n.get(r);
448
+ return i || (i = Fe(e, r * Oe), n.size >= ke && n.clear(), n.set(r, i)), t < i.change ? i.before : i.after;
449
+ }
450
+ function Fe(e, t) {
451
+ let n = b(e, t), r = t + Oe - _, i = b(e, r);
452
452
  if (i === n) return {
453
453
  before: n,
454
454
  change: Infinity,
455
455
  after: i
456
456
  };
457
457
  let a = t;
458
- for (; r - a > v;) {
459
- let t = a + Math.floor((r - a) / v / 2) * v;
460
- x(e, t) === n ? a = t : r = t;
458
+ for (; r - a > _;) {
459
+ let t = a + Math.floor((r - a) / _ / 2) * _;
460
+ b(e, t) === n ? a = t : r = t;
461
461
  }
462
462
  return {
463
463
  before: n,
@@ -465,11 +465,11 @@ function Pe(e, t) {
465
465
  after: i
466
466
  };
467
467
  }
468
- function x(e, t) {
469
- let n = Math.floor(t / v), r = `${e}|${n}`, i = y.get(r);
468
+ function b(e, t) {
469
+ let n = Math.floor(t / _), r = `${e}|${n}`, i = v.get(r);
470
470
  if (i !== void 0) return i;
471
- let a = n * v, o = 1970, s = 1, c = 1, l = 0, u = 0, d = 0;
472
- for (let t of Me(e).formatToParts(new Date(a))) {
471
+ let a = n * _, o = 1970, s = 1, c = 1, l = 0, u = 0, d = 0;
472
+ for (let t of Ne(e).formatToParts(new Date(a))) {
473
473
  let e = Number(t.value);
474
474
  switch (t.type) {
475
475
  case "year":
@@ -492,24 +492,24 @@ function x(e, t) {
492
492
  break;
493
493
  }
494
494
  }
495
- let f = Math.round((Date.UTC(o, s - 1, c, l, u, d) - a) / _);
496
- return y.size >= Ee && y.clear(), y.set(r, f), f;
495
+ let ee = Math.round((Date.UTC(o, s - 1, c, l, u, d) - a) / h);
496
+ return v.size >= De && v.clear(), v.set(r, ee), ee;
497
497
  }
498
- function S(e) {
499
- return e === 0 || typeof e == "string" && ke.has(e);
498
+ function x(e) {
499
+ return e === 0 || typeof e == "string" && Ae.has(e);
500
500
  }
501
- function C(e, t) {
502
- return e === null ? -new Date(t).getTimezoneOffset() : typeof e == "number" ? e : b(e, t);
501
+ function S(e, t) {
502
+ return e === null ? -new Date(t).getTimezoneOffset() : typeof e == "number" ? e : y(e, t);
503
503
  }
504
- function Fe(e, t) {
505
- let n = e - C(t, e - Te) * _;
506
- if (n + C(t, n) * _ === e) return n;
507
- let r = e - C(t, e + Te) * _;
508
- return r + C(t, r) * _ === e ? r : n;
509
- }
510
- var Ie = /* @__PURE__ */ new Map();
511
- function Le(e, t, n) {
512
- let r = `${e}|${JSON.stringify(t)}|${n === null ? "local" : typeof n == "number" ? `fixed:${n}` : n}`, i = Ie.get(r);
504
+ function Ie(e, t) {
505
+ let n = e - S(t, e - g) * h;
506
+ if (n + S(t, n) * h === e) return n;
507
+ let r = e - S(t, e + g) * h;
508
+ return r + S(t, r) * h === e ? r : n;
509
+ }
510
+ var Le = /* @__PURE__ */ new Map();
511
+ function Re(e, t, n) {
512
+ let r = `${e}|${JSON.stringify(t)}|${n === null ? "local" : typeof n == "number" ? `fixed:${n}` : n}`, i = Le.get(r);
513
513
  if (i) return i;
514
514
  let a = n === null ? void 0 : typeof n == "number" ? "UTC" : n, o;
515
515
  try {
@@ -523,12 +523,12 @@ function Le(e, t, n) {
523
523
  timeZone: a
524
524
  });
525
525
  }
526
- let s = typeof n == "number" ? n * _ : 0;
527
- return i = (e) => o.format(new Date(e + s)), Ie.set(r, i), i;
526
+ let s = typeof n == "number" ? n * h : 0;
527
+ return i = (e) => o.format(new Date(e + s)), Le.set(r, i), i;
528
528
  }
529
529
  //#endregion
530
530
  //#region src/utils/time.ts
531
- var Re = {
531
+ var ze = {
532
532
  "1s": 1e3,
533
533
  "5s": 5e3,
534
534
  "15s": 15e3,
@@ -555,16 +555,16 @@ var Re = {
555
555
  "3M": 7776e6,
556
556
  "6M": 15552e6,
557
557
  "12M": 31536e6
558
- }, w = {
558
+ }, C = {
559
559
  s: 1e3,
560
560
  m: 6e4,
561
561
  h: 36e5,
562
562
  d: 864e5,
563
563
  w: 6048e5,
564
564
  M: 2592e6
565
- }, ze = /^([1-9]\d*)([smhdwM])$/;
566
- function T(e) {
567
- let t = ze.exec(e);
565
+ }, Be = /^([1-9]\d*)([smhdwM])$/;
566
+ function w(e) {
567
+ let t = Be.exec(e);
568
568
  if (!t) return null;
569
569
  let n = Number(t[1]);
570
570
  return Number.isSafeInteger(n) ? {
@@ -572,24 +572,24 @@ function T(e) {
572
572
  unit: t[2]
573
573
  } : null;
574
574
  }
575
- var Be = 1e6;
576
- function Ve(e) {
575
+ var Ve = 1e6;
576
+ function He(e) {
577
577
  let t = /^([1-9]\d*)T$/.exec(e);
578
578
  if (!t) return null;
579
579
  let n = Number(t[1]);
580
- return Number.isSafeInteger(n) && n <= Be ? n : null;
580
+ return Number.isSafeInteger(n) && n <= Ve ? n : null;
581
581
  }
582
- function He(e) {
583
- return T(e) !== null;
582
+ function Ue(e) {
583
+ return w(e) !== null;
584
584
  }
585
- function E(e) {
586
- let t = Re[e];
585
+ function T(e) {
586
+ let t = ze[e];
587
587
  if (t !== void 0) return t;
588
- let n = T(e);
589
- return n ? n.count * w[n.unit] : NaN;
588
+ let n = w(e);
589
+ return n ? n.count * C[n.unit] : NaN;
590
590
  }
591
- function Ue(e, t) {
592
- let n = new Date(e), r = E(t);
591
+ function We(e, t) {
592
+ let n = new Date(e), r = T(t);
593
593
  return r >= 864e5 ? n.toLocaleDateString(void 0, {
594
594
  month: "short",
595
595
  day: "numeric"
@@ -602,11 +602,11 @@ function Ue(e, t) {
602
602
  second: "2-digit"
603
603
  });
604
604
  }
605
- function We(e, t) {
606
- let n = E(t);
605
+ function Ge(e, t) {
606
+ let n = T(t);
607
607
  return Math.floor(e / n) * n;
608
608
  }
609
- function Ge(e, t) {
609
+ function Ke(e, t) {
610
610
  if (t === null) {
611
611
  let t = new Date(e);
612
612
  return {
@@ -617,7 +617,7 @@ function Ge(e, t) {
617
617
  minutes: t.getMinutes()
618
618
  };
619
619
  }
620
- let n = new Date(e + C(t, e) * 6e4);
620
+ let n = new Date(e + S(t, e) * 6e4);
621
621
  return {
622
622
  year: n.getUTCFullYear(),
623
623
  month: n.getUTCMonth() + 1,
@@ -626,122 +626,122 @@ function Ge(e, t) {
626
626
  minutes: n.getUTCMinutes()
627
627
  };
628
628
  }
629
- function Ke(e) {
629
+ function qe(e) {
630
630
  return e.hours === 0 && e.minutes === 0;
631
631
  }
632
- var qe = 20 * 36e5;
633
- function Je(e) {
632
+ var Je = 20 * 36e5;
633
+ function Ye(e) {
634
634
  let t = Math.min(e.length, 64);
635
635
  if (t < 2) return;
636
- let n = le(e), r = Infinity;
636
+ let n = ue(e), r = Infinity;
637
637
  for (let i = 1; i < t; i++) {
638
638
  let t = Math.abs(e[i].time - e[i - 1].time) * n;
639
639
  t > 0 && t < r && (r = t);
640
640
  }
641
- return r === Infinity ? void 0 : r >= qe;
641
+ return r === Infinity ? void 0 : r >= Je;
642
642
  }
643
- function Ye(e, t = Date.now()) {
644
- let n = C(e, t), r = n >= 0 ? "+" : "-", i = Math.abs(n), a = Math.floor(i / 60), o = i % 60;
643
+ function Xe(e, t = Date.now()) {
644
+ let n = S(e, t), r = n >= 0 ? "+" : "-", i = Math.abs(n), a = Math.floor(i / 60), o = i % 60;
645
645
  return o === 0 ? `UTC${r}${a}` : `UTC${r}${a}:${String(o).padStart(2, "0")}`;
646
646
  }
647
- var Xe = Date.UTC(1970, 0, 5), Ze = w.m, D = w.d, Qe = 24, $e = {
647
+ var Ze = Date.UTC(1970, 0, 5), Qe = C.m, E = C.d, $e = 24, et = {
648
648
  count: 1,
649
649
  unit: "m"
650
- }, et = 256, O = /* @__PURE__ */ new Map();
651
- function k(e) {
652
- let t = O.get(e);
653
- return t || (t = T(e) ?? $e, O.size >= et && O.clear(), O.set(e, t)), t;
654
- }
655
- function tt({ unit: e }) {
656
- return e === "d" || e === "w" || e === "M";
657
- }
650
+ }, tt = 256, D = /* @__PURE__ */ new Map();
658
651
  function nt(e) {
659
- return e.unit === "h" ? e.count > 1 && Qe % e.count === 0 : tt(e);
652
+ let t = D.get(e);
653
+ return t || (t = w(e) ?? et, D.size >= tt && D.clear(), D.set(e, t)), t;
660
654
  }
661
- function rt(e) {
662
- return nt(k(e));
655
+ function rt({ unit: e }) {
656
+ return e === "d" || e === "w" || e === "M";
663
657
  }
664
658
  function it(e) {
665
- return tt(k(e));
659
+ return e.unit === "h" ? e.count > 1 && $e % e.count === 0 : rt(e);
666
660
  }
667
661
  function at(e) {
668
- return e !== void 0 && !S(e);
662
+ return it(nt(e));
663
+ }
664
+ function ot(e) {
665
+ return rt(nt(e));
666
+ }
667
+ function st(e) {
668
+ return e !== void 0 && !x(e);
669
669
  }
670
- function ot(e, t, n = 1) {
671
- let r = k(t), i = typeof n == "number" ? n : n.weekStartsOn ?? 1, a = typeof n == "number" ? void 0 : n.timeZone;
672
- return !at(a) || !nt(r) || typeof n == "object" && n.dates && e % D === 0 ? st(e, r, i) : Fe(st(e + C(a, e) * Ze, r, i), a);
670
+ function ct(e, t, n = 1) {
671
+ let r = nt(t), i = typeof n == "number" ? n : n.weekStartsOn ?? 1, a = typeof n == "number" ? void 0 : n.timeZone;
672
+ return !st(a) || !it(r) || typeof n == "object" && n.dates && e % E === 0 ? lt(e, r, i) : Ie(lt(e + S(a, e) * Qe, r, i), a);
673
673
  }
674
- function st(e, { count: t, unit: n }, r) {
674
+ function lt(e, { count: t, unit: n }, r) {
675
675
  if (n === "s" || n === "m" || n === "h" || n === "d") {
676
- let r = t * w[n];
676
+ let r = t * C[n];
677
677
  return Math.floor(e / r) * r;
678
678
  }
679
679
  let i = new Date(e);
680
680
  if (n === "w") {
681
681
  let e = (i.getUTCDay() - r + 7) % 7, n = Date.UTC(i.getUTCFullYear(), i.getUTCMonth(), i.getUTCDate() - e);
682
682
  if (t <= 1) return n;
683
- let a = Math.floor((n - Xe) / (7 * D));
684
- return Xe + Math.floor(a / t) * t * 7 * D;
683
+ let a = Math.floor((n - Ze) / (7 * E));
684
+ return Ze + Math.floor(a / t) * t * 7 * E;
685
685
  }
686
686
  let a = i.getUTCFullYear() * 12 + i.getUTCMonth(), o = Math.floor(a / t) * t;
687
687
  return Date.UTC(Math.floor(o / 12), o % 12, 1);
688
688
  }
689
- function ct(e, t, n) {
690
- return e % D === 0 ? 0 : n && ot(e, "1d", { timeZone: n }) === e ? n : t;
689
+ function ut(e, t, n) {
690
+ return e % E === 0 ? 0 : n && ct(e, "1d", { timeZone: n }) === e ? n : t;
691
691
  }
692
- function lt(e, t, n) {
693
- return Ge(e, ct(e, t, n));
692
+ function dt(e, t, n) {
693
+ return Ke(e, ut(e, t, n));
694
694
  }
695
695
  //#endregion
696
696
  //#region src/utils/precision.ts
697
- var ut = 64, A = /* @__PURE__ */ new Map();
698
- function dt(e, t) {
699
- let n = `${e}|${t}`, r = A.get(n);
700
- return r || (A.size >= ut && A.clear(), r = new Intl.NumberFormat(e, {
697
+ var ft = 64, O = /* @__PURE__ */ new Map();
698
+ function pt(e, t) {
699
+ let n = `${e}|${t}`, r = O.get(n);
700
+ return r || (O.size >= ft && O.clear(), r = new Intl.NumberFormat(e, {
701
701
  minimumFractionDigits: t,
702
702
  maximumFractionDigits: t
703
- }), A.set(n, r)), r;
703
+ }), O.set(n, r)), r;
704
704
  }
705
- function ft(e, t, n) {
706
- return t.formatPrice ? t.formatPrice(e) : j(e, n ?? t.pricePrecision ?? pt(t.priceRange.min, t.priceRange.max), t.numberLocale ?? "en-US");
705
+ function mt(e, t, n) {
706
+ return t.formatPrice ? t.formatPrice(e) : k(e, n ?? t.pricePrecision ?? ht(t.priceRange.min, t.priceRange.max), t.numberLocale ?? "en-US");
707
707
  }
708
- function j(e, t = 2, n = "en-US") {
709
- return dt(n, t).format(e);
708
+ function k(e, t = 2, n = "en-US") {
709
+ return pt(n, t).format(e);
710
710
  }
711
- function pt(e, t) {
711
+ function ht(e, t) {
712
712
  if (!(t > e) || !Number.isFinite(e) || !Number.isFinite(t)) return 2;
713
- let n = se(e, t, 8);
713
+ let n = ce(e, t, 8);
714
714
  return n > 0 && n < 1 ? Math.ceil(-Math.log10(n)) + 1 : 2;
715
715
  }
716
- var mt = 2;
717
- function ht(e, t, n, r = 2, i = "en-US") {
716
+ var gt = 2;
717
+ function _t(e, t, n, r = 2, i = "en-US") {
718
718
  if ((t === "percentage" || t === "indexedTo100") && n && n !== 0) {
719
719
  if (t === "percentage") {
720
- let t = (e / n - 1) * 100, r = j(Math.abs(t), mt, i);
721
- return `${r === j(0, mt, i) ? "" : t > 0 ? "+" : "-"}${r}%`;
720
+ let t = (e / n - 1) * 100, r = k(Math.abs(t), gt, i);
721
+ return `${r === k(0, gt, i) ? "" : t > 0 ? "+" : "-"}${r}%`;
722
722
  }
723
- return j(e / n * 100, 2, i);
723
+ return k(e / n * 100, 2, i);
724
724
  }
725
- return j(e, r, i);
725
+ return k(e, r, i);
726
726
  }
727
- function gt(e, t, n = 1) {
727
+ function vt(e, t, n = 1) {
728
728
  let r = Number.isInteger(n) && n > 1 ? n : 1;
729
729
  if (!Number.isFinite(e) || !Number.isInteger(t) || t < 2) return String(e);
730
730
  let i = t * r, a = Math.round(Math.abs(e) * i), o = Math.floor(a / i), s = a - o * i, c = Math.floor(s / r), l = String(t - 1).length, u = r > 1 ? String(Math.floor((s - c * r) / r * 10)) : "";
731
731
  return `${e < 0 && a > 0 ? "-" : ""}${o}'${String(c).padStart(l, "0")}${u}`;
732
732
  }
733
- function _t(e) {
733
+ function yt(e) {
734
734
  if (!Number.isInteger(e.denominator) || e.denominator < 2) return null;
735
735
  let t = Number.isInteger(e.subDenominator) && (e.subDenominator ?? 0) > 1 ? e.subDenominator : 1;
736
736
  return 1 / (e.denominator * t);
737
737
  }
738
- function vt(e) {
739
- return e ? typeof e == "function" ? e : _t(e) === null ? null : (t) => gt(t, e.denominator, e.subDenominator) : null;
738
+ function bt(e) {
739
+ return e ? typeof e == "function" ? e : yt(e) === null ? null : (t) => vt(t, e.denominator, e.subDenominator) : null;
740
740
  }
741
- function yt(e) {
741
+ function xt(e) {
742
742
  return e >= 1e9 ? (e / 1e9).toFixed(2) + "B" : e >= 1e6 ? (e / 1e6).toFixed(2) + "M" : e >= 1e3 ? (e / 1e3).toFixed(2) + "K" : e.toFixed(0);
743
743
  }
744
- function bt(e) {
744
+ function St(e) {
745
745
  let t = 0;
746
746
  for (let n of e) {
747
747
  let e = n.toString(), r = e.indexOf(".");
@@ -751,7 +751,7 @@ function bt(e) {
751
751
  }
752
752
  //#endregion
753
753
  //#region src/utils/priceSource.ts
754
- var xt = [
754
+ var Ct = [
755
755
  "close",
756
756
  "open",
757
757
  "high",
@@ -761,10 +761,10 @@ var xt = [
761
761
  "ohlc4",
762
762
  "hlcc4"
763
763
  ];
764
- function St(e) {
765
- return typeof e == "string" && xt.includes(e);
764
+ function wt(e) {
765
+ return typeof e == "string" && Ct.includes(e);
766
766
  }
767
- function Ct(e, t) {
767
+ function Tt(e, t) {
768
768
  switch (t) {
769
769
  case "open": return e.open;
770
770
  case "high": return e.high;
@@ -776,13 +776,13 @@ function Ct(e, t) {
776
776
  default: return e.close;
777
777
  }
778
778
  }
779
- var wt = /^ind:([^:]+):(.+)$/;
780
- function Tt(e, t) {
779
+ var Et = /^ind:([^:]+):(.+)$/;
780
+ function Dt(e, t) {
781
781
  return `ind:${e}:${t}`;
782
782
  }
783
- function Et(e) {
783
+ function Ot(e) {
784
784
  if (typeof e != "string") return null;
785
- let t = wt.exec(e);
785
+ let t = Et.exec(e);
786
786
  return t ? {
787
787
  instanceId: t[1],
788
788
  key: t[2]
@@ -790,11 +790,11 @@ function Et(e) {
790
790
  }
791
791
  //#endregion
792
792
  //#region src/utils/resample.ts
793
- var Dt = 864e5, Ot = 6e4;
794
- function kt(e, t, n = 1) {
795
- let r = At(e, t, n), i = [], a = null;
793
+ var kt = 864e5, At = 6e4;
794
+ function jt(e, t, n = 1) {
795
+ let r = Mt(e, t, n), i = [], a = null;
796
796
  for (let n of e) {
797
- let e = ot(n.time, t, r);
797
+ let e = ct(n.time, t, r);
798
798
  a === null || e !== a.time ? (a = {
799
799
  time: e,
800
800
  open: n.open,
@@ -806,49 +806,49 @@ function kt(e, t, n = 1) {
806
806
  }
807
807
  return i;
808
808
  }
809
- function At(e, t, n) {
810
- return typeof n == "number" || n.timeZone === void 0 || n.dates !== void 0 || S(n.timeZone) || !rt(t) ? n : {
809
+ function Mt(e, t, n) {
810
+ return typeof n == "number" || n.timeZone === void 0 || n.dates !== void 0 || x(n.timeZone) || !at(t) ? n : {
811
811
  ...n,
812
- dates: Je(e) === !0
812
+ dates: Ye(e) === !0
813
813
  };
814
814
  }
815
- var jt = (e) => e === "s" || e === "m" || e === "h" || e === "d";
816
- function Mt(e, t) {
817
- let n = T(e), r = T(t);
815
+ var Nt = (e) => e === "s" || e === "m" || e === "h" || e === "d";
816
+ function Pt(e, t) {
817
+ let n = w(e), r = w(t);
818
818
  if (!n || !r) return !1;
819
- let i = E(e);
820
- return n.unit === "d" && n.count > 1 ? !1 : jt(r.unit) ? jt(n.unit) && E(t) % i === 0 : n.unit === r.unit ? r.count % n.count === 0 : jt(n.unit) && Dt % i === 0;
819
+ let i = T(e);
820
+ return n.unit === "d" && n.count > 1 ? !1 : Nt(r.unit) ? Nt(n.unit) && T(t) % i === 0 : n.unit === r.unit ? r.count % n.count === 0 : Nt(n.unit) && kt % i === 0;
821
821
  }
822
- function Nt(e, t) {
823
- let n = E(e);
824
- if (!(n < Dt)) return !0;
822
+ function Ft(e, t) {
823
+ let n = T(e);
824
+ if (!(n < kt)) return !0;
825
825
  let r = (/* @__PURE__ */ new Date()).getUTCFullYear();
826
- return [Date.UTC(r, 0, 1), Date.UTC(r, 6, 1)].every((e) => C(t, e) * Ot % n === 0);
826
+ return [Date.UTC(r, 0, 1), Date.UTC(r, 6, 1)].every((e) => S(t, e) * At % n === 0);
827
827
  }
828
- function Pt(e, t, n = {}) {
829
- let { timeZone: r } = n, i = r !== void 0 && !S(r) && rt(e) ? r : void 0, a = null, o = 0;
828
+ function It(e, t, n = {}) {
829
+ let { timeZone: r } = n, i = r !== void 0 && !x(r) && at(e) ? r : void 0, a = null, o = 0;
830
830
  for (let n of t) {
831
- if (!Mt(n, e) || i !== void 0 && !Nt(n, i)) continue;
832
- let t = E(n);
831
+ if (!Pt(n, e) || i !== void 0 && !Ft(n, i)) continue;
832
+ let t = T(n);
833
833
  t > o && (a = n, o = t);
834
834
  }
835
835
  return a;
836
836
  }
837
837
  //#endregion
838
838
  //#region src/utils/symbols.ts
839
- function Ft(e, t) {
839
+ function Lt(e, t) {
840
840
  if (!e) return 0;
841
841
  if (e === t) return 1e3;
842
842
  if (e.startsWith(t)) return 600 - Math.min(100, e.length - t.length);
843
843
  let n = e.indexOf(t);
844
844
  return n >= 0 ? 300 - Math.min(100, n) : 0;
845
845
  }
846
- function It(e, t, n = 50, r) {
846
+ function Rt(e, t, n = 50, r) {
847
847
  let i = t.trim().toUpperCase();
848
848
  if (!i) return e.slice(0, n);
849
849
  let a = [];
850
850
  for (let t of e) {
851
- let e = Math.max(Ft(t.symbol.toUpperCase(), i), Ft((t.description ?? "").toUpperCase(), i) * .8);
851
+ let e = Math.max(Lt(t.symbol.toUpperCase(), i), Lt((t.description ?? "").toUpperCase(), i) * .8);
852
852
  e > 0 && a.push({
853
853
  info: t,
854
854
  score: e + (r?.(t) ?? 0)
@@ -856,7 +856,7 @@ function It(e, t, n = 50, r) {
856
856
  }
857
857
  return a.sort((e, t) => t.score - e.score || e.info.symbol.localeCompare(t.info.symbol)), a.slice(0, n).map((e) => e.info);
858
858
  }
859
- function Lt(e) {
859
+ function zt(e) {
860
860
  let t = typeof e == "number" ? e : Number(e);
861
861
  if (!Number.isFinite(t) || t <= 0) return 0;
862
862
  for (let e = 0; e <= 12; e++) {
@@ -865,10 +865,10 @@ function Lt(e) {
865
865
  }
866
866
  return 12;
867
867
  }
868
- function Rt(e) {
868
+ function Bt(e) {
869
869
  return e?.timeZone ?? e?.timezone;
870
870
  }
871
- function zt(e) {
871
+ function Vt(e) {
872
872
  let t = /^(\d{1,2}):(\d{2})$/.exec(e.trim());
873
873
  if (!t) return null;
874
874
  let n = Number(t[1]), r = Number(t[2]);
@@ -876,26 +876,26 @@ function zt(e) {
876
876
  }
877
877
  //#endregion
878
878
  //#region src/utils/marketStatus.ts
879
- var M = 864e5, N = 6e4, Bt = 8;
880
- function Vt(e, t) {
881
- let n = Rt(e), r = (e?.sessions ?? []).flatMap((e) => {
882
- let t = zt(e.start), n = zt(e.end);
879
+ var A = 864e5, j = 6e4, Ht = 8;
880
+ function Ut(e, t) {
881
+ let n = Bt(e), r = (e?.sessions ?? []).flatMap((e) => {
882
+ let t = Vt(e.start), n = Vt(e.end);
883
883
  return t === null || n === null || t === n ? [] : [{
884
884
  start: t,
885
885
  end: n,
886
886
  days: Array.isArray(e.days) ? e.days : null
887
887
  }];
888
888
  });
889
- if (!n || !Ne(n) || r.length === 0 || !Number.isFinite(t)) return {
889
+ if (!n || !Pe(n) || r.length === 0 || !Number.isFinite(t)) return {
890
890
  state: "always",
891
891
  next: null
892
892
  };
893
- 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 = [];
894
- for (let e = -1; e <= Bt; e++) {
895
- let t = a + e * M, n = (Math.floor(t / M) + 4) % 7;
893
+ let i = y(n, t) * j, a = Math.floor((t + i) / A) * A, o = (e) => e - y(n, e - y(n, e - i) * j) * j, s = [];
894
+ for (let e = -1; e <= Ht; e++) {
895
+ let t = a + e * A, n = (Math.floor(t / A) + 4) % 7;
896
896
  for (let e of r) {
897
897
  if (e.days && !e.days.includes(n)) continue;
898
- let r = t + e.start * N, i = (e.end > e.start ? t : t + M) + e.end * N;
898
+ let r = t + e.start * j, i = (e.end > e.start ? t : t + A) + e.end * j;
899
899
  s.push([o(r), o(i)]);
900
900
  }
901
901
  }
@@ -918,15 +918,15 @@ function Vt(e, t) {
918
918
  }
919
919
  //#endregion
920
920
  //#region src/utils/drawingOptions.ts
921
- var Ht = 48, Ut = 2e3, Wt = 1e4;
922
- function Gt(e) {
921
+ var Wt = 48, Gt = 2e3, Kt = 1e4;
922
+ function qt(e) {
923
923
  if (!Array.isArray(e)) return;
924
924
  let t = [];
925
925
  for (let n of e) {
926
- if (t.length >= Ht) break;
926
+ if (t.length >= Wt) break;
927
927
  if (typeof n != "object" || !n) continue;
928
928
  let { value: e, visible: r, color: i } = n;
929
- if (typeof e != "number" || !Number.isFinite(e) || Math.abs(e) > Wt || r !== void 0 && typeof r != "boolean") continue;
929
+ if (typeof e != "number" || !Number.isFinite(e) || Math.abs(e) > Kt || r !== void 0 && typeof r != "boolean") continue;
930
930
  let a = {
931
931
  value: e,
932
932
  visible: r ?? !0
@@ -935,109 +935,124 @@ function Gt(e) {
935
935
  }
936
936
  return t;
937
937
  }
938
- function Kt(e, t) {
938
+ function Jt(e, t) {
939
939
  switch (e.kind) {
940
940
  case "boolean": return typeof t == "boolean" ? t : void 0;
941
941
  case "number": return typeof t != "number" || !Number.isFinite(t) ? void 0 : Math.min(e.max ?? Infinity, Math.max(e.min ?? -Infinity, t));
942
942
  case "choice": return typeof t == "string" && e.choices.some((e) => e.value === t) ? t : void 0;
943
- case "levels": return Gt(t);
944
- case "text": return typeof t == "string" ? t.slice(0, Ut) : void 0;
943
+ case "levels": return qt(t);
944
+ case "text": return typeof t == "string" ? t.slice(0, Gt) : void 0;
945
945
  }
946
946
  }
947
- function qt(e, t) {
947
+ function Yt(e, t) {
948
948
  if (!e || typeof t != "object" || !t) return {};
949
949
  let n = {};
950
950
  for (let [r, i] of Object.entries(t)) {
951
951
  let t = e[r];
952
952
  if (!t) continue;
953
- let a = Kt(t, i);
953
+ let a = Jt(t, i);
954
954
  a !== void 0 && (n[r] = a);
955
955
  }
956
956
  return n;
957
957
  }
958
- function Jt(e) {
958
+ function Xt(e) {
959
959
  return Array.isArray(e) ? e.map((e) => ({ ...e })) : e;
960
960
  }
961
- function Yt(e, t, n) {
961
+ function Zt(e, t, n) {
962
962
  let r = e?.[n];
963
- return r ? Jt((t && n in t ? Kt(r, t[n]) : void 0) ?? r.default) : t?.[n];
963
+ return r ? Xt((t && n in t ? Jt(r, t[n]) : void 0) ?? r.default) : t?.[n];
964
964
  }
965
- function Xt(e, t) {
965
+ function Qt(e, t) {
966
966
  let n = {};
967
- for (let r of Object.keys(e ?? {})) n[r] = Yt(e, t, r);
967
+ for (let r of Object.keys(e ?? {})) n[r] = Zt(e, t, r);
968
968
  return n;
969
969
  }
970
970
  //#endregion
971
971
  //#region src/utils/drawingStyle.ts
972
- var Zt = [
972
+ var $t = [
973
973
  "solid",
974
974
  "dashed",
975
975
  "dotted"
976
- ], Qt = 64, $t = 2e3, en = 20, tn = 200;
977
- function nn(e, t, n) {
976
+ ], en = 64, tn = 2e3, nn = 20, rn = 200, an = 4e3, on = 20, sn = [
977
+ "left",
978
+ "center",
979
+ "right"
980
+ ];
981
+ function cn(e, t, n) {
978
982
  return typeof e == "number" && Number.isFinite(e) ? Math.min(n, Math.max(t, e)) : void 0;
979
983
  }
980
- function rn(e) {
981
- return typeof e == "string" && e.length > 0 && e.length <= Qt ? e : void 0;
984
+ function M(e) {
985
+ return typeof e == "string" && e.length > 0 && e.length <= en ? e : void 0;
982
986
  }
983
- function an(e) {
987
+ function ln(e) {
984
988
  if (typeof e != "object" || !e) return {};
985
- let t = e, n = {}, r = rn(t.color);
989
+ let t = e, n = {}, r = M(t.color);
986
990
  r !== void 0 && (n.color = r);
987
- let i = nn(t.lineWidth, .5, en);
988
- i !== void 0 && (n.lineWidth = i), Zt.includes(t.lineStyle) && (n.lineStyle = t.lineStyle);
989
- let a = rn(t.fillColor);
991
+ let i = cn(t.lineWidth, .5, nn);
992
+ i !== void 0 && (n.lineWidth = i), $t.includes(t.lineStyle) && (n.lineStyle = t.lineStyle);
993
+ let a = M(t.fillColor);
990
994
  a !== void 0 && (n.fillColor = a);
991
- let o = nn(t.fillOpacity, 0, 1);
995
+ let o = cn(t.fillOpacity, 0, 1);
992
996
  o !== void 0 && (n.fillOpacity = o);
993
- let s = nn(t.fontSize, 6, tn);
994
- return s !== void 0 && (n.fontSize = s), typeof t.text == "string" && (n.text = t.text.slice(0, $t)), n;
997
+ let s = cn(t.fontSize, 6, rn);
998
+ s !== void 0 && (n.fontSize = s), typeof t.text == "string" && (n.text = t.text.slice(0, tn));
999
+ for (let e of [
1000
+ "bold",
1001
+ "italic",
1002
+ "textBackground",
1003
+ "textBorder"
1004
+ ]) typeof t[e] == "boolean" && (n[e] = t[e]);
1005
+ sn.includes(t.textAlign) && (n.textAlign = t.textAlign);
1006
+ let c = M(t.textColor);
1007
+ c !== void 0 && (n.textColor = c);
1008
+ let l = M(t.borderColor);
1009
+ 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(an, Math.max(on, t.textWrap))), n;
995
1010
  }
996
1011
  //#endregion
997
1012
  //#region src/utils/chartTypeOptions.ts
998
- var P = (e) => typeof e == "number" && Number.isFinite(e) && e > 0, on = (e, t, n) => typeof e == "number" && Number.isInteger(e) && e >= t && e <= n, F = (e) => typeof e == "object" && !!e && !Array.isArray(e);
999
- function sn(e) {
1000
- if (!F(e)) return {};
1013
+ var N = (e) => typeof e == "number" && Number.isFinite(e) && e > 0, un = (e, t, n) => typeof e == "number" && Number.isInteger(e) && e >= t && e <= n, P = (e) => typeof e == "object" && !!e && !Array.isArray(e);
1014
+ function dn(e) {
1015
+ if (!P(e)) return {};
1001
1016
  let t = {};
1002
- if (F(e.renko)) {
1017
+ if (P(e.renko)) {
1003
1018
  let { boxSize: n, atrPeriod: r } = e.renko;
1004
1019
  t.renko = {
1005
- ...P(n) || n === "atr" ? { boxSize: n } : {},
1006
- ...on(r, 1, 500) ? { atrPeriod: r } : {}
1020
+ ...N(n) || n === "atr" ? { boxSize: n } : {},
1021
+ ...un(r, 1, 500) ? { atrPeriod: r } : {}
1007
1022
  };
1008
1023
  }
1009
- if (F(e.lineBreak)) {
1024
+ if (P(e.lineBreak)) {
1010
1025
  let { lines: n } = e.lineBreak;
1011
- t.lineBreak = on(n, 1, 10) ? { lines: n } : {};
1026
+ t.lineBreak = un(n, 1, 10) ? { lines: n } : {};
1012
1027
  }
1013
- if (F(e.kagi)) {
1028
+ if (P(e.kagi)) {
1014
1029
  let { reversal: n, reversalType: r } = e.kagi;
1015
1030
  t.kagi = {
1016
- ...P(n) ? { reversal: n } : {},
1031
+ ...N(n) ? { reversal: n } : {},
1017
1032
  ...r === "percent" || r === "price" ? { reversalType: r } : {}
1018
1033
  };
1019
1034
  }
1020
- if (F(e.pointAndFigure)) {
1035
+ if (P(e.pointAndFigure)) {
1021
1036
  let { boxSize: n, reversal: r } = e.pointAndFigure;
1022
1037
  t.pointAndFigure = {
1023
- ...P(n) || n === "auto" ? { boxSize: n } : {},
1024
- ...on(r, 1, 10) ? { reversal: r } : {}
1038
+ ...N(n) || n === "auto" ? { boxSize: n } : {},
1039
+ ...un(r, 1, 10) ? { reversal: r } : {}
1025
1040
  };
1026
1041
  }
1027
- if (F(e.rangeBars)) {
1042
+ if (P(e.rangeBars)) {
1028
1043
  let { range: n } = e.rangeBars;
1029
- t.rangeBars = P(n) || n === "auto" ? { range: n } : {};
1044
+ t.rangeBars = N(n) || n === "auto" ? { range: n } : {};
1030
1045
  }
1031
1046
  return t;
1032
1047
  }
1033
1048
  //#endregion
1034
1049
  //#region src/constants/themes.ts
1035
- var cn = "'Cascadia Mono', 'SF Mono', ui-monospace, Menlo, Consolas, monospace", ln = "-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif", un = {
1036
- family: cn,
1050
+ var fn = "'Cascadia Mono', 'SF Mono', ui-monospace, Menlo, Consolas, monospace", pn = "-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif", mn = {
1051
+ family: fn,
1037
1052
  sizeSmall: 11,
1038
1053
  sizeMedium: 13,
1039
1054
  sizeLarge: 15
1040
- }, I = {
1055
+ }, F = {
1041
1056
  amber: "#f2a93b",
1042
1057
  up: "#1c9e6d",
1043
1058
  down: "#e8505b",
@@ -1048,67 +1063,67 @@ var cn = "'Cascadia Mono', 'SF Mono', ui-monospace, Menlo, Consolas, monospace",
1048
1063
  rose: "#e25592",
1049
1064
  neutral: "#7d8696",
1050
1065
  ink: "#131416"
1051
- }, dn = .22;
1052
- function L(e) {
1053
- return m(e, dn);
1066
+ }, hn = .22;
1067
+ function I(e) {
1068
+ return p(e, hn);
1054
1069
  }
1055
- var fn = "#fbfaf6", R = "#1b1d21", pn = "#131416", z = "#e6e3dc", mn = "#1f7a5c", hn = "#b8423f", gn = "#4fae8a", _n = "#e2706b", vn = "#6a6966", yn = "#8d8a84", bn = {
1070
+ var gn = "#fbfaf6", L = "#1b1d21", _n = "#131416", R = "#e6e3dc", vn = "#1f7a5c", yn = "#b8423f", bn = "#4fae8a", xn = "#e2706b", Sn = "#6a6966", Cn = "#8d8a84", wn = {
1056
1071
  ceiling: "#FF00FF",
1057
1072
  floor: "#00FFFF",
1058
1073
  reference: "#FFD700"
1059
- }, xn = {
1074
+ }, Tn = {
1060
1075
  ceiling: "#a21caf",
1061
1076
  floor: "#0e7490",
1062
1077
  reference: "#8a6a00"
1063
- }, Sn = [
1064
- I.blue,
1065
- I.ochre,
1066
- I.violet,
1067
- I.cyan,
1068
- I.rose
1069
- ], Cn = {
1078
+ }, En = [
1079
+ F.blue,
1080
+ F.ochre,
1081
+ F.violet,
1082
+ F.cyan,
1083
+ F.rose
1084
+ ], Dn = {
1070
1085
  name: "dark",
1071
- background: pn,
1072
- text: z,
1086
+ background: _n,
1087
+ text: R,
1073
1088
  textSecondary: "#8d8b86",
1074
1089
  grid: "#1d1e21",
1075
- crosshair: vn,
1076
- candleUp: gn,
1077
- candleDown: _n,
1078
- candleUpWick: gn,
1079
- candleDownWick: _n,
1080
- lineColor: z,
1081
- areaTopColor: m(z, .14),
1082
- areaBottomColor: m(z, 0),
1083
- volumeUp: m(z, .14),
1084
- volumeDown: m(z, .08),
1090
+ crosshair: Sn,
1091
+ candleUp: bn,
1092
+ candleDown: xn,
1093
+ candleUpWick: bn,
1094
+ candleDownWick: xn,
1095
+ lineColor: R,
1096
+ areaTopColor: p(R, .14),
1097
+ areaBottomColor: p(R, 0),
1098
+ volumeUp: p(R, .14),
1099
+ volumeDown: p(R, .08),
1085
1100
  axisLine: "#2a2b2f",
1086
1101
  axisLabel: "#a9a6a0",
1087
1102
  axisLabelBackground: "#232427",
1088
- font: un,
1089
- priceLimits: bn
1090
- }, wn = {
1103
+ font: mn,
1104
+ priceLimits: wn
1105
+ }, On = {
1091
1106
  name: "light",
1092
- background: fn,
1093
- text: R,
1107
+ background: gn,
1108
+ text: L,
1094
1109
  textSecondary: "#6b6f76",
1095
1110
  grid: "#ece8df",
1096
- crosshair: yn,
1097
- candleUp: mn,
1098
- candleDown: hn,
1099
- candleUpWick: mn,
1100
- candleDownWick: hn,
1101
- lineColor: R,
1102
- areaTopColor: m(R, .12),
1103
- areaBottomColor: m(R, 0),
1104
- volumeUp: m(R, .13),
1105
- volumeDown: m(R, .08),
1111
+ crosshair: Cn,
1112
+ candleUp: vn,
1113
+ candleDown: yn,
1114
+ candleUpWick: vn,
1115
+ candleDownWick: yn,
1116
+ lineColor: L,
1117
+ areaTopColor: p(L, .12),
1118
+ areaBottomColor: p(L, 0),
1119
+ volumeUp: p(L, .13),
1120
+ volumeDown: p(L, .08),
1106
1121
  axisLine: "#cfcac0",
1107
1122
  axisLabel: "#4a4e57",
1108
1123
  axisLabelBackground: "#eeebe3",
1109
- font: un,
1110
- priceLimits: xn
1111
- }, B = {
1124
+ font: mn,
1125
+ priceLimits: Tn
1126
+ }, z = {
1112
1127
  name: "terminal",
1113
1128
  background: "#0E0E0E",
1114
1129
  text: "#C0C0C0",
@@ -1122,8 +1137,8 @@ var fn = "#fbfaf6", R = "#1b1d21", pn = "#131416", z = "#e6e3dc", mn = "#1f7a5c"
1122
1137
  lineColor: "#3D8BFD",
1123
1138
  areaTopColor: "rgba(61, 139, 253, 0.3)",
1124
1139
  areaBottomColor: "rgba(61, 139, 253, 0.0)",
1125
- volumeUp: L("#00FF87"),
1126
- volumeDown: L("#FF3B4D"),
1140
+ volumeUp: I("#00FF87"),
1141
+ volumeDown: I("#FF3B4D"),
1127
1142
  axisLine: "#1A1A1A",
1128
1143
  axisLabel: "#8A8A8A",
1129
1144
  axisLabelBackground: "#1A1A1A",
@@ -1133,11 +1148,11 @@ var fn = "#fbfaf6", R = "#1b1d21", pn = "#131416", z = "#e6e3dc", mn = "#1f7a5c"
1133
1148
  sizeMedium: 12,
1134
1149
  sizeLarge: 14
1135
1150
  }
1136
- }, Tn = new Set([B.volumeUp, B.volumeDown]);
1137
- function V(e) {
1151
+ }, kn = new Set([z.volumeUp, z.volumeDown]);
1152
+ function B(e) {
1138
1153
  let t = (e, t) => {
1139
- if (!Tn.has(e)) return e;
1140
- let n = L(t);
1154
+ if (!kn.has(e)) return e;
1155
+ let n = I(t);
1141
1156
  return n === t ? e : n;
1142
1157
  };
1143
1158
  return {
@@ -1147,67 +1162,67 @@ function V(e) {
1147
1162
  }
1148
1163
  //#endregion
1149
1164
  //#region src/utils/chartStyle.ts
1150
- var En = [
1165
+ var An = [
1151
1166
  "solid",
1152
1167
  "dashed",
1153
1168
  "dotted"
1154
- ], Dn = 20, On = 64, kn = 2, An = [
1169
+ ], jn = 20, Mn = 64, Nn = 2, Pn = [
1155
1170
  /^#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i,
1156
1171
  /^[a-z]{3,30}$/i,
1157
1172
  /^(?:rgba?|hsla?|hwb|lab|lch|oklab|oklch|color)\([0-9a-z.,%/\s-]*\)$/i
1158
1173
  ];
1159
- function H(e) {
1160
- return typeof e == "string" && e.length <= On && An.some((t) => t.test(e.trim()));
1174
+ function V(e) {
1175
+ return typeof e == "string" && e.length <= Mn && Pn.some((t) => t.test(e.trim()));
1161
1176
  }
1162
- function jn(e, t) {
1177
+ function Fn(e, t) {
1163
1178
  switch (e) {
1164
- case "color": return H(t);
1165
- case "lineStyle": return En.includes(t);
1166
- case "width": return typeof t == "number" && Number.isFinite(t) && t > 0 && t <= Dn;
1179
+ case "color": return V(t);
1180
+ case "lineStyle": return An.includes(t);
1181
+ case "width": return typeof t == "number" && Number.isFinite(t) && t > 0 && t <= jn;
1167
1182
  case "boolean": return typeof t == "boolean";
1168
1183
  }
1169
1184
  }
1170
- function Mn(e) {
1185
+ function In(e) {
1171
1186
  return Object.prototype.hasOwnProperty.call(t, e);
1172
1187
  }
1173
- function Nn(e) {
1188
+ function Ln(e) {
1174
1189
  let n = {}, r = [];
1175
1190
  if (typeof e != "object" || !e || Array.isArray(e)) return {
1176
1191
  overrides: {},
1177
1192
  rejected: r
1178
1193
  };
1179
- for (let [i, a] of Object.entries(e)) Mn(i) ? a === null ? n[i] = null : jn(t[i], a) ? n[i] = a : r.push(i) : r.push(i);
1194
+ for (let [i, a] of Object.entries(e)) In(i) ? a === null ? n[i] = null : Fn(t[i], a) ? n[i] = a : r.push(i) : r.push(i);
1180
1195
  return {
1181
1196
  overrides: n,
1182
1197
  rejected: r
1183
1198
  };
1184
1199
  }
1185
- function Pn(e) {
1200
+ function Rn(e) {
1186
1201
  if (typeof e != "object" || !e || Array.isArray(e)) return null;
1187
1202
  let { background: t, separator: n } = e, r = {
1188
- ...H(t) ? { background: t } : {},
1189
- ...H(n) ? { separator: n } : {}
1203
+ ...V(t) ? { background: t } : {},
1204
+ ...V(n) ? { separator: n } : {}
1190
1205
  };
1191
1206
  return Object.keys(r).length > 0 ? r : null;
1192
1207
  }
1193
- var Fn = /^[A-Za-z0-9_]{1,32}$/;
1194
- function In(e) {
1208
+ var zn = /^[A-Za-z0-9_]{1,32}$/;
1209
+ function Bn(e) {
1195
1210
  if (typeof e != "object" || !e || Array.isArray(e)) return;
1196
1211
  let t = {};
1197
1212
  for (let [n, r] of Object.entries(e)) {
1198
- if (!Fn.test(n) || typeof r != "object" || !r) continue;
1213
+ if (!zn.test(n) || typeof r != "object" || !r) continue;
1199
1214
  let { lineStyle: e, visible: i } = r, a = {
1200
- ...En.includes(e) ? { lineStyle: e } : {},
1215
+ ...An.includes(e) ? { lineStyle: e } : {},
1201
1216
  ...typeof i == "boolean" ? { visible: i } : {}
1202
1217
  };
1203
1218
  Object.keys(a).length > 0 && (t[n] = a);
1204
1219
  }
1205
1220
  return Object.keys(t).length > 0 ? t : void 0;
1206
1221
  }
1207
- function Ln(e, t, n = 1) {
1222
+ function Vn(e, t, n = 1) {
1208
1223
  return e === "solid" ? [] : e === "dotted" ? [n, n * 2] : [...t];
1209
1224
  }
1210
- function Rn(e, t, n) {
1225
+ function Hn(e, t, n) {
1211
1226
  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;
1212
1227
  return {
1213
1228
  up: o,
@@ -1215,12 +1230,12 @@ function Rn(e, t, n) {
1215
1230
  wickUp: r("wickUpColor") ?? t("series.candlestick.wickUpColor") ?? (i === void 0 ? e.candleUpWick : o),
1216
1231
  wickDown: r("wickDownColor") ?? t("series.candlestick.wickDownColor") ?? (a === void 0 ? e.candleDownWick : s),
1217
1232
  line: r("color") ?? r("lineColor") ?? t("series.line.color") ?? e.lineColor,
1218
- lineWidth: r("lineWidth") ?? t("series.line.lineWidth") ?? kn,
1233
+ lineWidth: r("lineWidth") ?? t("series.line.lineWidth") ?? Nn,
1219
1234
  top: r("topColor") ?? t("series.area.topColor") ?? e.areaTopColor,
1220
1235
  bottom: r("bottomColor") ?? t("series.area.bottomColor") ?? e.areaBottomColor
1221
1236
  };
1222
1237
  }
1223
- function U(e, t, n) {
1238
+ function H(e, t, n) {
1224
1239
  return {
1225
1240
  visible: e(`${t}.visible`) ?? n.visible,
1226
1241
  color: e(`${t}.color`) ?? n.color,
@@ -1228,21 +1243,21 @@ function U(e, t, n) {
1228
1243
  width: e(`${t}.width`) ?? n.width
1229
1244
  };
1230
1245
  }
1231
- function zn(e, t, n) {
1232
- let { style: r, ...i } = e, a = n, o = (e) => a[e], s = Rn(i, o, t), c = o("background.color") ?? i.background, l = (e, t) => o(e) ?? t, u = (e) => o(e) ?? null, d = {
1246
+ function Un(e, t, n) {
1247
+ let { style: r, ...i } = e, a = n, o = (e) => a[e], s = Hn(i, o, t), c = o("background.color") ?? i.background, l = (e, t) => o(e) ?? t, u = (e) => o(e) ?? null, d = {
1233
1248
  panes: {
1234
1249
  background: l("panes.background", c),
1235
1250
  separator: l("panes.separatorColor", i.axisLine),
1236
1251
  title: l("panes.titleColor", i.textSecondary)
1237
1252
  },
1238
1253
  grid: {
1239
- horizontal: U(o, "grid.horizontal", {
1254
+ horizontal: H(o, "grid.horizontal", {
1240
1255
  visible: !0,
1241
1256
  color: i.grid,
1242
1257
  style: "solid",
1243
1258
  width: 1
1244
1259
  }),
1245
- vertical: U(o, "grid.vertical", {
1260
+ vertical: H(o, "grid.vertical", {
1246
1261
  visible: !0,
1247
1262
  color: i.grid,
1248
1263
  style: "solid",
@@ -1250,13 +1265,13 @@ function zn(e, t, n) {
1250
1265
  })
1251
1266
  },
1252
1267
  crosshair: {
1253
- horizontal: U(o, "crosshair.horizontal", {
1268
+ horizontal: H(o, "crosshair.horizontal", {
1254
1269
  visible: !0,
1255
1270
  color: i.crosshair,
1256
1271
  style: "solid",
1257
1272
  width: 1
1258
1273
  }),
1259
- vertical: U(o, "crosshair.vertical", {
1274
+ vertical: H(o, "crosshair.vertical", {
1260
1275
  visible: !0,
1261
1276
  color: i.crosshair,
1262
1277
  style: "solid",
@@ -1328,7 +1343,7 @@ function zn(e, t, n) {
1328
1343
  style: d
1329
1344
  };
1330
1345
  }
1331
- var Bn = {
1346
+ var Wn = {
1332
1347
  "background.color": (e) => e.background,
1333
1348
  "panes.background": (e, t) => t.panes.background,
1334
1349
  "panes.separatorColor": (e, t) => t.panes.separator,
@@ -1347,8 +1362,8 @@ var Bn = {
1347
1362
  "lastPrice.downColor": (e, t) => t.lastPrice.down,
1348
1363
  "lastPrice.style": (e, t) => t.lastPrice.style,
1349
1364
  "lastPrice.width": (e, t) => t.lastPrice.width,
1350
- "volume.upColor": (e) => V(e).up,
1351
- "volume.downColor": (e) => V(e).down,
1365
+ "volume.upColor": (e) => B(e).up,
1366
+ "volume.downColor": (e) => B(e).down,
1352
1367
  "sessionBreaks.color": (e, t) => t.sessionBreaks.color,
1353
1368
  "sessionBreaks.style": (e, t) => t.sessionBreaks.style,
1354
1369
  "sessionBreaks.width": (e, t) => t.sessionBreaks.width,
@@ -1365,16 +1380,16 @@ var Bn = {
1365
1380
  "tradeZones.lossColor": (e, t) => t.tradeZones.loss,
1366
1381
  "tradeZones.activeColor": (e, t) => t.tradeZones.active,
1367
1382
  "drawings.handleColor": (e, t) => t.drawings.handle
1368
- }, Vn = {
1383
+ }, Gn = {
1369
1384
  visible: "visible",
1370
1385
  color: "color",
1371
1386
  style: "style",
1372
1387
  width: "width"
1373
1388
  };
1374
- function Hn(e, t, n, r = "candlestick") {
1389
+ function Kn(e, t, n, r = "candlestick") {
1375
1390
  let i = n.split(".");
1376
1391
  if (i[0] === "series") {
1377
- let n = Rn(e, (e) => t[e], i[1]);
1392
+ let n = Hn(e, (e) => t[e], i[1]);
1378
1393
  switch (i[2]) {
1379
1394
  case "upColor": return n.up;
1380
1395
  case "downColor": return n.down;
@@ -1387,12 +1402,12 @@ function Hn(e, t, n, r = "candlestick") {
1387
1402
  case "bottomColor": return n.bottom;
1388
1403
  }
1389
1404
  }
1390
- let a = zn(e, r, t), o = a.style;
1391
- return i[0] === "grid" || i[0] === "crosshair" && (i[1] === "horizontal" || i[1] === "vertical") ? (i[0] === "grid" ? o.grid : o.crosshair)[i[1]][Vn[i[2]]] : Bn[n]?.(a, o) ?? null;
1405
+ let a = Un(e, r, t), o = a.style;
1406
+ return i[0] === "grid" || i[0] === "crosshair" && (i[1] === "horizontal" || i[1] === "vertical") ? (i[0] === "grid" ? o.grid : o.crosshair)[i[1]][Gn[i[2]]] : Wn[n]?.(a, o) ?? null;
1392
1407
  }
1393
1408
  //#endregion
1394
1409
  //#region src/constants/defaults.ts
1395
- var Un = {
1410
+ var qn = {
1396
1411
  autoScale: !0,
1397
1412
  rightMargin: 5,
1398
1413
  minBarSpacing: 2,
@@ -1403,7 +1418,7 @@ var Un = {
1403
1418
  vLineStyle: "solid"
1404
1419
  },
1405
1420
  crosshair: { mode: "magnet" }
1406
- }, Wn = [
1421
+ }, Jn = [
1407
1422
  "1s",
1408
1423
  "1m",
1409
1424
  "3m",
@@ -1420,7 +1435,7 @@ var Un = {
1420
1435
  "3d",
1421
1436
  "1w",
1422
1437
  "1M"
1423
- ], Gn = [
1438
+ ], Yn = [
1424
1439
  "1m",
1425
1440
  "5m",
1426
1441
  "15m",
@@ -1434,7 +1449,7 @@ var Un = {
1434
1449
  "3M",
1435
1450
  "6M",
1436
1451
  "12M"
1437
- ], Kn = [
1452
+ ], Xn = [
1438
1453
  "1m",
1439
1454
  "5m",
1440
1455
  "15m",
@@ -1444,7 +1459,7 @@ var Un = {
1444
1459
  "1d",
1445
1460
  "1w",
1446
1461
  "1M"
1447
- ], qn = [
1462
+ ], Zn = [
1448
1463
  "1m",
1449
1464
  "5m",
1450
1465
  "15m",
@@ -1452,7 +1467,7 @@ var Un = {
1452
1467
  "4h",
1453
1468
  "1d",
1454
1469
  "1w"
1455
- ], Jn = 8, Yn = 2, Xn = 70, Zn = 30, Qn = 60, $n = 120, er = (1 + Math.sqrt(5)) / 2, tr = [
1470
+ ], Qn = 8, $n = 2, er = 70, tr = 30, nr = 60, rr = 120, ir = (1 + Math.sqrt(5)) / 2, ar = [
1456
1471
  1,
1457
1472
  2,
1458
1473
  3,
@@ -1464,12 +1479,12 @@ var Un = {
1464
1479
  55,
1465
1480
  89
1466
1481
  ];
1467
- function nr(e, t, n = 1) {
1468
- return Math.round(e * er ** (t / n));
1482
+ function or(e, t, n = 1) {
1483
+ return Math.round(e * ir ** (t / n));
1469
1484
  }
1470
1485
  //#endregion
1471
1486
  //#region src/i18n/en.ts
1472
- var W = {
1487
+ var U = {
1473
1488
  candlestick: "Candlestick",
1474
1489
  line: "Line",
1475
1490
  area: "Area",
@@ -1572,7 +1587,7 @@ var W = {
1572
1587
  error: "Error",
1573
1588
  numberDecimalSeparator: ".",
1574
1589
  numberGroupSeparator: ","
1575
- }, rr = {
1590
+ }, sr = {
1576
1591
  candlestick: "Nến",
1577
1592
  line: "Đường",
1578
1593
  area: "Vùng",
@@ -1675,72 +1690,72 @@ var W = {
1675
1690
  error: "Lỗi",
1676
1691
  numberDecimalSeparator: ",",
1677
1692
  numberGroupSeparator: "."
1678
- }, G = new Map([["en", W], ["vi", rr]]), K = "en", ir = W;
1679
- function ar(e) {
1680
- K = e, ir = G.get(e) ?? W;
1693
+ }, W = new Map([["en", U], ["vi", sr]]), G = "en", cr = U;
1694
+ function lr(e) {
1695
+ G = e, cr = W.get(e) ?? U;
1681
1696
  }
1682
- function or() {
1683
- return K;
1697
+ function ur() {
1698
+ return G;
1684
1699
  }
1685
- function sr(e) {
1686
- return ir[e] ?? W[e] ?? e;
1700
+ function dr(e) {
1701
+ return cr[e] ?? U[e] ?? e;
1687
1702
  }
1688
- function cr(e, t) {
1689
- G.set(e, t);
1703
+ function fr(e, t) {
1704
+ W.set(e, t);
1690
1705
  }
1691
- function lr(e) {
1692
- return G.get(e ?? K) ?? W;
1706
+ function pr(e) {
1707
+ return W.get(e ?? G) ?? U;
1693
1708
  }
1694
- function q(e, t = 2, n) {
1695
- 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 = "";
1709
+ function K(e, t = 2, n) {
1710
+ 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 = "";
1696
1711
  for (let e = l.length - 1, t = 0; e >= 0; e--, t++) t > 0 && t % 3 == 0 && (u = a + u), u = l[e] + u;
1697
1712
  return c && (u = "-" + u), s ? u + i + s : u;
1698
1713
  }
1699
- function ur(e) {
1700
- return q(e, 0, "vi");
1714
+ function mr(e) {
1715
+ return K(e, 0, "vi");
1701
1716
  }
1702
- var dr = [
1717
+ var hr = [
1703
1718
  [0xe8d4a51000, "조"],
1704
1719
  [1e8, "억"],
1705
1720
  [1e4, "만"]
1706
1721
  ];
1707
- function fr(e) {
1722
+ function gr(e) {
1708
1723
  return /^ko([-_]|$)/i.test(e);
1709
1724
  }
1710
- function pr(e, t, n) {
1725
+ function _r(e, t, n) {
1711
1726
  try {
1712
- return j(e, t, n);
1727
+ return k(e, t, n);
1713
1728
  } catch {
1714
- return q(e, t, "en");
1729
+ return K(e, t, "en");
1715
1730
  }
1716
1731
  }
1717
- function mr(e, t) {
1718
- let n = t ?? K;
1732
+ function vr(e, t) {
1733
+ let n = t ?? G;
1719
1734
  if (!Number.isFinite(e)) return String(e);
1720
- if (fr(n)) {
1721
- for (let [t, r] of dr) if (Math.round(e / t * 100) >= 100) return q(e / t, 2, n) + r;
1722
- return q(e, 0, n);
1735
+ if (gr(n)) {
1736
+ for (let [t, r] of hr) if (Math.round(e / t * 100) >= 100) return K(e / t, 2, n) + r;
1737
+ return K(e, 0, n);
1723
1738
  }
1724
- let r = G.has(n) ? (e, t) => q(e, t, n) : (e, t) => pr(e, t, n);
1739
+ let r = W.has(n) ? (e, t) => K(e, t, n) : (e, t) => _r(e, t, n);
1725
1740
  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);
1726
1741
  }
1727
1742
  //#endregion
1728
1743
  //#region src/market/presets.ts
1729
- var J = {
1744
+ var q = {
1730
1745
  up: "#22C55E",
1731
1746
  down: "#EF4444",
1732
1747
  unchanged: "#EAB308",
1733
1748
  ceiling: "#D946EF",
1734
1749
  floor: "#06B6D4",
1735
1750
  reference: "#EAB308"
1736
- }, Y = "Asia/Ho_Chi_Minh", hr = {
1751
+ }, J = "Asia/Ho_Chi_Minh", yr = {
1737
1752
  up: "#E8313F",
1738
1753
  down: "#2F6FEB",
1739
1754
  unchanged: "#8B8F99",
1740
1755
  ceiling: "#C2121F",
1741
1756
  floor: "#1E4FC2",
1742
1757
  reference: "#8B8F99"
1743
- }, gr = "Asia/Seoul", _r = [
1758
+ }, br = "Asia/Seoul", xr = [
1744
1759
  {
1745
1760
  name: "ATO",
1746
1761
  startTime: "09:00",
@@ -1771,7 +1786,7 @@ var J = {
1771
1786
  endTime: "14:45",
1772
1787
  type: "preClose"
1773
1788
  }
1774
- ], vr = [
1789
+ ], Sr = [
1775
1790
  {
1776
1791
  name: "Phiên 1",
1777
1792
  startTime: "09:15",
@@ -1802,7 +1817,7 @@ var J = {
1802
1817
  endTime: "15:00",
1803
1818
  type: "postClose"
1804
1819
  }
1805
- ], yr = [
1820
+ ], Cr = [
1806
1821
  {
1807
1822
  name: "Phiên 1",
1808
1823
  startTime: "09:15",
@@ -1821,7 +1836,7 @@ var J = {
1821
1836
  endTime: "14:30",
1822
1837
  type: "continuous"
1823
1838
  }
1824
- ], br = [
1839
+ ], wr = [
1825
1840
  {
1826
1841
  name: "ATO",
1827
1842
  startTime: "08:45",
@@ -1852,7 +1867,7 @@ var J = {
1852
1867
  endTime: "14:45",
1853
1868
  type: "preClose"
1854
1869
  }
1855
- ], xr = [
1870
+ ], Tr = [
1856
1871
  {
1857
1872
  name: "장전 동시호가",
1858
1873
  startTime: "08:30",
@@ -1883,7 +1898,7 @@ var J = {
1883
1898
  endTime: "20:00",
1884
1899
  type: "postClose"
1885
1900
  }
1886
- ], Sr = [
1901
+ ], Er = [
1887
1902
  {
1888
1903
  name: "프리마켓",
1889
1904
  startTime: "08:00",
@@ -1902,7 +1917,7 @@ var J = {
1902
1917
  endTime: "20:00",
1903
1918
  type: "postClose"
1904
1919
  }
1905
- ], Cr = [
1920
+ ], Dr = [
1906
1921
  {
1907
1922
  from: 0,
1908
1923
  step: 1
@@ -1931,7 +1946,7 @@ var J = {
1931
1946
  from: 5e5,
1932
1947
  step: 1e3
1933
1948
  }
1934
- ], wr = [
1949
+ ], Or = [
1935
1950
  {
1936
1951
  from: 0,
1937
1952
  step: 1e-8
@@ -1992,7 +2007,7 @@ var J = {
1992
2007
  from: 1e6,
1993
2008
  step: 1e3
1994
2009
  }
1995
- ], Tr = {
2010
+ ], kr = {
1996
2011
  type: "stock",
1997
2012
  exchange: "HOSE",
1998
2013
  currency: "VND",
@@ -2013,48 +2028,48 @@ var J = {
2013
2028
  step: .1
2014
2029
  }
2015
2030
  ],
2016
- timeZone: Y,
2031
+ timeZone: J,
2017
2032
  priceLimits: {
2018
2033
  enabled: !0,
2019
2034
  ceilingPercent: 7,
2020
2035
  floorPercent: 7
2021
2036
  },
2022
- sessions: _r,
2023
- colorScheme: J
2024
- }, Er = {
2025
- ...Tr,
2037
+ sessions: xr,
2038
+ colorScheme: q
2039
+ }, Ar = {
2040
+ ...kr,
2026
2041
  priceSteps: void 0
2027
- }, Dr = {
2042
+ }, jr = {
2028
2043
  type: "stock",
2029
2044
  exchange: "HNX",
2030
2045
  currency: "VND",
2031
2046
  pricePrecision: 1,
2032
2047
  volumeUnit: 100,
2033
2048
  priceStep: .1,
2034
- timeZone: Y,
2049
+ timeZone: J,
2035
2050
  priceLimits: {
2036
2051
  enabled: !0,
2037
2052
  ceilingPercent: 10,
2038
2053
  floorPercent: 10
2039
2054
  },
2040
- sessions: vr,
2041
- colorScheme: J
2042
- }, Or = {
2055
+ sessions: Sr,
2056
+ colorScheme: q
2057
+ }, Mr = {
2043
2058
  type: "stock",
2044
2059
  exchange: "UPCOM",
2045
2060
  currency: "VND",
2046
2061
  pricePrecision: 1,
2047
2062
  volumeUnit: 100,
2048
2063
  priceStep: .1,
2049
- timeZone: Y,
2064
+ timeZone: J,
2050
2065
  priceLimits: {
2051
2066
  enabled: !0,
2052
2067
  ceilingPercent: 15,
2053
2068
  floorPercent: 15
2054
2069
  },
2055
- sessions: yr,
2056
- colorScheme: J
2057
- }, kr = {
2070
+ sessions: Cr,
2071
+ colorScheme: q
2072
+ }, Nr = {
2058
2073
  type: "futures",
2059
2074
  exchange: "HNX",
2060
2075
  currency: "VND",
@@ -2062,50 +2077,50 @@ var J = {
2062
2077
  volumeUnit: 1,
2063
2078
  priceStep: .1,
2064
2079
  contractMultiplier: 1e5,
2065
- timeZone: Y,
2080
+ timeZone: J,
2066
2081
  priceLimits: {
2067
2082
  enabled: !0,
2068
2083
  ceilingPercent: 7,
2069
2084
  floorPercent: 7
2070
2085
  },
2071
- sessions: br,
2072
- colorScheme: J
2073
- }, Ar = {
2086
+ sessions: wr,
2087
+ colorScheme: q
2088
+ }, Pr = {
2074
2089
  type: "stock",
2075
2090
  exchange: "KRX",
2076
2091
  currency: "KRW",
2077
2092
  pricePrecision: 0,
2078
2093
  volumeUnit: 1,
2079
2094
  priceStep: 1,
2080
- priceSteps: Cr,
2081
- timeZone: gr,
2095
+ priceSteps: Dr,
2096
+ timeZone: br,
2082
2097
  priceLimits: {
2083
2098
  enabled: !0,
2084
2099
  ceilingPercent: 30,
2085
2100
  floorPercent: 30,
2086
2101
  roundMove: !0
2087
2102
  },
2088
- sessions: xr,
2089
- colorScheme: hr
2090
- }, jr = {
2091
- ...Ar,
2103
+ sessions: Tr,
2104
+ colorScheme: yr
2105
+ }, Fr = {
2106
+ ...Pr,
2092
2107
  exchange: "NXT",
2093
- sessions: Sr
2094
- }, Mr = {
2108
+ sessions: Er
2109
+ }, Ir = {
2095
2110
  type: "crypto",
2096
2111
  exchange: "UPBIT",
2097
2112
  currency: "KRW",
2098
2113
  priceStep: 1e-8,
2099
- priceSteps: wr,
2100
- timeZone: gr,
2114
+ priceSteps: Or,
2115
+ timeZone: br,
2101
2116
  priceLimits: { enabled: !1 },
2102
- colorScheme: hr
2103
- }, Nr = {
2117
+ colorScheme: yr
2118
+ }, Lr = {
2104
2119
  type: "crypto",
2105
2120
  currency: "USDT",
2106
2121
  pricePrecision: 2,
2107
2122
  priceLimits: { enabled: !1 }
2108
- }, Pr = {
2123
+ }, Rr = {
2109
2124
  type: "stock",
2110
2125
  exchange: "NYSE",
2111
2126
  currency: "USD",
@@ -2134,10 +2149,10 @@ var J = {
2134
2149
  }
2135
2150
  ]
2136
2151
  };
2137
- function Fr(e) {
2138
- return Ir(e, J);
2152
+ function zr(e) {
2153
+ return Br(e, q);
2139
2154
  }
2140
- function Ir(e, t) {
2155
+ function Br(e, t) {
2141
2156
  return {
2142
2157
  ...e,
2143
2158
  candleUp: t.up,
@@ -2146,33 +2161,33 @@ function Ir(e, t) {
2146
2161
  candleDownWick: t.down
2147
2162
  };
2148
2163
  }
2149
- var X = 1e-9;
2150
- function Lr(e, t) {
2164
+ var Y = 1e-9;
2165
+ function X(e, t) {
2151
2166
  let n = t.priceStep;
2152
- for (let r of t.priceSteps ?? []) e + X >= r.from && (n = r.step);
2167
+ for (let r of t.priceSteps ?? []) e + Y >= r.from && (n = r.step);
2153
2168
  return n !== void 0 && n > 0 ? n : void 0;
2154
2169
  }
2155
- function Rr(e, t) {
2170
+ function Vr(e, t) {
2156
2171
  let n = t.priceStep;
2157
- for (let r of t.priceSteps ?? []) e - X > r.from && (n = r.step);
2172
+ for (let r of t.priceSteps ?? []) e - Y > r.from && (n = r.step);
2158
2173
  return n !== void 0 && n > 0 ? n : void 0;
2159
2174
  }
2160
2175
  function Z(e, t, n = "nearest") {
2161
- let r = Lr(e, t);
2176
+ let r = X(e, t);
2162
2177
  if (r === void 0 || !Number.isFinite(e)) return e;
2163
- let i = e / r, a = n === "down" ? Math.floor(i + X) : n === "up" ? Math.ceil(i - X) : Math.round(i);
2164
- return Number((a * r).toFixed(Lt(r)));
2178
+ let i = e / r, a = n === "down" ? Math.floor(i + Y) : n === "up" ? Math.ceil(i - Y) : Math.round(i);
2179
+ return Number((a * r).toFixed(zt(r)));
2165
2180
  }
2166
- function zr(e, t) {
2181
+ function Hr(e, t) {
2167
2182
  if (!t.priceLimits?.enabled || !t.priceLimits.ceilingPercent) return null;
2168
- 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 = Lr(i, t);
2183
+ let n = t.priceLimits.ceilingPercent / 100, r = (t.priceLimits.floorPercent ?? t.priceLimits.ceilingPercent) / 100, i = e, a = i * (1 + n), o = i * (1 - r), s = X(i, t);
2169
2184
  if (s === void 0) return {
2170
2185
  ceiling: a,
2171
2186
  floor: o,
2172
2187
  reference: i
2173
2188
  };
2174
2189
  let c = Z(i + s, t);
2175
- if (Math.abs(i - s) < X) return {
2190
+ if (Math.abs(i - s) < Y) return {
2176
2191
  ceiling: c,
2177
2192
  floor: i,
2178
2193
  reference: i
@@ -2186,14 +2201,14 @@ function zr(e, t) {
2186
2201
  };
2187
2202
  l = Z(i + Z(i * n, e, "down"), t, "down"), u = Z(i - Z(i * r, e, "down"), t, "down");
2188
2203
  } else l = Z(a, t, "down"), u = Z(o, t, "up");
2189
- return l <= i && (l = c), u >= i && (u = Z(i - (Rr(i, t) ?? s), t)), u <= 0 && (u = i), {
2204
+ return l <= i && (l = c), u >= i && (u = Z(i - (Vr(i, t) ?? s), t)), u <= 0 && (u = i), {
2190
2205
  ceiling: l,
2191
2206
  floor: u,
2192
2207
  reference: i
2193
2208
  };
2194
2209
  }
2195
2210
  var Q = (e, t) => Math.round(e * t * 1e9) / 1e9;
2196
- function Br(e, t) {
2211
+ function Ur(e, t) {
2197
2212
  let n = Math.round(Math.log10(t));
2198
2213
  return {
2199
2214
  ...e,
@@ -2209,11 +2224,11 @@ function Br(e, t) {
2209
2224
  }
2210
2225
  };
2211
2226
  }
2212
- var Vr = 6e4, Hr = 864e5;
2213
- function Ur(e, t) {
2227
+ var Wr = 6e4, Gr = 864e5;
2228
+ function Kr(e, t) {
2214
2229
  let n, r;
2215
2230
  if (t) {
2216
- let i = new Date(e + b(t, e) * Vr);
2231
+ let i = new Date(e + y(t, e) * Wr);
2217
2232
  n = i.getUTCHours(), r = i.getUTCMinutes();
2218
2233
  } else {
2219
2234
  let t = new Date(e);
@@ -2221,31 +2236,31 @@ function Ur(e, t) {
2221
2236
  }
2222
2237
  return `${String(n).padStart(2, "0")}:${String(r).padStart(2, "0")}`;
2223
2238
  }
2224
- function Wr(e, t = Date.now(), n) {
2225
- if (n !== void 0 && !Ne(n)) return null;
2226
- let r = Ur(t, n);
2239
+ function qr(e, t = Date.now(), n) {
2240
+ if (n !== void 0 && !Pe(n)) return null;
2241
+ let r = Kr(t, n);
2227
2242
  for (let t of e) if (r >= t.startTime && r < t.endTime) return t;
2228
2243
  return null;
2229
2244
  }
2230
- var $ = (e) => String(e).padStart(2, "0"), Gr = (e) => {
2245
+ var $ = (e) => String(e).padStart(2, "0"), Jr = (e) => {
2231
2246
  let t = new Date(e);
2232
2247
  return `${t.getUTCFullYear()}-${$(t.getUTCMonth() + 1)}-${$(t.getUTCDate())}`;
2233
- }, Kr = 4, qr = 7 * 36e5;
2234
- function Jr(e, t, n) {
2235
- let r = Date.UTC(e, t - 1, 1), i = 1 + (Kr - new Date(r).getUTCDay() + 7) % 7, a = Date.UTC(e, t - 1, i + 14), o = (e) => {
2248
+ }, Yr = 4, Xr = 7 * 36e5;
2249
+ function Zr(e, t, n) {
2250
+ let r = Date.UTC(e, t - 1, 1), i = 1 + (Yr - new Date(r).getUTCDay() + 7) % 7, a = Date.UTC(e, t - 1, i + 14), o = (e) => {
2236
2251
  let t = new Date(e).getUTCDay();
2237
- return t === 0 || t === 6 || (n?.(Gr(e)) ?? !1);
2252
+ return t === 0 || t === 6 || (n?.(Jr(e)) ?? !1);
2238
2253
  };
2239
- for (; o(a);) a -= Hr;
2240
- return Gr(a);
2254
+ for (; o(a);) a -= Gr;
2255
+ return Jr(a);
2241
2256
  }
2242
- function Yr(e, t) {
2243
- let n = Gr(e + qr), r = (e, n) => ({
2257
+ function Qr(e, t) {
2258
+ let n = Jr(e + Xr), r = (e, n) => ({
2244
2259
  symbol: `VN30F${$(e % 100)}${$(n)}`,
2245
2260
  year: e,
2246
2261
  month: n,
2247
- lastTradingDay: Jr(e, n, t)
2248
- }), i = (e) => e.month === 12 ? r(e.year + 1, 1) : r(e.year, e.month + 1), a = new Date(e + qr), o = r(a.getUTCFullYear(), a.getUTCMonth() + 1);
2262
+ lastTradingDay: Zr(e, n, t)
2263
+ }), i = (e) => e.month === 12 ? r(e.year + 1, 1) : r(e.year, e.month + 1), a = new Date(e + Xr), o = r(a.getUTCFullYear(), a.getUTCMonth() + 1);
2249
2264
  n > o.lastTradingDay && (o = i(o));
2250
2265
  let s = [o, i(o)], c = i(s[1]);
2251
2266
  for (; s.length < 4;) c.month % 3 == 0 && s.push(c), c = i(c);
@@ -2253,7 +2268,7 @@ function Yr(e, t) {
2253
2268
  }
2254
2269
  //#endregion
2255
2270
  //#region src/icons/iconSet.ts
2256
- var Xr = {
2271
+ var $r = {
2257
2272
  cursor: { d: "M6 3.5L18.5 12.5L12.6 13.6L9.7 19.4z" },
2258
2273
  trendingUp: { d: "M3 17L9 11L13 14.5L21 6.5M15 6.5H21V12.5" },
2259
2274
  trendingDown: { d: "M3 7L9 13L13 9.5L21 17.5M15 17.5H21V11.5" },
@@ -2387,7 +2402,7 @@ var Xr = {
2387
2402
  ]
2388
2403
  ] },
2389
2404
  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" }
2390
- }, Zr = {
2405
+ }, ei = {
2391
2406
  trendLine: {
2392
2407
  d: "M5 18L19 6",
2393
2408
  dots: [[5, 18], [19, 6]]
@@ -2740,7 +2755,7 @@ var Xr = {
2740
2755
  ],
2741
2756
  dash: "M12 3V21"
2742
2757
  }
2743
- }, Qr = {
2758
+ }, ti = {
2744
2759
  candlestick: {
2745
2760
  d: "M8 3.5V7M8 16V20.5M16 5V8.5M16 15.5V19",
2746
2761
  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"]
@@ -2807,21 +2822,21 @@ var Xr = {
2807
2822
  "M16 4.5h3v6h-3z"
2808
2823
  ]
2809
2824
  }
2810
- }, $r = 1.75, ei = .22, ti = /* @__PURE__ */ new WeakMap();
2811
- function ni(e) {
2812
- let t = ti.get(e);
2825
+ }, ni = 1.75, ri = .22, ii = /* @__PURE__ */ new WeakMap();
2826
+ function ai(e) {
2827
+ let t = ii.get(e);
2813
2828
  if (t) return t;
2814
2829
  let n = "";
2815
- e.soft && (n += `<path d="${e.soft}" fill="currentColor" fill-opacity="${ei}" stroke="none"/>`);
2830
+ e.soft && (n += `<path d="${e.soft}" fill="currentColor" fill-opacity="${ri}" stroke="none"/>`);
2816
2831
  for (let t of e.fills ?? []) n += `<path d="${t}" fill="currentColor" stroke="none"/>`;
2817
2832
  e.d && (n += `<path d="${e.d}"/>`), e.dash && (n += `<path d="${e.dash}" stroke-dasharray="2 2.5"/>`);
2818
- for (let [t, r, i = $r] of e.dots ?? []) n += `<circle cx="${t}" cy="${r}" r="${i}" fill="currentColor" stroke="none"/>`;
2819
- return ti.set(e, n), n;
2833
+ for (let [t, r, i = ni] of e.dots ?? []) n += `<circle cx="${t}" cy="${r}" r="${i}" fill="currentColor" stroke="none"/>`;
2834
+ return ii.set(e, n), n;
2820
2835
  }
2821
- function ri(e, t) {
2822
- return `<svg xmlns="http://www.w3.org/2000/svg" width="${t}" height="${t}" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false">${ni(e)}</svg>`;
2836
+ function oi(e, t) {
2837
+ return `<svg xmlns="http://www.w3.org/2000/svg" width="${t}" height="${t}" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false">${ai(e)}</svg>`;
2823
2838
  }
2824
2839
  //#endregion
2825
- export { t as CHART_STYLE_KEYS, Qr as CHART_TYPE_ICONS, bn as DARK_PRICE_LIMITS, B as DARK_TERMINAL, Cn as DARK_THEME, Yn as DEFAULT_BAR_SPACING, Jn as DEFAULT_BAR_WIDTH, Un as DEFAULT_CHART_OPTIONS, n as DEFAULT_DRAWING_STYLE, cn as DEFAULT_FONT_FAMILY, $n as DEFAULT_PANEL_HEIGHT, o as DEFAULT_RECONNECT, i as DEFAULT_SIGNAL_STYLE, s as DEFAULT_STREAM_CONFIG, qn as DEFAULT_TIMEFRAME_FAVORITES, a as DEFAULT_TRADE_ZONE_STYLE, r as DEFAULT_TRADING_CONFIG, Zr as DRAWING_TOOL_ICONS, tr as FIBONACCI, vr as HNX_SESSIONS, _r as HOSE_SESSIONS, $r as ICON_DOT_RADIUS, ei as ICON_SOFT_OPACITY, xr as KRX_SESSIONS, hr as KR_COLORS, xn as LIGHT_PRICE_LIMITS, wn as LIGHT_THEME, e as LayerType, Nr as MARKET_CRYPTO, Dr as MARKET_HNX, Tr as MARKET_HOSE, Er as MARKET_HOSE_ETF, Ar as MARKET_KRX, jr as MARKET_NXT, Pr as MARKET_NYSE, Mr as MARKET_UPBIT_KRW, Or as MARKET_UPCOM, kr as MARKET_VN30F, Qn as MIN_PANEL_HEIGHT, ce as MS_TIME_THRESHOLD, Sr as NXT_SESSIONS, er as PHI, Xn as PRICE_AXIS_WIDTH, xt as PRICE_SOURCES, ln as SANS_FONT_FAMILY, I as TC_PALETTE, Sn as TC_SERIES_COLORS, Wn as TIMEFRAMES_CRYPTO, Kn as TIMEFRAMES_FOREX, Gn as TIMEFRAMES_STOCK, Zn as TIME_AXIS_HEIGHT, Xr as UI_ICONS, yr as UPCOM_SESSIONS, br as VN30F_SESSIONS, J as VN_COLORS, dn as VOLUME_ALPHA, We as alignToTimeframe, pt as autoPricePrecision, lt as barDateParts, ct as barDateZone, le as barTimeUnit, Je as barsAreDaily, Hn as chartStyleValue, ne as clamp, zr as computePriceLimits, ge as computePriceRange, se as computeTickStep, g as contrastRatio, Ir as createMarketTheme, Fr as createVNTheme, bt as detectPrecision, Yt as drawingOption, W as en, pe as findBarIndex, he as fitPriceRange, gt as formatFraction, q as formatNumber, j as formatPrice, ht as formatPriceScaleLabel, Ue as formatTimestamp, ur as formatVND, yt as formatVolume, mr as formatVolumeLoc, _t as fractionTick, Wr as getCurrentSession, or as getLocale, lr as getLocaleStrings, ve as hexToRgba, ri as iconSvg, Tt as indicatorSource, we as inkOn, ie as inverseLerp, Ke as isDateOnly, St as isPriceSource, He as isTimeFrame, S as isUtcTimeZone, Ne as isValidTimeZone, re as lerp, be as lerpColor, Ln as lineDash, Vt as marketStatus, _e as mergeBar, oe as niceNumber, de as normalizeBar, ue as normalizeBarTime, C as offsetAt, me as padPriceRange, Et as parseIndicatorSource, T as parseTimeframe, nr as phiStep, Pt as pickBaseTimeframe, vt as priceFormatterFor, Lr as priceStepAt, ft as priceTagText, It as rankSymbols, Nn as readChartStyleOverrides, sn as readChartTypeOptions, In as readIndicatorPlotStyles, te as readNews, Pn as readPaneStyle, l as readQuote, Ce as readableOn, cr as registerLocale, kt as resampleBars, zn as resolveChartTheme, Xt as resolveDrawingOptions, V as resolveVolumeColors, Z as roundToPriceStep, ae as roundToStep, qt as sanitizeDrawingOptions, an as sanitizeDrawingStyle, Br as scaleMarketPrices, zt as sessionMinute, ar as setLocale, fe as sliceVisibleData, Ct as sourcePrice, Lt as stepDecimals, Rt as symbolTimeZone, sr as t, Ve as tickBarCount, Ge as timeParts, ot as timeframeBucketStart, rt as timeframeFollowsDays, it as timeframeSpansDays, E as timeframeToMs, Ye as tzLabel, fr as usesKoreanUnits, rr as vi, Yr as vn30fContracts, Jr as vn30fLastTradingDay, L as volumeColor, Fe as wallToUtc, m as withAlpha, b as zoneOffsetMinutes, Le as zonedDateFormatter };
2840
+ export { t as CHART_STYLE_KEYS, ti as CHART_TYPE_ICONS, wn as DARK_PRICE_LIMITS, z as DARK_TERMINAL, Dn as DARK_THEME, $n as DEFAULT_BAR_SPACING, Qn as DEFAULT_BAR_WIDTH, qn as DEFAULT_CHART_OPTIONS, n as DEFAULT_DRAWING_STYLE, fn as DEFAULT_FONT_FAMILY, rr as DEFAULT_PANEL_HEIGHT, o as DEFAULT_RECONNECT, i as DEFAULT_SIGNAL_STYLE, s as DEFAULT_STREAM_CONFIG, Zn as DEFAULT_TIMEFRAME_FAVORITES, a as DEFAULT_TRADE_ZONE_STYLE, r as DEFAULT_TRADING_CONFIG, ei as DRAWING_TOOL_ICONS, ar as FIBONACCI, Sr as HNX_SESSIONS, xr as HOSE_SESSIONS, ni as ICON_DOT_RADIUS, ri as ICON_SOFT_OPACITY, Tr as KRX_SESSIONS, yr as KR_COLORS, Tn as LIGHT_PRICE_LIMITS, On as LIGHT_THEME, e as LayerType, Lr as MARKET_CRYPTO, jr as MARKET_HNX, kr as MARKET_HOSE, Ar as MARKET_HOSE_ETF, Pr as MARKET_KRX, Fr as MARKET_NXT, Rr as MARKET_NYSE, Ir as MARKET_UPBIT_KRW, Mr as MARKET_UPCOM, Nr as MARKET_VN30F, nr as MIN_PANEL_HEIGHT, le as MS_TIME_THRESHOLD, Er as NXT_SESSIONS, ir as PHI, er as PRICE_AXIS_WIDTH, Ct as PRICE_SOURCES, pn as SANS_FONT_FAMILY, F as TC_PALETTE, En as TC_SERIES_COLORS, Jn as TIMEFRAMES_CRYPTO, Xn as TIMEFRAMES_FOREX, Yn as TIMEFRAMES_STOCK, tr as TIME_AXIS_HEIGHT, $r as UI_ICONS, Cr as UPCOM_SESSIONS, wr as VN30F_SESSIONS, q as VN_COLORS, hn as VOLUME_ALPHA, Ge as alignToTimeframe, ht as autoPricePrecision, dt as barDateParts, ut as barDateZone, ue as barTimeUnit, Ye as barsAreDaily, Kn as chartStyleValue, re as clamp, Hr as computePriceLimits, _e as computePriceRange, ce as computeTickStep, m as contrastRatio, Br as createMarketTheme, zr as createVNTheme, St as detectPrecision, Zt as drawingOption, U as en, me as findBarIndex, ge as fitPriceRange, vt as formatFraction, K as formatNumber, k as formatPrice, _t as formatPriceScaleLabel, We as formatTimestamp, mr as formatVND, xt as formatVolume, vr as formatVolumeLoc, yt as fractionTick, qr as getCurrentSession, ur as getLocale, pr as getLocaleStrings, ye as hexToRgba, oi as iconSvg, Dt as indicatorSource, Ee as inkOn, ae as inverseLerp, qe as isDateOnly, wt as isPriceSource, Ue as isTimeFrame, x as isUtcTimeZone, Pe as isValidTimeZone, ie as lerp, Se as lerpColor, Vn as lineDash, Ut as marketStatus, ve as mergeBar, se as niceNumber, fe as normalizeBar, de as normalizeBarTime, S as offsetAt, he as padPriceRange, Ot as parseIndicatorSource, w as parseTimeframe, or as phiStep, It as pickBaseTimeframe, bt as priceFormatterFor, X as priceStepAt, mt as priceTagText, Rt as rankSymbols, Ln as readChartStyleOverrides, dn as readChartTypeOptions, Bn as readIndicatorPlotStyles, ne as readNews, Rn as readPaneStyle, l as readQuote, Te as readableOn, fr as registerLocale, jt as resampleBars, Un as resolveChartTheme, Qt as resolveDrawingOptions, B as resolveVolumeColors, Z as roundToPriceStep, oe as roundToStep, Yt as sanitizeDrawingOptions, ln as sanitizeDrawingStyle, Ur as scaleMarketPrices, Vt as sessionMinute, lr as setLocale, pe as sliceVisibleData, Tt as sourcePrice, zt as stepDecimals, Bt as symbolTimeZone, dr as t, He as tickBarCount, Ke as timeParts, ct as timeframeBucketStart, at as timeframeFollowsDays, ot as timeframeSpansDays, T as timeframeToMs, Xe as tzLabel, gr as usesKoreanUnits, sr as vi, Qr as vn30fContracts, Zr as vn30fLastTradingDay, I as volumeColor, Ie as wallToUtc, p as withAlpha, y as zoneOffsetMinutes, Re as zonedDateFormatter };
2826
2841
 
2827
2842
  //# sourceMappingURL=index.js.map