@tradecanvas/commons 1.79.2 → 1.81.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
@@ -166,7 +166,52 @@ var i = n.replace(/\s+/g, ""), a = {
166
166
  autoScroll: !0,
167
167
  showCurrentPriceLine: !0,
168
168
  aggregateTicks: !1
169
- }, d = [
169
+ }, d = 160;
170
+ function ee(e) {
171
+ let t = e.lastIndexOf(":");
172
+ return t <= 0 || t === e.length - 1 ? e : e.slice(t + 1);
173
+ }
174
+ function te(e, t) {
175
+ if (!e) return 0;
176
+ if (e === t) return 1e3;
177
+ if (e.startsWith(t)) return 600 - Math.min(100, e.length - t.length);
178
+ let n = e.indexOf(t);
179
+ return n >= 0 ? 300 - Math.min(100, n) : 0;
180
+ }
181
+ function ne(e, t, n = 50, r) {
182
+ let i = t.trim().toUpperCase();
183
+ if (!i) return e.slice(0, n);
184
+ let a = [];
185
+ for (let t of e) {
186
+ let e = Math.max(te(t.symbol.toUpperCase(), i), te((t.description ?? "").toUpperCase(), i) * .8);
187
+ e > 0 && a.push({
188
+ info: t,
189
+ score: e + (r?.(t) ?? 0)
190
+ });
191
+ }
192
+ return a.sort((e, t) => t.score - e.score || e.info.symbol.localeCompare(t.info.symbol)), a.slice(0, n).map((e) => e.info);
193
+ }
194
+ function re(e) {
195
+ let t = typeof e == "number" ? e : Number(e);
196
+ if (!Number.isFinite(t) || t <= 0) return 0;
197
+ for (let e = 0; e <= 12; e++) {
198
+ let n = t * 10 ** e;
199
+ if (Math.abs(n - Math.round(n)) < 1e-9 * Math.max(1, n)) return e;
200
+ }
201
+ return 12;
202
+ }
203
+ function ie(e) {
204
+ return e?.timeZone ?? e?.timezone;
205
+ }
206
+ function ae(e) {
207
+ let t = /^(\d{1,2}):(\d{2})$/.exec(e.trim());
208
+ if (!t) return null;
209
+ let n = Number(t[1]), r = Number(t[2]);
210
+ return n === 24 && r === 0 ? 1440 : n < 24 && r < 60 ? n * 60 + r : null;
211
+ }
212
+ //#endregion
213
+ //#region src/types/quote.ts
214
+ var oe = [
170
215
  "change",
171
216
  "changePercent",
172
217
  "open",
@@ -178,17 +223,17 @@ var i = n.replace(/\s+/g, ""), a = {
178
223
  "ask",
179
224
  "time"
180
225
  ];
181
- function ee(e) {
226
+ function se(e) {
182
227
  if (!e || typeof e != "object") return null;
183
228
  let t = e, n = typeof t.symbol == "string" ? t.symbol.trim() : "";
184
- if (!n || n.length > 64 || !te(t.last)) return null;
229
+ if (!n || n.length > 160 || !ce(t.last)) return null;
185
230
  let r = {
186
231
  symbol: n,
187
232
  last: t.last
188
233
  };
189
- for (let e of d) {
234
+ for (let e of oe) {
190
235
  let n = t[e];
191
- te(n) && (r[e] = n);
236
+ ce(n) && (r[e] = n);
192
237
  }
193
238
  let i = r.prevClose ?? r.open;
194
239
  if (r.change === void 0 && i !== void 0 && (r.change = r.last - i), r.changePercent === void 0 && r.change !== void 0) {
@@ -197,16 +242,16 @@ function ee(e) {
197
242
  }
198
243
  return r;
199
244
  }
200
- function te(e) {
245
+ function ce(e) {
201
246
  return typeof e == "number" && Number.isFinite(e);
202
247
  }
203
248
  //#endregion
204
249
  //#region src/types/news.ts
205
- var ne = 300, re = 1e3, f = (e, t) => {
250
+ var le = 300, ue = 1e3, f = (e, t) => {
206
251
  if (typeof e != "string") return;
207
252
  let n = e.trim();
208
253
  return n ? n.slice(0, t) : void 0;
209
- }, ie = (e) => {
254
+ }, de = (e) => {
210
255
  if (typeof e == "string") try {
211
256
  let t = new URL(e);
212
257
  return t.protocol === "https:" || t.protocol === "http:" ? t.href : void 0;
@@ -214,61 +259,61 @@ var ne = 300, re = 1e3, f = (e, t) => {
214
259
  return;
215
260
  }
216
261
  };
217
- function ae(e, t = 20) {
262
+ function fe(e, t = 20) {
218
263
  if (!Array.isArray(e)) return [];
219
264
  let n = [];
220
265
  for (let t of e) {
221
266
  if (!t || typeof t != "object") continue;
222
- let e = t, r = f(e.title, ne);
267
+ let e = t, r = f(e.title, le);
223
268
  if (!r || typeof e.time != "number" || !Number.isFinite(e.time)) continue;
224
269
  let i = {
225
270
  title: r,
226
271
  time: e.time
227
- }, a = ie(e.url);
272
+ }, a = de(e.url);
228
273
  a && (i.url = a);
229
- let o = f(e.source, ne);
274
+ let o = f(e.source, le);
230
275
  o && (i.source = o);
231
- let s = f(e.summary, re);
276
+ let s = f(e.summary, ue);
232
277
  s && (i.summary = s);
233
- let c = f(e.id, ne);
278
+ let c = f(e.id, le);
234
279
  c && (i.id = c), n.push(i);
235
280
  }
236
281
  return n.sort((e, t) => t.time - e.time).slice(0, Math.max(0, t));
237
282
  }
238
283
  //#endregion
239
284
  //#region src/utils/math.ts
240
- function oe(e, t, n) {
285
+ function pe(e, t, n) {
241
286
  return Math.max(t, Math.min(n, e));
242
287
  }
243
- function se(e, t, n) {
288
+ function me(e, t, n) {
244
289
  return e + (t - e) * n;
245
290
  }
246
- function ce(e, t, n) {
291
+ function he(e, t, n) {
247
292
  return e === t ? 0 : (n - e) / (t - e);
248
293
  }
249
- function le(e, t) {
294
+ function ge(e, t) {
250
295
  return Math.round(e / t) * t;
251
296
  }
252
- function ue(e, t) {
297
+ function _e(e, t) {
253
298
  let n = Math.floor(Math.log10(e)), r = e / 10 ** n, i;
254
299
  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;
255
300
  }
256
- function de(e, t, n) {
257
- return ue(ue(t - e, !1) / (n - 1), !0);
301
+ function ve(e, t, n) {
302
+ return _e(_e(t - e, !1) / (n - 1), !0);
258
303
  }
259
304
  //#endregion
260
305
  //#region src/utils/data.ts
261
- var fe = 1e11;
262
- function pe(e) {
306
+ var ye = 1e11;
307
+ function be(e) {
263
308
  let t = e.length > 0 ? e[e.length - 1].time : NaN;
264
309
  return Number.isFinite(t) ? Math.abs(t) >= 1e11 ? 1 : 1e3 : 1;
265
310
  }
266
- function me(e, t) {
311
+ function xe(e, t) {
267
312
  return t === void 0 ? Math.abs(e) >= 1e11 ? e : e * 1e3 : e * t;
268
313
  }
269
- function he(e) {
314
+ function Se(e) {
270
315
  return {
271
- time: me(e.time ?? e.t ?? 0),
316
+ time: xe(e.time ?? e.t ?? 0),
272
317
  open: e.open ?? e.o ?? 0,
273
318
  high: e.high ?? e.h ?? 0,
274
319
  low: e.low ?? e.l ?? 0,
@@ -276,11 +321,11 @@ function he(e) {
276
321
  volume: e.volume ?? e.v ?? 0
277
322
  };
278
323
  }
279
- function ge(e, t, n) {
324
+ function Ce(e, t, n) {
280
325
  let r = Math.max(0, t), i = Math.min(e.length, n + 1);
281
326
  return e.slice(r, i);
282
327
  }
283
- function _e(e, t) {
328
+ function we(e, t) {
284
329
  let n = 0, r = e.length - 1;
285
330
  for (; n <= r;) {
286
331
  let i = n + r >>> 1;
@@ -290,7 +335,7 @@ function _e(e, t) {
290
335
  }
291
336
  return n;
292
337
  }
293
- function ve(e, t, n, r = !1) {
338
+ function Te(e, t, n, r = !1) {
294
339
  let i = r && e > 0 && t > 0 ? Math.log(t / e) : NaN;
295
340
  if (Number.isFinite(i)) {
296
341
  let r = i || Math.log(1 + 2 * n), a = Math.exp(r * n);
@@ -305,7 +350,7 @@ function ve(e, t, n, r = !1) {
305
350
  max: t + a * n
306
351
  };
307
352
  }
308
- function ye(e, t, n, r = !1) {
353
+ function Ee(e, t, n, r = !1) {
309
354
  let i = Math.max(1 - n.top - n.bottom, 2 ** -52), a = r && e > 0 && t > 0 ? Math.log(t / e) : NaN;
310
355
  if (Number.isFinite(a)) {
311
356
  let r = (a || Math.log(1.01)) / i;
@@ -320,7 +365,7 @@ function ye(e, t, n, r = !1) {
320
365
  max: t + o * n.top
321
366
  };
322
367
  }
323
- function be(e, t, n, r = .05, i = !1) {
368
+ function De(e, t, n, r = .05, i = !1) {
324
369
  if (e.length === 0) return {
325
370
  min: 0,
326
371
  max: 1
@@ -330,9 +375,9 @@ function be(e, t, n, r = .05, i = !1) {
330
375
  return s === Infinity ? {
331
376
  min: 0,
332
377
  max: 1
333
- } : ve(s, c, r, i);
378
+ } : Te(s, c, r, i);
334
379
  }
335
- function xe(e, t) {
380
+ function Oe(e, t) {
336
381
  return {
337
382
  ...e,
338
383
  high: Math.max(e.high, t.price),
@@ -343,18 +388,18 @@ function xe(e, t) {
343
388
  }
344
389
  //#endregion
345
390
  //#region src/utils/color.ts
346
- function Se(e, t = 1) {
391
+ function ke(e, t = 1) {
347
392
  let n = e.slice(1);
348
393
  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})`;
349
394
  }
350
395
  function p(e, t) {
351
396
  let n = e.trim();
352
- if (/^#([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i.test(n)) return Se(n, t);
397
+ if (/^#([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i.test(n)) return ke(n, t);
353
398
  let r = n.match(/^rgba?\(\s*(\d+(?:\.\d+)?)[\s,]+(\d+(?:\.\d+)?)[\s,]+(\d+(?:\.\d+)?)/i);
354
399
  return r ? `rgba(${r[1]}, ${r[2]}, ${r[3]}, ${t})` : e;
355
400
  }
356
- var Ce = 3;
357
- function we(e) {
401
+ var Ae = 3;
402
+ function m(e) {
358
403
  let t = e.trim(), n = /^#([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i.exec(t);
359
404
  if (n) {
360
405
  let e = n[1];
@@ -377,14 +422,14 @@ function we(e) {
377
422
  a: Math.min(1, Math.max(0, i))
378
423
  };
379
424
  }
380
- function Te(e, t, n) {
381
- let r = we(e), i = we(t);
425
+ function je(e, t, n) {
426
+ let r = m(e), i = m(t);
382
427
  if (!r || !i) return n < .5 ? e : t;
383
428
  let a = r.a + (i.a - r.a) * n, o = (e, t) => a === 0 ? 0 : Math.round((e * r.a + (t * i.a - e * r.a) * n) / a), s = `${o(r.r, i.r)},${o(r.g, i.g)},${o(r.b, i.b)}`;
384
- return a >= 1 ? `rgb(${s})` : `rgba(${s},${Number(a.toFixed(Ce))})`;
429
+ return a >= 1 ? `rgb(${s})` : `rgba(${s},${Number(a.toFixed(Ae))})`;
385
430
  }
386
- function Ee(e) {
387
- let t = we(e);
431
+ function Me(e) {
432
+ let t = m(e);
388
433
  if (!t) return null;
389
434
  let n = (e) => {
390
435
  let t = e / 255;
@@ -392,26 +437,26 @@ function Ee(e) {
392
437
  };
393
438
  return .2126 * n(t.r) + .7152 * n(t.g) + .0722 * n(t.b);
394
439
  }
395
- function m(e, t) {
396
- let n = Ee(e), r = Ee(t);
440
+ function h(e, t) {
441
+ let n = Me(e), r = Me(t);
397
442
  return n === null || r === null ? null : (Math.max(n, r) + .05) / (Math.min(n, r) + .05);
398
443
  }
399
- var De = 20;
400
- function Oe(e, t, n, r) {
401
- let i = m(e, t);
444
+ var Ne = 20;
445
+ function Pe(e, t, n, r) {
446
+ let i = h(e, t);
402
447
  if (i === null || i >= r) return e;
403
- for (let i = 1; i <= De; i++) {
404
- let a = Te(e, n, i / De);
405
- if ((m(a, t) ?? 0) >= r) return a;
448
+ for (let i = 1; i <= Ne; i++) {
449
+ let a = je(e, n, i / Ne);
450
+ if ((h(a, t) ?? 0) >= r) return a;
406
451
  }
407
452
  return n;
408
453
  }
409
- function ke(e, t, n) {
410
- return (m(e, t) ?? 0) >= (m(e, n) ?? 0) ? t : n;
454
+ function Fe(e, t, n) {
455
+ return (h(e, t) ?? 0) >= (h(e, n) ?? 0) ? t : n;
411
456
  }
412
457
  //#endregion
413
458
  //#region src/utils/timezone.ts
414
- var h = 6e4, Ae = 1440 * h, g = 15 * h, je = 8192, _ = 7 * Ae, Me = 4096, Ne = new Set([
459
+ var g = 6e4, Ie = 1440 * g, _ = 15 * g, Le = 8192, Re = 7 * Ie, ze = 4096, Be = new Set([
415
460
  "UTC",
416
461
  "Etc/UTC",
417
462
  "GMT",
@@ -422,9 +467,9 @@ var h = 6e4, Ae = 1440 * h, g = 15 * h, je = 8192, _ = 7 * Ae, Me = 4096, Ne = n
422
467
  "Etc/Universal",
423
468
  "Zulu",
424
469
  "Etc/Zulu"
425
- ]), Pe = /* @__PURE__ */ new Map(), v = /* @__PURE__ */ new Map(), Fe = /* @__PURE__ */ new Map();
426
- function Ie(e) {
427
- let t = Pe.get(e);
470
+ ]), Ve = /* @__PURE__ */ new Map(), v = /* @__PURE__ */ new Map(), He = /* @__PURE__ */ new Map();
471
+ function Ue(e) {
472
+ let t = Ve.get(e);
428
473
  return t || (t = new Intl.DateTimeFormat("en-US", {
429
474
  timeZone: e,
430
475
  hourCycle: "h23",
@@ -434,34 +479,34 @@ function Ie(e) {
434
479
  hour: "numeric",
435
480
  minute: "numeric",
436
481
  second: "numeric"
437
- }), Pe.set(e, t)), t;
482
+ }), Ve.set(e, t)), t;
438
483
  }
439
- function y(e) {
484
+ function We(e) {
440
485
  if (!e) return !1;
441
486
  try {
442
- return Ie(e), !0;
487
+ return Ue(e), !0;
443
488
  } catch {
444
489
  return !1;
445
490
  }
446
491
  }
447
- function b(e, t) {
448
- if (!Number.isFinite(t) || Ne.has(e)) return 0;
449
- let n = Fe.get(e);
450
- n || (n = /* @__PURE__ */ new Map(), Fe.set(e, n));
451
- let r = Math.floor(t / _), i = n.get(r);
452
- return i || (i = Le(e, r * _), n.size >= Me && n.clear(), n.set(r, i)), t < i.change ? i.before : i.after;
492
+ function y(e, t) {
493
+ if (!Number.isFinite(t) || Be.has(e)) return 0;
494
+ let n = He.get(e);
495
+ n || (n = /* @__PURE__ */ new Map(), He.set(e, n));
496
+ let r = Math.floor(t / Re), i = n.get(r);
497
+ return i || (i = Ge(e, r * Re), n.size >= ze && n.clear(), n.set(r, i)), t < i.change ? i.before : i.after;
453
498
  }
454
- function Le(e, t) {
455
- let n = Re(e, t), r = t + _ - g, i = Re(e, r);
499
+ function Ge(e, t) {
500
+ let n = Ke(e, t), r = t + Re - _, i = Ke(e, r);
456
501
  if (i === n) return {
457
502
  before: n,
458
503
  change: Infinity,
459
504
  after: i
460
505
  };
461
506
  let a = t;
462
- for (; r - a > g;) {
463
- let t = a + Math.floor((r - a) / g / 2) * g;
464
- Re(e, t) === n ? a = t : r = t;
507
+ for (; r - a > _;) {
508
+ let t = a + Math.floor((r - a) / _ / 2) * _;
509
+ Ke(e, t) === n ? a = t : r = t;
465
510
  }
466
511
  return {
467
512
  before: n,
@@ -469,11 +514,11 @@ function Le(e, t) {
469
514
  after: i
470
515
  };
471
516
  }
472
- function Re(e, t) {
473
- let n = Math.floor(t / g), r = `${e}|${n}`, i = v.get(r);
517
+ function Ke(e, t) {
518
+ let n = Math.floor(t / _), r = `${e}|${n}`, i = v.get(r);
474
519
  if (i !== void 0) return i;
475
- let a = n * g, o = 1970, s = 1, c = 1, l = 0, u = 0, d = 0;
476
- for (let t of Ie(e).formatToParts(new Date(a))) {
520
+ let a = n * _, o = 1970, s = 1, c = 1, l = 0, u = 0, d = 0;
521
+ for (let t of Ue(e).formatToParts(new Date(a))) {
477
522
  let e = Number(t.value);
478
523
  switch (t.type) {
479
524
  case "year":
@@ -496,24 +541,24 @@ function Re(e, t) {
496
541
  break;
497
542
  }
498
543
  }
499
- let ee = Math.round((Date.UTC(o, s - 1, c, l, u, d) - a) / h);
500
- return v.size >= je && v.clear(), v.set(r, ee), ee;
544
+ let ee = Math.round((Date.UTC(o, s - 1, c, l, u, d) - a) / g);
545
+ return v.size >= Le && v.clear(), v.set(r, ee), ee;
501
546
  }
502
- function x(e) {
503
- return e === 0 || typeof e == "string" && Ne.has(e);
547
+ function b(e) {
548
+ return e === 0 || typeof e == "string" && Be.has(e);
504
549
  }
505
- function S(e, t) {
506
- return e === null ? -new Date(t).getTimezoneOffset() : typeof e == "number" ? e : b(e, t);
550
+ function x(e, t) {
551
+ return e === null ? -new Date(t).getTimezoneOffset() : typeof e == "number" ? e : y(e, t);
507
552
  }
508
- function ze(e, t) {
509
- let n = e - S(t, e - Ae) * h;
510
- if (n + S(t, n) * h === e) return n;
511
- let r = e - S(t, e + Ae) * h;
512
- return r + S(t, r) * h === e ? r : n;
513
- }
514
- var Be = /* @__PURE__ */ new Map();
515
- function Ve(e, t, n) {
516
- let r = `${e}|${JSON.stringify(t)}|${n === null ? "local" : typeof n == "number" ? `fixed:${n}` : n}`, i = Be.get(r);
553
+ function qe(e, t) {
554
+ let n = e - x(t, e - Ie) * g;
555
+ if (n + x(t, n) * g === e) return n;
556
+ let r = e - x(t, e + Ie) * g;
557
+ return r + x(t, r) * g === e ? r : n;
558
+ }
559
+ var Je = /* @__PURE__ */ new Map();
560
+ function Ye(e, t, n) {
561
+ let r = `${e}|${JSON.stringify(t)}|${n === null ? "local" : typeof n == "number" ? `fixed:${n}` : n}`, i = Je.get(r);
517
562
  if (i) return i;
518
563
  let a = n === null ? void 0 : typeof n == "number" ? "UTC" : n, o;
519
564
  try {
@@ -527,12 +572,12 @@ function Ve(e, t, n) {
527
572
  timeZone: a
528
573
  });
529
574
  }
530
- let s = typeof n == "number" ? n * h : 0;
531
- return i = (e) => o.format(new Date(e + s)), Be.set(r, i), i;
575
+ let s = typeof n == "number" ? n * g : 0;
576
+ return i = (e) => o.format(new Date(e + s)), Je.set(r, i), i;
532
577
  }
533
578
  //#endregion
534
579
  //#region src/utils/time.ts
535
- var He = {
580
+ var Xe = {
536
581
  "1s": 1e3,
537
582
  "5s": 5e3,
538
583
  "15s": 15e3,
@@ -559,16 +604,16 @@ var He = {
559
604
  "3M": 7776e6,
560
605
  "6M": 15552e6,
561
606
  "12M": 31536e6
562
- }, C = {
607
+ }, S = {
563
608
  s: 1e3,
564
609
  m: 6e4,
565
610
  h: 36e5,
566
611
  d: 864e5,
567
612
  w: 6048e5,
568
613
  M: 2592e6
569
- }, Ue = /^([1-9]\d*)([smhdwM])$/;
570
- function w(e) {
571
- let t = Ue.exec(e);
614
+ }, Ze = /^([1-9]\d*)([smhdwM])$/;
615
+ function C(e) {
616
+ let t = Ze.exec(e);
572
617
  if (!t) return null;
573
618
  let n = Number(t[1]);
574
619
  return Number.isSafeInteger(n) ? {
@@ -576,24 +621,24 @@ function w(e) {
576
621
  unit: t[2]
577
622
  } : null;
578
623
  }
579
- var We = 1e6;
580
- function Ge(e) {
624
+ var Qe = 1e6;
625
+ function $e(e) {
581
626
  let t = /^([1-9]\d*)T$/.exec(e);
582
627
  if (!t) return null;
583
628
  let n = Number(t[1]);
584
- return Number.isSafeInteger(n) && n <= We ? n : null;
629
+ return Number.isSafeInteger(n) && n <= Qe ? n : null;
585
630
  }
586
- function Ke(e) {
587
- return w(e) !== null;
631
+ function et(e) {
632
+ return C(e) !== null;
588
633
  }
589
- function T(e) {
590
- let t = He[e];
634
+ function w(e) {
635
+ let t = Xe[e];
591
636
  if (t !== void 0) return t;
592
- let n = w(e);
593
- return n ? n.count * C[n.unit] : NaN;
637
+ let n = C(e);
638
+ return n ? n.count * S[n.unit] : NaN;
594
639
  }
595
- function qe(e, t) {
596
- let n = new Date(e), r = T(t);
640
+ function tt(e, t) {
641
+ let n = new Date(e), r = w(t);
597
642
  return r >= 864e5 ? n.toLocaleDateString(void 0, {
598
643
  month: "short",
599
644
  day: "numeric"
@@ -606,11 +651,11 @@ function qe(e, t) {
606
651
  second: "2-digit"
607
652
  });
608
653
  }
609
- function Je(e, t) {
610
- let n = T(t);
654
+ function nt(e, t) {
655
+ let n = w(t);
611
656
  return Math.floor(e / n) * n;
612
657
  }
613
- function Ye(e, t) {
658
+ function rt(e, t) {
614
659
  if (t === null) {
615
660
  let t = new Date(e);
616
661
  return {
@@ -621,7 +666,7 @@ function Ye(e, t) {
621
666
  minutes: t.getMinutes()
622
667
  };
623
668
  }
624
- let n = new Date(e + S(t, e) * 6e4);
669
+ let n = new Date(e + x(t, e) * 6e4);
625
670
  return {
626
671
  year: n.getUTCFullYear(),
627
672
  month: n.getUTCMonth() + 1,
@@ -630,122 +675,122 @@ function Ye(e, t) {
630
675
  minutes: n.getUTCMinutes()
631
676
  };
632
677
  }
633
- function Xe(e) {
678
+ function it(e) {
634
679
  return e.hours === 0 && e.minutes === 0;
635
680
  }
636
- var Ze = 20 * 36e5;
637
- function Qe(e) {
681
+ var at = 20 * 36e5;
682
+ function ot(e) {
638
683
  let t = Math.min(e.length, 64);
639
684
  if (t < 2) return;
640
- let n = pe(e), r = Infinity;
685
+ let n = be(e), r = Infinity;
641
686
  for (let i = 1; i < t; i++) {
642
687
  let t = Math.abs(e[i].time - e[i - 1].time) * n;
643
688
  t > 0 && t < r && (r = t);
644
689
  }
645
- return r === Infinity ? void 0 : r >= Ze;
690
+ return r === Infinity ? void 0 : r >= at;
646
691
  }
647
- function $e(e, t = Date.now()) {
648
- let n = S(e, t), r = n >= 0 ? "+" : "-", i = Math.abs(n), a = Math.floor(i / 60), o = i % 60;
692
+ function st(e, t = Date.now()) {
693
+ let n = x(e, t), r = n >= 0 ? "+" : "-", i = Math.abs(n), a = Math.floor(i / 60), o = i % 60;
649
694
  return o === 0 ? `UTC${r}${a}` : `UTC${r}${a}:${String(o).padStart(2, "0")}`;
650
695
  }
651
- var et = Date.UTC(1970, 0, 5), tt = C.m, E = C.d, nt = 24, rt = {
696
+ var ct = Date.UTC(1970, 0, 5), lt = S.m, T = S.d, ut = 24, dt = {
652
697
  count: 1,
653
698
  unit: "m"
654
- }, it = 256, D = /* @__PURE__ */ new Map();
655
- function at(e) {
656
- let t = D.get(e);
657
- return t || (t = w(e) ?? rt, D.size >= it && D.clear(), D.set(e, t)), t;
699
+ }, ft = 256, E = /* @__PURE__ */ new Map();
700
+ function D(e) {
701
+ let t = E.get(e);
702
+ return t || (t = C(e) ?? dt, E.size >= ft && E.clear(), E.set(e, t)), t;
658
703
  }
659
- function ot({ unit: e }) {
704
+ function pt({ unit: e }) {
660
705
  return e === "d" || e === "w" || e === "M";
661
706
  }
662
- function st(e) {
663
- return e.unit === "h" ? e.count > 1 && nt % e.count === 0 : ot(e);
707
+ function mt(e) {
708
+ return e.unit === "h" ? e.count > 1 && ut % e.count === 0 : pt(e);
664
709
  }
665
- function ct(e) {
666
- return st(at(e));
710
+ function O(e) {
711
+ return mt(D(e));
667
712
  }
668
- function lt(e) {
669
- return ot(at(e));
713
+ function ht(e) {
714
+ return pt(D(e));
670
715
  }
671
- function ut(e) {
672
- return e !== void 0 && !x(e);
716
+ function gt(e) {
717
+ return e !== void 0 && !b(e);
673
718
  }
674
- function O(e, t, n = 1) {
675
- let r = at(t), i = typeof n == "number" ? n : n.weekStartsOn ?? 1, a = typeof n == "number" ? void 0 : n.timeZone;
676
- return !ut(a) || !st(r) || typeof n == "object" && n.dates && e % E === 0 ? dt(e, r, i) : ze(dt(e + S(a, e) * tt, r, i), a);
719
+ function k(e, t, n = 1) {
720
+ let r = D(t), i = typeof n == "number" ? n : n.weekStartsOn ?? 1, a = typeof n == "number" ? void 0 : n.timeZone;
721
+ return !gt(a) || !mt(r) || typeof n == "object" && n.dates && e % T === 0 ? _t(e, r, i) : qe(_t(e + x(a, e) * lt, r, i), a);
677
722
  }
678
- function dt(e, { count: t, unit: n }, r) {
723
+ function _t(e, { count: t, unit: n }, r) {
679
724
  if (n === "s" || n === "m" || n === "h" || n === "d") {
680
- let r = t * C[n];
725
+ let r = t * S[n];
681
726
  return Math.floor(e / r) * r;
682
727
  }
683
728
  let i = new Date(e);
684
729
  if (n === "w") {
685
730
  let e = (i.getUTCDay() - r + 7) % 7, n = Date.UTC(i.getUTCFullYear(), i.getUTCMonth(), i.getUTCDate() - e);
686
731
  if (t <= 1) return n;
687
- let a = Math.floor((n - et) / (7 * E));
688
- return et + Math.floor(a / t) * t * 7 * E;
732
+ let a = Math.floor((n - ct) / (7 * T));
733
+ return ct + Math.floor(a / t) * t * 7 * T;
689
734
  }
690
735
  let a = i.getUTCFullYear() * 12 + i.getUTCMonth(), o = Math.floor(a / t) * t;
691
736
  return Date.UTC(Math.floor(o / 12), o % 12, 1);
692
737
  }
693
- function ft(e, t, n) {
694
- return e % E === 0 ? 0 : n && O(e, "1d", { timeZone: n }) === e ? n : t;
738
+ function vt(e, t, n) {
739
+ return e % T === 0 ? 0 : n && k(e, "1d", { timeZone: n }) === e ? n : t;
695
740
  }
696
- function pt(e, t, n) {
697
- return Ye(e, ft(e, t, n));
741
+ function yt(e, t, n) {
742
+ return rt(e, vt(e, t, n));
698
743
  }
699
744
  //#endregion
700
745
  //#region src/utils/precision.ts
701
- var mt = 64, k = /* @__PURE__ */ new Map();
702
- function ht(e, t) {
703
- let n = `${e}|${t}`, r = k.get(n);
704
- return r || (k.size >= mt && k.clear(), r = new Intl.NumberFormat(e, {
746
+ var bt = 64, A = /* @__PURE__ */ new Map();
747
+ function xt(e, t) {
748
+ let n = `${e}|${t}`, r = A.get(n);
749
+ return r || (A.size >= bt && A.clear(), r = new Intl.NumberFormat(e, {
705
750
  minimumFractionDigits: t,
706
751
  maximumFractionDigits: t
707
- }), k.set(n, r)), r;
752
+ }), A.set(n, r)), r;
708
753
  }
709
- function gt(e, t, n) {
710
- return t.formatPrice ? t.formatPrice(e) : A(e, n ?? t.pricePrecision ?? _t(t.priceRange.min, t.priceRange.max), t.numberLocale ?? "en-US");
754
+ function St(e, t, n) {
755
+ return t.formatPrice ? t.formatPrice(e) : j(e, n ?? t.pricePrecision ?? Ct(t.priceRange.min, t.priceRange.max), t.numberLocale ?? "en-US");
711
756
  }
712
- function A(e, t = 2, n = "en-US") {
713
- return ht(n, t).format(e);
757
+ function j(e, t = 2, n = "en-US") {
758
+ return xt(n, t).format(e);
714
759
  }
715
- function _t(e, t) {
760
+ function Ct(e, t) {
716
761
  if (!(t > e) || !Number.isFinite(e) || !Number.isFinite(t)) return 2;
717
- let n = de(e, t, 8);
762
+ let n = ve(e, t, 8);
718
763
  return n > 0 && n < 1 ? Math.ceil(-Math.log10(n)) + 1 : 2;
719
764
  }
720
- var vt = 2;
721
- function yt(e, t, n, r = 2, i = "en-US") {
765
+ var wt = 2;
766
+ function Tt(e, t, n, r = 2, i = "en-US") {
722
767
  if ((t === "percentage" || t === "indexedTo100") && n && n !== 0) {
723
768
  if (t === "percentage") {
724
- let t = (e / n - 1) * 100, r = A(Math.abs(t), vt, i);
725
- return `${r === A(0, vt, i) ? "" : t > 0 ? "+" : "-"}${r}%`;
769
+ let t = (e / n - 1) * 100, r = j(Math.abs(t), wt, i);
770
+ return `${r === j(0, wt, i) ? "" : t > 0 ? "+" : "-"}${r}%`;
726
771
  }
727
- return A(e / n * 100, 2, i);
772
+ return j(e / n * 100, 2, i);
728
773
  }
729
- return A(e, r, i);
774
+ return j(e, r, i);
730
775
  }
731
- function bt(e, t, n = 1) {
776
+ function Et(e, t, n = 1) {
732
777
  let r = Number.isInteger(n) && n > 1 ? n : 1;
733
778
  if (!Number.isFinite(e) || !Number.isInteger(t) || t < 2) return String(e);
734
779
  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)) : "";
735
780
  return `${e < 0 && a > 0 ? "-" : ""}${o}'${String(c).padStart(l, "0")}${u}`;
736
781
  }
737
- function xt(e) {
782
+ function Dt(e) {
738
783
  if (!Number.isInteger(e.denominator) || e.denominator < 2) return null;
739
784
  let t = Number.isInteger(e.subDenominator) && (e.subDenominator ?? 0) > 1 ? e.subDenominator : 1;
740
785
  return 1 / (e.denominator * t);
741
786
  }
742
- function St(e) {
743
- return e ? typeof e == "function" ? e : xt(e) === null ? null : (t) => bt(t, e.denominator, e.subDenominator) : null;
787
+ function Ot(e) {
788
+ return e ? typeof e == "function" ? e : Dt(e) === null ? null : (t) => Et(t, e.denominator, e.subDenominator) : null;
744
789
  }
745
- function Ct(e) {
790
+ function kt(e) {
746
791
  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);
747
792
  }
748
- function wt(e) {
793
+ function At(e) {
749
794
  let t = 0;
750
795
  for (let n of e) {
751
796
  let e = n.toString(), r = e.indexOf(".");
@@ -755,7 +800,7 @@ function wt(e) {
755
800
  }
756
801
  //#endregion
757
802
  //#region src/utils/priceSource.ts
758
- var Tt = [
803
+ var jt = [
759
804
  "close",
760
805
  "open",
761
806
  "high",
@@ -765,10 +810,10 @@ var Tt = [
765
810
  "ohlc4",
766
811
  "hlcc4"
767
812
  ];
768
- function Et(e) {
769
- return typeof e == "string" && Tt.includes(e);
813
+ function Mt(e) {
814
+ return typeof e == "string" && jt.includes(e);
770
815
  }
771
- function Dt(e, t) {
816
+ function Nt(e, t) {
772
817
  switch (t) {
773
818
  case "open": return e.open;
774
819
  case "high": return e.high;
@@ -780,13 +825,13 @@ function Dt(e, t) {
780
825
  default: return e.close;
781
826
  }
782
827
  }
783
- var Ot = /^ind:([^:]+):(.+)$/;
784
- function kt(e, t) {
828
+ var Pt = /^ind:([^:]+):(.+)$/;
829
+ function Ft(e, t) {
785
830
  return `ind:${e}:${t}`;
786
831
  }
787
- function At(e) {
832
+ function It(e) {
788
833
  if (typeof e != "string") return null;
789
- let t = Ot.exec(e);
834
+ let t = Pt.exec(e);
790
835
  return t ? {
791
836
  instanceId: t[1],
792
837
  key: t[2]
@@ -794,11 +839,11 @@ function At(e) {
794
839
  }
795
840
  //#endregion
796
841
  //#region src/utils/resample.ts
797
- var jt = 864e5, Mt = 6e4;
798
- function Nt(e, t, n = 1) {
799
- let r = Pt(e, t, n), i = [], a = null;
842
+ var Lt = 864e5, Rt = 6e4;
843
+ function zt(e, t, n = 1) {
844
+ let r = Bt(e, t, n), i = [], a = null;
800
845
  for (let n of e) {
801
- let e = O(n.time, t, r);
846
+ let e = k(n.time, t, r);
802
847
  a === null || e !== a.time ? (a = {
803
848
  time: e,
804
849
  open: n.open,
@@ -810,96 +855,56 @@ function Nt(e, t, n = 1) {
810
855
  }
811
856
  return i;
812
857
  }
813
- function Pt(e, t, n) {
814
- return typeof n == "number" || n.timeZone === void 0 || n.dates !== void 0 || x(n.timeZone) || !ct(t) ? n : {
858
+ function Bt(e, t, n) {
859
+ return typeof n == "number" || n.timeZone === void 0 || n.dates !== void 0 || b(n.timeZone) || !O(t) ? n : {
815
860
  ...n,
816
- dates: Qe(e) === !0
861
+ dates: ot(e) === !0
817
862
  };
818
863
  }
819
- var Ft = (e) => e === "s" || e === "m" || e === "h" || e === "d";
820
- function It(e, t) {
821
- let n = w(e), r = w(t);
864
+ var Vt = (e) => e === "s" || e === "m" || e === "h" || e === "d";
865
+ function Ht(e, t) {
866
+ let n = C(e), r = C(t);
822
867
  if (!n || !r) return !1;
823
- let i = T(e);
824
- return n.unit === "d" && n.count > 1 ? !1 : Ft(r.unit) ? Ft(n.unit) && T(t) % i === 0 : n.unit === r.unit ? r.count % n.count === 0 : Ft(n.unit) && jt % i === 0;
868
+ let i = w(e);
869
+ return n.unit === "d" && n.count > 1 ? !1 : Vt(r.unit) ? Vt(n.unit) && w(t) % i === 0 : n.unit === r.unit ? r.count % n.count === 0 : Vt(n.unit) && Lt % i === 0;
825
870
  }
826
- function Lt(e, t) {
827
- let n = T(e);
828
- if (!(n < jt)) return !0;
871
+ function Ut(e, t) {
872
+ let n = w(e);
873
+ if (!(n < Lt)) return !0;
829
874
  let r = (/* @__PURE__ */ new Date()).getUTCFullYear();
830
- return [Date.UTC(r, 0, 1), Date.UTC(r, 6, 1)].every((e) => S(t, e) * Mt % n === 0);
875
+ return [Date.UTC(r, 0, 1), Date.UTC(r, 6, 1)].every((e) => x(t, e) * Rt % n === 0);
831
876
  }
832
- function Rt(e, t, n = {}) {
833
- let { timeZone: r } = n, i = r !== void 0 && !x(r) && ct(e) ? r : void 0, a = null, o = 0;
877
+ function Wt(e, t, n = {}) {
878
+ let { timeZone: r } = n, i = r !== void 0 && !b(r) && O(e) ? r : void 0, a = null, o = 0;
834
879
  for (let n of t) {
835
- if (!It(n, e) || i !== void 0 && !Lt(n, i)) continue;
836
- let t = T(n);
880
+ if (!Ht(n, e) || i !== void 0 && !Ut(n, i)) continue;
881
+ let t = w(n);
837
882
  t > o && (a = n, o = t);
838
883
  }
839
884
  return a;
840
885
  }
841
886
  //#endregion
842
- //#region src/utils/symbols.ts
843
- function zt(e, t) {
844
- if (!e) return 0;
845
- if (e === t) return 1e3;
846
- if (e.startsWith(t)) return 600 - Math.min(100, e.length - t.length);
847
- let n = e.indexOf(t);
848
- return n >= 0 ? 300 - Math.min(100, n) : 0;
849
- }
850
- function Bt(e, t, n = 50, r) {
851
- let i = t.trim().toUpperCase();
852
- if (!i) return e.slice(0, n);
853
- let a = [];
854
- for (let t of e) {
855
- let e = Math.max(zt(t.symbol.toUpperCase(), i), zt((t.description ?? "").toUpperCase(), i) * .8);
856
- e > 0 && a.push({
857
- info: t,
858
- score: e + (r?.(t) ?? 0)
859
- });
860
- }
861
- return a.sort((e, t) => t.score - e.score || e.info.symbol.localeCompare(t.info.symbol)), a.slice(0, n).map((e) => e.info);
862
- }
863
- function Vt(e) {
864
- let t = typeof e == "number" ? e : Number(e);
865
- if (!Number.isFinite(t) || t <= 0) return 0;
866
- for (let e = 0; e <= 12; e++) {
867
- let n = t * 10 ** e;
868
- if (Math.abs(n - Math.round(n)) < 1e-9 * Math.max(1, n)) return e;
869
- }
870
- return 12;
871
- }
872
- function Ht(e) {
873
- return e?.timeZone ?? e?.timezone;
874
- }
875
- function Ut(e) {
876
- let t = /^(\d{1,2}):(\d{2})$/.exec(e.trim());
877
- if (!t) return null;
878
- let n = Number(t[1]), r = Number(t[2]);
879
- return n === 24 && r === 0 ? 1440 : n < 24 && r < 60 ? n * 60 + r : null;
880
- }
881
- //#endregion
882
887
  //#region src/utils/marketStatus.ts
883
- var j = 864e5, M = 6e4, Wt = 8;
884
- function Gt(e, t) {
885
- let n = Ht(e), r = (e?.sessions ?? []).flatMap((e) => {
886
- let t = Ut(e.start), n = Ut(e.end);
888
+ var M = 864e5, N = 6e4, Gt = 8;
889
+ function Kt(e, t) {
890
+ let n = ie(e), r = (e?.sessions ?? []).flatMap((e) => {
891
+ let t = ae(e.start), n = ae(e.end);
887
892
  return t === null || n === null || t === n ? [] : [{
888
893
  start: t,
889
894
  end: n,
890
895
  days: Array.isArray(e.days) ? e.days : null
891
896
  }];
892
897
  });
893
- if (!n || !y(n) || r.length === 0 || !Number.isFinite(t)) return {
898
+ if (!n || !We(n) || r.length === 0 || !Number.isFinite(t)) return {
894
899
  state: "always",
895
900
  next: null
896
901
  };
897
- let i = b(n, t) * M, a = Math.floor((t + i) / j) * j, o = (e) => e - b(n, e - b(n, e - i) * M) * M, s = [];
898
- for (let e = -1; e <= Wt; e++) {
899
- let t = a + e * j, n = (Math.floor(t / j) + 4) % 7;
902
+ let i = y(n, t) * N, a = Math.floor((t + i) / M) * M, o = (e) => e - y(n, e - y(n, e - i) * N) * N, s = [];
903
+ for (let e = -1; e <= Gt; e++) {
904
+ let t = a + e * M, n = (Math.floor(t / M) + 4) % 7;
900
905
  for (let e of r) {
901
906
  if (e.days && !e.days.includes(n)) continue;
902
- let r = t + e.start * M, i = (e.end > e.start ? t : t + j) + e.end * M;
907
+ let r = t + e.start * N, i = (e.end > e.start ? t : t + M) + e.end * N;
903
908
  s.push([o(r), o(i)]);
904
909
  }
905
910
  }
@@ -922,15 +927,15 @@ function Gt(e, t) {
922
927
  }
923
928
  //#endregion
924
929
  //#region src/utils/drawingOptions.ts
925
- var Kt = 48, qt = 2e3, Jt = 1e4;
926
- function Yt(e) {
930
+ var qt = 48, Jt = 2e3, Yt = 1e4;
931
+ function Xt(e) {
927
932
  if (!Array.isArray(e)) return;
928
933
  let t = [];
929
934
  for (let n of e) {
930
- if (t.length >= Kt) break;
935
+ if (t.length >= qt) break;
931
936
  if (typeof n != "object" || !n) continue;
932
937
  let { value: e, visible: r, color: i } = n;
933
- if (typeof e != "number" || !Number.isFinite(e) || Math.abs(e) > Jt || r !== void 0 && typeof r != "boolean") continue;
938
+ if (typeof e != "number" || !Number.isFinite(e) || Math.abs(e) > Yt || r !== void 0 && typeof r != "boolean") continue;
934
939
  let a = {
935
940
  value: e,
936
941
  visible: r ?? !0
@@ -939,117 +944,117 @@ function Yt(e) {
939
944
  }
940
945
  return t;
941
946
  }
942
- function Xt(e, t) {
947
+ function Zt(e, t) {
943
948
  switch (e.kind) {
944
949
  case "boolean": return typeof t == "boolean" ? t : void 0;
945
950
  case "number": return typeof t != "number" || !Number.isFinite(t) ? void 0 : Math.min(e.max ?? Infinity, Math.max(e.min ?? -Infinity, t));
946
951
  case "choice": return typeof t == "string" && e.choices.some((e) => e.value === t) ? t : void 0;
947
- case "levels": return Yt(t);
948
- case "text": return typeof t == "string" ? t.slice(0, qt) : void 0;
952
+ case "levels": return Xt(t);
953
+ case "text": return typeof t == "string" ? t.slice(0, Jt) : void 0;
949
954
  }
950
955
  }
951
- function Zt(e, t) {
956
+ function Qt(e, t) {
952
957
  if (!e || typeof t != "object" || !t) return {};
953
958
  let n = {};
954
959
  for (let [r, i] of Object.entries(t)) {
955
960
  let t = e[r];
956
961
  if (!t) continue;
957
- let a = Xt(t, i);
962
+ let a = Zt(t, i);
958
963
  a !== void 0 && (n[r] = a);
959
964
  }
960
965
  return n;
961
966
  }
962
- function Qt(e) {
967
+ function $t(e) {
963
968
  return Array.isArray(e) ? e.map((e) => ({ ...e })) : e;
964
969
  }
965
- function $t(e, t, n) {
970
+ function en(e, t, n) {
966
971
  let r = e?.[n];
967
- return r ? Qt((t && n in t ? Xt(r, t[n]) : void 0) ?? r.default) : t?.[n];
972
+ return r ? $t((t && n in t ? Zt(r, t[n]) : void 0) ?? r.default) : t?.[n];
968
973
  }
969
- function en(e, t) {
974
+ function tn(e, t) {
970
975
  let n = {};
971
- for (let r of Object.keys(e ?? {})) n[r] = $t(e, t, r);
976
+ for (let r of Object.keys(e ?? {})) n[r] = en(e, t, r);
972
977
  return n;
973
978
  }
974
979
  //#endregion
975
980
  //#region src/utils/drawingStyle.ts
976
- var tn = [
981
+ var nn = [
977
982
  "solid",
978
983
  "dashed",
979
984
  "dotted"
980
- ], nn = 64, rn = 2e3, an = 20, on = 200, sn = 4e3, cn = 20, ln = [
985
+ ], rn = 64, an = 2e3, on = 20, sn = 200, cn = 4e3, ln = 20, un = [
981
986
  "left",
982
987
  "center",
983
988
  "right"
984
- ], un = [
989
+ ], dn = [
985
990
  "top",
986
991
  "middle",
987
992
  "bottom"
988
993
  ];
989
- function dn(e, t, n) {
994
+ function fn(e, t, n) {
990
995
  return typeof e == "number" && Number.isFinite(e) ? Math.min(n, Math.max(t, e)) : void 0;
991
996
  }
992
- function N(e) {
993
- return typeof e == "string" && e.length > 0 && e.length <= nn ? e : void 0;
997
+ function P(e) {
998
+ return typeof e == "string" && e.length > 0 && e.length <= rn ? e : void 0;
994
999
  }
995
- function fn(e) {
1000
+ function pn(e) {
996
1001
  if (typeof e != "object" || !e) return {};
997
- let t = e, n = {}, r = N(t.color);
1002
+ let t = e, n = {}, r = P(t.color);
998
1003
  r !== void 0 && (n.color = r);
999
- let i = dn(t.lineWidth, .5, an);
1000
- i !== void 0 && (n.lineWidth = i), tn.includes(t.lineStyle) && (n.lineStyle = t.lineStyle);
1001
- let a = N(t.fillColor);
1004
+ let i = fn(t.lineWidth, .5, on);
1005
+ i !== void 0 && (n.lineWidth = i), nn.includes(t.lineStyle) && (n.lineStyle = t.lineStyle);
1006
+ let a = P(t.fillColor);
1002
1007
  a !== void 0 && (n.fillColor = a);
1003
- let o = dn(t.fillOpacity, 0, 1);
1008
+ let o = fn(t.fillOpacity, 0, 1);
1004
1009
  o !== void 0 && (n.fillOpacity = o);
1005
- let s = dn(t.fontSize, 6, on);
1006
- s !== void 0 && (n.fontSize = s), typeof t.text == "string" && (n.text = t.text.slice(0, rn));
1010
+ let s = fn(t.fontSize, 6, sn);
1011
+ s !== void 0 && (n.fontSize = s), typeof t.text == "string" && (n.text = t.text.slice(0, an));
1007
1012
  for (let e of [
1008
1013
  "bold",
1009
1014
  "italic",
1010
1015
  "textBackground",
1011
1016
  "textBorder"
1012
1017
  ]) typeof t[e] == "boolean" && (n[e] = t[e]);
1013
- ln.includes(t.textAlign) && (n.textAlign = t.textAlign), un.includes(t.textVAlign) && (n.textVAlign = t.textVAlign);
1014
- let c = N(t.textColor);
1018
+ un.includes(t.textAlign) && (n.textAlign = t.textAlign), dn.includes(t.textVAlign) && (n.textVAlign = t.textVAlign);
1019
+ let c = P(t.textColor);
1015
1020
  c !== void 0 && (n.textColor = c);
1016
- let l = N(t.borderColor);
1017
- return l !== void 0 && (n.borderColor = l), typeof t.textWrap == "number" && Number.isFinite(t.textWrap) && t.textWrap >= 0 && (n.textWrap = t.textWrap === 0 ? 0 : Math.min(sn, Math.max(cn, t.textWrap))), n;
1021
+ let l = P(t.borderColor);
1022
+ return l !== void 0 && (n.borderColor = l), typeof t.textWrap == "number" && Number.isFinite(t.textWrap) && t.textWrap >= 0 && (n.textWrap = t.textWrap === 0 ? 0 : Math.min(cn, Math.max(ln, t.textWrap))), n;
1018
1023
  }
1019
1024
  //#endregion
1020
1025
  //#region src/utils/chartTypeOptions.ts
1021
- var P = (e) => typeof e == "number" && Number.isFinite(e) && e > 0, pn = (e, t, n) => typeof e == "number" && Number.isInteger(e) && e >= t && e <= n, F = (e) => typeof e == "object" && !!e && !Array.isArray(e);
1026
+ var F = (e) => typeof e == "number" && Number.isFinite(e) && e > 0, I = (e, t, n) => typeof e == "number" && Number.isInteger(e) && e >= t && e <= n, L = (e) => typeof e == "object" && !!e && !Array.isArray(e);
1022
1027
  function mn(e) {
1023
- if (!F(e)) return {};
1028
+ if (!L(e)) return {};
1024
1029
  let t = {};
1025
- if (F(e.renko)) {
1030
+ if (L(e.renko)) {
1026
1031
  let { boxSize: n, atrPeriod: r } = e.renko;
1027
1032
  t.renko = {
1028
- ...P(n) || n === "atr" ? { boxSize: n } : {},
1029
- ...pn(r, 1, 500) ? { atrPeriod: r } : {}
1033
+ ...F(n) || n === "atr" ? { boxSize: n } : {},
1034
+ ...I(r, 1, 500) ? { atrPeriod: r } : {}
1030
1035
  };
1031
1036
  }
1032
- if (F(e.lineBreak)) {
1037
+ if (L(e.lineBreak)) {
1033
1038
  let { lines: n } = e.lineBreak;
1034
- t.lineBreak = pn(n, 1, 10) ? { lines: n } : {};
1039
+ t.lineBreak = I(n, 1, 10) ? { lines: n } : {};
1035
1040
  }
1036
- if (F(e.kagi)) {
1041
+ if (L(e.kagi)) {
1037
1042
  let { reversal: n, reversalType: r } = e.kagi;
1038
1043
  t.kagi = {
1039
- ...P(n) ? { reversal: n } : {},
1044
+ ...F(n) ? { reversal: n } : {},
1040
1045
  ...r === "percent" || r === "price" ? { reversalType: r } : {}
1041
1046
  };
1042
1047
  }
1043
- if (F(e.pointAndFigure)) {
1048
+ if (L(e.pointAndFigure)) {
1044
1049
  let { boxSize: n, reversal: r } = e.pointAndFigure;
1045
1050
  t.pointAndFigure = {
1046
- ...P(n) || n === "auto" ? { boxSize: n } : {},
1047
- ...pn(r, 1, 10) ? { reversal: r } : {}
1051
+ ...F(n) || n === "auto" ? { boxSize: n } : {},
1052
+ ...I(r, 1, 10) ? { reversal: r } : {}
1048
1053
  };
1049
1054
  }
1050
- if (F(e.rangeBars)) {
1055
+ if (L(e.rangeBars)) {
1051
1056
  let { range: n } = e.rangeBars;
1052
- t.rangeBars = P(n) || n === "auto" ? { range: n } : {};
1057
+ t.rangeBars = F(n) || n === "auto" ? { range: n } : {};
1053
1058
  }
1054
1059
  return t;
1055
1060
  }
@@ -1060,7 +1065,7 @@ var hn = "'Cascadia Mono', 'SF Mono', ui-monospace, Menlo, Consolas, monospace",
1060
1065
  sizeSmall: 11,
1061
1066
  sizeMedium: 13,
1062
1067
  sizeLarge: 15
1063
- }, I = {
1068
+ }, R = {
1064
1069
  amber: "#f2a93b",
1065
1070
  up: "#1c9e6d",
1066
1071
  down: "#e8505b",
@@ -1072,10 +1077,10 @@ var hn = "'Cascadia Mono', 'SF Mono', ui-monospace, Menlo, Consolas, monospace",
1072
1077
  neutral: "#7d8696",
1073
1078
  ink: "#131416"
1074
1079
  }, vn = .22;
1075
- function L(e) {
1080
+ function z(e) {
1076
1081
  return p(e, vn);
1077
1082
  }
1078
- var yn = "#fbfaf6", R = "#1b1d21", bn = "#131416", z = "#e6e3dc", xn = "#1f7a5c", Sn = "#b8423f", Cn = "#4fae8a", wn = "#e2706b", Tn = "#6a6966", En = "#8d8a84", Dn = {
1083
+ var yn = "#fbfaf6", B = "#1b1d21", bn = "#131416", V = "#e6e3dc", xn = "#1f7a5c", Sn = "#b8423f", Cn = "#4fae8a", wn = "#e2706b", Tn = "#6a6966", En = "#8d8a84", Dn = {
1079
1084
  ceiling: "#FF00FF",
1080
1085
  floor: "#00FFFF",
1081
1086
  reference: "#FFD700"
@@ -1084,15 +1089,15 @@ var yn = "#fbfaf6", R = "#1b1d21", bn = "#131416", z = "#e6e3dc", xn = "#1f7a5c"
1084
1089
  floor: "#0e7490",
1085
1090
  reference: "#8a6a00"
1086
1091
  }, kn = [
1087
- I.blue,
1088
- I.ochre,
1089
- I.violet,
1090
- I.cyan,
1091
- I.rose
1092
+ R.blue,
1093
+ R.ochre,
1094
+ R.violet,
1095
+ R.cyan,
1096
+ R.rose
1092
1097
  ], An = {
1093
1098
  name: "dark",
1094
1099
  background: bn,
1095
- text: z,
1100
+ text: V,
1096
1101
  textSecondary: "#8d8b86",
1097
1102
  grid: "#1d1e21",
1098
1103
  crosshair: Tn,
@@ -1100,11 +1105,11 @@ var yn = "#fbfaf6", R = "#1b1d21", bn = "#131416", z = "#e6e3dc", xn = "#1f7a5c"
1100
1105
  candleDown: wn,
1101
1106
  candleUpWick: Cn,
1102
1107
  candleDownWick: wn,
1103
- lineColor: z,
1104
- areaTopColor: p(z, .14),
1105
- areaBottomColor: p(z, 0),
1106
- volumeUp: p(z, .14),
1107
- volumeDown: p(z, .08),
1108
+ lineColor: V,
1109
+ areaTopColor: p(V, .14),
1110
+ areaBottomColor: p(V, 0),
1111
+ volumeUp: p(V, .14),
1112
+ volumeDown: p(V, .08),
1108
1113
  axisLine: "#2a2b2f",
1109
1114
  axisLabel: "#a9a6a0",
1110
1115
  axisLabelBackground: "#232427",
@@ -1113,7 +1118,7 @@ var yn = "#fbfaf6", R = "#1b1d21", bn = "#131416", z = "#e6e3dc", xn = "#1f7a5c"
1113
1118
  }, jn = {
1114
1119
  name: "light",
1115
1120
  background: yn,
1116
- text: R,
1121
+ text: B,
1117
1122
  textSecondary: "#6b6f76",
1118
1123
  grid: "#ece8df",
1119
1124
  crosshair: En,
@@ -1121,17 +1126,17 @@ var yn = "#fbfaf6", R = "#1b1d21", bn = "#131416", z = "#e6e3dc", xn = "#1f7a5c"
1121
1126
  candleDown: Sn,
1122
1127
  candleUpWick: xn,
1123
1128
  candleDownWick: Sn,
1124
- lineColor: R,
1125
- areaTopColor: p(R, .12),
1126
- areaBottomColor: p(R, 0),
1127
- volumeUp: p(R, .13),
1128
- volumeDown: p(R, .08),
1129
+ lineColor: B,
1130
+ areaTopColor: p(B, .12),
1131
+ areaBottomColor: p(B, 0),
1132
+ volumeUp: p(B, .13),
1133
+ volumeDown: p(B, .08),
1129
1134
  axisLine: "#cfcac0",
1130
1135
  axisLabel: "#4a4e57",
1131
1136
  axisLabelBackground: "#eeebe3",
1132
1137
  font: _n,
1133
1138
  priceLimits: On
1134
- }, B = {
1139
+ }, Mn = {
1135
1140
  name: "terminal",
1136
1141
  background: "#0E0E0E",
1137
1142
  text: "#C0C0C0",
@@ -1145,8 +1150,8 @@ var yn = "#fbfaf6", R = "#1b1d21", bn = "#131416", z = "#e6e3dc", xn = "#1f7a5c"
1145
1150
  lineColor: "#3D8BFD",
1146
1151
  areaTopColor: "rgba(61, 139, 253, 0.3)",
1147
1152
  areaBottomColor: "rgba(61, 139, 253, 0.0)",
1148
- volumeUp: L("#00FF87"),
1149
- volumeDown: L("#FF3B4D"),
1153
+ volumeUp: z("#00FF87"),
1154
+ volumeDown: z("#FF3B4D"),
1150
1155
  axisLine: "#1A1A1A",
1151
1156
  axisLabel: "#8A8A8A",
1152
1157
  axisLabelBackground: "#1A1A1A",
@@ -1156,11 +1161,11 @@ var yn = "#fbfaf6", R = "#1b1d21", bn = "#131416", z = "#e6e3dc", xn = "#1f7a5c"
1156
1161
  sizeMedium: 12,
1157
1162
  sizeLarge: 14
1158
1163
  }
1159
- }, Mn = new Set([B.volumeUp, B.volumeDown]);
1160
- function V(e) {
1164
+ }, Nn = new Set([Mn.volumeUp, Mn.volumeDown]);
1165
+ function Pn(e) {
1161
1166
  let t = (e, t) => {
1162
- if (!Mn.has(e)) return e;
1163
- let n = L(t);
1167
+ if (!Nn.has(e)) return e;
1168
+ let n = z(t);
1164
1169
  return n === t ? e : n;
1165
1170
  };
1166
1171
  return {
@@ -1170,67 +1175,67 @@ function V(e) {
1170
1175
  }
1171
1176
  //#endregion
1172
1177
  //#region src/utils/chartStyle.ts
1173
- var Nn = [
1178
+ var Fn = [
1174
1179
  "solid",
1175
1180
  "dashed",
1176
1181
  "dotted"
1177
- ], Pn = 20, Fn = 64, In = 2, Ln = [
1182
+ ], In = 20, Ln = 64, Rn = 2, zn = [
1178
1183
  /^#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i,
1179
1184
  /^[a-z]{3,30}$/i,
1180
1185
  /^(?:rgba?|hsla?|hwb|lab|lch|oklab|oklch|color)\([0-9a-z.,%/\s-]*\)$/i
1181
1186
  ];
1182
- function Rn(e) {
1183
- return typeof e == "string" && e.length <= Fn && Ln.some((t) => t.test(e.trim()));
1187
+ function Bn(e) {
1188
+ return typeof e == "string" && e.length <= Ln && zn.some((t) => t.test(e.trim()));
1184
1189
  }
1185
- function zn(e, t) {
1190
+ function Vn(e, t) {
1186
1191
  switch (e) {
1187
- case "color": return Rn(t);
1188
- case "lineStyle": return Nn.includes(t);
1189
- case "width": return typeof t == "number" && Number.isFinite(t) && t > 0 && t <= Pn;
1192
+ case "color": return Bn(t);
1193
+ case "lineStyle": return Fn.includes(t);
1194
+ case "width": return typeof t == "number" && Number.isFinite(t) && t > 0 && t <= In;
1190
1195
  case "boolean": return typeof t == "boolean";
1191
1196
  }
1192
1197
  }
1193
- function Bn(e) {
1198
+ function Hn(e) {
1194
1199
  return Object.prototype.hasOwnProperty.call(t, e);
1195
1200
  }
1196
- function Vn(e) {
1201
+ function Un(e) {
1197
1202
  let n = {}, r = [];
1198
1203
  if (typeof e != "object" || !e || Array.isArray(e)) return {
1199
1204
  overrides: {},
1200
1205
  rejected: r
1201
1206
  };
1202
- for (let [i, a] of Object.entries(e)) Bn(i) ? a === null ? n[i] = null : zn(t[i], a) ? n[i] = a : r.push(i) : r.push(i);
1207
+ for (let [i, a] of Object.entries(e)) Hn(i) ? a === null ? n[i] = null : Vn(t[i], a) ? n[i] = a : r.push(i) : r.push(i);
1203
1208
  return {
1204
1209
  overrides: n,
1205
1210
  rejected: r
1206
1211
  };
1207
1212
  }
1208
- function Hn(e) {
1213
+ function Wn(e) {
1209
1214
  if (typeof e != "object" || !e || Array.isArray(e)) return null;
1210
1215
  let { background: t, separator: n } = e, r = {
1211
- ...Rn(t) ? { background: t } : {},
1212
- ...Rn(n) ? { separator: n } : {}
1216
+ ...Bn(t) ? { background: t } : {},
1217
+ ...Bn(n) ? { separator: n } : {}
1213
1218
  };
1214
1219
  return Object.keys(r).length > 0 ? r : null;
1215
1220
  }
1216
- var Un = /^[A-Za-z0-9_]{1,32}$/;
1217
- function Wn(e) {
1221
+ var Gn = /^[A-Za-z0-9_]{1,32}$/;
1222
+ function Kn(e) {
1218
1223
  if (typeof e != "object" || !e || Array.isArray(e)) return;
1219
1224
  let t = {};
1220
1225
  for (let [n, r] of Object.entries(e)) {
1221
- if (!Un.test(n) || typeof r != "object" || !r) continue;
1226
+ if (!Gn.test(n) || typeof r != "object" || !r) continue;
1222
1227
  let { lineStyle: e, visible: i } = r, a = {
1223
- ...Nn.includes(e) ? { lineStyle: e } : {},
1228
+ ...Fn.includes(e) ? { lineStyle: e } : {},
1224
1229
  ...typeof i == "boolean" ? { visible: i } : {}
1225
1230
  };
1226
1231
  Object.keys(a).length > 0 && (t[n] = a);
1227
1232
  }
1228
1233
  return Object.keys(t).length > 0 ? t : void 0;
1229
1234
  }
1230
- function Gn(e, t, n = 1) {
1235
+ function qn(e, t, n = 1) {
1231
1236
  return e === "solid" ? [] : e === "dotted" ? [n, n * 2] : [...t];
1232
1237
  }
1233
- function Kn(e, t, n) {
1238
+ function Jn(e, t, n) {
1234
1239
  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;
1235
1240
  return {
1236
1241
  up: o,
@@ -1238,7 +1243,7 @@ function Kn(e, t, n) {
1238
1243
  wickUp: r("wickUpColor") ?? t("series.candlestick.wickUpColor") ?? (i === void 0 ? e.candleUpWick : o),
1239
1244
  wickDown: r("wickDownColor") ?? t("series.candlestick.wickDownColor") ?? (a === void 0 ? e.candleDownWick : s),
1240
1245
  line: r("color") ?? r("lineColor") ?? t("series.line.color") ?? e.lineColor,
1241
- lineWidth: r("lineWidth") ?? t("series.line.lineWidth") ?? In,
1246
+ lineWidth: r("lineWidth") ?? t("series.line.lineWidth") ?? Rn,
1242
1247
  top: r("topColor") ?? t("series.area.topColor") ?? e.areaTopColor,
1243
1248
  bottom: r("bottomColor") ?? t("series.area.bottomColor") ?? e.areaBottomColor
1244
1249
  };
@@ -1251,8 +1256,8 @@ function H(e, t, n) {
1251
1256
  width: e(`${t}.width`) ?? n.width
1252
1257
  };
1253
1258
  }
1254
- function qn(e, t, n) {
1255
- let { style: r, ...i } = e, a = n, o = (e) => a[e], s = Kn(i, o, t), c = o("background.color") ?? i.background, l = (e, t) => o(e) ?? t, u = (e) => o(e) ?? null, d = {
1259
+ function Yn(e, t, n) {
1260
+ let { style: r, ...i } = e, a = n, o = (e) => a[e], s = Jn(i, o, t), c = o("background.color") ?? i.background, l = (e, t) => o(e) ?? t, u = (e) => o(e) ?? null, d = {
1256
1261
  panes: {
1257
1262
  background: l("panes.background", c),
1258
1263
  separator: l("panes.separatorColor", i.axisLine),
@@ -1351,7 +1356,7 @@ function qn(e, t, n) {
1351
1356
  style: d
1352
1357
  };
1353
1358
  }
1354
- var Jn = {
1359
+ var Xn = {
1355
1360
  "background.color": (e) => e.background,
1356
1361
  "panes.background": (e, t) => t.panes.background,
1357
1362
  "panes.separatorColor": (e, t) => t.panes.separator,
@@ -1370,8 +1375,8 @@ var Jn = {
1370
1375
  "lastPrice.downColor": (e, t) => t.lastPrice.down,
1371
1376
  "lastPrice.style": (e, t) => t.lastPrice.style,
1372
1377
  "lastPrice.width": (e, t) => t.lastPrice.width,
1373
- "volume.upColor": (e) => V(e).up,
1374
- "volume.downColor": (e) => V(e).down,
1378
+ "volume.upColor": (e) => Pn(e).up,
1379
+ "volume.downColor": (e) => Pn(e).down,
1375
1380
  "sessionBreaks.color": (e, t) => t.sessionBreaks.color,
1376
1381
  "sessionBreaks.style": (e, t) => t.sessionBreaks.style,
1377
1382
  "sessionBreaks.width": (e, t) => t.sessionBreaks.width,
@@ -1388,16 +1393,16 @@ var Jn = {
1388
1393
  "tradeZones.lossColor": (e, t) => t.tradeZones.loss,
1389
1394
  "tradeZones.activeColor": (e, t) => t.tradeZones.active,
1390
1395
  "drawings.handleColor": (e, t) => t.drawings.handle
1391
- }, Yn = {
1396
+ }, Zn = {
1392
1397
  visible: "visible",
1393
1398
  color: "color",
1394
1399
  style: "style",
1395
1400
  width: "width"
1396
1401
  };
1397
- function Xn(e, t, n, r = "candlestick") {
1402
+ function Qn(e, t, n, r = "candlestick") {
1398
1403
  let i = n.split(".");
1399
1404
  if (i[0] === "series") {
1400
- let n = Kn(e, (e) => t[e], i[1]);
1405
+ let n = Jn(e, (e) => t[e], i[1]);
1401
1406
  switch (i[2]) {
1402
1407
  case "upColor": return n.up;
1403
1408
  case "downColor": return n.down;
@@ -1410,12 +1415,12 @@ function Xn(e, t, n, r = "candlestick") {
1410
1415
  case "bottomColor": return n.bottom;
1411
1416
  }
1412
1417
  }
1413
- let a = qn(e, r, t), o = a.style;
1414
- return i[0] === "grid" || i[0] === "crosshair" && (i[1] === "horizontal" || i[1] === "vertical") ? (i[0] === "grid" ? o.grid : o.crosshair)[i[1]][Yn[i[2]]] : Jn[n]?.(a, o) ?? null;
1418
+ let a = Yn(e, r, t), o = a.style;
1419
+ return i[0] === "grid" || i[0] === "crosshair" && (i[1] === "horizontal" || i[1] === "vertical") ? (i[0] === "grid" ? o.grid : o.crosshair)[i[1]][Zn[i[2]]] : Xn[n]?.(a, o) ?? null;
1415
1420
  }
1416
1421
  //#endregion
1417
1422
  //#region src/constants/defaults.ts
1418
- var Zn = {
1423
+ var $n = {
1419
1424
  autoScale: !0,
1420
1425
  rightMargin: 5,
1421
1426
  minBarSpacing: 2,
@@ -1426,7 +1431,7 @@ var Zn = {
1426
1431
  vLineStyle: "solid"
1427
1432
  },
1428
1433
  crosshair: { mode: "magnet" }
1429
- }, Qn = [
1434
+ }, er = [
1430
1435
  "1s",
1431
1436
  "1m",
1432
1437
  "3m",
@@ -1443,7 +1448,7 @@ var Zn = {
1443
1448
  "3d",
1444
1449
  "1w",
1445
1450
  "1M"
1446
- ], $n = [
1451
+ ], tr = [
1447
1452
  "1m",
1448
1453
  "5m",
1449
1454
  "15m",
@@ -1457,7 +1462,7 @@ var Zn = {
1457
1462
  "3M",
1458
1463
  "6M",
1459
1464
  "12M"
1460
- ], er = [
1465
+ ], nr = [
1461
1466
  "1m",
1462
1467
  "5m",
1463
1468
  "15m",
@@ -1467,7 +1472,7 @@ var Zn = {
1467
1472
  "1d",
1468
1473
  "1w",
1469
1474
  "1M"
1470
- ], tr = [
1475
+ ], rr = [
1471
1476
  "1m",
1472
1477
  "5m",
1473
1478
  "15m",
@@ -1475,7 +1480,7 @@ var Zn = {
1475
1480
  "4h",
1476
1481
  "1d",
1477
1482
  "1w"
1478
- ], nr = 8, rr = 2, ir = 70, ar = 30, or = 60, sr = 120, cr = (1 + Math.sqrt(5)) / 2, lr = [
1483
+ ], ir = 8, ar = 2, or = 70, sr = 30, cr = 60, lr = 120, ur = (1 + Math.sqrt(5)) / 2, dr = [
1479
1484
  1,
1480
1485
  2,
1481
1486
  3,
@@ -1487,8 +1492,8 @@ var Zn = {
1487
1492
  55,
1488
1493
  89
1489
1494
  ];
1490
- function ur(e, t, n = 1) {
1491
- return Math.round(e * cr ** (t / n));
1495
+ function fr(e, t, n = 1) {
1496
+ return Math.round(e * ur ** (t / n));
1492
1497
  }
1493
1498
  //#endregion
1494
1499
  //#region src/i18n/en.ts
@@ -1595,7 +1600,7 @@ var U = {
1595
1600
  error: "Error",
1596
1601
  numberDecimalSeparator: ".",
1597
1602
  numberGroupSeparator: ","
1598
- }, dr = {
1603
+ }, pr = {
1599
1604
  candlestick: "Nến",
1600
1605
  line: "Đường",
1601
1606
  area: "Vùng",
@@ -1698,20 +1703,20 @@ var U = {
1698
1703
  error: "Lỗi",
1699
1704
  numberDecimalSeparator: ",",
1700
1705
  numberGroupSeparator: "."
1701
- }, W = new Map([["en", U], ["vi", dr]]), G = "en", fr = U;
1702
- function pr(e) {
1703
- G = e, fr = W.get(e) ?? U;
1706
+ }, W = new Map([["en", U], ["vi", pr]]), G = "en", mr = U;
1707
+ function hr(e) {
1708
+ G = e, mr = W.get(e) ?? U;
1704
1709
  }
1705
- function mr() {
1710
+ function gr() {
1706
1711
  return G;
1707
1712
  }
1708
- function hr(e) {
1709
- return fr[e] ?? U[e] ?? e;
1713
+ function _r(e) {
1714
+ return mr[e] ?? U[e] ?? e;
1710
1715
  }
1711
- function gr(e, t) {
1716
+ function vr(e, t) {
1712
1717
  W.set(e, t);
1713
1718
  }
1714
- function _r(e) {
1719
+ function yr(e) {
1715
1720
  return W.get(e ?? G) ?? U;
1716
1721
  }
1717
1722
  function K(e, t = 2, n) {
@@ -1719,32 +1724,32 @@ function K(e, t = 2, n) {
1719
1724
  for (let e = l.length - 1, t = 0; e >= 0; e--, t++) t > 0 && t % 3 == 0 && (u = a + u), u = l[e] + u;
1720
1725
  return c && (u = "-" + u), s ? u + i + s : u;
1721
1726
  }
1722
- function vr(e) {
1727
+ function br(e) {
1723
1728
  return K(e, 0, "vi");
1724
1729
  }
1725
- var yr = [
1730
+ var xr = [
1726
1731
  [0xe8d4a51000, "조"],
1727
1732
  [1e8, "억"],
1728
1733
  [1e4, "만"]
1729
1734
  ];
1730
- function br(e) {
1735
+ function Sr(e) {
1731
1736
  return /^ko([-_]|$)/i.test(e);
1732
1737
  }
1733
- function xr(e, t, n) {
1738
+ function Cr(e, t, n) {
1734
1739
  try {
1735
- return A(e, t, n);
1740
+ return j(e, t, n);
1736
1741
  } catch {
1737
1742
  return K(e, t, "en");
1738
1743
  }
1739
1744
  }
1740
- function Sr(e, t) {
1745
+ function wr(e, t) {
1741
1746
  let n = t ?? G;
1742
1747
  if (!Number.isFinite(e)) return String(e);
1743
- if (br(n)) {
1744
- for (let [t, r] of yr) if (Math.round(e / t * 100) >= 100) return K(e / t, 2, n) + r;
1748
+ if (Sr(n)) {
1749
+ for (let [t, r] of xr) if (Math.round(e / t * 100) >= 100) return K(e / t, 2, n) + r;
1745
1750
  return K(e, 0, n);
1746
1751
  }
1747
- let r = W.has(n) ? (e, t) => K(e, t, n) : (e, t) => xr(e, t, n);
1752
+ let r = W.has(n) ? (e, t) => K(e, t, n) : (e, t) => Cr(e, t, n);
1748
1753
  return e >= 1e9 ? r(e / 1e9, 2) + "B" : e >= 1e6 ? r(e / 1e6, 2) + "M" : e >= 1e3 ? r(e / 1e3, 2) + "K" : r(e, 0);
1749
1754
  }
1750
1755
  //#endregion
@@ -1756,14 +1761,14 @@ var q = {
1756
1761
  ceiling: "#D946EF",
1757
1762
  floor: "#06B6D4",
1758
1763
  reference: "#EAB308"
1759
- }, J = "Asia/Ho_Chi_Minh", Y = {
1764
+ }, J = "Asia/Ho_Chi_Minh", Tr = {
1760
1765
  up: "#E8313F",
1761
1766
  down: "#2F6FEB",
1762
1767
  unchanged: "#8B8F99",
1763
1768
  ceiling: "#C2121F",
1764
1769
  floor: "#1E4FC2",
1765
1770
  reference: "#8B8F99"
1766
- }, Cr = "Asia/Seoul", wr = [
1771
+ }, Er = "Asia/Seoul", Dr = [
1767
1772
  {
1768
1773
  name: "ATO",
1769
1774
  startTime: "09:00",
@@ -1794,7 +1799,7 @@ var q = {
1794
1799
  endTime: "14:45",
1795
1800
  type: "preClose"
1796
1801
  }
1797
- ], Tr = [
1802
+ ], Or = [
1798
1803
  {
1799
1804
  name: "Phiên 1",
1800
1805
  startTime: "09:15",
@@ -1825,7 +1830,7 @@ var q = {
1825
1830
  endTime: "15:00",
1826
1831
  type: "postClose"
1827
1832
  }
1828
- ], Er = [
1833
+ ], kr = [
1829
1834
  {
1830
1835
  name: "Phiên 1",
1831
1836
  startTime: "09:15",
@@ -1844,7 +1849,7 @@ var q = {
1844
1849
  endTime: "14:30",
1845
1850
  type: "continuous"
1846
1851
  }
1847
- ], Dr = [
1852
+ ], Ar = [
1848
1853
  {
1849
1854
  name: "ATO",
1850
1855
  startTime: "08:45",
@@ -1875,7 +1880,7 @@ var q = {
1875
1880
  endTime: "14:45",
1876
1881
  type: "preClose"
1877
1882
  }
1878
- ], Or = [
1883
+ ], jr = [
1879
1884
  {
1880
1885
  name: "장전 동시호가",
1881
1886
  startTime: "08:30",
@@ -1906,7 +1911,7 @@ var q = {
1906
1911
  endTime: "20:00",
1907
1912
  type: "postClose"
1908
1913
  }
1909
- ], kr = [
1914
+ ], Mr = [
1910
1915
  {
1911
1916
  name: "프리마켓",
1912
1917
  startTime: "08:00",
@@ -1925,7 +1930,7 @@ var q = {
1925
1930
  endTime: "20:00",
1926
1931
  type: "postClose"
1927
1932
  }
1928
- ], Ar = [
1933
+ ], Nr = [
1929
1934
  {
1930
1935
  from: 0,
1931
1936
  step: 1
@@ -1954,7 +1959,7 @@ var q = {
1954
1959
  from: 5e5,
1955
1960
  step: 1e3
1956
1961
  }
1957
- ], jr = [
1962
+ ], Pr = [
1958
1963
  {
1959
1964
  from: 0,
1960
1965
  step: 1e-8
@@ -2015,7 +2020,7 @@ var q = {
2015
2020
  from: 1e6,
2016
2021
  step: 1e3
2017
2022
  }
2018
- ], Mr = {
2023
+ ], Fr = {
2019
2024
  type: "stock",
2020
2025
  exchange: "HOSE",
2021
2026
  currency: "VND",
@@ -2042,12 +2047,12 @@ var q = {
2042
2047
  ceilingPercent: 7,
2043
2048
  floorPercent: 7
2044
2049
  },
2045
- sessions: wr,
2050
+ sessions: Dr,
2046
2051
  colorScheme: q
2047
- }, Nr = {
2048
- ...Mr,
2052
+ }, Ir = {
2053
+ ...Fr,
2049
2054
  priceSteps: void 0
2050
- }, Pr = {
2055
+ }, Lr = {
2051
2056
  type: "stock",
2052
2057
  exchange: "HNX",
2053
2058
  currency: "VND",
@@ -2060,9 +2065,9 @@ var q = {
2060
2065
  ceilingPercent: 10,
2061
2066
  floorPercent: 10
2062
2067
  },
2063
- sessions: Tr,
2068
+ sessions: Or,
2064
2069
  colorScheme: q
2065
- }, Fr = {
2070
+ }, Rr = {
2066
2071
  type: "stock",
2067
2072
  exchange: "UPCOM",
2068
2073
  currency: "VND",
@@ -2075,9 +2080,9 @@ var q = {
2075
2080
  ceilingPercent: 15,
2076
2081
  floorPercent: 15
2077
2082
  },
2078
- sessions: Er,
2083
+ sessions: kr,
2079
2084
  colorScheme: q
2080
- }, Ir = {
2085
+ }, zr = {
2081
2086
  type: "futures",
2082
2087
  exchange: "HNX",
2083
2088
  currency: "VND",
@@ -2091,44 +2096,44 @@ var q = {
2091
2096
  ceilingPercent: 7,
2092
2097
  floorPercent: 7
2093
2098
  },
2094
- sessions: Dr,
2099
+ sessions: Ar,
2095
2100
  colorScheme: q
2096
- }, Lr = {
2101
+ }, Br = {
2097
2102
  type: "stock",
2098
2103
  exchange: "KRX",
2099
2104
  currency: "KRW",
2100
2105
  pricePrecision: 0,
2101
2106
  volumeUnit: 1,
2102
2107
  priceStep: 1,
2103
- priceSteps: Ar,
2104
- timeZone: Cr,
2108
+ priceSteps: Nr,
2109
+ timeZone: Er,
2105
2110
  priceLimits: {
2106
2111
  enabled: !0,
2107
2112
  ceilingPercent: 30,
2108
2113
  floorPercent: 30,
2109
2114
  roundMove: !0
2110
2115
  },
2111
- sessions: Or,
2112
- colorScheme: Y
2113
- }, Rr = {
2114
- ...Lr,
2116
+ sessions: jr,
2117
+ colorScheme: Tr
2118
+ }, Vr = {
2119
+ ...Br,
2115
2120
  exchange: "NXT",
2116
- sessions: kr
2117
- }, zr = {
2121
+ sessions: Mr
2122
+ }, Hr = {
2118
2123
  type: "crypto",
2119
2124
  exchange: "UPBIT",
2120
2125
  currency: "KRW",
2121
2126
  priceStep: 1e-8,
2122
- priceSteps: jr,
2123
- timeZone: Cr,
2127
+ priceSteps: Pr,
2128
+ timeZone: Er,
2124
2129
  priceLimits: { enabled: !1 },
2125
- colorScheme: Y
2126
- }, Br = {
2130
+ colorScheme: Tr
2131
+ }, Ur = {
2127
2132
  type: "crypto",
2128
2133
  currency: "USDT",
2129
2134
  pricePrecision: 2,
2130
2135
  priceLimits: { enabled: !1 }
2131
- }, Vr = {
2136
+ }, Wr = {
2132
2137
  type: "stock",
2133
2138
  exchange: "NYSE",
2134
2139
  currency: "USD",
@@ -2157,10 +2162,10 @@ var q = {
2157
2162
  }
2158
2163
  ]
2159
2164
  };
2160
- function Hr(e) {
2161
- return Ur(e, q);
2165
+ function Gr(e) {
2166
+ return Kr(e, q);
2162
2167
  }
2163
- function Ur(e, t) {
2168
+ function Kr(e, t) {
2164
2169
  return {
2165
2170
  ...e,
2166
2171
  candleUp: t.up,
@@ -2169,33 +2174,33 @@ function Ur(e, t) {
2169
2174
  candleDownWick: t.down
2170
2175
  };
2171
2176
  }
2172
- var X = 1e-9;
2173
- function Wr(e, t) {
2177
+ var Y = 1e-9;
2178
+ function qr(e, t) {
2174
2179
  let n = t.priceStep;
2175
- for (let r of t.priceSteps ?? []) e + X >= r.from && (n = r.step);
2180
+ for (let r of t.priceSteps ?? []) e + Y >= r.from && (n = r.step);
2176
2181
  return n !== void 0 && n > 0 ? n : void 0;
2177
2182
  }
2178
- function Gr(e, t) {
2183
+ function Jr(e, t) {
2179
2184
  let n = t.priceStep;
2180
- for (let r of t.priceSteps ?? []) e - X > r.from && (n = r.step);
2185
+ for (let r of t.priceSteps ?? []) e - Y > r.from && (n = r.step);
2181
2186
  return n !== void 0 && n > 0 ? n : void 0;
2182
2187
  }
2183
- function Z(e, t, n = "nearest") {
2184
- let r = Wr(e, t);
2188
+ function X(e, t, n = "nearest") {
2189
+ let r = qr(e, t);
2185
2190
  if (r === void 0 || !Number.isFinite(e)) return e;
2186
- let i = e / r, a = n === "down" ? Math.floor(i + X) : n === "up" ? Math.ceil(i - X) : Math.round(i);
2187
- return Number((a * r).toFixed(Vt(r)));
2191
+ let i = e / r, a = n === "down" ? Math.floor(i + Y) : n === "up" ? Math.ceil(i - Y) : Math.round(i);
2192
+ return Number((a * r).toFixed(re(r)));
2188
2193
  }
2189
- function Kr(e, t) {
2194
+ function Yr(e, t) {
2190
2195
  if (!t.priceLimits?.enabled || !t.priceLimits.ceilingPercent) return null;
2191
- 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 = Wr(i, t);
2196
+ 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 = qr(i, t);
2192
2197
  if (s === void 0) return {
2193
2198
  ceiling: a,
2194
2199
  floor: o,
2195
2200
  reference: i
2196
2201
  };
2197
- let c = Z(i + s, t);
2198
- if (Math.abs(i - s) < X) return {
2202
+ let c = X(i + s, t);
2203
+ if (Math.abs(i - s) < Y) return {
2199
2204
  ceiling: c,
2200
2205
  floor: i,
2201
2206
  reference: i
@@ -2207,36 +2212,36 @@ function Kr(e, t) {
2207
2212
  priceStep: s,
2208
2213
  priceSteps: void 0
2209
2214
  };
2210
- l = Z(i + Z(i * n, e, "down"), t, "down"), u = Z(i - Z(i * r, e, "down"), t, "down");
2211
- } else l = Z(a, t, "down"), u = Z(o, t, "up");
2212
- return l <= i && (l = c), u >= i && (u = Z(i - (Gr(i, t) ?? s), t)), u <= 0 && (u = i), {
2215
+ l = X(i + X(i * n, e, "down"), t, "down"), u = X(i - X(i * r, e, "down"), t, "down");
2216
+ } else l = X(a, t, "down"), u = X(o, t, "up");
2217
+ return l <= i && (l = c), u >= i && (u = X(i - (Jr(i, t) ?? s), t)), u <= 0 && (u = i), {
2213
2218
  ceiling: l,
2214
2219
  floor: u,
2215
2220
  reference: i
2216
2221
  };
2217
2222
  }
2218
- var Q = (e, t) => Math.round(e * t * 1e9) / 1e9;
2219
- function qr(e, t) {
2223
+ var Z = (e, t) => Math.round(e * t * 1e9) / 1e9;
2224
+ function Xr(e, t) {
2220
2225
  let n = Math.round(Math.log10(t));
2221
2226
  return {
2222
2227
  ...e,
2223
2228
  pricePrecision: e.pricePrecision === void 0 ? void 0 : Math.max(0, e.pricePrecision - n),
2224
- priceStep: e.priceStep === void 0 ? void 0 : Q(e.priceStep, t),
2229
+ priceStep: e.priceStep === void 0 ? void 0 : Z(e.priceStep, t),
2225
2230
  priceSteps: e.priceSteps?.map((e) => ({
2226
- from: Q(e.from, t),
2227
- step: Q(e.step, t)
2231
+ from: Z(e.from, t),
2232
+ step: Z(e.step, t)
2228
2233
  })),
2229
2234
  priceLimits: e.priceLimits && {
2230
2235
  ...e.priceLimits,
2231
- referencePrice: e.priceLimits.referencePrice === void 0 ? void 0 : Q(e.priceLimits.referencePrice, t)
2236
+ referencePrice: e.priceLimits.referencePrice === void 0 ? void 0 : Z(e.priceLimits.referencePrice, t)
2232
2237
  }
2233
2238
  };
2234
2239
  }
2235
- var Jr = 6e4, Yr = 864e5;
2236
- function Xr(e, t) {
2240
+ var Zr = 6e4, Qr = 864e5;
2241
+ function $r(e, t) {
2237
2242
  let n, r;
2238
2243
  if (t) {
2239
- let i = new Date(e + b(t, e) * Jr);
2244
+ let i = new Date(e + y(t, e) * Zr);
2240
2245
  n = i.getUTCHours(), r = i.getUTCMinutes();
2241
2246
  } else {
2242
2247
  let t = new Date(e);
@@ -2244,31 +2249,31 @@ function Xr(e, t) {
2244
2249
  }
2245
2250
  return `${String(n).padStart(2, "0")}:${String(r).padStart(2, "0")}`;
2246
2251
  }
2247
- function Zr(e, t = Date.now(), n) {
2248
- if (n !== void 0 && !y(n)) return null;
2249
- let r = Xr(t, n);
2252
+ function ei(e, t = Date.now(), n) {
2253
+ if (n !== void 0 && !We(n)) return null;
2254
+ let r = $r(t, n);
2250
2255
  for (let t of e) if (r >= t.startTime && r < t.endTime) return t;
2251
2256
  return null;
2252
2257
  }
2253
- var $ = (e) => String(e).padStart(2, "0"), Qr = (e) => {
2258
+ var Q = (e) => String(e).padStart(2, "0"), $ = (e) => {
2254
2259
  let t = new Date(e);
2255
- return `${t.getUTCFullYear()}-${$(t.getUTCMonth() + 1)}-${$(t.getUTCDate())}`;
2256
- }, $r = 4, ei = 7 * 36e5;
2257
- function ti(e, t, n) {
2258
- let r = Date.UTC(e, t - 1, 1), i = 1 + ($r - new Date(r).getUTCDay() + 7) % 7, a = Date.UTC(e, t - 1, i + 14), o = (e) => {
2260
+ return `${t.getUTCFullYear()}-${Q(t.getUTCMonth() + 1)}-${Q(t.getUTCDate())}`;
2261
+ }, ti = 4, ni = 7 * 36e5;
2262
+ function ri(e, t, n) {
2263
+ let r = Date.UTC(e, t - 1, 1), i = 1 + (ti - new Date(r).getUTCDay() + 7) % 7, a = Date.UTC(e, t - 1, i + 14), o = (e) => {
2259
2264
  let t = new Date(e).getUTCDay();
2260
- return t === 0 || t === 6 || (n?.(Qr(e)) ?? !1);
2265
+ return t === 0 || t === 6 || (n?.($(e)) ?? !1);
2261
2266
  };
2262
- for (; o(a);) a -= Yr;
2263
- return Qr(a);
2267
+ for (; o(a);) a -= Qr;
2268
+ return $(a);
2264
2269
  }
2265
- function ni(e, t) {
2266
- let n = Qr(e + ei), r = (e, n) => ({
2267
- symbol: `VN30F${$(e % 100)}${$(n)}`,
2270
+ function ii(e, t) {
2271
+ let n = $(e + ni), r = (e, n) => ({
2272
+ symbol: `VN30F${Q(e % 100)}${Q(n)}`,
2268
2273
  year: e,
2269
2274
  month: n,
2270
- lastTradingDay: ti(e, n, t)
2271
- }), i = (e) => e.month === 12 ? r(e.year + 1, 1) : r(e.year, e.month + 1), a = new Date(e + ei), o = r(a.getUTCFullYear(), a.getUTCMonth() + 1);
2275
+ lastTradingDay: ri(e, n, t)
2276
+ }), i = (e) => e.month === 12 ? r(e.year + 1, 1) : r(e.year, e.month + 1), a = new Date(e + ni), o = r(a.getUTCFullYear(), a.getUTCMonth() + 1);
2272
2277
  n > o.lastTradingDay && (o = i(o));
2273
2278
  let s = [o, i(o)], c = i(s[1]);
2274
2279
  for (; s.length < 4;) c.month % 3 == 0 && s.push(c), c = i(c);
@@ -2276,7 +2281,7 @@ function ni(e, t) {
2276
2281
  }
2277
2282
  //#endregion
2278
2283
  //#region src/icons/iconSet.ts
2279
- var ri = {
2284
+ var ai = {
2280
2285
  cursor: { d: "M6 3.5L18.5 12.5L12.6 13.6L9.7 19.4z" },
2281
2286
  trendingUp: { d: "M3 17L9 11L13 14.5L21 6.5M15 6.5H21V12.5" },
2282
2287
  trendingDown: { d: "M3 7L9 13L13 9.5L21 17.5M15 17.5H21V11.5" },
@@ -2443,7 +2448,7 @@ var ri = {
2443
2448
  ]
2444
2449
  ] },
2445
2450
  layoutGrid: { d: "M5 4.5h4.5a.5.5 0 0 1 .5.5v4.5a.5.5 0 0 1-.5.5H5a.5.5 0 0 1-.5-.5V5a.5.5 0 0 1 .5-.5zM14.5 4.5H19a.5.5 0 0 1 .5.5v4.5a.5.5 0 0 1-.5.5h-4.5a.5.5 0 0 1-.5-.5V5a.5.5 0 0 1 .5-.5zM5 14h4.5a.5.5 0 0 1 .5.5V19a.5.5 0 0 1-.5.5H5a.5.5 0 0 1-.5-.5v-4.5A.5.5 0 0 1 5 14zM14.5 14H19a.5.5 0 0 1 .5.5V19a.5.5 0 0 1-.5.5h-4.5a.5.5 0 0 1-.5-.5v-4.5a.5.5 0 0 1 .5-.5z" }
2446
- }, ii = {
2451
+ }, oi = {
2447
2452
  trendLine: {
2448
2453
  d: "M5 18L19 6",
2449
2454
  dots: [[5, 18], [19, 6]]
@@ -2803,7 +2808,7 @@ var ri = {
2803
2808
  ],
2804
2809
  dash: "M12 3V21"
2805
2810
  }
2806
- }, ai = {
2811
+ }, si = {
2807
2812
  candlestick: {
2808
2813
  d: "M8 3.5V7M8 16V20.5M16 5V8.5M16 15.5V19",
2809
2814
  fills: ["M6.5 7h3a1 1 0 0 1 1 1v7a1 1 0 0 1-1 1h-3a1 1 0 0 1-1-1V8a1 1 0 0 1 1-1z", "M14.5 8.5h3a1 1 0 0 1 1 1v5a1 1 0 0 1-1 1h-3a1 1 0 0 1-1-1v-5a1 1 0 0 1 1-1z"]
@@ -2870,21 +2875,21 @@ var ri = {
2870
2875
  "M16 4.5h3v6h-3z"
2871
2876
  ]
2872
2877
  }
2873
- }, oi = 1.75, si = .22, ci = /* @__PURE__ */ new WeakMap();
2874
- function li(e) {
2875
- let t = ci.get(e);
2878
+ }, ci = 1.75, li = .22, ui = /* @__PURE__ */ new WeakMap();
2879
+ function di(e) {
2880
+ let t = ui.get(e);
2876
2881
  if (t) return t;
2877
2882
  let n = "";
2878
- e.soft && (n += `<path d="${e.soft}" fill="currentColor" fill-opacity="${si}" stroke="none"/>`);
2883
+ e.soft && (n += `<path d="${e.soft}" fill="currentColor" fill-opacity="${li}" stroke="none"/>`);
2879
2884
  for (let t of e.fills ?? []) n += `<path d="${t}" fill="currentColor" stroke="none"/>`;
2880
2885
  e.d && (n += `<path d="${e.d}"/>`), e.dash && (n += `<path d="${e.dash}" stroke-dasharray="2 2.5"/>`);
2881
- for (let [t, r, i = oi] of e.dots ?? []) n += `<circle cx="${t}" cy="${r}" r="${i}" fill="currentColor" stroke="none"/>`;
2882
- return ci.set(e, n), n;
2886
+ for (let [t, r, i = ci] of e.dots ?? []) n += `<circle cx="${t}" cy="${r}" r="${i}" fill="currentColor" stroke="none"/>`;
2887
+ return ui.set(e, n), n;
2883
2888
  }
2884
- function ui(e, t) {
2885
- return `<svg xmlns="http://www.w3.org/2000/svg" class="tc-icon" width="${t}" height="${t}" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false">${li(e)}</svg>`;
2889
+ function fi(e, t) {
2890
+ return `<svg xmlns="http://www.w3.org/2000/svg" class="tc-icon" width="${t}" height="${t}" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false">${di(e)}</svg>`;
2886
2891
  }
2887
2892
  //#endregion
2888
- export { t as CHART_STYLE_KEYS, ai as CHART_TYPE_ICONS, Dn as DARK_PRICE_LIMITS, B as DARK_TERMINAL, An as DARK_THEME, rr as DEFAULT_BAR_SPACING, nr as DEFAULT_BAR_WIDTH, Zn as DEFAULT_CHART_OPTIONS, a as DEFAULT_DRAWING_STYLE, hn as DEFAULT_FONT_FAMILY, sr as DEFAULT_PANEL_HEIGHT, l as DEFAULT_RECONNECT, s as DEFAULT_SIGNAL_STYLE, u as DEFAULT_STREAM_CONFIG, tr as DEFAULT_TIMEFRAME_FAVORITES, c as DEFAULT_TRADE_ZONE_STYLE, o as DEFAULT_TRADING_CONFIG, ii as DRAWING_TOOL_ICONS, lr as FIBONACCI, Tr as HNX_SESSIONS, wr as HOSE_SESSIONS, oi as ICON_DOT_RADIUS, si as ICON_SOFT_OPACITY, Or as KRX_SESSIONS, Y as KR_COLORS, On as LIGHT_PRICE_LIMITS, jn as LIGHT_THEME, n as LINE_TINT_FILL, e as LayerType, Br as MARKET_CRYPTO, Pr as MARKET_HNX, Mr as MARKET_HOSE, Nr as MARKET_HOSE_ETF, Lr as MARKET_KRX, Rr as MARKET_NXT, Vr as MARKET_NYSE, zr as MARKET_UPBIT_KRW, Fr as MARKET_UPCOM, Ir as MARKET_VN30F, or as MIN_PANEL_HEIGHT, fe as MS_TIME_THRESHOLD, kr as NXT_SESSIONS, cr as PHI, ir as PRICE_AXIS_WIDTH, Tt as PRICE_SOURCES, gn as SANS_FONT_FAMILY, I as TC_PALETTE, kn as TC_SERIES_COLORS, Qn as TIMEFRAMES_CRYPTO, er as TIMEFRAMES_FOREX, $n as TIMEFRAMES_STOCK, ar as TIME_AXIS_HEIGHT, ri as UI_ICONS, Er as UPCOM_SESSIONS, Dr as VN30F_SESSIONS, q as VN_COLORS, vn as VOLUME_ALPHA, Je as alignToTimeframe, _t as autoPricePrecision, pt as barDateParts, ft as barDateZone, pe as barTimeUnit, Qe as barsAreDaily, Xn as chartStyleValue, oe as clamp, Kr as computePriceLimits, be as computePriceRange, de as computeTickStep, m as contrastRatio, Ur as createMarketTheme, Hr as createVNTheme, wt as detectPrecision, $t as drawingOption, U as en, _e as findBarIndex, ye as fitPriceRange, bt as formatFraction, K as formatNumber, A as formatPrice, yt as formatPriceScaleLabel, qe as formatTimestamp, vr as formatVND, Ct as formatVolume, Sr as formatVolumeLoc, xt as fractionTick, Zr as getCurrentSession, mr as getLocale, _r as getLocaleStrings, Se as hexToRgba, ui as iconSvg, kt as indicatorSource, ke as inkOn, ce as inverseLerp, Xe as isDateOnly, Et as isPriceSource, Ke as isTimeFrame, x as isUtcTimeZone, y as isValidTimeZone, se as lerp, Te as lerpColor, Gn as lineDash, Gt as marketStatus, xe as mergeBar, ue as niceNumber, he as normalizeBar, me as normalizeBarTime, S as offsetAt, r as ownFillColor, ve as padPriceRange, At as parseIndicatorSource, w as parseTimeframe, ur as phiStep, Rt as pickBaseTimeframe, St as priceFormatterFor, Wr as priceStepAt, gt as priceTagText, Bt as rankSymbols, Vn as readChartStyleOverrides, mn as readChartTypeOptions, Wn as readIndicatorPlotStyles, ae as readNews, Hn as readPaneStyle, ee as readQuote, Oe as readableOn, gr as registerLocale, Nt as resampleBars, qn as resolveChartTheme, en as resolveDrawingOptions, V as resolveVolumeColors, Z as roundToPriceStep, le as roundToStep, Zt as sanitizeDrawingOptions, fn as sanitizeDrawingStyle, qr as scaleMarketPrices, Ut as sessionMinute, pr as setLocale, ge as sliceVisibleData, Dt as sourcePrice, Vt as stepDecimals, Ht as symbolTimeZone, hr as t, Ge as tickBarCount, Ye as timeParts, O as timeframeBucketStart, ct as timeframeFollowsDays, lt as timeframeSpansDays, T as timeframeToMs, $e as tzLabel, br as usesKoreanUnits, dr as vi, ni as vn30fContracts, ti as vn30fLastTradingDay, L as volumeColor, ze as wallToUtc, p as withAlpha, b as zoneOffsetMinutes, Ve as zonedDateFormatter };
2893
+ export { t as CHART_STYLE_KEYS, si as CHART_TYPE_ICONS, Dn as DARK_PRICE_LIMITS, Mn as DARK_TERMINAL, An as DARK_THEME, ar as DEFAULT_BAR_SPACING, ir as DEFAULT_BAR_WIDTH, $n as DEFAULT_CHART_OPTIONS, a as DEFAULT_DRAWING_STYLE, hn as DEFAULT_FONT_FAMILY, lr as DEFAULT_PANEL_HEIGHT, l as DEFAULT_RECONNECT, s as DEFAULT_SIGNAL_STYLE, u as DEFAULT_STREAM_CONFIG, rr as DEFAULT_TIMEFRAME_FAVORITES, c as DEFAULT_TRADE_ZONE_STYLE, o as DEFAULT_TRADING_CONFIG, oi as DRAWING_TOOL_ICONS, dr as FIBONACCI, Or as HNX_SESSIONS, Dr as HOSE_SESSIONS, ci as ICON_DOT_RADIUS, li as ICON_SOFT_OPACITY, jr as KRX_SESSIONS, Tr as KR_COLORS, On as LIGHT_PRICE_LIMITS, jn as LIGHT_THEME, n as LINE_TINT_FILL, e as LayerType, Ur as MARKET_CRYPTO, Lr as MARKET_HNX, Fr as MARKET_HOSE, Ir as MARKET_HOSE_ETF, Br as MARKET_KRX, Vr as MARKET_NXT, Wr as MARKET_NYSE, Hr as MARKET_UPBIT_KRW, Rr as MARKET_UPCOM, zr as MARKET_VN30F, d as MAX_SYMBOL_LENGTH, cr as MIN_PANEL_HEIGHT, ye as MS_TIME_THRESHOLD, Mr as NXT_SESSIONS, ur as PHI, or as PRICE_AXIS_WIDTH, jt as PRICE_SOURCES, gn as SANS_FONT_FAMILY, R as TC_PALETTE, kn as TC_SERIES_COLORS, er as TIMEFRAMES_CRYPTO, nr as TIMEFRAMES_FOREX, tr as TIMEFRAMES_STOCK, sr as TIME_AXIS_HEIGHT, ai as UI_ICONS, kr as UPCOM_SESSIONS, Ar as VN30F_SESSIONS, q as VN_COLORS, vn as VOLUME_ALPHA, nt as alignToTimeframe, Ct as autoPricePrecision, yt as barDateParts, vt as barDateZone, be as barTimeUnit, ot as barsAreDaily, Qn as chartStyleValue, pe as clamp, Yr as computePriceLimits, De as computePriceRange, ve as computeTickStep, h as contrastRatio, Kr as createMarketTheme, Gr as createVNTheme, At as detectPrecision, en as drawingOption, U as en, we as findBarIndex, Ee as fitPriceRange, Et as formatFraction, K as formatNumber, j as formatPrice, Tt as formatPriceScaleLabel, tt as formatTimestamp, br as formatVND, kt as formatVolume, wr as formatVolumeLoc, Dt as fractionTick, ei as getCurrentSession, gr as getLocale, yr as getLocaleStrings, ke as hexToRgba, fi as iconSvg, Ft as indicatorSource, Fe as inkOn, he as inverseLerp, it as isDateOnly, Mt as isPriceSource, et as isTimeFrame, b as isUtcTimeZone, We as isValidTimeZone, me as lerp, je as lerpColor, qn as lineDash, Kt as marketStatus, Oe as mergeBar, _e as niceNumber, Se as normalizeBar, xe as normalizeBarTime, x as offsetAt, r as ownFillColor, Te as padPriceRange, It as parseIndicatorSource, C as parseTimeframe, fr as phiStep, Wt as pickBaseTimeframe, Ot as priceFormatterFor, qr as priceStepAt, St as priceTagText, ne as rankSymbols, Un as readChartStyleOverrides, mn as readChartTypeOptions, Kn as readIndicatorPlotStyles, fe as readNews, Wn as readPaneStyle, se as readQuote, Pe as readableOn, vr as registerLocale, zt as resampleBars, Yn as resolveChartTheme, tn as resolveDrawingOptions, Pn as resolveVolumeColors, X as roundToPriceStep, ge as roundToStep, Qt as sanitizeDrawingOptions, pn as sanitizeDrawingStyle, Xr as scaleMarketPrices, ae as sessionMinute, hr as setLocale, Ce as sliceVisibleData, Nt as sourcePrice, re as stepDecimals, ie as symbolTimeZone, _r as t, $e as tickBarCount, ee as tickerOf, rt as timeParts, k as timeframeBucketStart, O as timeframeFollowsDays, ht as timeframeSpansDays, w as timeframeToMs, st as tzLabel, Sr as usesKoreanUnits, pr as vi, ii as vn30fContracts, ri as vn30fLastTradingDay, z as volumeColor, qe as wallToUtc, p as withAlpha, y as zoneOffsetMinutes, Ye as zonedDateFormatter };
2889
2894
 
2890
2895
  //# sourceMappingURL=index.js.map