@tradecanvas/commons 1.59.1 → 1.59.3

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, ee = 1e3, f = (e, t) => {
201
+ var d = 300, f = 1e3, p = (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
- }, te = (e) => {
205
+ }, ee = (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, ee = 1e3, f = (e, t) => {
210
210
  return;
211
211
  }
212
212
  };
213
- function ne(e, t = 20) {
213
+ function te(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 = f(e.title, d);
218
+ let e = t, r = p(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 = te(e.url);
223
+ }, a = ee(e.url);
224
224
  a && (i.url = a);
225
- let o = f(e.source, d);
225
+ let o = p(e.source, d);
226
226
  o && (i.source = o);
227
- let s = f(e.summary, ee);
227
+ let s = p(e.summary, f);
228
228
  s && (i.summary = s);
229
- let c = f(e.id, d);
229
+ let c = p(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 re(e, t, n) {
236
+ function ne(e, t, n) {
237
237
  return Math.max(t, Math.min(n, e));
238
238
  }
239
- function ie(e, t, n) {
239
+ function re(e, t, n) {
240
240
  return e + (t - e) * n;
241
241
  }
242
- function ae(e, t, n) {
242
+ function ie(e, t, n) {
243
243
  return e === t ? 0 : (n - e) / (t - e);
244
244
  }
245
- function oe(e, t) {
245
+ function ae(e, t) {
246
246
  return Math.round(e / t) * t;
247
247
  }
248
- function se(e, t) {
248
+ function oe(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 ce(e, t, n) {
253
- return se(se(t - e, !1) / (n - 1), !0);
252
+ function se(e, t, n) {
253
+ return oe(oe(t - e, !1) / (n - 1), !0);
254
254
  }
255
255
  //#endregion
256
256
  //#region src/utils/data.ts
257
- var le = 1e11;
258
- function ue(e) {
257
+ var ce = 1e11;
258
+ function le(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 de(e, t) {
262
+ function ue(e, t) {
263
263
  return t === void 0 ? Math.abs(e) >= 1e11 ? e : e * 1e3 : e * t;
264
264
  }
265
- function fe(e) {
265
+ function de(e) {
266
266
  return {
267
- time: de(e.time ?? e.t ?? 0),
267
+ time: ue(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 fe(e) {
272
272
  volume: e.volume ?? e.v ?? 0
273
273
  };
274
274
  }
275
- function pe(e, t, n) {
275
+ function fe(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 me(e, t) {
279
+ function pe(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 me(e, t) {
286
286
  }
287
287
  return n;
288
288
  }
289
- function he(e, t, n, r = !1) {
289
+ function me(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 he(e, t, n, r = !1) {
301
301
  max: t + a * n
302
302
  };
303
303
  }
304
- function ge(e, t, n, r = !1) {
304
+ function he(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 ge(e, t, n, r = !1) {
316
316
  max: t + o * n.top
317
317
  };
318
318
  }
319
- function _e(e, t, n, r = .05, i = !1) {
319
+ function ge(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 _e(e, t, n, r = .05, i = !1) {
326
326
  return s === Infinity ? {
327
327
  min: 0,
328
328
  max: 1
329
- } : he(s, c, r, i);
329
+ } : me(s, c, r, i);
330
330
  }
331
- function ve(e, t) {
331
+ function _e(e, t) {
332
332
  return {
333
333
  ...e,
334
334
  high: Math.max(e.high, t.price),
@@ -339,18 +339,18 @@ function ve(e, t) {
339
339
  }
340
340
  //#endregion
341
341
  //#region src/utils/color.ts
342
- function ye(e, t = 1) {
342
+ function ve(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 p(e, t) {
346
+ function m(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 ye(n, t);
348
+ if (/^#([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i.test(n)) return ve(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 be = 3;
353
- function xe(e) {
352
+ var ye = 3;
353
+ function h(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 xe(e) {
373
373
  a: Math.min(1, Math.max(0, i))
374
374
  };
375
375
  }
376
- function Se(e, t, n) {
377
- let r = xe(e), i = xe(t);
376
+ function be(e, t, n) {
377
+ let r = h(e), i = h(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(be))})`;
380
+ return a >= 1 ? `rgb(${s})` : `rgba(${s},${Number(a.toFixed(ye))})`;
381
381
  }
382
- function Ce(e) {
383
- let t = xe(e);
382
+ function xe(e) {
383
+ let t = h(e);
384
384
  if (!t) return null;
385
385
  let n = (e) => {
386
386
  let t = e / 255;
@@ -388,26 +388,26 @@ function Ce(e) {
388
388
  };
389
389
  return .2126 * n(t.r) + .7152 * n(t.g) + .0722 * n(t.b);
390
390
  }
391
- function m(e, t) {
392
- let n = Ce(e), r = Ce(t);
391
+ function g(e, t) {
392
+ let n = xe(e), r = xe(t);
393
393
  return n === null || r === null ? null : (Math.max(n, r) + .05) / (Math.min(n, r) + .05);
394
394
  }
395
- var we = 20;
396
- function Te(e, t, n, r) {
397
- let i = m(e, t);
395
+ var Se = 20;
396
+ function Ce(e, t, n, r) {
397
+ let i = g(e, t);
398
398
  if (i === null || i >= r) return e;
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;
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;
402
402
  }
403
403
  return n;
404
404
  }
405
- function Ee(e, t, n) {
406
- return (m(e, t) ?? 0) >= (m(e, n) ?? 0) ? t : n;
405
+ function we(e, t, n) {
406
+ return (g(e, t) ?? 0) >= (g(e, n) ?? 0) ? t : n;
407
407
  }
408
408
  //#endregion
409
409
  //#region src/utils/timezone.ts
410
- var h = 6e4, De = 1440 * h, g = 15 * h, Oe = 8192, ke = 7 * De, Ae = 4096, je = new Set([
410
+ var _ = 6e4, Te = 1440 * _, v = 15 * _, Ee = 8192, De = 7 * Te, Oe = 4096, ke = new Set([
411
411
  "UTC",
412
412
  "Etc/UTC",
413
413
  "GMT",
@@ -418,9 +418,9 @@ var h = 6e4, De = 1440 * h, g = 15 * h, Oe = 8192, ke = 7 * De, Ae = 4096, je =
418
418
  "Etc/Universal",
419
419
  "Zulu",
420
420
  "Etc/Zulu"
421
- ]), Me = /* @__PURE__ */ new Map(), _ = /* @__PURE__ */ new Map(), Ne = /* @__PURE__ */ new Map();
422
- function Pe(e) {
423
- let t = Me.get(e);
421
+ ]), Ae = /* @__PURE__ */ new Map(), y = /* @__PURE__ */ new Map(), je = /* @__PURE__ */ new Map();
422
+ function Me(e) {
423
+ let t = Ae.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 Pe(e) {
430
430
  hour: "numeric",
431
431
  minute: "numeric",
432
432
  second: "numeric"
433
- }), Me.set(e, t)), t;
433
+ }), Ae.set(e, t)), t;
434
434
  }
435
- function v(e) {
435
+ function Ne(e) {
436
436
  if (!e) return !1;
437
437
  try {
438
- return Pe(e), !0;
438
+ return Me(e), !0;
439
439
  } catch {
440
440
  return !1;
441
441
  }
442
442
  }
443
- function y(e, t) {
444
- if (!Number.isFinite(t) || je.has(e)) return 0;
445
- let n = Ne.get(e);
446
- n || (n = /* @__PURE__ */ new Map(), Ne.set(e, n));
447
- let r = Math.floor(t / ke), i = n.get(r);
448
- return i || (i = Fe(e, r * ke), n.size >= Ae && 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 + ke - g, i = b(e, r);
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);
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 > g;) {
459
- let t = a + Math.floor((r - a) / g / 2) * g;
460
- b(e, t) === n ? a = t : r = 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;
461
461
  }
462
462
  return {
463
463
  before: n,
@@ -465,11 +465,11 @@ function Fe(e, t) {
465
465
  after: i
466
466
  };
467
467
  }
468
- function b(e, t) {
469
- let n = Math.floor(t / g), r = `${e}|${n}`, i = _.get(r);
468
+ function x(e, t) {
469
+ let n = Math.floor(t / v), r = `${e}|${n}`, i = y.get(r);
470
470
  if (i !== void 0) return i;
471
- let a = n * g, o = 1970, s = 1, c = 1, l = 0, u = 0, d = 0;
472
- for (let t of Pe(e).formatToParts(new Date(a))) {
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))) {
473
473
  let e = Number(t.value);
474
474
  switch (t.type) {
475
475
  case "year":
@@ -492,24 +492,24 @@ function b(e, t) {
492
492
  break;
493
493
  }
494
494
  }
495
- let ee = Math.round((Date.UTC(o, s - 1, c, l, u, d) - a) / h);
496
- return _.size >= Oe && _.clear(), _.set(r, ee), ee;
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;
497
497
  }
498
- function x(e) {
499
- return e === 0 || typeof e == "string" && je.has(e);
498
+ function S(e) {
499
+ return e === 0 || typeof e == "string" && ke.has(e);
500
500
  }
501
- function S(e, t) {
502
- return e === null ? -new Date(t).getTimezoneOffset() : typeof e == "number" ? e : y(e, t);
501
+ function C(e, t) {
502
+ return e === null ? -new Date(t).getTimezoneOffset() : typeof e == "number" ? e : b(e, t);
503
503
  }
504
- function Ie(e, t) {
505
- let n = e - S(t, e - De) * h;
506
- if (n + S(t, n) * h === e) return n;
507
- let r = e - S(t, e + De) * 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);
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);
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 Re(e, t, n) {
523
523
  timeZone: a
524
524
  });
525
525
  }
526
- let s = typeof n == "number" ? n * h : 0;
527
- return i = (e) => o.format(new Date(e + s)), Le.set(r, i), i;
526
+ let s = typeof n == "number" ? n * _ : 0;
527
+ return i = (e) => o.format(new Date(e + s)), Ie.set(r, i), i;
528
528
  }
529
529
  //#endregion
530
530
  //#region src/utils/time.ts
531
- var ze = {
531
+ var Re = {
532
532
  "1s": 1e3,
533
533
  "5s": 5e3,
534
534
  "15s": 15e3,
@@ -555,16 +555,16 @@ var ze = {
555
555
  "3M": 7776e6,
556
556
  "6M": 15552e6,
557
557
  "12M": 31536e6
558
- }, C = {
558
+ }, w = {
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
- }, Be = /^([1-9]\d*)([smhdwM])$/;
566
- function w(e) {
567
- let t = Be.exec(e);
565
+ }, ze = /^([1-9]\d*)([smhdwM])$/;
566
+ function T(e) {
567
+ let t = ze.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 w(e) {
572
572
  unit: t[2]
573
573
  } : null;
574
574
  }
575
- var Ve = 1e6;
576
- function He(e) {
575
+ var Be = 1e6;
576
+ function Ve(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 <= Ve ? n : null;
580
+ return Number.isSafeInteger(n) && n <= Be ? n : null;
581
581
  }
582
- function Ue(e) {
583
- return w(e) !== null;
582
+ function He(e) {
583
+ return T(e) !== null;
584
584
  }
585
- function T(e) {
586
- let t = ze[e];
585
+ function E(e) {
586
+ let t = Re[e];
587
587
  if (t !== void 0) return t;
588
- let n = w(e);
589
- return n ? n.count * C[n.unit] : NaN;
588
+ let n = T(e);
589
+ return n ? n.count * w[n.unit] : NaN;
590
590
  }
591
- function We(e, t) {
592
- let n = new Date(e), r = T(t);
591
+ function Ue(e, t) {
592
+ let n = new Date(e), r = E(t);
593
593
  return r >= 864e5 ? n.toLocaleDateString(void 0, {
594
594
  month: "short",
595
595
  day: "numeric"
@@ -602,11 +602,11 @@ function We(e, t) {
602
602
  second: "2-digit"
603
603
  });
604
604
  }
605
- function Ge(e, t) {
606
- let n = T(t);
605
+ function We(e, t) {
606
+ let n = E(t);
607
607
  return Math.floor(e / n) * n;
608
608
  }
609
- function Ke(e, t) {
609
+ function Ge(e, t) {
610
610
  if (t === null) {
611
611
  let t = new Date(e);
612
612
  return {
@@ -617,7 +617,7 @@ function Ke(e, t) {
617
617
  minutes: t.getMinutes()
618
618
  };
619
619
  }
620
- let n = new Date(e + S(t, e) * 6e4);
620
+ let n = new Date(e + C(t, e) * 6e4);
621
621
  return {
622
622
  year: n.getUTCFullYear(),
623
623
  month: n.getUTCMonth() + 1,
@@ -626,122 +626,122 @@ function Ke(e, t) {
626
626
  minutes: n.getUTCMinutes()
627
627
  };
628
628
  }
629
- function qe(e) {
629
+ function Ke(e) {
630
630
  return e.hours === 0 && e.minutes === 0;
631
631
  }
632
- var Je = 20 * 36e5;
633
- function Ye(e) {
632
+ var qe = 20 * 36e5;
633
+ function Je(e) {
634
634
  let t = Math.min(e.length, 64);
635
635
  if (t < 2) return;
636
- let n = ue(e), r = Infinity;
636
+ let n = le(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 >= Je;
641
+ return r === Infinity ? void 0 : r >= qe;
642
642
  }
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;
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;
645
645
  return o === 0 ? `UTC${r}${a}` : `UTC${r}${a}:${String(o).padStart(2, "0")}`;
646
646
  }
647
- var Ze = Date.UTC(1970, 0, 5), Qe = C.m, E = C.d, $e = 24, et = {
647
+ var Xe = Date.UTC(1970, 0, 5), Ze = w.m, D = w.d, Qe = 24, $e = {
648
648
  count: 1,
649
649
  unit: "m"
650
- }, tt = 256, D = /* @__PURE__ */ new Map();
651
- function O(e) {
652
- let t = D.get(e);
653
- return t || (t = w(e) ?? et, D.size >= tt && D.clear(), D.set(e, t)), t;
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
654
  }
655
- function nt({ unit: e }) {
655
+ function tt({ unit: e }) {
656
656
  return e === "d" || e === "w" || e === "M";
657
657
  }
658
+ function nt(e) {
659
+ return e.unit === "h" ? e.count > 1 && Qe % e.count === 0 : tt(e);
660
+ }
658
661
  function rt(e) {
659
- return e.unit === "h" ? e.count > 1 && $e % e.count === 0 : nt(e);
662
+ return nt(k(e));
660
663
  }
661
664
  function it(e) {
662
- return rt(O(e));
665
+ return tt(k(e));
663
666
  }
664
667
  function at(e) {
665
- return nt(O(e));
666
- }
667
- function ot(e) {
668
- return e !== void 0 && !x(e);
668
+ return e !== void 0 && !S(e);
669
669
  }
670
- function st(e, t, n = 1) {
671
- let r = O(t), i = typeof n == "number" ? n : n.weekStartsOn ?? 1, a = typeof n == "number" ? void 0 : n.timeZone;
672
- return !ot(a) || !rt(r) || typeof n == "object" && n.dates && e % E === 0 ? ct(e, r, i) : Ie(ct(e + S(a, e) * Qe, r, i), a);
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);
673
673
  }
674
- function ct(e, { count: t, unit: n }, r) {
674
+ function st(e, { count: t, unit: n }, r) {
675
675
  if (n === "s" || n === "m" || n === "h" || n === "d") {
676
- let r = t * C[n];
676
+ let r = t * w[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 - Ze) / (7 * E));
684
- return Ze + Math.floor(a / t) * t * 7 * E;
683
+ let a = Math.floor((n - Xe) / (7 * D));
684
+ return Xe + Math.floor(a / t) * t * 7 * D;
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 lt(e, t, n) {
690
- return e % E === 0 ? 0 : n && st(e, "1d", { timeZone: n }) === e ? n : t;
689
+ function ct(e, t, n) {
690
+ return e % D === 0 ? 0 : n && ot(e, "1d", { timeZone: n }) === e ? n : t;
691
691
  }
692
- function ut(e, t, n) {
693
- return Ke(e, lt(e, t, n));
692
+ function lt(e, t, n) {
693
+ return Ge(e, ct(e, t, n));
694
694
  }
695
695
  //#endregion
696
696
  //#region src/utils/precision.ts
697
- var dt = 64, k = /* @__PURE__ */ new Map();
698
- function ft(e, t) {
699
- let n = `${e}|${t}`, r = k.get(n);
700
- return r || (k.size >= dt && k.clear(), r = new Intl.NumberFormat(e, {
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, {
701
701
  minimumFractionDigits: t,
702
702
  maximumFractionDigits: t
703
- }), k.set(n, r)), r;
703
+ }), A.set(n, r)), r;
704
704
  }
705
- function pt(e, t, n) {
706
- return t.formatPrice ? t.formatPrice(e) : A(e, n ?? t.pricePrecision ?? mt(t.priceRange.min, t.priceRange.max), t.numberLocale ?? "en-US");
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");
707
707
  }
708
- function A(e, t = 2, n = "en-US") {
709
- return ft(n, t).format(e);
708
+ function j(e, t = 2, n = "en-US") {
709
+ return dt(n, t).format(e);
710
710
  }
711
- function mt(e, t) {
711
+ function pt(e, t) {
712
712
  if (!(t > e) || !Number.isFinite(e) || !Number.isFinite(t)) return 2;
713
- let n = ce(e, t, 8);
713
+ let n = se(e, t, 8);
714
714
  return n > 0 && n < 1 ? Math.ceil(-Math.log10(n)) + 1 : 2;
715
715
  }
716
- var ht = 2;
717
- function gt(e, t, n, r = 2, i = "en-US") {
716
+ var mt = 2;
717
+ function ht(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 = A(Math.abs(t), ht, i);
721
- return `${r === A(0, ht, i) ? "" : t > 0 ? "+" : "-"}${r}%`;
720
+ let t = (e / n - 1) * 100, r = j(Math.abs(t), mt, i);
721
+ return `${r === j(0, mt, i) ? "" : t > 0 ? "+" : "-"}${r}%`;
722
722
  }
723
- return A(e / n * 100, 2, i);
723
+ return j(e / n * 100, 2, i);
724
724
  }
725
- return A(e, r, i);
725
+ return j(e, r, i);
726
726
  }
727
- function _t(e, t, n = 1) {
727
+ function gt(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 vt(e) {
733
+ function _t(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 yt(e) {
739
- return e ? typeof e == "function" ? e : vt(e) === null ? null : (t) => _t(t, e.denominator, e.subDenominator) : null;
738
+ function vt(e) {
739
+ return e ? typeof e == "function" ? e : _t(e) === null ? null : (t) => gt(t, e.denominator, e.subDenominator) : null;
740
740
  }
741
- function bt(e) {
741
+ function yt(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 xt(e) {
744
+ function bt(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 xt(e) {
751
751
  }
752
752
  //#endregion
753
753
  //#region src/utils/priceSource.ts
754
- var St = [
754
+ var xt = [
755
755
  "close",
756
756
  "open",
757
757
  "high",
@@ -761,10 +761,10 @@ var St = [
761
761
  "ohlc4",
762
762
  "hlcc4"
763
763
  ];
764
- function Ct(e) {
765
- return typeof e == "string" && St.includes(e);
764
+ function St(e) {
765
+ return typeof e == "string" && xt.includes(e);
766
766
  }
767
- function wt(e, t) {
767
+ function Ct(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 wt(e, t) {
776
776
  default: return e.close;
777
777
  }
778
778
  }
779
- var Tt = /^ind:([^:]+):(.+)$/;
780
- function Et(e, t) {
779
+ var wt = /^ind:([^:]+):(.+)$/;
780
+ function Tt(e, t) {
781
781
  return `ind:${e}:${t}`;
782
782
  }
783
- function Dt(e) {
783
+ function Et(e) {
784
784
  if (typeof e != "string") return null;
785
- let t = Tt.exec(e);
785
+ let t = wt.exec(e);
786
786
  return t ? {
787
787
  instanceId: t[1],
788
788
  key: t[2]
@@ -790,11 +790,11 @@ function Dt(e) {
790
790
  }
791
791
  //#endregion
792
792
  //#region src/utils/resample.ts
793
- var Ot = 864e5, kt = 6e4;
794
- function At(e, t, n = 1) {
795
- let r = jt(e, t, n), i = [], a = null;
793
+ var Dt = 864e5, Ot = 6e4;
794
+ function kt(e, t, n = 1) {
795
+ let r = At(e, t, n), i = [], a = null;
796
796
  for (let n of e) {
797
- let e = st(n.time, t, r);
797
+ let e = ot(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 At(e, t, n = 1) {
806
806
  }
807
807
  return i;
808
808
  }
809
- function jt(e, t, n) {
810
- return typeof n == "number" || n.timeZone === void 0 || n.dates !== void 0 || x(n.timeZone) || !it(t) ? n : {
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 : {
811
811
  ...n,
812
- dates: Ye(e) === !0
812
+ dates: Je(e) === !0
813
813
  };
814
814
  }
815
- var Mt = (e) => e === "s" || e === "m" || e === "h" || e === "d";
816
- function Nt(e, t) {
817
- let n = w(e), r = w(t);
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);
818
818
  if (!n || !r) return !1;
819
- let i = T(e);
820
- return n.unit === "d" && n.count > 1 ? !1 : Mt(r.unit) ? Mt(n.unit) && T(t) % i === 0 : n.unit === r.unit ? r.count % n.count === 0 : Mt(n.unit) && Ot % i === 0;
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;
821
821
  }
822
- function Pt(e, t) {
823
- let n = T(e);
824
- if (!(n < Ot)) return !0;
822
+ function Nt(e, t) {
823
+ let n = E(e);
824
+ if (!(n < Dt)) return !0;
825
825
  let r = (/* @__PURE__ */ new Date()).getUTCFullYear();
826
- return [Date.UTC(r, 0, 1), Date.UTC(r, 6, 1)].every((e) => S(t, e) * kt % n === 0);
826
+ return [Date.UTC(r, 0, 1), Date.UTC(r, 6, 1)].every((e) => C(t, e) * Ot % n === 0);
827
827
  }
828
- function Ft(e, t, n = {}) {
829
- let { timeZone: r } = n, i = r !== void 0 && !x(r) && it(e) ? r : void 0, a = null, o = 0;
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;
830
830
  for (let n of t) {
831
- if (!Nt(n, e) || i !== void 0 && !Pt(n, i)) continue;
832
- let t = T(n);
831
+ if (!Mt(n, e) || i !== void 0 && !Nt(n, i)) continue;
832
+ let t = E(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 It(e, t) {
839
+ function Ft(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 Lt(e, t, n = 50, r) {
846
+ function It(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(It(t.symbol.toUpperCase(), i), It((t.description ?? "").toUpperCase(), i) * .8);
851
+ let e = Math.max(Ft(t.symbol.toUpperCase(), i), Ft((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 Lt(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 Rt(e) {
859
+ function Lt(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 Rt(e) {
865
865
  }
866
866
  return 12;
867
867
  }
868
- function zt(e) {
868
+ function Rt(e) {
869
869
  return e?.timeZone ?? e?.timezone;
870
870
  }
871
- function Bt(e) {
871
+ function zt(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 Bt(e) {
876
876
  }
877
877
  //#endregion
878
878
  //#region src/utils/marketStatus.ts
879
- var j = 864e5, M = 6e4, Vt = 8;
880
- function Ht(e, t) {
881
- let n = zt(e), r = (e?.sessions ?? []).flatMap((e) => {
882
- let t = Bt(e.start), n = Bt(e.end);
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);
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 || !v(n) || r.length === 0 || !Number.isFinite(t)) return {
889
+ if (!n || !Ne(n) || r.length === 0 || !Number.isFinite(t)) return {
890
890
  state: "always",
891
891
  next: null
892
892
  };
893
- let i = y(n, t) * M, a = Math.floor((t + i) / j) * j, o = (e) => e - y(n, e - y(n, e - i) * M) * M, s = [];
894
- for (let e = -1; e <= Vt; e++) {
895
- let t = a + e * j, n = (Math.floor(t / j) + 4) % 7;
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;
896
896
  for (let e of r) {
897
897
  if (e.days && !e.days.includes(n)) continue;
898
- let r = t + e.start * M, i = (e.end > e.start ? t : t + j) + e.end * M;
898
+ let r = t + e.start * N, i = (e.end > e.start ? t : t + M) + e.end * N;
899
899
  s.push([o(r), o(i)]);
900
900
  }
901
901
  }
@@ -918,15 +918,15 @@ function Ht(e, t) {
918
918
  }
919
919
  //#endregion
920
920
  //#region src/utils/drawingOptions.ts
921
- var Ut = 48, Wt = 2e3, Gt = 1e4;
922
- function Kt(e) {
921
+ var Ht = 48, Ut = 2e3, Wt = 1e4;
922
+ function Gt(e) {
923
923
  if (!Array.isArray(e)) return;
924
924
  let t = [];
925
925
  for (let n of e) {
926
- if (t.length >= Ut) break;
926
+ if (t.length >= Ht) 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) > Gt || r !== void 0 && typeof r != "boolean") continue;
929
+ if (typeof e != "number" || !Number.isFinite(e) || Math.abs(e) > Wt || r !== void 0 && typeof r != "boolean") continue;
930
930
  let a = {
931
931
  value: e,
932
932
  visible: r ?? !0
@@ -935,98 +935,98 @@ function Kt(e) {
935
935
  }
936
936
  return t;
937
937
  }
938
- function qt(e, t) {
938
+ function Kt(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 Kt(t);
944
- case "text": return typeof t == "string" ? t.slice(0, Wt) : void 0;
943
+ case "levels": return Gt(t);
944
+ case "text": return typeof t == "string" ? t.slice(0, Ut) : void 0;
945
945
  }
946
946
  }
947
- function Jt(e, t) {
947
+ function qt(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 = qt(t, i);
953
+ let a = Kt(t, i);
954
954
  a !== void 0 && (n[r] = a);
955
955
  }
956
956
  return n;
957
957
  }
958
- function Yt(e) {
958
+ function Jt(e) {
959
959
  return Array.isArray(e) ? e.map((e) => ({ ...e })) : e;
960
960
  }
961
- function Xt(e, t, n) {
961
+ function Yt(e, t, n) {
962
962
  let r = e?.[n];
963
- return r ? Yt((t && n in t ? qt(r, t[n]) : void 0) ?? r.default) : t?.[n];
963
+ return r ? Jt((t && n in t ? Kt(r, t[n]) : void 0) ?? r.default) : t?.[n];
964
964
  }
965
- function Zt(e, t) {
965
+ function Xt(e, t) {
966
966
  let n = {};
967
- for (let r of Object.keys(e ?? {})) n[r] = Xt(e, t, r);
967
+ for (let r of Object.keys(e ?? {})) n[r] = Yt(e, t, r);
968
968
  return n;
969
969
  }
970
970
  //#endregion
971
971
  //#region src/utils/drawingStyle.ts
972
- var Qt = [
972
+ var Zt = [
973
973
  "solid",
974
974
  "dashed",
975
975
  "dotted"
976
- ], $t = 64, en = 2e3, tn = 20, nn = 200;
977
- function rn(e, t, n) {
976
+ ], Qt = 64, $t = 2e3, en = 20, tn = 200;
977
+ function nn(e, t, n) {
978
978
  return typeof e == "number" && Number.isFinite(e) ? Math.min(n, Math.max(t, e)) : void 0;
979
979
  }
980
- function an(e) {
981
- return typeof e == "string" && e.length > 0 && e.length <= $t ? e : void 0;
980
+ function rn(e) {
981
+ return typeof e == "string" && e.length > 0 && e.length <= Qt ? e : void 0;
982
982
  }
983
- function on(e) {
983
+ function an(e) {
984
984
  if (typeof e != "object" || !e) return {};
985
- let t = e, n = {}, r = an(t.color);
985
+ let t = e, n = {}, r = rn(t.color);
986
986
  r !== void 0 && (n.color = r);
987
- let i = rn(t.lineWidth, .5, tn);
988
- i !== void 0 && (n.lineWidth = i), Qt.includes(t.lineStyle) && (n.lineStyle = t.lineStyle);
989
- let a = an(t.fillColor);
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);
990
990
  a !== void 0 && (n.fillColor = a);
991
- let o = rn(t.fillOpacity, 0, 1);
991
+ let o = nn(t.fillOpacity, 0, 1);
992
992
  o !== void 0 && (n.fillOpacity = o);
993
- let s = rn(t.fontSize, 6, nn);
994
- return s !== void 0 && (n.fontSize = s), typeof t.text == "string" && (n.text = t.text.slice(0, en)), n;
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;
995
995
  }
996
996
  //#endregion
997
997
  //#region src/utils/chartTypeOptions.ts
998
- var N = (e) => typeof e == "number" && Number.isFinite(e) && e > 0, P = (e, t, n) => typeof e == "number" && Number.isInteger(e) && e >= t && e <= n, F = (e) => typeof e == "object" && !!e && !Array.isArray(e);
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
999
  function sn(e) {
1000
1000
  if (!F(e)) return {};
1001
1001
  let t = {};
1002
1002
  if (F(e.renko)) {
1003
1003
  let { boxSize: n, atrPeriod: r } = e.renko;
1004
1004
  t.renko = {
1005
- ...N(n) || n === "atr" ? { boxSize: n } : {},
1006
- ...P(r, 1, 500) ? { atrPeriod: r } : {}
1005
+ ...P(n) || n === "atr" ? { boxSize: n } : {},
1006
+ ...on(r, 1, 500) ? { atrPeriod: r } : {}
1007
1007
  };
1008
1008
  }
1009
1009
  if (F(e.lineBreak)) {
1010
1010
  let { lines: n } = e.lineBreak;
1011
- t.lineBreak = P(n, 1, 10) ? { lines: n } : {};
1011
+ t.lineBreak = on(n, 1, 10) ? { lines: n } : {};
1012
1012
  }
1013
1013
  if (F(e.kagi)) {
1014
1014
  let { reversal: n, reversalType: r } = e.kagi;
1015
1015
  t.kagi = {
1016
- ...N(n) ? { reversal: n } : {},
1016
+ ...P(n) ? { reversal: n } : {},
1017
1017
  ...r === "percent" || r === "price" ? { reversalType: r } : {}
1018
1018
  };
1019
1019
  }
1020
1020
  if (F(e.pointAndFigure)) {
1021
1021
  let { boxSize: n, reversal: r } = e.pointAndFigure;
1022
1022
  t.pointAndFigure = {
1023
- ...N(n) || n === "auto" ? { boxSize: n } : {},
1024
- ...P(r, 1, 10) ? { reversal: r } : {}
1023
+ ...P(n) || n === "auto" ? { boxSize: n } : {},
1024
+ ...on(r, 1, 10) ? { reversal: r } : {}
1025
1025
  };
1026
1026
  }
1027
1027
  if (F(e.rangeBars)) {
1028
1028
  let { range: n } = e.rangeBars;
1029
- t.rangeBars = N(n) || n === "auto" ? { range: n } : {};
1029
+ t.rangeBars = P(n) || n === "auto" ? { range: n } : {};
1030
1030
  }
1031
1031
  return t;
1032
1032
  }
@@ -1050,7 +1050,7 @@ var cn = "'Cascadia Mono', 'SF Mono', ui-monospace, Menlo, Consolas, monospace",
1050
1050
  ink: "#131416"
1051
1051
  }, dn = .22;
1052
1052
  function L(e) {
1053
- return p(e, dn);
1053
+ return m(e, dn);
1054
1054
  }
1055
1055
  var fn = "#fbfaf6", R = "#1b1d21", pn = "#131416", z = "#e6e3dc", mn = "#1f7a5c", hn = "#b8423f", gn = "#4fae8a", _n = "#e2706b", vn = "#6a6966", yn = "#8d8a84", bn = {
1056
1056
  ceiling: "#FF00FF",
@@ -1078,10 +1078,10 @@ var fn = "#fbfaf6", R = "#1b1d21", pn = "#131416", z = "#e6e3dc", mn = "#1f7a5c"
1078
1078
  candleUpWick: gn,
1079
1079
  candleDownWick: _n,
1080
1080
  lineColor: z,
1081
- areaTopColor: p(z, .14),
1082
- areaBottomColor: p(z, 0),
1083
- volumeUp: p(z, .14),
1084
- volumeDown: p(z, .08),
1081
+ areaTopColor: m(z, .14),
1082
+ areaBottomColor: m(z, 0),
1083
+ volumeUp: m(z, .14),
1084
+ volumeDown: m(z, .08),
1085
1085
  axisLine: "#2a2b2f",
1086
1086
  axisLabel: "#a9a6a0",
1087
1087
  axisLabelBackground: "#232427",
@@ -1099,10 +1099,10 @@ var fn = "#fbfaf6", R = "#1b1d21", pn = "#131416", z = "#e6e3dc", mn = "#1f7a5c"
1099
1099
  candleUpWick: mn,
1100
1100
  candleDownWick: hn,
1101
1101
  lineColor: R,
1102
- areaTopColor: p(R, .12),
1103
- areaBottomColor: p(R, 0),
1104
- volumeUp: p(R, .13),
1105
- volumeDown: p(R, .08),
1102
+ areaTopColor: m(R, .12),
1103
+ areaBottomColor: m(R, 0),
1104
+ volumeUp: m(R, .13),
1105
+ volumeDown: m(R, .08),
1106
1106
  axisLine: "#cfcac0",
1107
1107
  axisLabel: "#4a4e57",
1108
1108
  axisLabelBackground: "#eeebe3",
@@ -1707,14 +1707,22 @@ var dr = [
1707
1707
  function fr(e) {
1708
1708
  return /^ko([-_]|$)/i.test(e);
1709
1709
  }
1710
- function pr(e, t) {
1710
+ function pr(e, t, n) {
1711
+ try {
1712
+ return j(e, t, n);
1713
+ } catch {
1714
+ return q(e, t, "en");
1715
+ }
1716
+ }
1717
+ function mr(e, t) {
1711
1718
  let n = t ?? K;
1712
1719
  if (!Number.isFinite(e)) return String(e);
1713
1720
  if (fr(n)) {
1714
1721
  for (let [t, r] of dr) if (Math.round(e / t * 100) >= 100) return q(e / t, 2, n) + r;
1715
1722
  return q(e, 0, n);
1716
1723
  }
1717
- 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);
1724
+ let r = G.has(n) ? (e, t) => q(e, t, n) : (e, t) => pr(e, t, n);
1725
+ 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);
1718
1726
  }
1719
1727
  //#endregion
1720
1728
  //#region src/market/presets.ts
@@ -1725,14 +1733,14 @@ var J = {
1725
1733
  ceiling: "#D946EF",
1726
1734
  floor: "#06B6D4",
1727
1735
  reference: "#EAB308"
1728
- }, Y = "Asia/Ho_Chi_Minh", mr = {
1736
+ }, Y = "Asia/Ho_Chi_Minh", hr = {
1729
1737
  up: "#E8313F",
1730
1738
  down: "#2F6FEB",
1731
1739
  unchanged: "#8B8F99",
1732
1740
  ceiling: "#C2121F",
1733
1741
  floor: "#1E4FC2",
1734
1742
  reference: "#8B8F99"
1735
- }, hr = "Asia/Seoul", gr = [
1743
+ }, gr = "Asia/Seoul", _r = [
1736
1744
  {
1737
1745
  name: "ATO",
1738
1746
  startTime: "09:00",
@@ -1763,7 +1771,7 @@ var J = {
1763
1771
  endTime: "14:45",
1764
1772
  type: "preClose"
1765
1773
  }
1766
- ], _r = [
1774
+ ], vr = [
1767
1775
  {
1768
1776
  name: "Phiên 1",
1769
1777
  startTime: "09:15",
@@ -1794,7 +1802,7 @@ var J = {
1794
1802
  endTime: "15:00",
1795
1803
  type: "postClose"
1796
1804
  }
1797
- ], vr = [
1805
+ ], yr = [
1798
1806
  {
1799
1807
  name: "Phiên 1",
1800
1808
  startTime: "09:15",
@@ -1813,7 +1821,7 @@ var J = {
1813
1821
  endTime: "14:30",
1814
1822
  type: "continuous"
1815
1823
  }
1816
- ], yr = [
1824
+ ], br = [
1817
1825
  {
1818
1826
  name: "ATO",
1819
1827
  startTime: "08:45",
@@ -1844,7 +1852,7 @@ var J = {
1844
1852
  endTime: "14:45",
1845
1853
  type: "preClose"
1846
1854
  }
1847
- ], br = [
1855
+ ], xr = [
1848
1856
  {
1849
1857
  name: "장전 동시호가",
1850
1858
  startTime: "08:30",
@@ -1875,7 +1883,7 @@ var J = {
1875
1883
  endTime: "20:00",
1876
1884
  type: "postClose"
1877
1885
  }
1878
- ], xr = [
1886
+ ], Sr = [
1879
1887
  {
1880
1888
  name: "프리마켓",
1881
1889
  startTime: "08:00",
@@ -1894,7 +1902,7 @@ var J = {
1894
1902
  endTime: "20:00",
1895
1903
  type: "postClose"
1896
1904
  }
1897
- ], Sr = [
1905
+ ], Cr = [
1898
1906
  {
1899
1907
  from: 0,
1900
1908
  step: 1
@@ -1923,7 +1931,7 @@ var J = {
1923
1931
  from: 5e5,
1924
1932
  step: 1e3
1925
1933
  }
1926
- ], Cr = [
1934
+ ], wr = [
1927
1935
  {
1928
1936
  from: 0,
1929
1937
  step: 1e-8
@@ -1984,7 +1992,7 @@ var J = {
1984
1992
  from: 1e6,
1985
1993
  step: 1e3
1986
1994
  }
1987
- ], wr = {
1995
+ ], Tr = {
1988
1996
  type: "stock",
1989
1997
  exchange: "HOSE",
1990
1998
  currency: "VND",
@@ -2011,12 +2019,12 @@ var J = {
2011
2019
  ceilingPercent: 7,
2012
2020
  floorPercent: 7
2013
2021
  },
2014
- sessions: gr,
2022
+ sessions: _r,
2015
2023
  colorScheme: J
2016
- }, Tr = {
2017
- ...wr,
2018
- priceSteps: void 0
2019
2024
  }, Er = {
2025
+ ...Tr,
2026
+ priceSteps: void 0
2027
+ }, Dr = {
2020
2028
  type: "stock",
2021
2029
  exchange: "HNX",
2022
2030
  currency: "VND",
@@ -2029,9 +2037,9 @@ var J = {
2029
2037
  ceilingPercent: 10,
2030
2038
  floorPercent: 10
2031
2039
  },
2032
- sessions: _r,
2040
+ sessions: vr,
2033
2041
  colorScheme: J
2034
- }, Dr = {
2042
+ }, Or = {
2035
2043
  type: "stock",
2036
2044
  exchange: "UPCOM",
2037
2045
  currency: "VND",
@@ -2044,9 +2052,9 @@ var J = {
2044
2052
  ceilingPercent: 15,
2045
2053
  floorPercent: 15
2046
2054
  },
2047
- sessions: vr,
2055
+ sessions: yr,
2048
2056
  colorScheme: J
2049
- }, Or = {
2057
+ }, kr = {
2050
2058
  type: "futures",
2051
2059
  exchange: "HNX",
2052
2060
  currency: "VND",
@@ -2060,44 +2068,44 @@ var J = {
2060
2068
  ceilingPercent: 7,
2061
2069
  floorPercent: 7
2062
2070
  },
2063
- sessions: yr,
2071
+ sessions: br,
2064
2072
  colorScheme: J
2065
- }, kr = {
2073
+ }, Ar = {
2066
2074
  type: "stock",
2067
2075
  exchange: "KRX",
2068
2076
  currency: "KRW",
2069
2077
  pricePrecision: 0,
2070
2078
  volumeUnit: 1,
2071
2079
  priceStep: 1,
2072
- priceSteps: Sr,
2073
- timeZone: hr,
2080
+ priceSteps: Cr,
2081
+ timeZone: gr,
2074
2082
  priceLimits: {
2075
2083
  enabled: !0,
2076
2084
  ceilingPercent: 30,
2077
2085
  floorPercent: 30,
2078
2086
  roundMove: !0
2079
2087
  },
2080
- sessions: br,
2081
- colorScheme: mr
2082
- }, Ar = {
2083
- ...kr,
2084
- exchange: "NXT",
2085
- sessions: xr
2088
+ sessions: xr,
2089
+ colorScheme: hr
2086
2090
  }, jr = {
2091
+ ...Ar,
2092
+ exchange: "NXT",
2093
+ sessions: Sr
2094
+ }, Mr = {
2087
2095
  type: "crypto",
2088
2096
  exchange: "UPBIT",
2089
2097
  currency: "KRW",
2090
2098
  priceStep: 1e-8,
2091
- priceSteps: Cr,
2092
- timeZone: hr,
2099
+ priceSteps: wr,
2100
+ timeZone: gr,
2093
2101
  priceLimits: { enabled: !1 },
2094
- colorScheme: mr
2095
- }, Mr = {
2102
+ colorScheme: hr
2103
+ }, Nr = {
2096
2104
  type: "crypto",
2097
2105
  currency: "USDT",
2098
2106
  pricePrecision: 2,
2099
2107
  priceLimits: { enabled: !1 }
2100
- }, Nr = {
2108
+ }, Pr = {
2101
2109
  type: "stock",
2102
2110
  exchange: "NYSE",
2103
2111
  currency: "USD",
@@ -2126,10 +2134,10 @@ var J = {
2126
2134
  }
2127
2135
  ]
2128
2136
  };
2129
- function Pr(e) {
2130
- return Fr(e, J);
2137
+ function Fr(e) {
2138
+ return Ir(e, J);
2131
2139
  }
2132
- function Fr(e, t) {
2140
+ function Ir(e, t) {
2133
2141
  return {
2134
2142
  ...e,
2135
2143
  candleUp: t.up,
@@ -2139,25 +2147,25 @@ function Fr(e, t) {
2139
2147
  };
2140
2148
  }
2141
2149
  var X = 1e-9;
2142
- function Ir(e, t) {
2150
+ function Lr(e, t) {
2143
2151
  let n = t.priceStep;
2144
2152
  for (let r of t.priceSteps ?? []) e + X >= r.from && (n = r.step);
2145
2153
  return n !== void 0 && n > 0 ? n : void 0;
2146
2154
  }
2147
- function Lr(e, t) {
2155
+ function Rr(e, t) {
2148
2156
  let n = t.priceStep;
2149
2157
  for (let r of t.priceSteps ?? []) e - X > r.from && (n = r.step);
2150
2158
  return n !== void 0 && n > 0 ? n : void 0;
2151
2159
  }
2152
2160
  function Z(e, t, n = "nearest") {
2153
- let r = Ir(e, t);
2161
+ let r = Lr(e, t);
2154
2162
  if (r === void 0 || !Number.isFinite(e)) return e;
2155
2163
  let i = e / r, a = n === "down" ? Math.floor(i + X) : n === "up" ? Math.ceil(i - X) : Math.round(i);
2156
- return Number((a * r).toFixed(Rt(r)));
2164
+ return Number((a * r).toFixed(Lt(r)));
2157
2165
  }
2158
- function Rr(e, t) {
2166
+ function zr(e, t) {
2159
2167
  if (!t.priceLimits?.enabled || !t.priceLimits.ceilingPercent) return null;
2160
- 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 = Ir(i, t);
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);
2161
2169
  if (s === void 0) return {
2162
2170
  ceiling: a,
2163
2171
  floor: o,
@@ -2178,14 +2186,14 @@ function Rr(e, t) {
2178
2186
  };
2179
2187
  l = Z(i + Z(i * n, e, "down"), t, "down"), u = Z(i - Z(i * r, e, "down"), t, "down");
2180
2188
  } else l = Z(a, t, "down"), u = Z(o, t, "up");
2181
- return l <= i && (l = c), u >= i && (u = Z(i - (Lr(i, t) ?? s), t)), u <= 0 && (u = i), {
2189
+ return l <= i && (l = c), u >= i && (u = Z(i - (Rr(i, t) ?? s), t)), u <= 0 && (u = i), {
2182
2190
  ceiling: l,
2183
2191
  floor: u,
2184
2192
  reference: i
2185
2193
  };
2186
2194
  }
2187
2195
  var Q = (e, t) => Math.round(e * t * 1e9) / 1e9;
2188
- function zr(e, t) {
2196
+ function Br(e, t) {
2189
2197
  let n = Math.round(Math.log10(t));
2190
2198
  return {
2191
2199
  ...e,
@@ -2201,11 +2209,11 @@ function zr(e, t) {
2201
2209
  }
2202
2210
  };
2203
2211
  }
2204
- var Br = 6e4, Vr = 864e5;
2205
- function Hr(e, t) {
2212
+ var Vr = 6e4, Hr = 864e5;
2213
+ function Ur(e, t) {
2206
2214
  let n, r;
2207
2215
  if (t) {
2208
- let i = new Date(e + y(t, e) * Br);
2216
+ let i = new Date(e + b(t, e) * Vr);
2209
2217
  n = i.getUTCHours(), r = i.getUTCMinutes();
2210
2218
  } else {
2211
2219
  let t = new Date(e);
@@ -2213,31 +2221,31 @@ function Hr(e, t) {
2213
2221
  }
2214
2222
  return `${String(n).padStart(2, "0")}:${String(r).padStart(2, "0")}`;
2215
2223
  }
2216
- function Ur(e, t = Date.now(), n) {
2217
- if (n !== void 0 && !v(n)) return null;
2218
- let r = Hr(t, n);
2224
+ function Wr(e, t = Date.now(), n) {
2225
+ if (n !== void 0 && !Ne(n)) return null;
2226
+ let r = Ur(t, n);
2219
2227
  for (let t of e) if (r >= t.startTime && r < t.endTime) return t;
2220
2228
  return null;
2221
2229
  }
2222
- var $ = (e) => String(e).padStart(2, "0"), Wr = (e) => {
2230
+ var $ = (e) => String(e).padStart(2, "0"), Gr = (e) => {
2223
2231
  let t = new Date(e);
2224
2232
  return `${t.getUTCFullYear()}-${$(t.getUTCMonth() + 1)}-${$(t.getUTCDate())}`;
2225
- }, Gr = 4, Kr = 7 * 36e5;
2226
- function qr(e, t, n) {
2227
- let r = Date.UTC(e, t - 1, 1), i = 1 + (Gr - new Date(r).getUTCDay() + 7) % 7, a = Date.UTC(e, t - 1, i + 14), o = (e) => {
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) => {
2228
2236
  let t = new Date(e).getUTCDay();
2229
- return t === 0 || t === 6 || (n?.(Wr(e)) ?? !1);
2237
+ return t === 0 || t === 6 || (n?.(Gr(e)) ?? !1);
2230
2238
  };
2231
- for (; o(a);) a -= Vr;
2232
- return Wr(a);
2239
+ for (; o(a);) a -= Hr;
2240
+ return Gr(a);
2233
2241
  }
2234
- function Jr(e, t) {
2235
- let n = Wr(e + Kr), r = (e, n) => ({
2242
+ function Yr(e, t) {
2243
+ let n = Gr(e + qr), r = (e, n) => ({
2236
2244
  symbol: `VN30F${$(e % 100)}${$(n)}`,
2237
2245
  year: e,
2238
2246
  month: n,
2239
- lastTradingDay: qr(e, n, t)
2240
- }), i = (e) => e.month === 12 ? r(e.year + 1, 1) : r(e.year, e.month + 1), a = new Date(e + Kr), o = r(a.getUTCFullYear(), a.getUTCMonth() + 1);
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);
2241
2249
  n > o.lastTradingDay && (o = i(o));
2242
2250
  let s = [o, i(o)], c = i(s[1]);
2243
2251
  for (; s.length < 4;) c.month % 3 == 0 && s.push(c), c = i(c);
@@ -2245,7 +2253,7 @@ function Jr(e, t) {
2245
2253
  }
2246
2254
  //#endregion
2247
2255
  //#region src/icons/iconSet.ts
2248
- var Yr = {
2256
+ var Xr = {
2249
2257
  cursor: { d: "M6 3.5L18.5 12.5L12.6 13.6L9.7 19.4z" },
2250
2258
  trendingUp: { d: "M3 17L9 11L13 14.5L21 6.5M15 6.5H21V12.5" },
2251
2259
  trendingDown: { d: "M3 7L9 13L13 9.5L21 17.5M15 17.5H21V11.5" },
@@ -2379,7 +2387,7 @@ var Yr = {
2379
2387
  ]
2380
2388
  ] },
2381
2389
  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" }
2382
- }, Xr = {
2390
+ }, Zr = {
2383
2391
  trendLine: {
2384
2392
  d: "M5 18L19 6",
2385
2393
  dots: [[5, 18], [19, 6]]
@@ -2732,7 +2740,7 @@ var Yr = {
2732
2740
  ],
2733
2741
  dash: "M12 3V21"
2734
2742
  }
2735
- }, Zr = {
2743
+ }, Qr = {
2736
2744
  candlestick: {
2737
2745
  d: "M8 3.5V7M8 16V20.5M16 5V8.5M16 15.5V19",
2738
2746
  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"]
@@ -2799,21 +2807,21 @@ var Yr = {
2799
2807
  "M16 4.5h3v6h-3z"
2800
2808
  ]
2801
2809
  }
2802
- }, Qr = 1.75, $r = .22, ei = /* @__PURE__ */ new WeakMap();
2803
- function ti(e) {
2804
- let t = ei.get(e);
2810
+ }, $r = 1.75, ei = .22, ti = /* @__PURE__ */ new WeakMap();
2811
+ function ni(e) {
2812
+ let t = ti.get(e);
2805
2813
  if (t) return t;
2806
2814
  let n = "";
2807
- e.soft && (n += `<path d="${e.soft}" fill="currentColor" fill-opacity="${$r}" stroke="none"/>`);
2815
+ e.soft && (n += `<path d="${e.soft}" fill="currentColor" fill-opacity="${ei}" stroke="none"/>`);
2808
2816
  for (let t of e.fills ?? []) n += `<path d="${t}" fill="currentColor" stroke="none"/>`;
2809
2817
  e.d && (n += `<path d="${e.d}"/>`), e.dash && (n += `<path d="${e.dash}" stroke-dasharray="2 2.5"/>`);
2810
- for (let [t, r, i = Qr] of e.dots ?? []) n += `<circle cx="${t}" cy="${r}" r="${i}" fill="currentColor" stroke="none"/>`;
2811
- return ei.set(e, n), n;
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;
2812
2820
  }
2813
- function ni(e, t) {
2814
- 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">${ti(e)}</svg>`;
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>`;
2815
2823
  }
2816
2824
  //#endregion
2817
- export { t as CHART_STYLE_KEYS, Zr 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, Xr as DRAWING_TOOL_ICONS, tr as FIBONACCI, _r as HNX_SESSIONS, gr as HOSE_SESSIONS, Qr as ICON_DOT_RADIUS, $r as ICON_SOFT_OPACITY, br as KRX_SESSIONS, mr as KR_COLORS, xn as LIGHT_PRICE_LIMITS, wn as LIGHT_THEME, e as LayerType, Mr as MARKET_CRYPTO, Er as MARKET_HNX, wr as MARKET_HOSE, Tr as MARKET_HOSE_ETF, kr as MARKET_KRX, Ar as MARKET_NXT, Nr as MARKET_NYSE, jr as MARKET_UPBIT_KRW, Dr as MARKET_UPCOM, Or as MARKET_VN30F, Qn as MIN_PANEL_HEIGHT, le as MS_TIME_THRESHOLD, xr as NXT_SESSIONS, er as PHI, Xn as PRICE_AXIS_WIDTH, St 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, Yr as UI_ICONS, vr as UPCOM_SESSIONS, yr as VN30F_SESSIONS, J as VN_COLORS, dn as VOLUME_ALPHA, Ge as alignToTimeframe, mt as autoPricePrecision, ut as barDateParts, lt as barDateZone, ue as barTimeUnit, Ye as barsAreDaily, Hn as chartStyleValue, re as clamp, Rr as computePriceLimits, _e as computePriceRange, ce as computeTickStep, m as contrastRatio, Fr as createMarketTheme, Pr as createVNTheme, xt as detectPrecision, Xt as drawingOption, W as en, me as findBarIndex, ge as fitPriceRange, _t as formatFraction, q as formatNumber, A as formatPrice, gt as formatPriceScaleLabel, We as formatTimestamp, ur as formatVND, bt as formatVolume, pr as formatVolumeLoc, vt as fractionTick, Ur as getCurrentSession, or as getLocale, lr as getLocaleStrings, ye as hexToRgba, ni as iconSvg, Et as indicatorSource, Ee as inkOn, ae as inverseLerp, qe as isDateOnly, Ct as isPriceSource, Ue as isTimeFrame, x as isUtcTimeZone, v as isValidTimeZone, ie as lerp, Se as lerpColor, Ln as lineDash, Ht as marketStatus, ve as mergeBar, se as niceNumber, fe as normalizeBar, de as normalizeBarTime, S as offsetAt, he as padPriceRange, Dt as parseIndicatorSource, w as parseTimeframe, nr as phiStep, Ft as pickBaseTimeframe, yt as priceFormatterFor, Ir as priceStepAt, pt as priceTagText, Lt as rankSymbols, Nn as readChartStyleOverrides, sn as readChartTypeOptions, In as readIndicatorPlotStyles, ne as readNews, Pn as readPaneStyle, l as readQuote, Te as readableOn, cr as registerLocale, At as resampleBars, zn as resolveChartTheme, Zt as resolveDrawingOptions, V as resolveVolumeColors, Z as roundToPriceStep, oe as roundToStep, Jt as sanitizeDrawingOptions, on as sanitizeDrawingStyle, zr as scaleMarketPrices, Bt as sessionMinute, ar as setLocale, pe as sliceVisibleData, wt as sourcePrice, Rt as stepDecimals, zt as symbolTimeZone, sr as t, He as tickBarCount, Ke as timeParts, st as timeframeBucketStart, it as timeframeFollowsDays, at as timeframeSpansDays, T as timeframeToMs, Xe as tzLabel, fr as usesKoreanUnits, rr as vi, Jr as vn30fContracts, qr as vn30fLastTradingDay, L as volumeColor, Ie as wallToUtc, p as withAlpha, y as zoneOffsetMinutes, Re as zonedDateFormatter };
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 };
2818
2826
 
2819
2827
  //# sourceMappingURL=index.js.map