@tradecanvas/commons 1.80.0 → 1.82.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 p(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 ue(e, t, n) {
257
- return p(p(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 de = 1e11;
262
- function fe(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 pe(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 me(e) {
314
+ function Se(e) {
270
315
  return {
271
- time: pe(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 me(e) {
276
321
  volume: e.volume ?? e.v ?? 0
277
322
  };
278
323
  }
279
- function he(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 ge(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 ge(e, t) {
290
335
  }
291
336
  return n;
292
337
  }
293
- function _e(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 _e(e, t, n, r = !1) {
305
350
  max: t + a * n
306
351
  };
307
352
  }
308
- function ve(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 ve(e, t, n, r = !1) {
320
365
  max: t + o * n.top
321
366
  };
322
367
  }
323
- function ye(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 ye(e, t, n, r = .05, i = !1) {
330
375
  return s === Infinity ? {
331
376
  min: 0,
332
377
  max: 1
333
- } : _e(s, c, r, i);
378
+ } : Te(s, c, r, i);
334
379
  }
335
- function be(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 be(e, t) {
343
388
  }
344
389
  //#endregion
345
390
  //#region src/utils/color.ts
346
- function xe(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
- function m(e, t) {
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 xe(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 Se = 3;
357
- function Ce(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 Ce(e) {
377
422
  a: Math.min(1, Math.max(0, i))
378
423
  };
379
424
  }
380
- function we(e, t, n) {
381
- let r = Ce(e), i = Ce(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(Se))})`;
429
+ return a >= 1 ? `rgb(${s})` : `rgba(${s},${Number(a.toFixed(Ae))})`;
385
430
  }
386
- function Te(e) {
387
- let t = Ce(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;
@@ -393,25 +438,25 @@ function Te(e) {
393
438
  return .2126 * n(t.r) + .7152 * n(t.g) + .0722 * n(t.b);
394
439
  }
395
440
  function h(e, t) {
396
- let n = Te(e), r = Te(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 Ee = 20;
400
- function De(e, t, n, r) {
444
+ var Ne = 20;
445
+ function Pe(e, t, n, r) {
401
446
  let i = h(e, t);
402
447
  if (i === null || i >= r) return e;
403
- for (let i = 1; i <= Ee; i++) {
404
- let a = we(e, n, i / Ee);
448
+ for (let i = 1; i <= Ne; i++) {
449
+ let a = je(e, n, i / Ne);
405
450
  if ((h(a, t) ?? 0) >= r) return a;
406
451
  }
407
452
  return n;
408
453
  }
409
- function Oe(e, t, n) {
454
+ function Fe(e, t, n) {
410
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 g = 6e4, ke = 1440 * g, _ = 15 * g, Ae = 8192, je = 7 * ke, 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 g = 6e4, ke = 1440 * g, _ = 15 * g, Ae = 8192, je = 7 * ke, Me = 4096, Ne =
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,25 +479,25 @@ 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 / je), i = n.get(r);
452
- return i || (i = Le(e, r * je), 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 = x(e, t), r = t + je - _, i = x(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,
@@ -461,7 +506,7 @@ function Le(e, t) {
461
506
  let a = t;
462
507
  for (; r - a > _;) {
463
508
  let t = a + Math.floor((r - a) / _ / 2) * _;
464
- x(e, t) === n ? a = t : r = t;
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 x(e, t) {
517
+ function Ke(e, t) {
473
518
  let n = Math.floor(t / _), r = `${e}|${n}`, i = v.get(r);
474
519
  if (i !== void 0) return i;
475
520
  let a = n * _, o = 1970, s = 1, c = 1, l = 0, u = 0, d = 0;
476
- for (let t of Ie(e).formatToParts(new Date(a))) {
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":
@@ -497,23 +542,23 @@ function x(e, t) {
497
542
  }
498
543
  }
499
544
  let ee = Math.round((Date.UTC(o, s - 1, c, l, u, d) - a) / g);
500
- return v.size >= Ae && v.clear(), v.set(r, ee), ee;
501
- }
502
- function S(e) {
503
- return e === 0 || typeof e == "string" && Ne.has(e);
545
+ return v.size >= Le && v.clear(), v.set(r, ee), ee;
504
546
  }
505
- function C(e, t) {
506
- return e === null ? -new Date(t).getTimezoneOffset() : typeof e == "number" ? e : b(e, t);
547
+ function b(e) {
548
+ return e === 0 || typeof e == "string" && Be.has(e);
507
549
  }
508
- function Re(e, t) {
509
- let n = e - C(t, e - ke) * g;
510
- if (n + C(t, n) * g === e) return n;
511
- let r = e - C(t, e + ke) * g;
512
- return r + C(t, r) * g === e ? r : n;
550
+ function x(e, t) {
551
+ return e === null ? -new Date(t).getTimezoneOffset() : typeof e == "number" ? e : y(e, t);
513
552
  }
514
- var ze = /* @__PURE__ */ new Map();
515
- function Be(e, t, n) {
516
- let r = `${e}|${JSON.stringify(t)}|${n === null ? "local" : typeof n == "number" ? `fixed:${n}` : n}`, i = ze.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 {
@@ -528,11 +573,11 @@ function Be(e, t, n) {
528
573
  });
529
574
  }
530
575
  let s = typeof n == "number" ? n * g : 0;
531
- return i = (e) => o.format(new Date(e + s)), ze.set(r, i), i;
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 Ve = {
580
+ var Xe = {
536
581
  "1s": 1e3,
537
582
  "5s": 5e3,
538
583
  "15s": 15e3,
@@ -559,16 +604,16 @@ var Ve = {
559
604
  "3M": 7776e6,
560
605
  "6M": 15552e6,
561
606
  "12M": 31536e6
562
- }, w = {
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
- }, He = /^([1-9]\d*)([smhdwM])$/;
570
- function T(e) {
571
- let t = He.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 T(e) {
576
621
  unit: t[2]
577
622
  } : null;
578
623
  }
579
- var Ue = 1e6;
580
- function We(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 <= Ue ? n : null;
629
+ return Number.isSafeInteger(n) && n <= Qe ? n : null;
585
630
  }
586
- function Ge(e) {
587
- return T(e) !== null;
631
+ function et(e) {
632
+ return C(e) !== null;
588
633
  }
589
- function E(e) {
590
- let t = Ve[e];
634
+ function w(e) {
635
+ let t = Xe[e];
591
636
  if (t !== void 0) return t;
592
- let n = T(e);
593
- return n ? n.count * w[n.unit] : NaN;
637
+ let n = C(e);
638
+ return n ? n.count * S[n.unit] : NaN;
594
639
  }
595
- function Ke(e, t) {
596
- let n = new Date(e), r = E(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 Ke(e, t) {
606
651
  second: "2-digit"
607
652
  });
608
653
  }
609
- function qe(e, t) {
610
- let n = E(t);
654
+ function nt(e, t) {
655
+ let n = w(t);
611
656
  return Math.floor(e / n) * n;
612
657
  }
613
- function Je(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 Je(e, t) {
621
666
  minutes: t.getMinutes()
622
667
  };
623
668
  }
624
- let n = new Date(e + C(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 Je(e, t) {
630
675
  minutes: n.getUTCMinutes()
631
676
  };
632
677
  }
633
- function Ye(e) {
678
+ function it(e) {
634
679
  return e.hours === 0 && e.minutes === 0;
635
680
  }
636
- var Xe = 20 * 36e5;
637
- function Ze(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 = fe(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 >= Xe;
690
+ return r === Infinity ? void 0 : r >= at;
646
691
  }
647
- function Qe(e, t = Date.now()) {
648
- let n = C(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 $e = Date.UTC(1970, 0, 5), et = w.m, D = w.d, tt = 24, nt = {
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
- }, rt = 256, O = /* @__PURE__ */ new Map();
655
- function k(e) {
656
- let t = O.get(e);
657
- return t || (t = T(e) ?? nt, O.size >= rt && O.clear(), O.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 it({ unit: e }) {
704
+ function pt({ unit: e }) {
660
705
  return e === "d" || e === "w" || e === "M";
661
706
  }
662
- function at(e) {
663
- return e.unit === "h" ? e.count > 1 && tt % e.count === 0 : it(e);
707
+ function mt(e) {
708
+ return e.unit === "h" ? e.count > 1 && ut % e.count === 0 : pt(e);
664
709
  }
665
- function ot(e) {
666
- return at(k(e));
710
+ function O(e) {
711
+ return mt(D(e));
667
712
  }
668
- function st(e) {
669
- return it(k(e));
713
+ function ht(e) {
714
+ return pt(D(e));
670
715
  }
671
- function ct(e) {
672
- return e !== void 0 && !S(e);
716
+ function gt(e) {
717
+ return e !== void 0 && !b(e);
673
718
  }
674
- function lt(e, t, n = 1) {
675
- let r = k(t), i = typeof n == "number" ? n : n.weekStartsOn ?? 1, a = typeof n == "number" ? void 0 : n.timeZone;
676
- return !ct(a) || !at(r) || typeof n == "object" && n.dates && e % D === 0 ? ut(e, r, i) : Re(ut(e + C(a, e) * et, 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 ut(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 * w[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 - $e) / (7 * D));
688
- return $e + Math.floor(a / t) * t * 7 * D;
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 dt(e, t, n) {
694
- return e % D === 0 ? 0 : n && lt(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 ft(e, t, n) {
697
- return Je(e, dt(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 pt = 64, A = /* @__PURE__ */ new Map();
702
- function mt(e, t) {
746
+ var bt = 64, A = /* @__PURE__ */ new Map();
747
+ function xt(e, t) {
703
748
  let n = `${e}|${t}`, r = A.get(n);
704
- return r || (A.size >= pt && A.clear(), r = new Intl.NumberFormat(e, {
749
+ return r || (A.size >= bt && A.clear(), r = new Intl.NumberFormat(e, {
705
750
  minimumFractionDigits: t,
706
751
  maximumFractionDigits: t
707
752
  }), A.set(n, r)), r;
708
753
  }
709
- function ht(e, t, n) {
710
- return t.formatPrice ? t.formatPrice(e) : j(e, n ?? t.pricePrecision ?? gt(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
757
  function j(e, t = 2, n = "en-US") {
713
- return mt(n, t).format(e);
758
+ return xt(n, t).format(e);
714
759
  }
715
- function gt(e, t) {
760
+ function Ct(e, t) {
716
761
  if (!(t > e) || !Number.isFinite(e) || !Number.isFinite(t)) return 2;
717
- let n = ue(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 _t = 2;
721
- function vt(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 = j(Math.abs(t), _t, i);
725
- return `${r === j(0, _t, 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
772
  return j(e / n * 100, 2, i);
728
773
  }
729
774
  return j(e, r, i);
730
775
  }
731
- function yt(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 bt(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 xt(e) {
743
- return e ? typeof e == "function" ? e : bt(e) === null ? null : (t) => yt(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 St(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 Ct(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 Ct(e) {
755
800
  }
756
801
  //#endregion
757
802
  //#region src/utils/priceSource.ts
758
- var wt = [
803
+ var jt = [
759
804
  "close",
760
805
  "open",
761
806
  "high",
@@ -765,10 +810,10 @@ var wt = [
765
810
  "ohlc4",
766
811
  "hlcc4"
767
812
  ];
768
- function Tt(e) {
769
- return typeof e == "string" && wt.includes(e);
813
+ function Mt(e) {
814
+ return typeof e == "string" && jt.includes(e);
770
815
  }
771
- function Et(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 Et(e, t) {
780
825
  default: return e.close;
781
826
  }
782
827
  }
783
- var Dt = /^ind:([^:]+):(.+)$/;
784
- function Ot(e, t) {
828
+ var Pt = /^ind:([^:]+):(.+)$/;
829
+ function Ft(e, t) {
785
830
  return `ind:${e}:${t}`;
786
831
  }
787
- function kt(e) {
832
+ function It(e) {
788
833
  if (typeof e != "string") return null;
789
- let t = Dt.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 kt(e) {
794
839
  }
795
840
  //#endregion
796
841
  //#region src/utils/resample.ts
797
- var At = 864e5, jt = 6e4;
798
- function Mt(e, t, n = 1) {
799
- let r = Nt(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 = lt(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,52 @@ function Mt(e, t, n = 1) {
810
855
  }
811
856
  return i;
812
857
  }
813
- function Nt(e, t, n) {
814
- return typeof n == "number" || n.timeZone === void 0 || n.dates !== void 0 || S(n.timeZone) || !ot(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: Ze(e) === !0
861
+ dates: ot(e) === !0
817
862
  };
818
863
  }
819
- var Pt = (e) => e === "s" || e === "m" || e === "h" || e === "d";
820
- function Ft(e, t) {
821
- let n = T(e), r = T(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 = E(e);
824
- return n.unit === "d" && n.count > 1 ? !1 : Pt(r.unit) ? Pt(n.unit) && E(t) % i === 0 : n.unit === r.unit ? r.count % n.count === 0 : Pt(n.unit) && At % 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 It(e, t) {
827
- let n = E(e);
828
- if (!(n < At)) 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) => C(t, e) * jt % 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 Lt(e, t, n = {}) {
833
- let { timeZone: r } = n, i = r !== void 0 && !S(r) && ot(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 (!Ft(n, e) || i !== void 0 && !It(n, i)) continue;
836
- let t = E(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 Rt(e) {
844
- let t = e.lastIndexOf(":");
845
- return t <= 0 || t === e.length - 1 ? e : e.slice(t + 1);
846
- }
847
- function zt(e, t) {
848
- if (!e) return 0;
849
- if (e === t) return 1e3;
850
- if (e.startsWith(t)) return 600 - Math.min(100, e.length - t.length);
851
- let n = e.indexOf(t);
852
- return n >= 0 ? 300 - Math.min(100, n) : 0;
853
- }
854
- function Bt(e, t, n = 50, r) {
855
- let i = t.trim().toUpperCase();
856
- if (!i) return e.slice(0, n);
857
- let a = [];
858
- for (let t of e) {
859
- let e = Math.max(zt(t.symbol.toUpperCase(), i), zt((t.description ?? "").toUpperCase(), i) * .8);
860
- e > 0 && a.push({
861
- info: t,
862
- score: e + (r?.(t) ?? 0)
863
- });
864
- }
865
- return a.sort((e, t) => t.score - e.score || e.info.symbol.localeCompare(t.info.symbol)), a.slice(0, n).map((e) => e.info);
866
- }
867
- function Vt(e) {
868
- let t = typeof e == "number" ? e : Number(e);
869
- if (!Number.isFinite(t) || t <= 0) return 0;
870
- for (let e = 0; e <= 12; e++) {
871
- let n = t * 10 ** e;
872
- if (Math.abs(n - Math.round(n)) < 1e-9 * Math.max(1, n)) return e;
873
- }
874
- return 12;
875
- }
876
- function Ht(e) {
877
- return e?.timeZone ?? e?.timezone;
878
- }
879
- function Ut(e) {
880
- let t = /^(\d{1,2}):(\d{2})$/.exec(e.trim());
881
- if (!t) return null;
882
- let n = Number(t[1]), r = Number(t[2]);
883
- return n === 24 && r === 0 ? 1440 : n < 24 && r < 60 ? n * 60 + r : null;
884
- }
885
- //#endregion
886
887
  //#region src/utils/marketStatus.ts
887
- var M = 864e5, N = 6e4, Wt = 8;
888
- function Gt(e, t) {
889
- let n = Ht(e), r = (e?.sessions ?? []).flatMap((e) => {
890
- 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);
891
892
  return t === null || n === null || t === n ? [] : [{
892
893
  start: t,
893
894
  end: n,
894
895
  days: Array.isArray(e.days) ? e.days : null
895
896
  }];
896
897
  });
897
- if (!n || !y(n) || r.length === 0 || !Number.isFinite(t)) return {
898
+ if (!n || !We(n) || r.length === 0 || !Number.isFinite(t)) return {
898
899
  state: "always",
899
900
  next: null
900
901
  };
901
- let i = b(n, t) * N, a = Math.floor((t + i) / M) * M, o = (e) => e - b(n, e - b(n, e - i) * N) * N, s = [];
902
- for (let e = -1; e <= Wt; e++) {
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++) {
903
904
  let t = a + e * M, n = (Math.floor(t / M) + 4) % 7;
904
905
  for (let e of r) {
905
906
  if (e.days && !e.days.includes(n)) continue;
@@ -926,15 +927,15 @@ function Gt(e, t) {
926
927
  }
927
928
  //#endregion
928
929
  //#region src/utils/drawingOptions.ts
929
- var Kt = 48, qt = 2e3, Jt = 1e4;
930
- function Yt(e) {
930
+ var qt = 48, Jt = 2e3, Yt = 1e4;
931
+ function Xt(e) {
931
932
  if (!Array.isArray(e)) return;
932
933
  let t = [];
933
934
  for (let n of e) {
934
- if (t.length >= Kt) break;
935
+ if (t.length >= qt) break;
935
936
  if (typeof n != "object" || !n) continue;
936
937
  let { value: e, visible: r, color: i } = n;
937
- 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;
938
939
  let a = {
939
940
  value: e,
940
941
  visible: r ?? !0
@@ -943,87 +944,87 @@ function Yt(e) {
943
944
  }
944
945
  return t;
945
946
  }
946
- function Xt(e, t) {
947
+ function Zt(e, t) {
947
948
  switch (e.kind) {
948
949
  case "boolean": return typeof t == "boolean" ? t : void 0;
949
950
  case "number": return typeof t != "number" || !Number.isFinite(t) ? void 0 : Math.min(e.max ?? Infinity, Math.max(e.min ?? -Infinity, t));
950
951
  case "choice": return typeof t == "string" && e.choices.some((e) => e.value === t) ? t : void 0;
951
- case "levels": return Yt(t);
952
- 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;
953
954
  }
954
955
  }
955
- function Zt(e, t) {
956
+ function Qt(e, t) {
956
957
  if (!e || typeof t != "object" || !t) return {};
957
958
  let n = {};
958
959
  for (let [r, i] of Object.entries(t)) {
959
960
  let t = e[r];
960
961
  if (!t) continue;
961
- let a = Xt(t, i);
962
+ let a = Zt(t, i);
962
963
  a !== void 0 && (n[r] = a);
963
964
  }
964
965
  return n;
965
966
  }
966
- function Qt(e) {
967
+ function $t(e) {
967
968
  return Array.isArray(e) ? e.map((e) => ({ ...e })) : e;
968
969
  }
969
- function $t(e, t, n) {
970
+ function en(e, t, n) {
970
971
  let r = e?.[n];
971
- 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];
972
973
  }
973
- function en(e, t) {
974
+ function tn(e, t) {
974
975
  let n = {};
975
- 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);
976
977
  return n;
977
978
  }
978
979
  //#endregion
979
980
  //#region src/utils/drawingStyle.ts
980
- var tn = [
981
+ var nn = [
981
982
  "solid",
982
983
  "dashed",
983
984
  "dotted"
984
- ], 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 = [
985
986
  "left",
986
987
  "center",
987
988
  "right"
988
- ], un = [
989
+ ], dn = [
989
990
  "top",
990
991
  "middle",
991
992
  "bottom"
992
993
  ];
993
- function dn(e, t, n) {
994
+ function fn(e, t, n) {
994
995
  return typeof e == "number" && Number.isFinite(e) ? Math.min(n, Math.max(t, e)) : void 0;
995
996
  }
996
997
  function P(e) {
997
- return typeof e == "string" && e.length > 0 && e.length <= nn ? e : void 0;
998
+ return typeof e == "string" && e.length > 0 && e.length <= rn ? e : void 0;
998
999
  }
999
- function fn(e) {
1000
+ function pn(e) {
1000
1001
  if (typeof e != "object" || !e) return {};
1001
1002
  let t = e, n = {}, r = P(t.color);
1002
1003
  r !== void 0 && (n.color = r);
1003
- let i = dn(t.lineWidth, .5, an);
1004
- i !== void 0 && (n.lineWidth = i), tn.includes(t.lineStyle) && (n.lineStyle = t.lineStyle);
1004
+ let i = fn(t.lineWidth, .5, on);
1005
+ i !== void 0 && (n.lineWidth = i), nn.includes(t.lineStyle) && (n.lineStyle = t.lineStyle);
1005
1006
  let a = P(t.fillColor);
1006
1007
  a !== void 0 && (n.fillColor = a);
1007
- let o = dn(t.fillOpacity, 0, 1);
1008
+ let o = fn(t.fillOpacity, 0, 1);
1008
1009
  o !== void 0 && (n.fillOpacity = o);
1009
- let s = dn(t.fontSize, 6, on);
1010
- 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));
1011
1012
  for (let e of [
1012
1013
  "bold",
1013
1014
  "italic",
1014
1015
  "textBackground",
1015
1016
  "textBorder"
1016
1017
  ]) typeof t[e] == "boolean" && (n[e] = t[e]);
1017
- ln.includes(t.textAlign) && (n.textAlign = t.textAlign), un.includes(t.textVAlign) && (n.textVAlign = t.textVAlign);
1018
+ un.includes(t.textAlign) && (n.textAlign = t.textAlign), dn.includes(t.textVAlign) && (n.textVAlign = t.textVAlign);
1018
1019
  let c = P(t.textColor);
1019
1020
  c !== void 0 && (n.textColor = c);
1020
1021
  let l = P(t.borderColor);
1021
- 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;
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;
1022
1023
  }
1023
1024
  //#endregion
1024
1025
  //#region src/utils/chartTypeOptions.ts
1025
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);
1026
- function pn(e) {
1027
+ function mn(e) {
1027
1028
  if (!L(e)) return {};
1028
1029
  let t = {};
1029
1030
  if (L(e.renko)) {
@@ -1059,8 +1060,8 @@ function pn(e) {
1059
1060
  }
1060
1061
  //#endregion
1061
1062
  //#region src/constants/themes.ts
1062
- var mn = "'Cascadia Mono', 'SF Mono', ui-monospace, Menlo, Consolas, monospace", hn = "-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif", gn = {
1063
- family: mn,
1063
+ var hn = "'Cascadia Mono', 'SF Mono', ui-monospace, Menlo, Consolas, monospace", gn = "-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif", _n = {
1064
+ family: hn,
1064
1065
  sizeSmall: 11,
1065
1066
  sizeMedium: 13,
1066
1067
  sizeLarge: 15
@@ -1075,67 +1076,67 @@ var mn = "'Cascadia Mono', 'SF Mono', ui-monospace, Menlo, Consolas, monospace",
1075
1076
  rose: "#e25592",
1076
1077
  neutral: "#7d8696",
1077
1078
  ink: "#131416"
1078
- }, _n = .22;
1079
+ }, vn = .22;
1079
1080
  function z(e) {
1080
- return m(e, _n);
1081
+ return p(e, vn);
1081
1082
  }
1082
- var vn = "#fbfaf6", B = "#1b1d21", yn = "#131416", V = "#e6e3dc", bn = "#1f7a5c", xn = "#b8423f", Sn = "#4fae8a", Cn = "#e2706b", wn = "#6a6966", Tn = "#8d8a84", En = {
1083
+ var yn = "#fbfaf6", B = "#1b1d21", bn = "#131416", V = "#e6e3dc", xn = "#1f7a5c", Sn = "#b8423f", Cn = "#4fae8a", wn = "#e2706b", Tn = "#6a6966", En = "#8d8a84", Dn = {
1083
1084
  ceiling: "#FF00FF",
1084
1085
  floor: "#00FFFF",
1085
1086
  reference: "#FFD700"
1086
- }, Dn = {
1087
+ }, On = {
1087
1088
  ceiling: "#a21caf",
1088
1089
  floor: "#0e7490",
1089
1090
  reference: "#8a6a00"
1090
- }, On = [
1091
+ }, kn = [
1091
1092
  R.blue,
1092
1093
  R.ochre,
1093
1094
  R.violet,
1094
1095
  R.cyan,
1095
1096
  R.rose
1096
- ], kn = {
1097
+ ], An = {
1097
1098
  name: "dark",
1098
- background: yn,
1099
+ background: bn,
1099
1100
  text: V,
1100
1101
  textSecondary: "#8d8b86",
1101
1102
  grid: "#1d1e21",
1102
- crosshair: wn,
1103
- candleUp: Sn,
1104
- candleDown: Cn,
1105
- candleUpWick: Sn,
1106
- candleDownWick: Cn,
1103
+ crosshair: Tn,
1104
+ candleUp: Cn,
1105
+ candleDown: wn,
1106
+ candleUpWick: Cn,
1107
+ candleDownWick: wn,
1107
1108
  lineColor: V,
1108
- areaTopColor: m(V, .14),
1109
- areaBottomColor: m(V, 0),
1110
- volumeUp: m(V, .14),
1111
- volumeDown: m(V, .08),
1109
+ areaTopColor: p(V, .14),
1110
+ areaBottomColor: p(V, 0),
1111
+ volumeUp: p(V, .14),
1112
+ volumeDown: p(V, .08),
1112
1113
  axisLine: "#2a2b2f",
1113
1114
  axisLabel: "#a9a6a0",
1114
1115
  axisLabelBackground: "#232427",
1115
- font: gn,
1116
- priceLimits: En
1117
- }, An = {
1116
+ font: _n,
1117
+ priceLimits: Dn
1118
+ }, jn = {
1118
1119
  name: "light",
1119
- background: vn,
1120
+ background: yn,
1120
1121
  text: B,
1121
1122
  textSecondary: "#6b6f76",
1122
1123
  grid: "#ece8df",
1123
- crosshair: Tn,
1124
- candleUp: bn,
1125
- candleDown: xn,
1126
- candleUpWick: bn,
1127
- candleDownWick: xn,
1124
+ crosshair: En,
1125
+ candleUp: xn,
1126
+ candleDown: Sn,
1127
+ candleUpWick: xn,
1128
+ candleDownWick: Sn,
1128
1129
  lineColor: B,
1129
- areaTopColor: m(B, .12),
1130
- areaBottomColor: m(B, 0),
1131
- volumeUp: m(B, .13),
1132
- volumeDown: m(B, .08),
1130
+ areaTopColor: p(B, .12),
1131
+ areaBottomColor: p(B, 0),
1132
+ volumeUp: p(B, .13),
1133
+ volumeDown: p(B, .08),
1133
1134
  axisLine: "#cfcac0",
1134
1135
  axisLabel: "#4a4e57",
1135
1136
  axisLabelBackground: "#eeebe3",
1136
- font: gn,
1137
- priceLimits: Dn
1138
- }, jn = {
1137
+ font: _n,
1138
+ priceLimits: On
1139
+ }, Mn = {
1139
1140
  name: "terminal",
1140
1141
  background: "#0E0E0E",
1141
1142
  text: "#C0C0C0",
@@ -1160,10 +1161,10 @@ var vn = "#fbfaf6", B = "#1b1d21", yn = "#131416", V = "#e6e3dc", bn = "#1f7a5c"
1160
1161
  sizeMedium: 12,
1161
1162
  sizeLarge: 14
1162
1163
  }
1163
- }, Mn = new Set([jn.volumeUp, jn.volumeDown]);
1164
- function Nn(e) {
1164
+ }, Nn = new Set([Mn.volumeUp, Mn.volumeDown]);
1165
+ function Pn(e) {
1165
1166
  let t = (e, t) => {
1166
- if (!Mn.has(e)) return e;
1167
+ if (!Nn.has(e)) return e;
1167
1168
  let n = z(t);
1168
1169
  return n === t ? e : n;
1169
1170
  };
@@ -1174,67 +1175,67 @@ function Nn(e) {
1174
1175
  }
1175
1176
  //#endregion
1176
1177
  //#region src/utils/chartStyle.ts
1177
- var Pn = [
1178
+ var Fn = [
1178
1179
  "solid",
1179
1180
  "dashed",
1180
1181
  "dotted"
1181
- ], Fn = 20, In = 64, Ln = 2, Rn = [
1182
+ ], In = 20, Ln = 64, Rn = 2, zn = [
1182
1183
  /^#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i,
1183
1184
  /^[a-z]{3,30}$/i,
1184
1185
  /^(?:rgba?|hsla?|hwb|lab|lch|oklab|oklch|color)\([0-9a-z.,%/\s-]*\)$/i
1185
1186
  ];
1186
- function zn(e) {
1187
- return typeof e == "string" && e.length <= In && Rn.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()));
1188
1189
  }
1189
- function Bn(e, t) {
1190
+ function Vn(e, t) {
1190
1191
  switch (e) {
1191
- case "color": return zn(t);
1192
- case "lineStyle": return Pn.includes(t);
1193
- case "width": return typeof t == "number" && Number.isFinite(t) && t > 0 && t <= Fn;
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;
1194
1195
  case "boolean": return typeof t == "boolean";
1195
1196
  }
1196
1197
  }
1197
- function Vn(e) {
1198
+ function Hn(e) {
1198
1199
  return Object.prototype.hasOwnProperty.call(t, e);
1199
1200
  }
1200
- function Hn(e) {
1201
+ function Un(e) {
1201
1202
  let n = {}, r = [];
1202
1203
  if (typeof e != "object" || !e || Array.isArray(e)) return {
1203
1204
  overrides: {},
1204
1205
  rejected: r
1205
1206
  };
1206
- for (let [i, a] of Object.entries(e)) Vn(i) ? a === null ? n[i] = null : Bn(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);
1207
1208
  return {
1208
1209
  overrides: n,
1209
1210
  rejected: r
1210
1211
  };
1211
1212
  }
1212
- function Un(e) {
1213
+ function Wn(e) {
1213
1214
  if (typeof e != "object" || !e || Array.isArray(e)) return null;
1214
1215
  let { background: t, separator: n } = e, r = {
1215
- ...zn(t) ? { background: t } : {},
1216
- ...zn(n) ? { separator: n } : {}
1216
+ ...Bn(t) ? { background: t } : {},
1217
+ ...Bn(n) ? { separator: n } : {}
1217
1218
  };
1218
1219
  return Object.keys(r).length > 0 ? r : null;
1219
1220
  }
1220
- var Wn = /^[A-Za-z0-9_]{1,32}$/;
1221
- function Gn(e) {
1221
+ var Gn = /^[A-Za-z0-9_]{1,32}$/;
1222
+ function Kn(e) {
1222
1223
  if (typeof e != "object" || !e || Array.isArray(e)) return;
1223
1224
  let t = {};
1224
1225
  for (let [n, r] of Object.entries(e)) {
1225
- if (!Wn.test(n) || typeof r != "object" || !r) continue;
1226
+ if (!Gn.test(n) || typeof r != "object" || !r) continue;
1226
1227
  let { lineStyle: e, visible: i } = r, a = {
1227
- ...Pn.includes(e) ? { lineStyle: e } : {},
1228
+ ...Fn.includes(e) ? { lineStyle: e } : {},
1228
1229
  ...typeof i == "boolean" ? { visible: i } : {}
1229
1230
  };
1230
1231
  Object.keys(a).length > 0 && (t[n] = a);
1231
1232
  }
1232
1233
  return Object.keys(t).length > 0 ? t : void 0;
1233
1234
  }
1234
- function Kn(e, t, n = 1) {
1235
+ function qn(e, t, n = 1) {
1235
1236
  return e === "solid" ? [] : e === "dotted" ? [n, n * 2] : [...t];
1236
1237
  }
1237
- function qn(e, t, n) {
1238
+ function Jn(e, t, n) {
1238
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;
1239
1240
  return {
1240
1241
  up: o,
@@ -1242,7 +1243,7 @@ function qn(e, t, n) {
1242
1243
  wickUp: r("wickUpColor") ?? t("series.candlestick.wickUpColor") ?? (i === void 0 ? e.candleUpWick : o),
1243
1244
  wickDown: r("wickDownColor") ?? t("series.candlestick.wickDownColor") ?? (a === void 0 ? e.candleDownWick : s),
1244
1245
  line: r("color") ?? r("lineColor") ?? t("series.line.color") ?? e.lineColor,
1245
- lineWidth: r("lineWidth") ?? t("series.line.lineWidth") ?? Ln,
1246
+ lineWidth: r("lineWidth") ?? t("series.line.lineWidth") ?? Rn,
1246
1247
  top: r("topColor") ?? t("series.area.topColor") ?? e.areaTopColor,
1247
1248
  bottom: r("bottomColor") ?? t("series.area.bottomColor") ?? e.areaBottomColor
1248
1249
  };
@@ -1255,8 +1256,8 @@ function H(e, t, n) {
1255
1256
  width: e(`${t}.width`) ?? n.width
1256
1257
  };
1257
1258
  }
1258
- function Jn(e, t, n) {
1259
- let { style: r, ...i } = e, a = n, o = (e) => a[e], s = qn(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 = {
1260
1261
  panes: {
1261
1262
  background: l("panes.background", c),
1262
1263
  separator: l("panes.separatorColor", i.axisLine),
@@ -1355,7 +1356,7 @@ function Jn(e, t, n) {
1355
1356
  style: d
1356
1357
  };
1357
1358
  }
1358
- var Yn = {
1359
+ var Xn = {
1359
1360
  "background.color": (e) => e.background,
1360
1361
  "panes.background": (e, t) => t.panes.background,
1361
1362
  "panes.separatorColor": (e, t) => t.panes.separator,
@@ -1374,8 +1375,8 @@ var Yn = {
1374
1375
  "lastPrice.downColor": (e, t) => t.lastPrice.down,
1375
1376
  "lastPrice.style": (e, t) => t.lastPrice.style,
1376
1377
  "lastPrice.width": (e, t) => t.lastPrice.width,
1377
- "volume.upColor": (e) => Nn(e).up,
1378
- "volume.downColor": (e) => Nn(e).down,
1378
+ "volume.upColor": (e) => Pn(e).up,
1379
+ "volume.downColor": (e) => Pn(e).down,
1379
1380
  "sessionBreaks.color": (e, t) => t.sessionBreaks.color,
1380
1381
  "sessionBreaks.style": (e, t) => t.sessionBreaks.style,
1381
1382
  "sessionBreaks.width": (e, t) => t.sessionBreaks.width,
@@ -1392,16 +1393,16 @@ var Yn = {
1392
1393
  "tradeZones.lossColor": (e, t) => t.tradeZones.loss,
1393
1394
  "tradeZones.activeColor": (e, t) => t.tradeZones.active,
1394
1395
  "drawings.handleColor": (e, t) => t.drawings.handle
1395
- }, Xn = {
1396
+ }, Zn = {
1396
1397
  visible: "visible",
1397
1398
  color: "color",
1398
1399
  style: "style",
1399
1400
  width: "width"
1400
1401
  };
1401
- function Zn(e, t, n, r = "candlestick") {
1402
+ function Qn(e, t, n, r = "candlestick") {
1402
1403
  let i = n.split(".");
1403
1404
  if (i[0] === "series") {
1404
- let n = qn(e, (e) => t[e], i[1]);
1405
+ let n = Jn(e, (e) => t[e], i[1]);
1405
1406
  switch (i[2]) {
1406
1407
  case "upColor": return n.up;
1407
1408
  case "downColor": return n.down;
@@ -1414,12 +1415,12 @@ function Zn(e, t, n, r = "candlestick") {
1414
1415
  case "bottomColor": return n.bottom;
1415
1416
  }
1416
1417
  }
1417
- let a = Jn(e, r, t), o = a.style;
1418
- return i[0] === "grid" || i[0] === "crosshair" && (i[1] === "horizontal" || i[1] === "vertical") ? (i[0] === "grid" ? o.grid : o.crosshair)[i[1]][Xn[i[2]]] : Yn[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;
1419
1420
  }
1420
1421
  //#endregion
1421
1422
  //#region src/constants/defaults.ts
1422
- var Qn = {
1423
+ var $n = {
1423
1424
  autoScale: !0,
1424
1425
  rightMargin: 5,
1425
1426
  minBarSpacing: 2,
@@ -1430,7 +1431,7 @@ var Qn = {
1430
1431
  vLineStyle: "solid"
1431
1432
  },
1432
1433
  crosshair: { mode: "magnet" }
1433
- }, $n = [
1434
+ }, er = [
1434
1435
  "1s",
1435
1436
  "1m",
1436
1437
  "3m",
@@ -1447,7 +1448,7 @@ var Qn = {
1447
1448
  "3d",
1448
1449
  "1w",
1449
1450
  "1M"
1450
- ], er = [
1451
+ ], tr = [
1451
1452
  "1m",
1452
1453
  "5m",
1453
1454
  "15m",
@@ -1461,7 +1462,7 @@ var Qn = {
1461
1462
  "3M",
1462
1463
  "6M",
1463
1464
  "12M"
1464
- ], tr = [
1465
+ ], nr = [
1465
1466
  "1m",
1466
1467
  "5m",
1467
1468
  "15m",
@@ -1471,7 +1472,7 @@ var Qn = {
1471
1472
  "1d",
1472
1473
  "1w",
1473
1474
  "1M"
1474
- ], nr = [
1475
+ ], rr = [
1475
1476
  "1m",
1476
1477
  "5m",
1477
1478
  "15m",
@@ -1479,7 +1480,7 @@ var Qn = {
1479
1480
  "4h",
1480
1481
  "1d",
1481
1482
  "1w"
1482
- ], rr = 8, ir = 2, ar = 70, or = 30, sr = 60, cr = 120, lr = (1 + Math.sqrt(5)) / 2, ur = [
1483
+ ], ir = 8, ar = 2, or = 70, sr = 30, cr = 60, lr = 120, ur = (1 + Math.sqrt(5)) / 2, dr = [
1483
1484
  1,
1484
1485
  2,
1485
1486
  3,
@@ -1491,8 +1492,8 @@ var Qn = {
1491
1492
  55,
1492
1493
  89
1493
1494
  ];
1494
- function dr(e, t, n = 1) {
1495
- return Math.round(e * lr ** (t / n));
1495
+ function fr(e, t, n = 1) {
1496
+ return Math.round(e * ur ** (t / n));
1496
1497
  }
1497
1498
  //#endregion
1498
1499
  //#region src/i18n/en.ts
@@ -1599,7 +1600,7 @@ var U = {
1599
1600
  error: "Error",
1600
1601
  numberDecimalSeparator: ".",
1601
1602
  numberGroupSeparator: ","
1602
- }, fr = {
1603
+ }, pr = {
1603
1604
  candlestick: "Nến",
1604
1605
  line: "Đường",
1605
1606
  area: "Vùng",
@@ -1702,20 +1703,20 @@ var U = {
1702
1703
  error: "Lỗi",
1703
1704
  numberDecimalSeparator: ",",
1704
1705
  numberGroupSeparator: "."
1705
- }, W = new Map([["en", U], ["vi", fr]]), G = "en", pr = U;
1706
- function mr(e) {
1707
- G = e, pr = 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;
1708
1709
  }
1709
- function hr() {
1710
+ function gr() {
1710
1711
  return G;
1711
1712
  }
1712
- function gr(e) {
1713
- return pr[e] ?? U[e] ?? e;
1713
+ function _r(e) {
1714
+ return mr[e] ?? U[e] ?? e;
1714
1715
  }
1715
- function _r(e, t) {
1716
+ function vr(e, t) {
1716
1717
  W.set(e, t);
1717
1718
  }
1718
- function vr(e) {
1719
+ function yr(e) {
1719
1720
  return W.get(e ?? G) ?? U;
1720
1721
  }
1721
1722
  function K(e, t = 2, n) {
@@ -1723,32 +1724,32 @@ function K(e, t = 2, n) {
1723
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;
1724
1725
  return c && (u = "-" + u), s ? u + i + s : u;
1725
1726
  }
1726
- function yr(e) {
1727
+ function br(e) {
1727
1728
  return K(e, 0, "vi");
1728
1729
  }
1729
- var br = [
1730
+ var xr = [
1730
1731
  [0xe8d4a51000, "조"],
1731
1732
  [1e8, "억"],
1732
1733
  [1e4, "만"]
1733
1734
  ];
1734
- function xr(e) {
1735
+ function Sr(e) {
1735
1736
  return /^ko([-_]|$)/i.test(e);
1736
1737
  }
1737
- function Sr(e, t, n) {
1738
+ function Cr(e, t, n) {
1738
1739
  try {
1739
1740
  return j(e, t, n);
1740
1741
  } catch {
1741
1742
  return K(e, t, "en");
1742
1743
  }
1743
1744
  }
1744
- function Cr(e, t) {
1745
+ function wr(e, t) {
1745
1746
  let n = t ?? G;
1746
1747
  if (!Number.isFinite(e)) return String(e);
1747
- if (xr(n)) {
1748
- for (let [t, r] of br) 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;
1749
1750
  return K(e, 0, n);
1750
1751
  }
1751
- let r = W.has(n) ? (e, t) => K(e, t, n) : (e, t) => Sr(e, t, n);
1752
+ let r = W.has(n) ? (e, t) => K(e, t, n) : (e, t) => Cr(e, t, n);
1752
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);
1753
1754
  }
1754
1755
  //#endregion
@@ -1760,14 +1761,14 @@ var q = {
1760
1761
  ceiling: "#D946EF",
1761
1762
  floor: "#06B6D4",
1762
1763
  reference: "#EAB308"
1763
- }, J = "Asia/Ho_Chi_Minh", wr = {
1764
+ }, J = "Asia/Ho_Chi_Minh", Tr = {
1764
1765
  up: "#E8313F",
1765
1766
  down: "#2F6FEB",
1766
1767
  unchanged: "#8B8F99",
1767
1768
  ceiling: "#C2121F",
1768
1769
  floor: "#1E4FC2",
1769
1770
  reference: "#8B8F99"
1770
- }, Tr = "Asia/Seoul", Er = [
1771
+ }, Er = "Asia/Seoul", Dr = [
1771
1772
  {
1772
1773
  name: "ATO",
1773
1774
  startTime: "09:00",
@@ -1798,7 +1799,7 @@ var q = {
1798
1799
  endTime: "14:45",
1799
1800
  type: "preClose"
1800
1801
  }
1801
- ], Dr = [
1802
+ ], Or = [
1802
1803
  {
1803
1804
  name: "Phiên 1",
1804
1805
  startTime: "09:15",
@@ -1829,7 +1830,7 @@ var q = {
1829
1830
  endTime: "15:00",
1830
1831
  type: "postClose"
1831
1832
  }
1832
- ], Or = [
1833
+ ], kr = [
1833
1834
  {
1834
1835
  name: "Phiên 1",
1835
1836
  startTime: "09:15",
@@ -1848,7 +1849,7 @@ var q = {
1848
1849
  endTime: "14:30",
1849
1850
  type: "continuous"
1850
1851
  }
1851
- ], kr = [
1852
+ ], Ar = [
1852
1853
  {
1853
1854
  name: "ATO",
1854
1855
  startTime: "08:45",
@@ -1879,7 +1880,7 @@ var q = {
1879
1880
  endTime: "14:45",
1880
1881
  type: "preClose"
1881
1882
  }
1882
- ], Ar = [
1883
+ ], jr = [
1883
1884
  {
1884
1885
  name: "장전 동시호가",
1885
1886
  startTime: "08:30",
@@ -1910,7 +1911,7 @@ var q = {
1910
1911
  endTime: "20:00",
1911
1912
  type: "postClose"
1912
1913
  }
1913
- ], jr = [
1914
+ ], Mr = [
1914
1915
  {
1915
1916
  name: "프리마켓",
1916
1917
  startTime: "08:00",
@@ -1929,7 +1930,7 @@ var q = {
1929
1930
  endTime: "20:00",
1930
1931
  type: "postClose"
1931
1932
  }
1932
- ], Mr = [
1933
+ ], Nr = [
1933
1934
  {
1934
1935
  from: 0,
1935
1936
  step: 1
@@ -1958,7 +1959,7 @@ var q = {
1958
1959
  from: 5e5,
1959
1960
  step: 1e3
1960
1961
  }
1961
- ], Nr = [
1962
+ ], Pr = [
1962
1963
  {
1963
1964
  from: 0,
1964
1965
  step: 1e-8
@@ -2019,7 +2020,7 @@ var q = {
2019
2020
  from: 1e6,
2020
2021
  step: 1e3
2021
2022
  }
2022
- ], Pr = {
2023
+ ], Fr = {
2023
2024
  type: "stock",
2024
2025
  exchange: "HOSE",
2025
2026
  currency: "VND",
@@ -2046,12 +2047,12 @@ var q = {
2046
2047
  ceilingPercent: 7,
2047
2048
  floorPercent: 7
2048
2049
  },
2049
- sessions: Er,
2050
+ sessions: Dr,
2050
2051
  colorScheme: q
2051
- }, Fr = {
2052
- ...Pr,
2053
- priceSteps: void 0
2054
2052
  }, Ir = {
2053
+ ...Fr,
2054
+ priceSteps: void 0
2055
+ }, Lr = {
2055
2056
  type: "stock",
2056
2057
  exchange: "HNX",
2057
2058
  currency: "VND",
@@ -2064,9 +2065,9 @@ var q = {
2064
2065
  ceilingPercent: 10,
2065
2066
  floorPercent: 10
2066
2067
  },
2067
- sessions: Dr,
2068
+ sessions: Or,
2068
2069
  colorScheme: q
2069
- }, Lr = {
2070
+ }, Rr = {
2070
2071
  type: "stock",
2071
2072
  exchange: "UPCOM",
2072
2073
  currency: "VND",
@@ -2079,9 +2080,9 @@ var q = {
2079
2080
  ceilingPercent: 15,
2080
2081
  floorPercent: 15
2081
2082
  },
2082
- sessions: Or,
2083
+ sessions: kr,
2083
2084
  colorScheme: q
2084
- }, Rr = {
2085
+ }, zr = {
2085
2086
  type: "futures",
2086
2087
  exchange: "HNX",
2087
2088
  currency: "VND",
@@ -2095,44 +2096,44 @@ var q = {
2095
2096
  ceilingPercent: 7,
2096
2097
  floorPercent: 7
2097
2098
  },
2098
- sessions: kr,
2099
+ sessions: Ar,
2099
2100
  colorScheme: q
2100
- }, zr = {
2101
+ }, Br = {
2101
2102
  type: "stock",
2102
2103
  exchange: "KRX",
2103
2104
  currency: "KRW",
2104
2105
  pricePrecision: 0,
2105
2106
  volumeUnit: 1,
2106
2107
  priceStep: 1,
2107
- priceSteps: Mr,
2108
- timeZone: Tr,
2108
+ priceSteps: Nr,
2109
+ timeZone: Er,
2109
2110
  priceLimits: {
2110
2111
  enabled: !0,
2111
2112
  ceilingPercent: 30,
2112
2113
  floorPercent: 30,
2113
2114
  roundMove: !0
2114
2115
  },
2115
- sessions: Ar,
2116
- colorScheme: wr
2117
- }, Br = {
2118
- ...zr,
2119
- exchange: "NXT",
2120
- sessions: jr
2116
+ sessions: jr,
2117
+ colorScheme: Tr
2121
2118
  }, Vr = {
2119
+ ...Br,
2120
+ exchange: "NXT",
2121
+ sessions: Mr
2122
+ }, Hr = {
2122
2123
  type: "crypto",
2123
2124
  exchange: "UPBIT",
2124
2125
  currency: "KRW",
2125
2126
  priceStep: 1e-8,
2126
- priceSteps: Nr,
2127
- timeZone: Tr,
2127
+ priceSteps: Pr,
2128
+ timeZone: Er,
2128
2129
  priceLimits: { enabled: !1 },
2129
- colorScheme: wr
2130
- }, Hr = {
2130
+ colorScheme: Tr
2131
+ }, Ur = {
2131
2132
  type: "crypto",
2132
2133
  currency: "USDT",
2133
2134
  pricePrecision: 2,
2134
2135
  priceLimits: { enabled: !1 }
2135
- }, Ur = {
2136
+ }, Wr = {
2136
2137
  type: "stock",
2137
2138
  exchange: "NYSE",
2138
2139
  currency: "USD",
@@ -2161,10 +2162,10 @@ var q = {
2161
2162
  }
2162
2163
  ]
2163
2164
  };
2164
- function Wr(e) {
2165
- return Gr(e, q);
2165
+ function Gr(e) {
2166
+ return Kr(e, q);
2166
2167
  }
2167
- function Gr(e, t) {
2168
+ function Kr(e, t) {
2168
2169
  return {
2169
2170
  ...e,
2170
2171
  candleUp: t.up,
@@ -2174,25 +2175,25 @@ function Gr(e, t) {
2174
2175
  };
2175
2176
  }
2176
2177
  var Y = 1e-9;
2177
- function Kr(e, t) {
2178
+ function qr(e, t) {
2178
2179
  let n = t.priceStep;
2179
2180
  for (let r of t.priceSteps ?? []) e + Y >= r.from && (n = r.step);
2180
2181
  return n !== void 0 && n > 0 ? n : void 0;
2181
2182
  }
2182
- function qr(e, t) {
2183
+ function Jr(e, t) {
2183
2184
  let n = t.priceStep;
2184
2185
  for (let r of t.priceSteps ?? []) e - Y > r.from && (n = r.step);
2185
2186
  return n !== void 0 && n > 0 ? n : void 0;
2186
2187
  }
2187
2188
  function X(e, t, n = "nearest") {
2188
- let r = Kr(e, t);
2189
+ let r = qr(e, t);
2189
2190
  if (r === void 0 || !Number.isFinite(e)) return e;
2190
2191
  let i = e / r, a = n === "down" ? Math.floor(i + Y) : n === "up" ? Math.ceil(i - Y) : Math.round(i);
2191
- return Number((a * r).toFixed(Vt(r)));
2192
+ return Number((a * r).toFixed(re(r)));
2192
2193
  }
2193
- function Jr(e, t) {
2194
+ function Yr(e, t) {
2194
2195
  if (!t.priceLimits?.enabled || !t.priceLimits.ceilingPercent) return null;
2195
- 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 = Kr(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);
2196
2197
  if (s === void 0) return {
2197
2198
  ceiling: a,
2198
2199
  floor: o,
@@ -2213,14 +2214,14 @@ function Jr(e, t) {
2213
2214
  };
2214
2215
  l = X(i + X(i * n, e, "down"), t, "down"), u = X(i - X(i * r, e, "down"), t, "down");
2215
2216
  } else l = X(a, t, "down"), u = X(o, t, "up");
2216
- return l <= i && (l = c), u >= i && (u = X(i - (qr(i, t) ?? s), t)), u <= 0 && (u = i), {
2217
+ return l <= i && (l = c), u >= i && (u = X(i - (Jr(i, t) ?? s), t)), u <= 0 && (u = i), {
2217
2218
  ceiling: l,
2218
2219
  floor: u,
2219
2220
  reference: i
2220
2221
  };
2221
2222
  }
2222
2223
  var Z = (e, t) => Math.round(e * t * 1e9) / 1e9;
2223
- function Yr(e, t) {
2224
+ function Xr(e, t) {
2224
2225
  let n = Math.round(Math.log10(t));
2225
2226
  return {
2226
2227
  ...e,
@@ -2236,11 +2237,11 @@ function Yr(e, t) {
2236
2237
  }
2237
2238
  };
2238
2239
  }
2239
- var Xr = 6e4, Zr = 864e5;
2240
- function Qr(e, t) {
2240
+ var Zr = 6e4, Qr = 864e5;
2241
+ function $r(e, t) {
2241
2242
  let n, r;
2242
2243
  if (t) {
2243
- let i = new Date(e + b(t, e) * Xr);
2244
+ let i = new Date(e + y(t, e) * Zr);
2244
2245
  n = i.getUTCHours(), r = i.getUTCMinutes();
2245
2246
  } else {
2246
2247
  let t = new Date(e);
@@ -2248,31 +2249,31 @@ function Qr(e, t) {
2248
2249
  }
2249
2250
  return `${String(n).padStart(2, "0")}:${String(r).padStart(2, "0")}`;
2250
2251
  }
2251
- function $r(e, t = Date.now(), n) {
2252
- if (n !== void 0 && !y(n)) return null;
2253
- let r = Qr(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);
2254
2255
  for (let t of e) if (r >= t.startTime && r < t.endTime) return t;
2255
2256
  return null;
2256
2257
  }
2257
2258
  var Q = (e) => String(e).padStart(2, "0"), $ = (e) => {
2258
2259
  let t = new Date(e);
2259
2260
  return `${t.getUTCFullYear()}-${Q(t.getUTCMonth() + 1)}-${Q(t.getUTCDate())}`;
2260
- }, ei = 4, ti = 7 * 36e5;
2261
- function ni(e, t, n) {
2262
- let r = Date.UTC(e, t - 1, 1), i = 1 + (ei - new Date(r).getUTCDay() + 7) % 7, a = Date.UTC(e, t - 1, i + 14), o = (e) => {
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) => {
2263
2264
  let t = new Date(e).getUTCDay();
2264
2265
  return t === 0 || t === 6 || (n?.($(e)) ?? !1);
2265
2266
  };
2266
- for (; o(a);) a -= Zr;
2267
+ for (; o(a);) a -= Qr;
2267
2268
  return $(a);
2268
2269
  }
2269
- function ri(e, t) {
2270
- let n = $(e + ti), r = (e, n) => ({
2270
+ function ii(e, t) {
2271
+ let n = $(e + ni), r = (e, n) => ({
2271
2272
  symbol: `VN30F${Q(e % 100)}${Q(n)}`,
2272
2273
  year: e,
2273
2274
  month: n,
2274
- lastTradingDay: ni(e, n, t)
2275
- }), i = (e) => e.month === 12 ? r(e.year + 1, 1) : r(e.year, e.month + 1), a = new Date(e + ti), 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);
2276
2277
  n > o.lastTradingDay && (o = i(o));
2277
2278
  let s = [o, i(o)], c = i(s[1]);
2278
2279
  for (; s.length < 4;) c.month % 3 == 0 && s.push(c), c = i(c);
@@ -2280,8 +2281,14 @@ function ri(e, t) {
2280
2281
  }
2281
2282
  //#endregion
2282
2283
  //#region src/icons/iconSet.ts
2283
- var ii = {
2284
+ var ai = {
2284
2285
  cursor: { d: "M6 3.5L18.5 12.5L12.6 13.6L9.7 19.4z" },
2286
+ crosshairCursor: { d: "M12 3.5v6M12 14.5v6M3.5 12h6M14.5 12h6" },
2287
+ dotCursor: { dots: [[
2288
+ 12,
2289
+ 12,
2290
+ 3
2291
+ ]] },
2285
2292
  trendingUp: { d: "M3 17L9 11L13 14.5L21 6.5M15 6.5H21V12.5" },
2286
2293
  trendingDown: { d: "M3 7L9 13L13 9.5L21 17.5M15 17.5H21V11.5" },
2287
2294
  minus: { d: "M5 12H19" },
@@ -2447,7 +2454,7 @@ var ii = {
2447
2454
  ]
2448
2455
  ] },
2449
2456
  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" }
2450
- }, ai = {
2457
+ }, oi = {
2451
2458
  trendLine: {
2452
2459
  d: "M5 18L19 6",
2453
2460
  dots: [[5, 18], [19, 6]]
@@ -2807,7 +2814,7 @@ var ii = {
2807
2814
  ],
2808
2815
  dash: "M12 3V21"
2809
2816
  }
2810
- }, oi = {
2817
+ }, si = {
2811
2818
  candlestick: {
2812
2819
  d: "M8 3.5V7M8 16V20.5M16 5V8.5M16 15.5V19",
2813
2820
  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"]
@@ -2874,21 +2881,21 @@ var ii = {
2874
2881
  "M16 4.5h3v6h-3z"
2875
2882
  ]
2876
2883
  }
2877
- }, si = 1.75, ci = .22, li = /* @__PURE__ */ new WeakMap();
2878
- function ui(e) {
2879
- let t = li.get(e);
2884
+ }, ci = 1.75, li = .22, ui = /* @__PURE__ */ new WeakMap();
2885
+ function di(e) {
2886
+ let t = ui.get(e);
2880
2887
  if (t) return t;
2881
2888
  let n = "";
2882
- e.soft && (n += `<path d="${e.soft}" fill="currentColor" fill-opacity="${ci}" stroke="none"/>`);
2889
+ e.soft && (n += `<path d="${e.soft}" fill="currentColor" fill-opacity="${li}" stroke="none"/>`);
2883
2890
  for (let t of e.fills ?? []) n += `<path d="${t}" fill="currentColor" stroke="none"/>`;
2884
2891
  e.d && (n += `<path d="${e.d}"/>`), e.dash && (n += `<path d="${e.dash}" stroke-dasharray="2 2.5"/>`);
2885
- for (let [t, r, i = si] of e.dots ?? []) n += `<circle cx="${t}" cy="${r}" r="${i}" fill="currentColor" stroke="none"/>`;
2886
- return li.set(e, n), n;
2892
+ for (let [t, r, i = ci] of e.dots ?? []) n += `<circle cx="${t}" cy="${r}" r="${i}" fill="currentColor" stroke="none"/>`;
2893
+ return ui.set(e, n), n;
2887
2894
  }
2888
- function di(e, t) {
2889
- 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">${ui(e)}</svg>`;
2895
+ function fi(e, t) {
2896
+ 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>`;
2890
2897
  }
2891
2898
  //#endregion
2892
- export { t as CHART_STYLE_KEYS, oi as CHART_TYPE_ICONS, En as DARK_PRICE_LIMITS, jn as DARK_TERMINAL, kn as DARK_THEME, ir as DEFAULT_BAR_SPACING, rr as DEFAULT_BAR_WIDTH, Qn as DEFAULT_CHART_OPTIONS, a as DEFAULT_DRAWING_STYLE, mn as DEFAULT_FONT_FAMILY, cr as DEFAULT_PANEL_HEIGHT, l as DEFAULT_RECONNECT, s as DEFAULT_SIGNAL_STYLE, u as DEFAULT_STREAM_CONFIG, nr as DEFAULT_TIMEFRAME_FAVORITES, c as DEFAULT_TRADE_ZONE_STYLE, o as DEFAULT_TRADING_CONFIG, ai as DRAWING_TOOL_ICONS, ur as FIBONACCI, Dr as HNX_SESSIONS, Er as HOSE_SESSIONS, si as ICON_DOT_RADIUS, ci as ICON_SOFT_OPACITY, Ar as KRX_SESSIONS, wr as KR_COLORS, Dn as LIGHT_PRICE_LIMITS, An as LIGHT_THEME, n as LINE_TINT_FILL, e as LayerType, Hr as MARKET_CRYPTO, Ir as MARKET_HNX, Pr as MARKET_HOSE, Fr as MARKET_HOSE_ETF, zr as MARKET_KRX, Br as MARKET_NXT, Ur as MARKET_NYSE, Vr as MARKET_UPBIT_KRW, Lr as MARKET_UPCOM, Rr as MARKET_VN30F, sr as MIN_PANEL_HEIGHT, de as MS_TIME_THRESHOLD, jr as NXT_SESSIONS, lr as PHI, ar as PRICE_AXIS_WIDTH, wt as PRICE_SOURCES, hn as SANS_FONT_FAMILY, R as TC_PALETTE, On as TC_SERIES_COLORS, $n as TIMEFRAMES_CRYPTO, tr as TIMEFRAMES_FOREX, er as TIMEFRAMES_STOCK, or as TIME_AXIS_HEIGHT, ii as UI_ICONS, Or as UPCOM_SESSIONS, kr as VN30F_SESSIONS, q as VN_COLORS, _n as VOLUME_ALPHA, qe as alignToTimeframe, gt as autoPricePrecision, ft as barDateParts, dt as barDateZone, fe as barTimeUnit, Ze as barsAreDaily, Zn as chartStyleValue, oe as clamp, Jr as computePriceLimits, ye as computePriceRange, ue as computeTickStep, h as contrastRatio, Gr as createMarketTheme, Wr as createVNTheme, Ct as detectPrecision, $t as drawingOption, U as en, ge as findBarIndex, ve as fitPriceRange, yt as formatFraction, K as formatNumber, j as formatPrice, vt as formatPriceScaleLabel, Ke as formatTimestamp, yr as formatVND, St as formatVolume, Cr as formatVolumeLoc, bt as fractionTick, $r as getCurrentSession, hr as getLocale, vr as getLocaleStrings, xe as hexToRgba, di as iconSvg, Ot as indicatorSource, Oe as inkOn, ce as inverseLerp, Ye as isDateOnly, Tt as isPriceSource, Ge as isTimeFrame, S as isUtcTimeZone, y as isValidTimeZone, se as lerp, we as lerpColor, Kn as lineDash, Gt as marketStatus, be as mergeBar, p as niceNumber, me as normalizeBar, pe as normalizeBarTime, C as offsetAt, r as ownFillColor, _e as padPriceRange, kt as parseIndicatorSource, T as parseTimeframe, dr as phiStep, Lt as pickBaseTimeframe, xt as priceFormatterFor, Kr as priceStepAt, ht as priceTagText, Bt as rankSymbols, Hn as readChartStyleOverrides, pn as readChartTypeOptions, Gn as readIndicatorPlotStyles, ae as readNews, Un as readPaneStyle, ee as readQuote, De as readableOn, _r as registerLocale, Mt as resampleBars, Jn as resolveChartTheme, en as resolveDrawingOptions, Nn as resolveVolumeColors, X as roundToPriceStep, le as roundToStep, Zt as sanitizeDrawingOptions, fn as sanitizeDrawingStyle, Yr as scaleMarketPrices, Ut as sessionMinute, mr as setLocale, he as sliceVisibleData, Et as sourcePrice, Vt as stepDecimals, Ht as symbolTimeZone, gr as t, We as tickBarCount, Rt as tickerOf, Je as timeParts, lt as timeframeBucketStart, ot as timeframeFollowsDays, st as timeframeSpansDays, E as timeframeToMs, Qe as tzLabel, xr as usesKoreanUnits, fr as vi, ri as vn30fContracts, ni as vn30fLastTradingDay, z as volumeColor, Re as wallToUtc, m as withAlpha, b as zoneOffsetMinutes, Be as zonedDateFormatter };
2899
+ 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 };
2893
2900
 
2894
2901
  //# sourceMappingURL=index.js.map