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