@tradecanvas/commons 1.7.0 → 1.10.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
@@ -148,17 +148,17 @@ function p(e, t) {
148
148
  let n = Math.floor(Math.log10(e)), r = e / 10 ** n, i;
149
149
  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;
150
150
  }
151
- function m(e, t, n) {
151
+ function oe(e, t, n) {
152
152
  return p(p(t - e, !1) / (n - 1), !0);
153
153
  }
154
154
  //#endregion
155
155
  //#region src/utils/data.ts
156
- function h(e) {
156
+ function se(e) {
157
157
  return e > 0xe8d4a51000 ? e : e * 1e3;
158
158
  }
159
- function oe(e) {
159
+ function ce(e) {
160
160
  return {
161
- time: h(e.time ?? e.t ?? 0),
161
+ time: se(e.time ?? e.t ?? 0),
162
162
  open: e.open ?? e.o ?? 0,
163
163
  high: e.high ?? e.h ?? 0,
164
164
  low: e.low ?? e.l ?? 0,
@@ -166,11 +166,11 @@ function oe(e) {
166
166
  volume: e.volume ?? e.v ?? 0
167
167
  };
168
168
  }
169
- function se(e, t, n) {
169
+ function le(e, t, n) {
170
170
  let r = Math.max(0, t), i = Math.min(e.length, n + 1);
171
171
  return e.slice(r, i);
172
172
  }
173
- function ce(e, t) {
173
+ function ue(e, t) {
174
174
  let n = 0, r = e.length - 1;
175
175
  for (; n <= r;) {
176
176
  let i = n + r >>> 1;
@@ -180,7 +180,7 @@ function ce(e, t) {
180
180
  }
181
181
  return n;
182
182
  }
183
- function le(e, t, n, r = .05) {
183
+ function de(e, t, n, r = .05) {
184
184
  if (e.length === 0) return {
185
185
  min: 0,
186
186
  max: 1
@@ -197,7 +197,7 @@ function le(e, t, n, r = .05) {
197
197
  max: s + c * r
198
198
  };
199
199
  }
200
- function ue(e, t) {
200
+ function fe(e, t) {
201
201
  return {
202
202
  ...e,
203
203
  high: Math.max(e.high, t.price),
@@ -209,15 +209,17 @@ function ue(e, t) {
209
209
  }
210
210
  //#endregion
211
211
  //#region src/utils/color.ts
212
- function g(e, t = 1) {
213
- return `rgba(${parseInt(e.slice(1, 3), 16)}, ${parseInt(e.slice(3, 5), 16)}, ${parseInt(e.slice(5, 7), 16)}, ${t})`;
212
+ function pe(e, t = 1) {
213
+ let n = e.slice(1);
214
+ 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})`;
214
215
  }
215
- function de(e, t) {
216
- if (e.startsWith("#")) return g(e, t);
217
- let n = e.match(/rgba?\((\d+),\s*(\d+),\s*(\d+)/);
218
- return n ? `rgba(${n[1]}, ${n[2]}, ${n[3]}, ${t})` : e;
216
+ function me(e, t) {
217
+ let n = e.trim();
218
+ if (/^#([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i.test(n)) return pe(n, t);
219
+ let r = n.match(/^rgba?\(\s*(\d+(?:\.\d+)?)[\s,]+(\d+(?:\.\d+)?)[\s,]+(\d+(?:\.\d+)?)/i);
220
+ return r ? `rgba(${r[1]}, ${r[2]}, ${r[3]}, ${t})` : e;
219
221
  }
220
- function fe(e, t, n) {
222
+ function he(e, t, n) {
221
223
  let r = (e) => (e = e.replace("#", ""), e.length === 3 && (e = e[0] + e[0] + e[1] + e[1] + e[2] + e[2]), {
222
224
  r: parseInt(e.slice(0, 2), 16),
223
225
  g: parseInt(e.slice(2, 4), 16),
@@ -227,7 +229,7 @@ function fe(e, t, n) {
227
229
  }
228
230
  //#endregion
229
231
  //#region src/utils/timezone.ts
230
- var _ = 6e4, v = 1440 * _, y = 15 * _, pe = 8192, b = 7 * v, me = 4096, he = new Set([
232
+ var m = 6e4, h = 1440 * m, g = 15 * m, ge = 8192, _ = 7 * h, _e = 4096, ve = new Set([
231
233
  "UTC",
232
234
  "Etc/UTC",
233
235
  "GMT",
@@ -238,9 +240,9 @@ var _ = 6e4, v = 1440 * _, y = 15 * _, pe = 8192, b = 7 * v, me = 4096, he = new
238
240
  "Etc/Universal",
239
241
  "Zulu",
240
242
  "Etc/Zulu"
241
- ]), ge = /* @__PURE__ */ new Map(), x = /* @__PURE__ */ new Map(), _e = /* @__PURE__ */ new Map();
242
- function ve(e) {
243
- let t = ge.get(e);
243
+ ]), ye = /* @__PURE__ */ new Map(), v = /* @__PURE__ */ new Map(), y = /* @__PURE__ */ new Map();
244
+ function be(e) {
245
+ let t = ye.get(e);
244
246
  return t || (t = new Intl.DateTimeFormat("en-US", {
245
247
  timeZone: e,
246
248
  hourCycle: "h23",
@@ -250,34 +252,34 @@ function ve(e) {
250
252
  hour: "numeric",
251
253
  minute: "numeric",
252
254
  second: "numeric"
253
- }), ge.set(e, t)), t;
255
+ }), ye.set(e, t)), t;
254
256
  }
255
- function ye(e) {
257
+ function xe(e) {
256
258
  if (!e) return !1;
257
259
  try {
258
- return ve(e), !0;
260
+ return be(e), !0;
259
261
  } catch {
260
262
  return !1;
261
263
  }
262
264
  }
263
- function S(e, t) {
264
- if (!Number.isFinite(t) || he.has(e)) return 0;
265
- let n = _e.get(e);
266
- n || (n = /* @__PURE__ */ new Map(), _e.set(e, n));
267
- let r = Math.floor(t / b), i = n.get(r);
268
- return i || (i = be(e, r * b), n.size >= me && n.clear(), n.set(r, i)), t < i.change ? i.before : i.after;
269
- }
270
- function be(e, t) {
271
- let n = C(e, t), r = t + b - y, i = C(e, r);
265
+ function b(e, t) {
266
+ if (!Number.isFinite(t) || ve.has(e)) return 0;
267
+ let n = y.get(e);
268
+ n || (n = /* @__PURE__ */ new Map(), y.set(e, n));
269
+ let r = Math.floor(t / _), i = n.get(r);
270
+ return i || (i = Se(e, r * _), n.size >= _e && n.clear(), n.set(r, i)), t < i.change ? i.before : i.after;
271
+ }
272
+ function Se(e, t) {
273
+ let n = x(e, t), r = t + _ - g, i = x(e, r);
272
274
  if (i === n) return {
273
275
  before: n,
274
276
  change: Infinity,
275
277
  after: i
276
278
  };
277
279
  let a = t;
278
- for (; r - a > y;) {
279
- let t = a + Math.floor((r - a) / y / 2) * y;
280
- C(e, t) === n ? a = t : r = t;
280
+ for (; r - a > g;) {
281
+ let t = a + Math.floor((r - a) / g / 2) * g;
282
+ x(e, t) === n ? a = t : r = t;
281
283
  }
282
284
  return {
283
285
  before: n,
@@ -285,11 +287,11 @@ function be(e, t) {
285
287
  after: i
286
288
  };
287
289
  }
288
- function C(e, t) {
289
- let n = Math.floor(t / y), r = `${e}|${n}`, i = x.get(r);
290
+ function x(e, t) {
291
+ let n = Math.floor(t / g), r = `${e}|${n}`, i = v.get(r);
290
292
  if (i !== void 0) return i;
291
- let a = n * y, o = 1970, s = 1, c = 1, l = 0, u = 0, d = 0;
292
- for (let t of ve(e).formatToParts(new Date(a))) {
293
+ let a = n * g, o = 1970, s = 1, c = 1, l = 0, u = 0, d = 0;
294
+ for (let t of be(e).formatToParts(new Date(a))) {
293
295
  let e = Number(t.value);
294
296
  switch (t.type) {
295
297
  case "year":
@@ -312,21 +314,21 @@ function C(e, t) {
312
314
  break;
313
315
  }
314
316
  }
315
- let f = Math.round((Date.UTC(o, s - 1, c, l, u, d) - a) / _);
316
- return x.size >= pe && x.clear(), x.set(r, f), f;
317
+ let f = Math.round((Date.UTC(o, s - 1, c, l, u, d) - a) / m);
318
+ return v.size >= ge && v.clear(), v.set(r, f), f;
317
319
  }
318
- function w(e, t) {
319
- return e === null ? -new Date(t).getTimezoneOffset() : typeof e == "number" ? e : S(e, t);
320
+ function S(e, t) {
321
+ return e === null ? -new Date(t).getTimezoneOffset() : typeof e == "number" ? e : b(e, t);
320
322
  }
321
- function xe(e, t) {
322
- let n = e - w(t, e - v) * _;
323
- if (n + w(t, n) * _ === e) return n;
324
- let r = e - w(t, e + v) * _;
325
- return r + w(t, r) * _ === e ? r : n;
323
+ function Ce(e, t) {
324
+ let n = e - S(t, e - h) * m;
325
+ if (n + S(t, n) * m === e) return n;
326
+ let r = e - S(t, e + h) * m;
327
+ return r + S(t, r) * m === e ? r : n;
326
328
  }
327
- var T = /* @__PURE__ */ new Map();
328
- function Se(e, t, n) {
329
- let r = `${e}|${JSON.stringify(t)}|${n === null ? "local" : typeof n == "number" ? `fixed:${n}` : n}`, i = T.get(r);
329
+ var C = /* @__PURE__ */ new Map();
330
+ function we(e, t, n) {
331
+ let r = `${e}|${JSON.stringify(t)}|${n === null ? "local" : typeof n == "number" ? `fixed:${n}` : n}`, i = C.get(r);
330
332
  if (i) return i;
331
333
  let a = n === null ? void 0 : typeof n == "number" ? "UTC" : n, o;
332
334
  try {
@@ -340,12 +342,12 @@ function Se(e, t, n) {
340
342
  timeZone: a
341
343
  });
342
344
  }
343
- let s = typeof n == "number" ? n * _ : 0;
344
- return i = (e) => o.format(new Date(e + s)), T.set(r, i), i;
345
+ let s = typeof n == "number" ? n * m : 0;
346
+ return i = (e) => o.format(new Date(e + s)), C.set(r, i), i;
345
347
  }
346
348
  //#endregion
347
349
  //#region src/utils/time.ts
348
- var Ce = {
350
+ var Te = {
349
351
  "1s": 1e3,
350
352
  "5s": 5e3,
351
353
  "15s": 15e3,
@@ -372,16 +374,16 @@ var Ce = {
372
374
  "3M": 7776e6,
373
375
  "6M": 15552e6,
374
376
  "12M": 31536e6
375
- }, E = {
377
+ }, w = {
376
378
  s: 1e3,
377
379
  m: 6e4,
378
380
  h: 36e5,
379
381
  d: 864e5,
380
382
  w: 6048e5,
381
383
  M: 2592e6
382
- }, we = /^([1-9]\d*)([smhdwM])$/;
383
- function D(e) {
384
- let t = we.exec(e);
384
+ }, Ee = /^([1-9]\d*)([smhdwM])$/;
385
+ function T(e) {
386
+ let t = Ee.exec(e);
385
387
  if (!t) return null;
386
388
  let n = Number(t[1]);
387
389
  return Number.isSafeInteger(n) ? {
@@ -389,24 +391,24 @@ function D(e) {
389
391
  unit: t[2]
390
392
  } : null;
391
393
  }
392
- var Te = 1e6;
393
- function Ee(e) {
394
+ var De = 1e6;
395
+ function Oe(e) {
394
396
  let t = /^([1-9]\d*)T$/.exec(e);
395
397
  if (!t) return null;
396
398
  let n = Number(t[1]);
397
- return Number.isSafeInteger(n) && n <= Te ? n : null;
399
+ return Number.isSafeInteger(n) && n <= De ? n : null;
398
400
  }
399
- function De(e) {
400
- return D(e) !== null;
401
+ function ke(e) {
402
+ return T(e) !== null;
401
403
  }
402
- function O(e) {
403
- let t = Ce[e];
404
+ function E(e) {
405
+ let t = Te[e];
404
406
  if (t !== void 0) return t;
405
- let n = D(e);
406
- return n ? n.count * E[n.unit] : NaN;
407
+ let n = T(e);
408
+ return n ? n.count * w[n.unit] : NaN;
407
409
  }
408
- function Oe(e, t) {
409
- let n = new Date(e), r = O(t);
410
+ function Ae(e, t) {
411
+ let n = new Date(e), r = E(t);
410
412
  return r >= 864e5 ? n.toLocaleDateString(void 0, {
411
413
  month: "short",
412
414
  day: "numeric"
@@ -419,11 +421,11 @@ function Oe(e, t) {
419
421
  second: "2-digit"
420
422
  });
421
423
  }
422
- function ke(e, t) {
423
- let n = O(t);
424
+ function je(e, t) {
425
+ let n = E(t);
424
426
  return Math.floor(e / n) * n;
425
427
  }
426
- function Ae(e, t) {
428
+ function Me(e, t) {
427
429
  if (t === null) {
428
430
  let t = new Date(e);
429
431
  return {
@@ -434,7 +436,7 @@ function Ae(e, t) {
434
436
  minutes: t.getMinutes()
435
437
  };
436
438
  }
437
- let n = new Date(e + w(t, e) * 6e4);
439
+ let n = new Date(e + S(t, e) * 6e4);
438
440
  return {
439
441
  year: n.getUTCFullYear(),
440
442
  month: n.getUTCMonth() + 1,
@@ -443,79 +445,90 @@ function Ae(e, t) {
443
445
  minutes: n.getUTCMinutes()
444
446
  };
445
447
  }
446
- function je(e) {
448
+ function Ne(e) {
447
449
  return e.hours === 0 && e.minutes === 0;
448
450
  }
449
- function Me(e, t = Date.now()) {
450
- let n = w(e, t), r = n >= 0 ? "+" : "-", i = Math.abs(n), a = Math.floor(i / 60), o = i % 60;
451
+ var Pe = 20 * 36e5;
452
+ function Fe(e) {
453
+ let t = Math.min(e.length, 64);
454
+ if (t < 2) return;
455
+ let n = (e) => e > 0xe8d4a51000 ? e : e * 1e3, r = Infinity;
456
+ for (let i = 1; i < t; i++) {
457
+ let t = Math.abs(n(e[i].time) - n(e[i - 1].time));
458
+ t > 0 && t < r && (r = t);
459
+ }
460
+ return r === Infinity ? void 0 : r >= Pe;
461
+ }
462
+ function Ie(e, t = Date.now()) {
463
+ let n = S(e, t), r = n >= 0 ? "+" : "-", i = Math.abs(n), a = Math.floor(i / 60), o = i % 60;
451
464
  return o === 0 ? `UTC${r}${a}` : `UTC${r}${a}:${String(o).padStart(2, "0")}`;
452
465
  }
453
- var k = Date.UTC(1970, 0, 5);
454
- function A(e, t, n = 1) {
455
- let { count: r, unit: i } = D(t) ?? {
466
+ var D = Date.UTC(1970, 0, 5);
467
+ function O(e, t, n = 1) {
468
+ let { count: r, unit: i } = T(t) ?? {
456
469
  count: 1,
457
470
  unit: "m"
458
471
  };
459
472
  if (i === "s" || i === "m" || i === "h" || i === "d") {
460
- let t = r * E[i];
473
+ let t = r * w[i];
461
474
  return Math.floor(e / t) * t;
462
475
  }
463
476
  let a = new Date(e);
464
477
  if (i === "w") {
465
- let e = E.d, t = (a.getUTCDay() - n + 7) % 7, i = Date.UTC(a.getUTCFullYear(), a.getUTCMonth(), a.getUTCDate() - t);
478
+ let e = w.d, t = (a.getUTCDay() - n + 7) % 7, i = Date.UTC(a.getUTCFullYear(), a.getUTCMonth(), a.getUTCDate() - t);
466
479
  if (r <= 1) return i;
467
- let o = Math.floor((i - k) / (7 * e));
468
- return k + Math.floor(o / r) * r * 7 * e;
480
+ let o = Math.floor((i - D) / (7 * e));
481
+ return D + Math.floor(o / r) * r * 7 * e;
469
482
  }
470
483
  let o = a.getUTCFullYear() * 12 + a.getUTCMonth(), s = Math.floor(o / r) * r;
471
484
  return Date.UTC(Math.floor(s / 12), s % 12, 1);
472
485
  }
473
486
  //#endregion
474
487
  //#region src/utils/precision.ts
475
- var Ne = 64, j = /* @__PURE__ */ new Map();
476
- function Pe(e, t) {
477
- let n = `${e}|${t}`, r = j.get(n);
478
- return r || (j.size >= Ne && j.clear(), r = new Intl.NumberFormat(e, {
488
+ var Le = 64, k = /* @__PURE__ */ new Map();
489
+ function Re(e, t) {
490
+ let n = `${e}|${t}`, r = k.get(n);
491
+ return r || (k.size >= Le && k.clear(), r = new Intl.NumberFormat(e, {
479
492
  minimumFractionDigits: t,
480
493
  maximumFractionDigits: t
481
- }), j.set(n, r)), r;
494
+ }), k.set(n, r)), r;
482
495
  }
483
- function M(e, t = 2, n = "en-US") {
484
- return Pe(n, t).format(e);
496
+ function A(e, t = 2, n = "en-US") {
497
+ return Re(n, t).format(e);
485
498
  }
486
- function Fe(e, t) {
499
+ function ze(e, t) {
487
500
  if (!(t > e) || !Number.isFinite(e) || !Number.isFinite(t)) return 2;
488
- let n = m(e, t, 8);
501
+ let n = oe(e, t, 8);
489
502
  return n > 0 && n < 1 ? Math.ceil(-Math.log10(n)) + 1 : 2;
490
503
  }
491
- function Ie(e, t, n, r = 2, i = "en-US") {
504
+ function Be(e, t, n, r = 2, i = "en-US") {
492
505
  if ((t === "percentage" || t === "indexedTo100") && n && n !== 0) {
493
506
  if (t === "percentage") {
494
507
  let t = (e / n - 1) * 100;
495
508
  return `${t > 0 ? "+" : ""}${t.toFixed(2)}%`;
496
509
  }
497
- return M(e / n * 100, 2, i);
510
+ return A(e / n * 100, 2, i);
498
511
  }
499
- return M(e, r, i);
512
+ return A(e, r, i);
500
513
  }
501
- function N(e, t, n = 1) {
514
+ function Ve(e, t, n = 1) {
502
515
  let r = Number.isInteger(n) && n > 1 ? n : 1;
503
516
  if (!Number.isFinite(e) || !Number.isInteger(t) || t < 2) return String(e);
504
517
  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)) : "";
505
518
  return `${e < 0 && a > 0 ? "-" : ""}${o}'${String(c).padStart(l, "0")}${u}`;
506
519
  }
507
- function P(e) {
520
+ function He(e) {
508
521
  if (!Number.isInteger(e.denominator) || e.denominator < 2) return null;
509
522
  let t = Number.isInteger(e.subDenominator) && (e.subDenominator ?? 0) > 1 ? e.subDenominator : 1;
510
523
  return 1 / (e.denominator * t);
511
524
  }
512
- function Le(e) {
513
- return e ? typeof e == "function" ? e : P(e) === null ? null : (t) => N(t, e.denominator, e.subDenominator) : null;
525
+ function Ue(e) {
526
+ return e ? typeof e == "function" ? e : He(e) === null ? null : (t) => Ve(t, e.denominator, e.subDenominator) : null;
514
527
  }
515
- function Re(e) {
528
+ function We(e) {
516
529
  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);
517
530
  }
518
- function ze(e) {
531
+ function Ge(e) {
519
532
  let t = 0;
520
533
  for (let n of e) {
521
534
  let e = n.toString(), r = e.indexOf(".");
@@ -525,7 +538,7 @@ function ze(e) {
525
538
  }
526
539
  //#endregion
527
540
  //#region src/utils/priceSource.ts
528
- var F = [
541
+ var Ke = [
529
542
  "close",
530
543
  "open",
531
544
  "high",
@@ -535,10 +548,10 @@ var F = [
535
548
  "ohlc4",
536
549
  "hlcc4"
537
550
  ];
538
- function Be(e) {
539
- return typeof e == "string" && F.includes(e);
551
+ function qe(e) {
552
+ return typeof e == "string" && Ke.includes(e);
540
553
  }
541
- function Ve(e, t) {
554
+ function Je(e, t) {
542
555
  switch (t) {
543
556
  case "open": return e.open;
544
557
  case "high": return e.high;
@@ -550,13 +563,13 @@ function Ve(e, t) {
550
563
  default: return e.close;
551
564
  }
552
565
  }
553
- var He = /^ind:([^:]+):(.+)$/;
554
- function Ue(e, t) {
566
+ var Ye = /^ind:([^:]+):(.+)$/;
567
+ function Xe(e, t) {
555
568
  return `ind:${e}:${t}`;
556
569
  }
557
- function We(e) {
570
+ function Ze(e) {
558
571
  if (typeof e != "string") return null;
559
- let t = He.exec(e);
572
+ let t = Ye.exec(e);
560
573
  return t ? {
561
574
  instanceId: t[1],
562
575
  key: t[2]
@@ -564,11 +577,11 @@ function We(e) {
564
577
  }
565
578
  //#endregion
566
579
  //#region src/utils/resample.ts
567
- var Ge = 864e5;
568
- function Ke(e, t, n = 1) {
580
+ var Qe = 864e5;
581
+ function $e(e, t, n = 1) {
569
582
  let r = [], i = null;
570
583
  for (let a of e) {
571
- let e = A(a.time, t, n);
584
+ let e = O(a.time, t, n);
572
585
  i === null || e !== i.time ? (i = {
573
586
  time: e,
574
587
  open: a.open,
@@ -580,37 +593,37 @@ function Ke(e, t, n = 1) {
580
593
  }
581
594
  return r;
582
595
  }
583
- var I = (e) => e === "s" || e === "m" || e === "h" || e === "d";
584
- function qe(e, t) {
585
- let n = D(e), r = D(t);
596
+ var j = (e) => e === "s" || e === "m" || e === "h" || e === "d";
597
+ function et(e, t) {
598
+ let n = T(e), r = T(t);
586
599
  if (!n || !r) return !1;
587
- let i = O(e);
588
- return n.unit === "d" && n.count > 1 ? !1 : I(r.unit) ? I(n.unit) && O(t) % i === 0 : n.unit === r.unit ? r.count % n.count === 0 : I(n.unit) && Ge % i === 0;
600
+ let i = E(e);
601
+ return n.unit === "d" && n.count > 1 ? !1 : j(r.unit) ? j(n.unit) && E(t) % i === 0 : n.unit === r.unit ? r.count % n.count === 0 : j(n.unit) && Qe % i === 0;
589
602
  }
590
- function Je(e, t) {
603
+ function tt(e, t) {
591
604
  let n = null, r = 0;
592
605
  for (let i of t) {
593
- if (!qe(i, e)) continue;
594
- let t = O(i);
606
+ if (!et(i, e)) continue;
607
+ let t = E(i);
595
608
  t > r && (n = i, r = t);
596
609
  }
597
610
  return n;
598
611
  }
599
612
  //#endregion
600
613
  //#region src/utils/symbols.ts
601
- function L(e, t) {
614
+ function nt(e, t) {
602
615
  if (!e) return 0;
603
616
  if (e === t) return 1e3;
604
617
  if (e.startsWith(t)) return 600 - Math.min(100, e.length - t.length);
605
618
  let n = e.indexOf(t);
606
619
  return n >= 0 ? 300 - Math.min(100, n) : 0;
607
620
  }
608
- function Ye(e, t, n = 50, r) {
621
+ function rt(e, t, n = 50, r) {
609
622
  let i = t.trim().toUpperCase();
610
623
  if (!i) return e.slice(0, n);
611
624
  let a = [];
612
625
  for (let t of e) {
613
- let e = Math.max(L(t.symbol.toUpperCase(), i), L((t.description ?? "").toUpperCase(), i) * .8);
626
+ let e = Math.max(nt(t.symbol.toUpperCase(), i), nt((t.description ?? "").toUpperCase(), i) * .8);
614
627
  e > 0 && a.push({
615
628
  info: t,
616
629
  score: e + (r?.(t) ?? 0)
@@ -618,7 +631,7 @@ function Ye(e, t, n = 50, r) {
618
631
  }
619
632
  return a.sort((e, t) => t.score - e.score || e.info.symbol.localeCompare(t.info.symbol)), a.slice(0, n).map((e) => e.info);
620
633
  }
621
- function Xe(e) {
634
+ function it(e) {
622
635
  let t = typeof e == "number" ? e : Number(e);
623
636
  if (!Number.isFinite(t) || t <= 0) return 0;
624
637
  for (let e = 0; e <= 12; e++) {
@@ -627,7 +640,7 @@ function Xe(e) {
627
640
  }
628
641
  return 12;
629
642
  }
630
- function R(e) {
643
+ function M(e) {
631
644
  let t = /^(\d{1,2}):(\d{2})$/.exec(e.trim());
632
645
  if (!t) return null;
633
646
  let n = Number(t[1]), r = Number(t[2]);
@@ -635,26 +648,26 @@ function R(e) {
635
648
  }
636
649
  //#endregion
637
650
  //#region src/utils/marketStatus.ts
638
- var z = 864e5, B = 6e4, Ze = 8;
639
- function Qe(e, t) {
651
+ var N = 864e5, P = 6e4, at = 8;
652
+ function ot(e, t) {
640
653
  let n = e?.timezone, r = (e?.sessions ?? []).flatMap((e) => {
641
- let t = R(e.start), n = R(e.end);
654
+ let t = M(e.start), n = M(e.end);
642
655
  return t === null || n === null || t === n ? [] : [{
643
656
  start: t,
644
657
  end: n,
645
658
  days: Array.isArray(e.days) ? e.days : null
646
659
  }];
647
660
  });
648
- if (!n || !ye(n) || r.length === 0 || !Number.isFinite(t)) return {
661
+ if (!n || !xe(n) || r.length === 0 || !Number.isFinite(t)) return {
649
662
  state: "always",
650
663
  next: null
651
664
  };
652
- let i = S(n, t) * B, a = Math.floor((t + i) / z) * z, o = (e) => e - S(n, e - S(n, e - i) * B) * B, s = [];
653
- for (let e = -1; e <= Ze; e++) {
654
- let t = a + e * z, n = (Math.floor(t / z) + 4) % 7;
665
+ let i = b(n, t) * P, a = Math.floor((t + i) / N) * N, o = (e) => e - b(n, e - b(n, e - i) * P) * P, s = [];
666
+ for (let e = -1; e <= at; e++) {
667
+ let t = a + e * N, n = (Math.floor(t / N) + 4) % 7;
655
668
  for (let e of r) {
656
669
  if (e.days && !e.days.includes(n)) continue;
657
- let r = t + e.start * B, i = (e.end > e.start ? t : t + z) + e.end * B;
670
+ let r = t + e.start * P, i = (e.end > e.start ? t : t + N) + e.end * P;
658
671
  s.push([o(r), o(i)]);
659
672
  }
660
673
  }
@@ -677,15 +690,15 @@ function Qe(e, t) {
677
690
  }
678
691
  //#endregion
679
692
  //#region src/utils/drawingOptions.ts
680
- var $e = 48, et = 2e3, tt = 1e4;
681
- function nt(e) {
693
+ var st = 48, ct = 2e3, lt = 1e4;
694
+ function ut(e) {
682
695
  if (!Array.isArray(e)) return;
683
696
  let t = [];
684
697
  for (let n of e) {
685
- if (t.length >= $e) break;
698
+ if (t.length >= st) break;
686
699
  if (typeof n != "object" || !n) continue;
687
700
  let { value: e, visible: r, color: i } = n;
688
- if (typeof e != "number" || !Number.isFinite(e) || Math.abs(e) > tt || r !== void 0 && typeof r != "boolean") continue;
701
+ if (typeof e != "number" || !Number.isFinite(e) || Math.abs(e) > lt || r !== void 0 && typeof r != "boolean") continue;
689
702
  let a = {
690
703
  value: e,
691
704
  visible: r ?? !0
@@ -694,104 +707,104 @@ function nt(e) {
694
707
  }
695
708
  return t;
696
709
  }
697
- function V(e, t) {
710
+ function dt(e, t) {
698
711
  switch (e.kind) {
699
712
  case "boolean": return typeof t == "boolean" ? t : void 0;
700
713
  case "number": return typeof t != "number" || !Number.isFinite(t) ? void 0 : Math.min(e.max ?? Infinity, Math.max(e.min ?? -Infinity, t));
701
714
  case "choice": return typeof t == "string" && e.choices.some((e) => e.value === t) ? t : void 0;
702
- case "levels": return nt(t);
703
- case "text": return typeof t == "string" ? t.slice(0, et) : void 0;
715
+ case "levels": return ut(t);
716
+ case "text": return typeof t == "string" ? t.slice(0, ct) : void 0;
704
717
  }
705
718
  }
706
- function rt(e, t) {
719
+ function ft(e, t) {
707
720
  if (!e || typeof t != "object" || !t) return {};
708
721
  let n = {};
709
722
  for (let [r, i] of Object.entries(t)) {
710
723
  let t = e[r];
711
724
  if (!t) continue;
712
- let a = V(t, i);
725
+ let a = dt(t, i);
713
726
  a !== void 0 && (n[r] = a);
714
727
  }
715
728
  return n;
716
729
  }
717
- function it(e) {
730
+ function pt(e) {
718
731
  return Array.isArray(e) ? e.map((e) => ({ ...e })) : e;
719
732
  }
720
- function at(e, t, n) {
733
+ function mt(e, t, n) {
721
734
  let r = e?.[n];
722
- return r ? it((t && n in t ? V(r, t[n]) : void 0) ?? r.default) : t?.[n];
735
+ return r ? pt((t && n in t ? dt(r, t[n]) : void 0) ?? r.default) : t?.[n];
723
736
  }
724
- function ot(e, t) {
737
+ function ht(e, t) {
725
738
  let n = {};
726
- for (let r of Object.keys(e ?? {})) n[r] = at(e, t, r);
739
+ for (let r of Object.keys(e ?? {})) n[r] = mt(e, t, r);
727
740
  return n;
728
741
  }
729
742
  //#endregion
730
743
  //#region src/utils/drawingStyle.ts
731
- var st = [
744
+ var gt = [
732
745
  "solid",
733
746
  "dashed",
734
747
  "dotted"
735
- ], ct = 64, lt = 2e3, ut = 20, dt = 200;
736
- function H(e, t, n) {
748
+ ], _t = 64, vt = 2e3, yt = 20, bt = 200;
749
+ function F(e, t, n) {
737
750
  return typeof e == "number" && Number.isFinite(e) ? Math.min(n, Math.max(t, e)) : void 0;
738
751
  }
739
- function ft(e) {
740
- return typeof e == "string" && e.length > 0 && e.length <= ct ? e : void 0;
752
+ function xt(e) {
753
+ return typeof e == "string" && e.length > 0 && e.length <= _t ? e : void 0;
741
754
  }
742
- function pt(e) {
755
+ function St(e) {
743
756
  if (typeof e != "object" || !e) return {};
744
- let t = e, n = {}, r = ft(t.color);
757
+ let t = e, n = {}, r = xt(t.color);
745
758
  r !== void 0 && (n.color = r);
746
- let i = H(t.lineWidth, .5, ut);
747
- i !== void 0 && (n.lineWidth = i), st.includes(t.lineStyle) && (n.lineStyle = t.lineStyle);
748
- let a = ft(t.fillColor);
759
+ let i = F(t.lineWidth, .5, yt);
760
+ i !== void 0 && (n.lineWidth = i), gt.includes(t.lineStyle) && (n.lineStyle = t.lineStyle);
761
+ let a = xt(t.fillColor);
749
762
  a !== void 0 && (n.fillColor = a);
750
- let o = H(t.fillOpacity, 0, 1);
763
+ let o = F(t.fillOpacity, 0, 1);
751
764
  o !== void 0 && (n.fillOpacity = o);
752
- let s = H(t.fontSize, 6, dt);
753
- return s !== void 0 && (n.fontSize = s), typeof t.text == "string" && (n.text = t.text.slice(0, lt)), n;
765
+ let s = F(t.fontSize, 6, bt);
766
+ return s !== void 0 && (n.fontSize = s), typeof t.text == "string" && (n.text = t.text.slice(0, vt)), n;
754
767
  }
755
768
  //#endregion
756
769
  //#region src/utils/chartTypeOptions.ts
757
- var U = (e) => typeof e == "number" && Number.isFinite(e) && e > 0, W = (e, t, n) => typeof e == "number" && Number.isInteger(e) && e >= t && e <= n, G = (e) => typeof e == "object" && !!e && !Array.isArray(e);
758
- function mt(e) {
759
- if (!G(e)) return {};
770
+ var I = (e) => typeof e == "number" && Number.isFinite(e) && e > 0, L = (e, t, n) => typeof e == "number" && Number.isInteger(e) && e >= t && e <= n, R = (e) => typeof e == "object" && !!e && !Array.isArray(e);
771
+ function Ct(e) {
772
+ if (!R(e)) return {};
760
773
  let t = {};
761
- if (G(e.renko)) {
774
+ if (R(e.renko)) {
762
775
  let { boxSize: n, atrPeriod: r } = e.renko;
763
776
  t.renko = {
764
- ...U(n) || n === "atr" ? { boxSize: n } : {},
765
- ...W(r, 1, 500) ? { atrPeriod: r } : {}
777
+ ...I(n) || n === "atr" ? { boxSize: n } : {},
778
+ ...L(r, 1, 500) ? { atrPeriod: r } : {}
766
779
  };
767
780
  }
768
- if (G(e.lineBreak)) {
781
+ if (R(e.lineBreak)) {
769
782
  let { lines: n } = e.lineBreak;
770
- t.lineBreak = W(n, 1, 10) ? { lines: n } : {};
783
+ t.lineBreak = L(n, 1, 10) ? { lines: n } : {};
771
784
  }
772
- if (G(e.kagi)) {
785
+ if (R(e.kagi)) {
773
786
  let { reversal: n, reversalType: r } = e.kagi;
774
787
  t.kagi = {
775
- ...U(n) ? { reversal: n } : {},
788
+ ...I(n) ? { reversal: n } : {},
776
789
  ...r === "percent" || r === "price" ? { reversalType: r } : {}
777
790
  };
778
791
  }
779
- if (G(e.pointAndFigure)) {
792
+ if (R(e.pointAndFigure)) {
780
793
  let { boxSize: n, reversal: r } = e.pointAndFigure;
781
794
  t.pointAndFigure = {
782
- ...U(n) || n === "auto" ? { boxSize: n } : {},
783
- ...W(r, 1, 10) ? { reversal: r } : {}
795
+ ...I(n) || n === "auto" ? { boxSize: n } : {},
796
+ ...L(r, 1, 10) ? { reversal: r } : {}
784
797
  };
785
798
  }
786
- if (G(e.rangeBars)) {
799
+ if (R(e.rangeBars)) {
787
800
  let { range: n } = e.rangeBars;
788
- t.rangeBars = U(n) || n === "auto" ? { range: n } : {};
801
+ t.rangeBars = I(n) || n === "auto" ? { range: n } : {};
789
802
  }
790
803
  return t;
791
804
  }
792
805
  //#endregion
793
806
  //#region src/constants/defaults.ts
794
- var ht = {
807
+ var wt = {
795
808
  autoScale: !0,
796
809
  rightMargin: 5,
797
810
  minBarSpacing: 2,
@@ -802,7 +815,7 @@ var ht = {
802
815
  vLineStyle: "solid"
803
816
  },
804
817
  crosshair: { mode: "magnet" }
805
- }, gt = [
818
+ }, Tt = [
806
819
  "1s",
807
820
  "1m",
808
821
  "3m",
@@ -819,7 +832,7 @@ var ht = {
819
832
  "3d",
820
833
  "1w",
821
834
  "1M"
822
- ], _t = [
835
+ ], Et = [
823
836
  "1m",
824
837
  "5m",
825
838
  "15m",
@@ -833,7 +846,7 @@ var ht = {
833
846
  "3M",
834
847
  "6M",
835
848
  "12M"
836
- ], vt = [
849
+ ], Dt = [
837
850
  "1m",
838
851
  "5m",
839
852
  "15m",
@@ -843,7 +856,7 @@ var ht = {
843
856
  "1d",
844
857
  "1w",
845
858
  "1M"
846
- ], yt = [
859
+ ], Ot = [
847
860
  "1m",
848
861
  "5m",
849
862
  "15m",
@@ -851,12 +864,12 @@ var ht = {
851
864
  "4h",
852
865
  "1d",
853
866
  "1w"
854
- ], bt = 8, xt = 2, St = 70, Ct = 30, wt = 60, Tt = 120, Et = {
855
- family: "-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif",
867
+ ], kt = 8, At = 2, jt = 70, Mt = 30, Nt = 60, Pt = 120, z = "-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif", B = {
868
+ family: z,
856
869
  sizeSmall: 10,
857
870
  sizeMedium: 12,
858
871
  sizeLarge: 14
859
- }, K = {
872
+ }, V = {
860
873
  amber: "#f2a93b",
861
874
  up: "#1fa874",
862
875
  down: "#e8505b",
@@ -867,33 +880,37 @@ var ht = {
867
880
  rose: "#e25592",
868
881
  neutral: "#7d8696",
869
882
  ink: "#0c1016"
870
- }, Dt = [
871
- K.blue,
872
- K.ochre,
873
- K.violet,
874
- K.cyan,
875
- K.rose
876
- ], Ot = {
883
+ }, Ft = .22;
884
+ function H(e) {
885
+ return me(e, Ft);
886
+ }
887
+ var U = "#2eb88a", W = "#e85a67", It = [
888
+ V.blue,
889
+ V.ochre,
890
+ V.violet,
891
+ V.cyan,
892
+ V.rose
893
+ ], G = {
877
894
  name: "dark",
878
- background: K.ink,
895
+ background: V.ink,
879
896
  text: "#d9dde4",
880
897
  textSecondary: "#7d8696",
881
898
  grid: "#161b23",
882
899
  crosshair: "#8a93a3",
883
- candleUp: "#3ccf91",
884
- candleDown: "#f0616d",
885
- candleUpWick: "#3ccf91",
886
- candleDownWick: "#f0616d",
887
- lineColor: K.amber,
900
+ candleUp: U,
901
+ candleDown: W,
902
+ candleUpWick: U,
903
+ candleDownWick: W,
904
+ lineColor: V.amber,
888
905
  areaTopColor: "rgba(242, 169, 59, 0.32)",
889
906
  areaBottomColor: "rgba(242, 169, 59, 0.0)",
890
- volumeUp: "rgba(60, 207, 145, 0.28)",
891
- volumeDown: "rgba(240, 97, 109, 0.28)",
907
+ volumeUp: H(U),
908
+ volumeDown: H(W),
892
909
  axisLine: "#1f2630",
893
- axisLabel: "#c3c9d3",
910
+ axisLabel: "#9aa3b2",
894
911
  axisLabelBackground: "#1f2630",
895
- font: Et
896
- }, kt = {
912
+ font: B
913
+ }, K = {
897
914
  name: "light",
898
915
  background: "#ffffff",
899
916
  text: "#0f131a",
@@ -907,13 +924,13 @@ var ht = {
907
924
  lineColor: "#c77a0a",
908
925
  areaTopColor: "rgba(199, 122, 10, 0.24)",
909
926
  areaBottomColor: "rgba(199, 122, 10, 0.0)",
910
- volumeUp: "rgba(22, 163, 106, 0.25)",
911
- volumeDown: "rgba(217, 65, 79, 0.25)",
927
+ volumeUp: H("#16a36a"),
928
+ volumeDown: H("#d9414f"),
912
929
  axisLine: "#dde1e7",
913
- axisLabel: "#3f4754",
930
+ axisLabel: "#5b6472",
914
931
  axisLabelBackground: "#eef0f3",
915
- font: Et
916
- }, At = {
932
+ font: B
933
+ }, q = {
917
934
  name: "terminal",
918
935
  background: "#0E0E0E",
919
936
  text: "#C0C0C0",
@@ -938,7 +955,28 @@ var ht = {
938
955
  sizeMedium: 12,
939
956
  sizeLarge: 14
940
957
  }
941
- }, q = {
958
+ }, Lt = new Set([
959
+ G.volumeUp,
960
+ G.volumeDown,
961
+ K.volumeUp,
962
+ K.volumeDown,
963
+ q.volumeUp,
964
+ q.volumeDown
965
+ ]);
966
+ function Rt(e) {
967
+ let t = (e, t) => {
968
+ if (!Lt.has(e)) return e;
969
+ let n = H(t);
970
+ return n === t ? e : n;
971
+ };
972
+ return {
973
+ up: t(e.volumeUp, e.candleUp),
974
+ down: t(e.volumeDown, e.candleDown)
975
+ };
976
+ }
977
+ //#endregion
978
+ //#region src/i18n/en.ts
979
+ var J = {
942
980
  candlestick: "Candlestick",
943
981
  line: "Line",
944
982
  area: "Area",
@@ -1041,7 +1079,7 @@ var ht = {
1041
1079
  error: "Error",
1042
1080
  numberDecimalSeparator: ".",
1043
1081
  numberGroupSeparator: ","
1044
- }, J = {
1082
+ }, zt = {
1045
1083
  candlestick: "Nến",
1046
1084
  line: "Đường",
1047
1085
  area: "Vùng",
@@ -1144,31 +1182,31 @@ var ht = {
1144
1182
  error: "Lỗi",
1145
1183
  numberDecimalSeparator: ",",
1146
1184
  numberGroupSeparator: "."
1147
- }, Y = new Map([["en", q], ["vi", J]]), X = "en", jt = q;
1148
- function Mt(e) {
1149
- X = e, jt = Y.get(e) ?? q;
1185
+ }, Y = new Map([["en", J], ["vi", zt]]), X = "en", Bt = J;
1186
+ function Vt(e) {
1187
+ X = e, Bt = Y.get(e) ?? J;
1150
1188
  }
1151
- function Nt() {
1189
+ function Ht() {
1152
1190
  return X;
1153
1191
  }
1154
- function Pt(e) {
1155
- return jt[e] ?? q[e] ?? e;
1192
+ function Ut(e) {
1193
+ return Bt[e] ?? J[e] ?? e;
1156
1194
  }
1157
- function Ft(e, t) {
1195
+ function Wt(e, t) {
1158
1196
  Y.set(e, t);
1159
1197
  }
1160
- function It(e) {
1161
- return Y.get(e ?? X) ?? q;
1198
+ function Gt(e) {
1199
+ return Y.get(e ?? X) ?? J;
1162
1200
  }
1163
1201
  function Z(e, t = 2, n) {
1164
- let r = Y.get(n ?? X) ?? q, i = r.numberDecimalSeparator, a = r.numberGroupSeparator, [o, s] = e.toFixed(t).split("."), c = o.startsWith("-"), l = c ? o.slice(1) : o, u = "";
1202
+ let r = Y.get(n ?? X) ?? J, i = r.numberDecimalSeparator, a = r.numberGroupSeparator, [o, s] = e.toFixed(t).split("."), c = o.startsWith("-"), l = c ? o.slice(1) : o, u = "";
1165
1203
  for (let e = l.length - 1, t = 0; e >= 0; e--, t++) t > 0 && t % 3 == 0 && (u = a + u), u = l[e] + u;
1166
1204
  return c && (u = "-" + u), s ? u + i + s : u;
1167
1205
  }
1168
- function Lt(e) {
1206
+ function Kt(e) {
1169
1207
  return Z(e, 0, "vi");
1170
1208
  }
1171
- function Rt(e, t) {
1209
+ function qt(e, t) {
1172
1210
  return e >= 1e9 ? Z(e / 1e9, 2, t ?? X) + "B" : e >= 1e6 ? Z(e / 1e6, 2, t ?? X) + "M" : e >= 1e3 ? Z(e / 1e3, 2, t ?? X) + "K" : Z(e, 0, t ?? X);
1173
1211
  }
1174
1212
  //#endregion
@@ -1180,7 +1218,7 @@ var Q = {
1180
1218
  ceiling: "#FF00FF",
1181
1219
  floor: "#00FFFF",
1182
1220
  reference: "#FFD700"
1183
- }, zt = [
1221
+ }, Jt = [
1184
1222
  {
1185
1223
  name: "ATO",
1186
1224
  startTime: "09:00",
@@ -1236,7 +1274,7 @@ var Q = {
1236
1274
  endTime: "14:45",
1237
1275
  type: "preClose"
1238
1276
  }
1239
- ], Bt = {
1277
+ ], Yt = {
1240
1278
  type: "stock",
1241
1279
  exchange: "HOSE",
1242
1280
  currency: "VND",
@@ -1248,9 +1286,9 @@ var Q = {
1248
1286
  ceilingPercent: 7,
1249
1287
  floorPercent: 7
1250
1288
  },
1251
- sessions: zt,
1289
+ sessions: Jt,
1252
1290
  colorScheme: Q
1253
- }, Vt = {
1291
+ }, Xt = {
1254
1292
  type: "stock",
1255
1293
  exchange: "HNX",
1256
1294
  currency: "VND",
@@ -1264,7 +1302,7 @@ var Q = {
1264
1302
  },
1265
1303
  sessions: $,
1266
1304
  colorScheme: Q
1267
- }, Ht = {
1305
+ }, Zt = {
1268
1306
  type: "stock",
1269
1307
  exchange: "UPCOM",
1270
1308
  currency: "VND",
@@ -1278,12 +1316,12 @@ var Q = {
1278
1316
  },
1279
1317
  sessions: $,
1280
1318
  colorScheme: Q
1281
- }, Ut = {
1319
+ }, Qt = {
1282
1320
  type: "crypto",
1283
1321
  currency: "USDT",
1284
1322
  pricePrecision: 2,
1285
1323
  priceLimits: { enabled: !1 }
1286
- }, Wt = {
1324
+ }, $t = {
1287
1325
  type: "stock",
1288
1326
  exchange: "NYSE",
1289
1327
  currency: "USD",
@@ -1311,7 +1349,7 @@ var Q = {
1311
1349
  }
1312
1350
  ]
1313
1351
  };
1314
- function Gt(e) {
1352
+ function en(e) {
1315
1353
  return {
1316
1354
  ...e,
1317
1355
  candleUp: Q.up,
@@ -1322,7 +1360,7 @@ function Gt(e) {
1322
1360
  volumeDown: "rgba(0, 0, 255, 0.3)"
1323
1361
  };
1324
1362
  }
1325
- function Kt(e, t) {
1363
+ function tn(e, t) {
1326
1364
  if (!t.priceLimits?.enabled || !t.priceLimits.ceilingPercent) return null;
1327
1365
  let n = t.priceLimits.ceilingPercent / 100, r = (t.priceLimits.floorPercent ?? t.priceLimits.ceilingPercent) / 100;
1328
1366
  return {
@@ -1331,12 +1369,12 @@ function Kt(e, t) {
1331
1369
  reference: e
1332
1370
  };
1333
1371
  }
1334
- function qt(e) {
1372
+ function nn(e) {
1335
1373
  let t = /* @__PURE__ */ new Date(), n = `${String(t.getHours()).padStart(2, "0")}:${String(t.getMinutes()).padStart(2, "0")}`;
1336
1374
  for (let t of e) if (n >= t.startTime && n < t.endTime) return t;
1337
1375
  return null;
1338
1376
  }
1339
1377
  //#endregion
1340
- export { At as DARK_TERMINAL, Ot as DARK_THEME, xt as DEFAULT_BAR_SPACING, bt as DEFAULT_BAR_WIDTH, ht as DEFAULT_CHART_OPTIONS, t as DEFAULT_DRAWING_STYLE, Tt as DEFAULT_PANEL_HEIGHT, a as DEFAULT_RECONNECT, r as DEFAULT_SIGNAL_STYLE, o as DEFAULT_STREAM_CONFIG, yt as DEFAULT_TIMEFRAME_FAVORITES, i as DEFAULT_TRADE_ZONE_STYLE, n as DEFAULT_TRADING_CONFIG, $ as HNX_SESSIONS, zt as HOSE_SESSIONS, kt as LIGHT_THEME, e as LayerType, Ut as MARKET_CRYPTO, Vt as MARKET_HNX, Bt as MARKET_HOSE, Wt as MARKET_NYSE, Ht as MARKET_UPCOM, wt as MIN_PANEL_HEIGHT, St as PRICE_AXIS_WIDTH, F as PRICE_SOURCES, K as TC_PALETTE, Dt as TC_SERIES_COLORS, gt as TIMEFRAMES_CRYPTO, vt as TIMEFRAMES_FOREX, _t as TIMEFRAMES_STOCK, Ct as TIME_AXIS_HEIGHT, Q as VN_COLORS, ke as alignToTimeframe, Fe as autoPricePrecision, ne as clamp, Kt as computePriceLimits, le as computePriceRange, m as computeTickStep, Gt as createVNTheme, ze as detectPrecision, at as drawingOption, q as en, ce as findBarIndex, N as formatFraction, Z as formatNumber, M as formatPrice, Ie as formatPriceScaleLabel, Oe as formatTimestamp, Lt as formatVND, Re as formatVolume, Rt as formatVolumeLoc, P as fractionTick, qt as getCurrentSession, Nt as getLocale, It as getLocaleStrings, g as hexToRgba, Ue as indicatorSource, ie as inverseLerp, je as isDateOnly, Be as isPriceSource, De as isTimeFrame, ye as isValidTimeZone, re as lerp, fe as lerpColor, Qe as marketStatus, ue as mergeBar, p as niceNumber, oe as normalizeBar, h as normalizeBarTime, w as offsetAt, We as parseIndicatorSource, D as parseTimeframe, Je as pickBaseTimeframe, Le as priceFormatterFor, Ye as rankSymbols, mt as readChartTypeOptions, te as readNews, c as readQuote, Ft as registerLocale, Ke as resampleBars, ot as resolveDrawingOptions, ae as roundToStep, rt as sanitizeDrawingOptions, pt as sanitizeDrawingStyle, R as sessionMinute, Mt as setLocale, se as sliceVisibleData, Ve as sourcePrice, Xe as stepDecimals, Pt as t, Ee as tickBarCount, Ae as timeParts, A as timeframeBucketStart, O as timeframeToMs, Me as tzLabel, J as vi, xe as wallToUtc, de as withAlpha, S as zoneOffsetMinutes, Se as zonedDateFormatter };
1378
+ export { q as DARK_TERMINAL, G as DARK_THEME, At as DEFAULT_BAR_SPACING, kt as DEFAULT_BAR_WIDTH, wt as DEFAULT_CHART_OPTIONS, t as DEFAULT_DRAWING_STYLE, z as DEFAULT_FONT_FAMILY, Pt as DEFAULT_PANEL_HEIGHT, a as DEFAULT_RECONNECT, r as DEFAULT_SIGNAL_STYLE, o as DEFAULT_STREAM_CONFIG, Ot as DEFAULT_TIMEFRAME_FAVORITES, i as DEFAULT_TRADE_ZONE_STYLE, n as DEFAULT_TRADING_CONFIG, $ as HNX_SESSIONS, Jt as HOSE_SESSIONS, K as LIGHT_THEME, e as LayerType, Qt as MARKET_CRYPTO, Xt as MARKET_HNX, Yt as MARKET_HOSE, $t as MARKET_NYSE, Zt as MARKET_UPCOM, Nt as MIN_PANEL_HEIGHT, jt as PRICE_AXIS_WIDTH, Ke as PRICE_SOURCES, V as TC_PALETTE, It as TC_SERIES_COLORS, Tt as TIMEFRAMES_CRYPTO, Dt as TIMEFRAMES_FOREX, Et as TIMEFRAMES_STOCK, Mt as TIME_AXIS_HEIGHT, Q as VN_COLORS, Ft as VOLUME_ALPHA, je as alignToTimeframe, ze as autoPricePrecision, Fe as barsAreDaily, ne as clamp, tn as computePriceLimits, de as computePriceRange, oe as computeTickStep, en as createVNTheme, Ge as detectPrecision, mt as drawingOption, J as en, ue as findBarIndex, Ve as formatFraction, Z as formatNumber, A as formatPrice, Be as formatPriceScaleLabel, Ae as formatTimestamp, Kt as formatVND, We as formatVolume, qt as formatVolumeLoc, He as fractionTick, nn as getCurrentSession, Ht as getLocale, Gt as getLocaleStrings, pe as hexToRgba, Xe as indicatorSource, ie as inverseLerp, Ne as isDateOnly, qe as isPriceSource, ke as isTimeFrame, xe as isValidTimeZone, re as lerp, he as lerpColor, ot as marketStatus, fe as mergeBar, p as niceNumber, ce as normalizeBar, se as normalizeBarTime, S as offsetAt, Ze as parseIndicatorSource, T as parseTimeframe, tt as pickBaseTimeframe, Ue as priceFormatterFor, rt as rankSymbols, Ct as readChartTypeOptions, te as readNews, c as readQuote, Wt as registerLocale, $e as resampleBars, ht as resolveDrawingOptions, Rt as resolveVolumeColors, ae as roundToStep, ft as sanitizeDrawingOptions, St as sanitizeDrawingStyle, M as sessionMinute, Vt as setLocale, le as sliceVisibleData, Je as sourcePrice, it as stepDecimals, Ut as t, Oe as tickBarCount, Me as timeParts, O as timeframeBucketStart, E as timeframeToMs, Ie as tzLabel, zt as vi, H as volumeColor, Ce as wallToUtc, me as withAlpha, b as zoneOffsetMinutes, we as zonedDateFormatter };
1341
1379
 
1342
1380
  //# sourceMappingURL=index.js.map