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