@tradecanvas/commons 1.25.0 → 1.26.0

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