@tradecanvas/commons 1.51.0 → 1.52.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.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +435 -391
- package/dist/index.js.map +1 -1
- package/dist/types/builtInIndicators.d.ts +4 -1
- package/dist/types/builtInIndicators.d.ts.map +1 -1
- package/dist/types/chart.d.ts +36 -5
- package/dist/types/chart.d.ts.map +1 -1
- package/dist/types/drawing.d.ts +5 -2
- package/dist/types/drawing.d.ts.map +1 -1
- package/dist/types/events.d.ts +23 -1
- package/dist/types/events.d.ts.map +1 -1
- package/dist/types/indicator.d.ts +16 -0
- package/dist/types/indicator.d.ts.map +1 -1
- package/dist/types/realtime.d.ts +4 -1
- package/dist/types/realtime.d.ts.map +1 -1
- package/dist/types/rendering.d.ts +7 -0
- package/dist/types/rendering.d.ts.map +1 -1
- package/dist/types/symbol.d.ts +5 -1
- package/dist/types/symbol.d.ts.map +1 -1
- package/dist/utils/precision.d.ts +7 -5
- package/dist/utils/precision.d.ts.map +1 -1
- package/dist/utils/resample.d.ts +11 -2
- package/dist/utils/resample.d.ts.map +1 -1
- package/dist/utils/time.d.ts +41 -5
- package/dist/utils/time.d.ts.map +1 -1
- package/dist/utils/timezone.d.ts +2 -0
- package/dist/utils/timezone.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -245,26 +245,26 @@ function ie(e, t, n) {
|
|
|
245
245
|
function ae(e, t) {
|
|
246
246
|
return Math.round(e / t) * t;
|
|
247
247
|
}
|
|
248
|
-
function
|
|
248
|
+
function oe(e, t) {
|
|
249
249
|
let n = Math.floor(Math.log10(e)), r = e / 10 ** n, i;
|
|
250
250
|
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
251
|
}
|
|
252
|
-
function
|
|
253
|
-
return
|
|
252
|
+
function se(e, t, n) {
|
|
253
|
+
return oe(oe(t - e, !1) / (n - 1), !0);
|
|
254
254
|
}
|
|
255
255
|
//#endregion
|
|
256
256
|
//#region src/utils/data.ts
|
|
257
|
-
var
|
|
258
|
-
function
|
|
257
|
+
var ce = 1e11;
|
|
258
|
+
function le(e) {
|
|
259
259
|
let t = e.length > 0 ? e[e.length - 1].time : NaN;
|
|
260
260
|
return Number.isFinite(t) ? Math.abs(t) >= 1e11 ? 1 : 1e3 : 1;
|
|
261
261
|
}
|
|
262
|
-
function
|
|
262
|
+
function ue(e, t) {
|
|
263
263
|
return t === void 0 ? Math.abs(e) >= 1e11 ? e : e * 1e3 : e * t;
|
|
264
264
|
}
|
|
265
|
-
function
|
|
265
|
+
function de(e) {
|
|
266
266
|
return {
|
|
267
|
-
time:
|
|
267
|
+
time: ue(e.time ?? e.t ?? 0),
|
|
268
268
|
open: e.open ?? e.o ?? 0,
|
|
269
269
|
high: e.high ?? e.h ?? 0,
|
|
270
270
|
low: e.low ?? e.l ?? 0,
|
|
@@ -272,11 +272,11 @@ function ue(e) {
|
|
|
272
272
|
volume: e.volume ?? e.v ?? 0
|
|
273
273
|
};
|
|
274
274
|
}
|
|
275
|
-
function
|
|
275
|
+
function fe(e, t, n) {
|
|
276
276
|
let r = Math.max(0, t), i = Math.min(e.length, n + 1);
|
|
277
277
|
return e.slice(r, i);
|
|
278
278
|
}
|
|
279
|
-
function
|
|
279
|
+
function pe(e, t) {
|
|
280
280
|
let n = 0, r = e.length - 1;
|
|
281
281
|
for (; n <= r;) {
|
|
282
282
|
let i = n + r >>> 1;
|
|
@@ -286,7 +286,7 @@ function fe(e, t) {
|
|
|
286
286
|
}
|
|
287
287
|
return n;
|
|
288
288
|
}
|
|
289
|
-
function
|
|
289
|
+
function me(e, t, n, r = !1) {
|
|
290
290
|
let i = r && e > 0 && t > 0 ? Math.log(t / e) : NaN;
|
|
291
291
|
if (Number.isFinite(i)) {
|
|
292
292
|
let r = i || Math.log(1 + 2 * n), a = Math.exp(r * n);
|
|
@@ -301,7 +301,7 @@ function pe(e, t, n, r = !1) {
|
|
|
301
301
|
max: t + a * n
|
|
302
302
|
};
|
|
303
303
|
}
|
|
304
|
-
function
|
|
304
|
+
function he(e, t, n, r = !1) {
|
|
305
305
|
let i = Math.max(1 - n.top - n.bottom, 2 ** -52), a = r && e > 0 && t > 0 ? Math.log(t / e) : NaN;
|
|
306
306
|
if (Number.isFinite(a)) {
|
|
307
307
|
let r = (a || Math.log(1.01)) / i;
|
|
@@ -316,7 +316,7 @@ function me(e, t, n, r = !1) {
|
|
|
316
316
|
max: t + o * n.top
|
|
317
317
|
};
|
|
318
318
|
}
|
|
319
|
-
function
|
|
319
|
+
function ge(e, t, n, r = .05, i = !1) {
|
|
320
320
|
if (e.length === 0) return {
|
|
321
321
|
min: 0,
|
|
322
322
|
max: 1
|
|
@@ -326,9 +326,9 @@ function he(e, t, n, r = .05, i = !1) {
|
|
|
326
326
|
return s === Infinity ? {
|
|
327
327
|
min: 0,
|
|
328
328
|
max: 1
|
|
329
|
-
} :
|
|
329
|
+
} : me(s, c, r, i);
|
|
330
330
|
}
|
|
331
|
-
function
|
|
331
|
+
function _e(e, t) {
|
|
332
332
|
return {
|
|
333
333
|
...e,
|
|
334
334
|
high: Math.max(e.high, t.price),
|
|
@@ -339,18 +339,18 @@ function ge(e, t) {
|
|
|
339
339
|
}
|
|
340
340
|
//#endregion
|
|
341
341
|
//#region src/utils/color.ts
|
|
342
|
-
function
|
|
342
|
+
function ve(e, t = 1) {
|
|
343
343
|
let n = e.slice(1);
|
|
344
344
|
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
345
|
}
|
|
346
|
-
function
|
|
346
|
+
function m(e, t) {
|
|
347
347
|
let n = e.trim();
|
|
348
|
-
if (/^#([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i.test(n)) return
|
|
348
|
+
if (/^#([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i.test(n)) return ve(n, t);
|
|
349
349
|
let r = n.match(/^rgba?\(\s*(\d+(?:\.\d+)?)[\s,]+(\d+(?:\.\d+)?)[\s,]+(\d+(?:\.\d+)?)/i);
|
|
350
350
|
return r ? `rgba(${r[1]}, ${r[2]}, ${r[3]}, ${t})` : e;
|
|
351
351
|
}
|
|
352
|
-
var
|
|
353
|
-
function
|
|
352
|
+
var ye = 3;
|
|
353
|
+
function be(e) {
|
|
354
354
|
let t = e.trim(), n = /^#([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i.exec(t);
|
|
355
355
|
if (n) {
|
|
356
356
|
let e = n[1];
|
|
@@ -373,15 +373,15 @@ function ye(e) {
|
|
|
373
373
|
a: Math.min(1, Math.max(0, i))
|
|
374
374
|
};
|
|
375
375
|
}
|
|
376
|
-
function
|
|
377
|
-
let r =
|
|
376
|
+
function xe(e, t, n) {
|
|
377
|
+
let r = be(e), i = be(t);
|
|
378
378
|
if (!r || !i) return n < .5 ? e : t;
|
|
379
379
|
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(
|
|
380
|
+
return a >= 1 ? `rgb(${s})` : `rgba(${s},${Number(a.toFixed(ye))})`;
|
|
381
381
|
}
|
|
382
382
|
//#endregion
|
|
383
383
|
//#region src/utils/timezone.ts
|
|
384
|
-
var
|
|
384
|
+
var h = 6e4, Se = 1440 * h, g = 15 * h, Ce = 8192, _ = 7 * Se, we = 4096, Te = new Set([
|
|
385
385
|
"UTC",
|
|
386
386
|
"Etc/UTC",
|
|
387
387
|
"GMT",
|
|
@@ -392,9 +392,9 @@ var g = 6e4, _ = 1440 * g, v = 15 * g, xe = 8192, y = 7 * _, Se = 4096, Ce = new
|
|
|
392
392
|
"Etc/Universal",
|
|
393
393
|
"Zulu",
|
|
394
394
|
"Etc/Zulu"
|
|
395
|
-
]),
|
|
396
|
-
function
|
|
397
|
-
let t =
|
|
395
|
+
]), Ee = /* @__PURE__ */ new Map(), v = /* @__PURE__ */ new Map(), De = /* @__PURE__ */ new Map();
|
|
396
|
+
function Oe(e) {
|
|
397
|
+
let t = Ee.get(e);
|
|
398
398
|
return t || (t = new Intl.DateTimeFormat("en-US", {
|
|
399
399
|
timeZone: e,
|
|
400
400
|
hourCycle: "h23",
|
|
@@ -404,34 +404,34 @@ function Ee(e) {
|
|
|
404
404
|
hour: "numeric",
|
|
405
405
|
minute: "numeric",
|
|
406
406
|
second: "numeric"
|
|
407
|
-
}),
|
|
407
|
+
}), Ee.set(e, t)), t;
|
|
408
408
|
}
|
|
409
|
-
function
|
|
409
|
+
function y(e) {
|
|
410
410
|
if (!e) return !1;
|
|
411
411
|
try {
|
|
412
|
-
return
|
|
412
|
+
return Oe(e), !0;
|
|
413
413
|
} catch {
|
|
414
414
|
return !1;
|
|
415
415
|
}
|
|
416
416
|
}
|
|
417
|
-
function
|
|
418
|
-
if (!Number.isFinite(t) ||
|
|
419
|
-
let n =
|
|
420
|
-
n || (n = /* @__PURE__ */ new Map(),
|
|
421
|
-
let r = Math.floor(t /
|
|
422
|
-
return i || (i =
|
|
417
|
+
function b(e, t) {
|
|
418
|
+
if (!Number.isFinite(t) || Te.has(e)) return 0;
|
|
419
|
+
let n = De.get(e);
|
|
420
|
+
n || (n = /* @__PURE__ */ new Map(), De.set(e, n));
|
|
421
|
+
let r = Math.floor(t / _), i = n.get(r);
|
|
422
|
+
return i || (i = ke(e, r * _), n.size >= we && n.clear(), n.set(r, i)), t < i.change ? i.before : i.after;
|
|
423
423
|
}
|
|
424
|
-
function
|
|
425
|
-
let n =
|
|
424
|
+
function ke(e, t) {
|
|
425
|
+
let n = x(e, t), r = t + _ - g, i = x(e, r);
|
|
426
426
|
if (i === n) return {
|
|
427
427
|
before: n,
|
|
428
428
|
change: Infinity,
|
|
429
429
|
after: i
|
|
430
430
|
};
|
|
431
431
|
let a = t;
|
|
432
|
-
for (; r - a >
|
|
433
|
-
let t = a + Math.floor((r - a) /
|
|
434
|
-
|
|
432
|
+
for (; r - a > g;) {
|
|
433
|
+
let t = a + Math.floor((r - a) / g / 2) * g;
|
|
434
|
+
x(e, t) === n ? a = t : r = t;
|
|
435
435
|
}
|
|
436
436
|
return {
|
|
437
437
|
before: n,
|
|
@@ -439,11 +439,11 @@ function De(e, t) {
|
|
|
439
439
|
after: i
|
|
440
440
|
};
|
|
441
441
|
}
|
|
442
|
-
function
|
|
443
|
-
let n = Math.floor(t /
|
|
442
|
+
function x(e, t) {
|
|
443
|
+
let n = Math.floor(t / g), r = `${e}|${n}`, i = v.get(r);
|
|
444
444
|
if (i !== void 0) return i;
|
|
445
|
-
let a = n *
|
|
446
|
-
for (let t of
|
|
445
|
+
let a = n * g, o = 1970, s = 1, c = 1, l = 0, u = 0, d = 0;
|
|
446
|
+
for (let t of Oe(e).formatToParts(new Date(a))) {
|
|
447
447
|
let e = Number(t.value);
|
|
448
448
|
switch (t.type) {
|
|
449
449
|
case "year":
|
|
@@ -466,21 +466,24 @@ function C(e, t) {
|
|
|
466
466
|
break;
|
|
467
467
|
}
|
|
468
468
|
}
|
|
469
|
-
let f = Math.round((Date.UTC(o, s - 1, c, l, u, d) - a) /
|
|
470
|
-
return
|
|
469
|
+
let f = Math.round((Date.UTC(o, s - 1, c, l, u, d) - a) / h);
|
|
470
|
+
return v.size >= Ce && v.clear(), v.set(r, f), f;
|
|
471
|
+
}
|
|
472
|
+
function S(e) {
|
|
473
|
+
return e === 0 || typeof e == "string" && Te.has(e);
|
|
471
474
|
}
|
|
472
|
-
function
|
|
473
|
-
return e === null ? -new Date(t).getTimezoneOffset() : typeof e == "number" ? e :
|
|
475
|
+
function C(e, t) {
|
|
476
|
+
return e === null ? -new Date(t).getTimezoneOffset() : typeof e == "number" ? e : b(e, t);
|
|
474
477
|
}
|
|
475
|
-
function
|
|
476
|
-
let n = e -
|
|
477
|
-
if (n +
|
|
478
|
-
let r = e -
|
|
479
|
-
return r +
|
|
478
|
+
function Ae(e, t) {
|
|
479
|
+
let n = e - C(t, e - Se) * h;
|
|
480
|
+
if (n + C(t, n) * h === e) return n;
|
|
481
|
+
let r = e - C(t, e + Se) * h;
|
|
482
|
+
return r + C(t, r) * h === e ? r : n;
|
|
480
483
|
}
|
|
481
|
-
var
|
|
482
|
-
function
|
|
483
|
-
let r = `${e}|${JSON.stringify(t)}|${n === null ? "local" : typeof n == "number" ? `fixed:${n}` : n}`, i =
|
|
484
|
+
var je = /* @__PURE__ */ new Map();
|
|
485
|
+
function Me(e, t, n) {
|
|
486
|
+
let r = `${e}|${JSON.stringify(t)}|${n === null ? "local" : typeof n == "number" ? `fixed:${n}` : n}`, i = je.get(r);
|
|
484
487
|
if (i) return i;
|
|
485
488
|
let a = n === null ? void 0 : typeof n == "number" ? "UTC" : n, o;
|
|
486
489
|
try {
|
|
@@ -494,12 +497,12 @@ function Ae(e, t, n) {
|
|
|
494
497
|
timeZone: a
|
|
495
498
|
});
|
|
496
499
|
}
|
|
497
|
-
let s = typeof n == "number" ? n *
|
|
498
|
-
return i = (e) => o.format(new Date(e + s)),
|
|
500
|
+
let s = typeof n == "number" ? n * h : 0;
|
|
501
|
+
return i = (e) => o.format(new Date(e + s)), je.set(r, i), i;
|
|
499
502
|
}
|
|
500
503
|
//#endregion
|
|
501
504
|
//#region src/utils/time.ts
|
|
502
|
-
var
|
|
505
|
+
var Ne = {
|
|
503
506
|
"1s": 1e3,
|
|
504
507
|
"5s": 5e3,
|
|
505
508
|
"15s": 15e3,
|
|
@@ -526,16 +529,16 @@ var je = {
|
|
|
526
529
|
"3M": 7776e6,
|
|
527
530
|
"6M": 15552e6,
|
|
528
531
|
"12M": 31536e6
|
|
529
|
-
},
|
|
532
|
+
}, w = {
|
|
530
533
|
s: 1e3,
|
|
531
534
|
m: 6e4,
|
|
532
535
|
h: 36e5,
|
|
533
536
|
d: 864e5,
|
|
534
537
|
w: 6048e5,
|
|
535
538
|
M: 2592e6
|
|
536
|
-
},
|
|
539
|
+
}, Pe = /^([1-9]\d*)([smhdwM])$/;
|
|
537
540
|
function T(e) {
|
|
538
|
-
let t =
|
|
541
|
+
let t = Pe.exec(e);
|
|
539
542
|
if (!t) return null;
|
|
540
543
|
let n = Number(t[1]);
|
|
541
544
|
return Number.isSafeInteger(n) ? {
|
|
@@ -543,23 +546,23 @@ function T(e) {
|
|
|
543
546
|
unit: t[2]
|
|
544
547
|
} : null;
|
|
545
548
|
}
|
|
546
|
-
var
|
|
547
|
-
function
|
|
549
|
+
var Fe = 1e6;
|
|
550
|
+
function Ie(e) {
|
|
548
551
|
let t = /^([1-9]\d*)T$/.exec(e);
|
|
549
552
|
if (!t) return null;
|
|
550
553
|
let n = Number(t[1]);
|
|
551
|
-
return Number.isSafeInteger(n) && n <=
|
|
554
|
+
return Number.isSafeInteger(n) && n <= Fe ? n : null;
|
|
552
555
|
}
|
|
553
|
-
function
|
|
556
|
+
function Le(e) {
|
|
554
557
|
return T(e) !== null;
|
|
555
558
|
}
|
|
556
559
|
function E(e) {
|
|
557
|
-
let t =
|
|
560
|
+
let t = Ne[e];
|
|
558
561
|
if (t !== void 0) return t;
|
|
559
562
|
let n = T(e);
|
|
560
|
-
return n ? n.count *
|
|
563
|
+
return n ? n.count * w[n.unit] : NaN;
|
|
561
564
|
}
|
|
562
|
-
function
|
|
565
|
+
function Re(e, t) {
|
|
563
566
|
let n = new Date(e), r = E(t);
|
|
564
567
|
return r >= 864e5 ? n.toLocaleDateString(void 0, {
|
|
565
568
|
month: "short",
|
|
@@ -573,11 +576,11 @@ function Le(e, t) {
|
|
|
573
576
|
second: "2-digit"
|
|
574
577
|
});
|
|
575
578
|
}
|
|
576
|
-
function
|
|
579
|
+
function ze(e, t) {
|
|
577
580
|
let n = E(t);
|
|
578
581
|
return Math.floor(e / n) * n;
|
|
579
582
|
}
|
|
580
|
-
function
|
|
583
|
+
function Be(e, t) {
|
|
581
584
|
if (t === null) {
|
|
582
585
|
let t = new Date(e);
|
|
583
586
|
return {
|
|
@@ -588,7 +591,7 @@ function ze(e, t) {
|
|
|
588
591
|
minutes: t.getMinutes()
|
|
589
592
|
};
|
|
590
593
|
}
|
|
591
|
-
let n = new Date(e +
|
|
594
|
+
let n = new Date(e + C(t, e) * 6e4);
|
|
592
595
|
return {
|
|
593
596
|
year: n.getUTCFullYear(),
|
|
594
597
|
month: n.getUTCMonth() + 1,
|
|
@@ -597,93 +600,122 @@ function ze(e, t) {
|
|
|
597
600
|
minutes: n.getUTCMinutes()
|
|
598
601
|
};
|
|
599
602
|
}
|
|
600
|
-
function
|
|
603
|
+
function Ve(e) {
|
|
601
604
|
return e.hours === 0 && e.minutes === 0;
|
|
602
605
|
}
|
|
603
|
-
var
|
|
604
|
-
function
|
|
606
|
+
var He = 20 * 36e5;
|
|
607
|
+
function Ue(e) {
|
|
605
608
|
let t = Math.min(e.length, 64);
|
|
606
609
|
if (t < 2) return;
|
|
607
|
-
let n =
|
|
610
|
+
let n = le(e), r = Infinity;
|
|
608
611
|
for (let i = 1; i < t; i++) {
|
|
609
612
|
let t = Math.abs(e[i].time - e[i - 1].time) * n;
|
|
610
613
|
t > 0 && t < r && (r = t);
|
|
611
614
|
}
|
|
612
|
-
return r === Infinity ? void 0 : r >=
|
|
615
|
+
return r === Infinity ? void 0 : r >= He;
|
|
613
616
|
}
|
|
614
|
-
function
|
|
615
|
-
let n =
|
|
617
|
+
function We(e, t = Date.now()) {
|
|
618
|
+
let n = C(e, t), r = n >= 0 ? "+" : "-", i = Math.abs(n), a = Math.floor(i / 60), o = i % 60;
|
|
616
619
|
return o === 0 ? `UTC${r}${a}` : `UTC${r}${a}:${String(o).padStart(2, "0")}`;
|
|
617
620
|
}
|
|
618
|
-
var
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
621
|
+
var Ge = Date.UTC(1970, 0, 5), Ke = w.m, D = w.d, qe = 24, Je = {
|
|
622
|
+
count: 1,
|
|
623
|
+
unit: "m"
|
|
624
|
+
}, Ye = 256, O = /* @__PURE__ */ new Map();
|
|
625
|
+
function Xe(e) {
|
|
626
|
+
let t = O.get(e);
|
|
627
|
+
return t || (t = T(e) ?? Je, O.size >= Ye && O.clear(), O.set(e, t)), t;
|
|
628
|
+
}
|
|
629
|
+
function Ze({ unit: e }) {
|
|
630
|
+
return e === "d" || e === "w" || e === "M";
|
|
631
|
+
}
|
|
632
|
+
function Qe(e) {
|
|
633
|
+
return e.unit === "h" ? e.count > 1 && qe % e.count === 0 : Ze(e);
|
|
634
|
+
}
|
|
635
|
+
function $e(e) {
|
|
636
|
+
return Qe(Xe(e));
|
|
637
|
+
}
|
|
638
|
+
function et(e) {
|
|
639
|
+
return Ze(Xe(e));
|
|
640
|
+
}
|
|
641
|
+
function tt(e) {
|
|
642
|
+
return e !== void 0 && !S(e);
|
|
643
|
+
}
|
|
644
|
+
function nt(e, t, n = 1) {
|
|
645
|
+
let r = Xe(t), i = typeof n == "number" ? n : n.weekStartsOn ?? 1, a = typeof n == "number" ? void 0 : n.timeZone;
|
|
646
|
+
return !tt(a) || !Qe(r) || typeof n == "object" && n.dates && e % D === 0 ? rt(e, r, i) : Ae(rt(e + C(a, e) * Ke, r, i), a);
|
|
647
|
+
}
|
|
648
|
+
function rt(e, { count: t, unit: n }, r) {
|
|
649
|
+
if (n === "s" || n === "m" || n === "h" || n === "d") {
|
|
650
|
+
let r = t * w[n];
|
|
651
|
+
return Math.floor(e / r) * r;
|
|
627
652
|
}
|
|
628
|
-
let
|
|
629
|
-
if (
|
|
630
|
-
let e =
|
|
631
|
-
if (
|
|
632
|
-
let
|
|
633
|
-
return
|
|
653
|
+
let i = new Date(e);
|
|
654
|
+
if (n === "w") {
|
|
655
|
+
let e = (i.getUTCDay() - r + 7) % 7, n = Date.UTC(i.getUTCFullYear(), i.getUTCMonth(), i.getUTCDate() - e);
|
|
656
|
+
if (t <= 1) return n;
|
|
657
|
+
let a = Math.floor((n - Ge) / (7 * D));
|
|
658
|
+
return Ge + Math.floor(a / t) * t * 7 * D;
|
|
634
659
|
}
|
|
635
|
-
let
|
|
636
|
-
return Date.UTC(Math.floor(
|
|
660
|
+
let a = i.getUTCFullYear() * 12 + i.getUTCMonth(), o = Math.floor(a / t) * t;
|
|
661
|
+
return Date.UTC(Math.floor(o / 12), o % 12, 1);
|
|
662
|
+
}
|
|
663
|
+
function it(e, t, n) {
|
|
664
|
+
return e % D === 0 ? 0 : n && nt(e, "1d", { timeZone: n }) === e ? n : t;
|
|
665
|
+
}
|
|
666
|
+
function at(e, t, n) {
|
|
667
|
+
return Be(e, it(e, t, n));
|
|
637
668
|
}
|
|
638
669
|
//#endregion
|
|
639
670
|
//#region src/utils/precision.ts
|
|
640
|
-
var
|
|
641
|
-
function
|
|
642
|
-
let n = `${e}|${t}`, r =
|
|
643
|
-
return r || (
|
|
671
|
+
var ot = 64, k = /* @__PURE__ */ new Map();
|
|
672
|
+
function st(e, t) {
|
|
673
|
+
let n = `${e}|${t}`, r = k.get(n);
|
|
674
|
+
return r || (k.size >= ot && k.clear(), r = new Intl.NumberFormat(e, {
|
|
644
675
|
minimumFractionDigits: t,
|
|
645
676
|
maximumFractionDigits: t
|
|
646
|
-
}),
|
|
677
|
+
}), k.set(n, r)), r;
|
|
647
678
|
}
|
|
648
|
-
function
|
|
649
|
-
return t.formatPrice ? t.formatPrice(e) :
|
|
679
|
+
function ct(e, t, n) {
|
|
680
|
+
return t.formatPrice ? t.formatPrice(e) : A(e, n ?? t.pricePrecision ?? lt(t.priceRange.min, t.priceRange.max), t.numberLocale ?? "en-US");
|
|
650
681
|
}
|
|
651
|
-
function
|
|
652
|
-
return
|
|
682
|
+
function A(e, t = 2, n = "en-US") {
|
|
683
|
+
return st(n, t).format(e);
|
|
653
684
|
}
|
|
654
|
-
function
|
|
685
|
+
function lt(e, t) {
|
|
655
686
|
if (!(t > e) || !Number.isFinite(e) || !Number.isFinite(t)) return 2;
|
|
656
|
-
let n =
|
|
687
|
+
let n = se(e, t, 8);
|
|
657
688
|
return n > 0 && n < 1 ? Math.ceil(-Math.log10(n)) + 1 : 2;
|
|
658
689
|
}
|
|
659
|
-
|
|
690
|
+
var ut = 2;
|
|
691
|
+
function dt(e, t, n, r = 2, i = "en-US") {
|
|
660
692
|
if ((t === "percentage" || t === "indexedTo100") && n && n !== 0) {
|
|
661
693
|
if (t === "percentage") {
|
|
662
|
-
let t = (e / n - 1) * 100;
|
|
663
|
-
return `${t > 0 ? "+" : ""}${
|
|
694
|
+
let t = (e / n - 1) * 100, r = A(Math.abs(t), ut, i);
|
|
695
|
+
return `${r === A(0, ut, i) ? "" : t > 0 ? "+" : "-"}${r}%`;
|
|
664
696
|
}
|
|
665
|
-
return
|
|
697
|
+
return A(e / n * 100, 2, i);
|
|
666
698
|
}
|
|
667
|
-
return
|
|
699
|
+
return A(e, r, i);
|
|
668
700
|
}
|
|
669
|
-
function
|
|
701
|
+
function ft(e, t, n = 1) {
|
|
670
702
|
let r = Number.isInteger(n) && n > 1 ? n : 1;
|
|
671
703
|
if (!Number.isFinite(e) || !Number.isInteger(t) || t < 2) return String(e);
|
|
672
704
|
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)) : "";
|
|
673
705
|
return `${e < 0 && a > 0 ? "-" : ""}${o}'${String(c).padStart(l, "0")}${u}`;
|
|
674
706
|
}
|
|
675
|
-
function
|
|
707
|
+
function pt(e) {
|
|
676
708
|
if (!Number.isInteger(e.denominator) || e.denominator < 2) return null;
|
|
677
709
|
let t = Number.isInteger(e.subDenominator) && (e.subDenominator ?? 0) > 1 ? e.subDenominator : 1;
|
|
678
710
|
return 1 / (e.denominator * t);
|
|
679
711
|
}
|
|
680
|
-
function
|
|
681
|
-
return e ? typeof e == "function" ? e :
|
|
712
|
+
function mt(e) {
|
|
713
|
+
return e ? typeof e == "function" ? e : pt(e) === null ? null : (t) => ft(t, e.denominator, e.subDenominator) : null;
|
|
682
714
|
}
|
|
683
|
-
function
|
|
715
|
+
function ht(e) {
|
|
684
716
|
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);
|
|
685
717
|
}
|
|
686
|
-
function
|
|
718
|
+
function gt(e) {
|
|
687
719
|
let t = 0;
|
|
688
720
|
for (let n of e) {
|
|
689
721
|
let e = n.toString(), r = e.indexOf(".");
|
|
@@ -693,7 +725,7 @@ function tt(e) {
|
|
|
693
725
|
}
|
|
694
726
|
//#endregion
|
|
695
727
|
//#region src/utils/priceSource.ts
|
|
696
|
-
var
|
|
728
|
+
var _t = [
|
|
697
729
|
"close",
|
|
698
730
|
"open",
|
|
699
731
|
"high",
|
|
@@ -703,10 +735,10 @@ var nt = [
|
|
|
703
735
|
"ohlc4",
|
|
704
736
|
"hlcc4"
|
|
705
737
|
];
|
|
706
|
-
function
|
|
707
|
-
return typeof e == "string" &&
|
|
738
|
+
function vt(e) {
|
|
739
|
+
return typeof e == "string" && _t.includes(e);
|
|
708
740
|
}
|
|
709
|
-
function
|
|
741
|
+
function yt(e, t) {
|
|
710
742
|
switch (t) {
|
|
711
743
|
case "open": return e.open;
|
|
712
744
|
case "high": return e.high;
|
|
@@ -718,13 +750,13 @@ function it(e, t) {
|
|
|
718
750
|
default: return e.close;
|
|
719
751
|
}
|
|
720
752
|
}
|
|
721
|
-
var
|
|
722
|
-
function
|
|
753
|
+
var bt = /^ind:([^:]+):(.+)$/;
|
|
754
|
+
function xt(e, t) {
|
|
723
755
|
return `ind:${e}:${t}`;
|
|
724
756
|
}
|
|
725
|
-
function
|
|
757
|
+
function St(e) {
|
|
726
758
|
if (typeof e != "string") return null;
|
|
727
|
-
let t =
|
|
759
|
+
let t = bt.exec(e);
|
|
728
760
|
return t ? {
|
|
729
761
|
instanceId: t[1],
|
|
730
762
|
key: t[2]
|
|
@@ -732,53 +764,65 @@ function st(e) {
|
|
|
732
764
|
}
|
|
733
765
|
//#endregion
|
|
734
766
|
//#region src/utils/resample.ts
|
|
735
|
-
var
|
|
736
|
-
function
|
|
737
|
-
let r = [],
|
|
738
|
-
for (let
|
|
739
|
-
let e =
|
|
740
|
-
|
|
767
|
+
var Ct = 864e5, wt = 6e4;
|
|
768
|
+
function Tt(e, t, n = 1) {
|
|
769
|
+
let r = Et(e, t, n), i = [], a = null;
|
|
770
|
+
for (let n of e) {
|
|
771
|
+
let e = nt(n.time, t, r);
|
|
772
|
+
a === null || e !== a.time ? (a = {
|
|
741
773
|
time: e,
|
|
742
|
-
open:
|
|
743
|
-
high:
|
|
744
|
-
low:
|
|
745
|
-
close:
|
|
746
|
-
volume:
|
|
747
|
-
},
|
|
774
|
+
open: n.open,
|
|
775
|
+
high: n.high,
|
|
776
|
+
low: n.low,
|
|
777
|
+
close: n.close,
|
|
778
|
+
volume: n.volume
|
|
779
|
+
}, i.push(a)) : (n.high > a.high && (a.high = n.high), n.low < a.low && (a.low = n.low), a.close = n.close, a.volume += n.volume);
|
|
748
780
|
}
|
|
749
|
-
return
|
|
781
|
+
return i;
|
|
782
|
+
}
|
|
783
|
+
function Et(e, t, n) {
|
|
784
|
+
return typeof n == "number" || n.timeZone === void 0 || n.dates !== void 0 || S(n.timeZone) || !$e(t) ? n : {
|
|
785
|
+
...n,
|
|
786
|
+
dates: Ue(e) === !0
|
|
787
|
+
};
|
|
750
788
|
}
|
|
751
|
-
var
|
|
752
|
-
function
|
|
789
|
+
var j = (e) => e === "s" || e === "m" || e === "h" || e === "d";
|
|
790
|
+
function Dt(e, t) {
|
|
753
791
|
let n = T(e), r = T(t);
|
|
754
792
|
if (!n || !r) return !1;
|
|
755
793
|
let i = E(e);
|
|
756
|
-
return n.unit === "d" && n.count > 1 ? !1 :
|
|
757
|
-
}
|
|
758
|
-
function
|
|
759
|
-
let n =
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
794
|
+
return n.unit === "d" && n.count > 1 ? !1 : j(r.unit) ? j(n.unit) && E(t) % i === 0 : n.unit === r.unit ? r.count % n.count === 0 : j(n.unit) && Ct % i === 0;
|
|
795
|
+
}
|
|
796
|
+
function Ot(e, t) {
|
|
797
|
+
let n = E(e);
|
|
798
|
+
if (!(n < Ct)) return !0;
|
|
799
|
+
let r = (/* @__PURE__ */ new Date()).getUTCFullYear();
|
|
800
|
+
return [Date.UTC(r, 0, 1), Date.UTC(r, 6, 1)].every((e) => C(t, e) * wt % n === 0);
|
|
801
|
+
}
|
|
802
|
+
function kt(e, t, n = {}) {
|
|
803
|
+
let { timeZone: r } = n, i = r !== void 0 && !S(r) && $e(e) ? r : void 0, a = null, o = 0;
|
|
804
|
+
for (let n of t) {
|
|
805
|
+
if (!Dt(n, e) || i !== void 0 && !Ot(n, i)) continue;
|
|
806
|
+
let t = E(n);
|
|
807
|
+
t > o && (a = n, o = t);
|
|
764
808
|
}
|
|
765
|
-
return
|
|
809
|
+
return a;
|
|
766
810
|
}
|
|
767
811
|
//#endregion
|
|
768
812
|
//#region src/utils/symbols.ts
|
|
769
|
-
function
|
|
813
|
+
function At(e, t) {
|
|
770
814
|
if (!e) return 0;
|
|
771
815
|
if (e === t) return 1e3;
|
|
772
816
|
if (e.startsWith(t)) return 600 - Math.min(100, e.length - t.length);
|
|
773
817
|
let n = e.indexOf(t);
|
|
774
818
|
return n >= 0 ? 300 - Math.min(100, n) : 0;
|
|
775
819
|
}
|
|
776
|
-
function
|
|
820
|
+
function jt(e, t, n = 50, r) {
|
|
777
821
|
let i = t.trim().toUpperCase();
|
|
778
822
|
if (!i) return e.slice(0, n);
|
|
779
823
|
let a = [];
|
|
780
824
|
for (let t of e) {
|
|
781
|
-
let e = Math.max(
|
|
825
|
+
let e = Math.max(At(t.symbol.toUpperCase(), i), At((t.description ?? "").toUpperCase(), i) * .8);
|
|
782
826
|
e > 0 && a.push({
|
|
783
827
|
info: t,
|
|
784
828
|
score: e + (r?.(t) ?? 0)
|
|
@@ -786,7 +830,7 @@ function pt(e, t, n = 50, r) {
|
|
|
786
830
|
}
|
|
787
831
|
return a.sort((e, t) => t.score - e.score || e.info.symbol.localeCompare(t.info.symbol)), a.slice(0, n).map((e) => e.info);
|
|
788
832
|
}
|
|
789
|
-
function
|
|
833
|
+
function Mt(e) {
|
|
790
834
|
let t = typeof e == "number" ? e : Number(e);
|
|
791
835
|
if (!Number.isFinite(t) || t <= 0) return 0;
|
|
792
836
|
for (let e = 0; e <= 12; e++) {
|
|
@@ -795,10 +839,10 @@ function mt(e) {
|
|
|
795
839
|
}
|
|
796
840
|
return 12;
|
|
797
841
|
}
|
|
798
|
-
function
|
|
842
|
+
function Nt(e) {
|
|
799
843
|
return e?.timeZone ?? e?.timezone;
|
|
800
844
|
}
|
|
801
|
-
function
|
|
845
|
+
function M(e) {
|
|
802
846
|
let t = /^(\d{1,2}):(\d{2})$/.exec(e.trim());
|
|
803
847
|
if (!t) return null;
|
|
804
848
|
let n = Number(t[1]), r = Number(t[2]);
|
|
@@ -806,26 +850,26 @@ function A(e) {
|
|
|
806
850
|
}
|
|
807
851
|
//#endregion
|
|
808
852
|
//#region src/utils/marketStatus.ts
|
|
809
|
-
var
|
|
810
|
-
function
|
|
811
|
-
let n =
|
|
812
|
-
let t =
|
|
853
|
+
var N = 864e5, P = 6e4, Pt = 8;
|
|
854
|
+
function Ft(e, t) {
|
|
855
|
+
let n = Nt(e), r = (e?.sessions ?? []).flatMap((e) => {
|
|
856
|
+
let t = M(e.start), n = M(e.end);
|
|
813
857
|
return t === null || n === null || t === n ? [] : [{
|
|
814
858
|
start: t,
|
|
815
859
|
end: n,
|
|
816
860
|
days: Array.isArray(e.days) ? e.days : null
|
|
817
861
|
}];
|
|
818
862
|
});
|
|
819
|
-
if (!n || !
|
|
863
|
+
if (!n || !y(n) || r.length === 0 || !Number.isFinite(t)) return {
|
|
820
864
|
state: "always",
|
|
821
865
|
next: null
|
|
822
866
|
};
|
|
823
|
-
let i =
|
|
824
|
-
for (let e = -1; e <=
|
|
825
|
-
let t = a + e *
|
|
867
|
+
let i = b(n, t) * P, a = Math.floor((t + i) / N) * N, o = (e) => e - b(n, e - b(n, e - i) * P) * P, s = [];
|
|
868
|
+
for (let e = -1; e <= Pt; e++) {
|
|
869
|
+
let t = a + e * N, n = (Math.floor(t / N) + 4) % 7;
|
|
826
870
|
for (let e of r) {
|
|
827
871
|
if (e.days && !e.days.includes(n)) continue;
|
|
828
|
-
let r = t + e.start *
|
|
872
|
+
let r = t + e.start * P, i = (e.end > e.start ? t : t + N) + e.end * P;
|
|
829
873
|
s.push([o(r), o(i)]);
|
|
830
874
|
}
|
|
831
875
|
}
|
|
@@ -848,15 +892,15 @@ function _t(e, t) {
|
|
|
848
892
|
}
|
|
849
893
|
//#endregion
|
|
850
894
|
//#region src/utils/drawingOptions.ts
|
|
851
|
-
var
|
|
852
|
-
function
|
|
895
|
+
var It = 48, Lt = 2e3, Rt = 1e4;
|
|
896
|
+
function zt(e) {
|
|
853
897
|
if (!Array.isArray(e)) return;
|
|
854
898
|
let t = [];
|
|
855
899
|
for (let n of e) {
|
|
856
|
-
if (t.length >=
|
|
900
|
+
if (t.length >= It) break;
|
|
857
901
|
if (typeof n != "object" || !n) continue;
|
|
858
902
|
let { value: e, visible: r, color: i } = n;
|
|
859
|
-
if (typeof e != "number" || !Number.isFinite(e) || Math.abs(e) >
|
|
903
|
+
if (typeof e != "number" || !Number.isFinite(e) || Math.abs(e) > Rt || r !== void 0 && typeof r != "boolean") continue;
|
|
860
904
|
let a = {
|
|
861
905
|
value: e,
|
|
862
906
|
visible: r ?? !0
|
|
@@ -865,109 +909,109 @@ function xt(e) {
|
|
|
865
909
|
}
|
|
866
910
|
return t;
|
|
867
911
|
}
|
|
868
|
-
function
|
|
912
|
+
function Bt(e, t) {
|
|
869
913
|
switch (e.kind) {
|
|
870
914
|
case "boolean": return typeof t == "boolean" ? t : void 0;
|
|
871
915
|
case "number": return typeof t != "number" || !Number.isFinite(t) ? void 0 : Math.min(e.max ?? Infinity, Math.max(e.min ?? -Infinity, t));
|
|
872
916
|
case "choice": return typeof t == "string" && e.choices.some((e) => e.value === t) ? t : void 0;
|
|
873
|
-
case "levels": return
|
|
874
|
-
case "text": return typeof t == "string" ? t.slice(0,
|
|
917
|
+
case "levels": return zt(t);
|
|
918
|
+
case "text": return typeof t == "string" ? t.slice(0, Lt) : void 0;
|
|
875
919
|
}
|
|
876
920
|
}
|
|
877
|
-
function
|
|
921
|
+
function Vt(e, t) {
|
|
878
922
|
if (!e || typeof t != "object" || !t) return {};
|
|
879
923
|
let n = {};
|
|
880
924
|
for (let [r, i] of Object.entries(t)) {
|
|
881
925
|
let t = e[r];
|
|
882
926
|
if (!t) continue;
|
|
883
|
-
let a =
|
|
927
|
+
let a = Bt(t, i);
|
|
884
928
|
a !== void 0 && (n[r] = a);
|
|
885
929
|
}
|
|
886
930
|
return n;
|
|
887
931
|
}
|
|
888
|
-
function
|
|
932
|
+
function Ht(e) {
|
|
889
933
|
return Array.isArray(e) ? e.map((e) => ({ ...e })) : e;
|
|
890
934
|
}
|
|
891
|
-
function
|
|
935
|
+
function Ut(e, t, n) {
|
|
892
936
|
let r = e?.[n];
|
|
893
|
-
return r ?
|
|
937
|
+
return r ? Ht((t && n in t ? Bt(r, t[n]) : void 0) ?? r.default) : t?.[n];
|
|
894
938
|
}
|
|
895
|
-
function
|
|
939
|
+
function Wt(e, t) {
|
|
896
940
|
let n = {};
|
|
897
|
-
for (let r of Object.keys(e ?? {})) n[r] =
|
|
941
|
+
for (let r of Object.keys(e ?? {})) n[r] = Ut(e, t, r);
|
|
898
942
|
return n;
|
|
899
943
|
}
|
|
900
944
|
//#endregion
|
|
901
945
|
//#region src/utils/drawingStyle.ts
|
|
902
|
-
var
|
|
946
|
+
var Gt = [
|
|
903
947
|
"solid",
|
|
904
948
|
"dashed",
|
|
905
949
|
"dotted"
|
|
906
|
-
],
|
|
907
|
-
function
|
|
950
|
+
], Kt = 64, qt = 2e3, Jt = 20, Yt = 200;
|
|
951
|
+
function F(e, t, n) {
|
|
908
952
|
return typeof e == "number" && Number.isFinite(e) ? Math.min(n, Math.max(t, e)) : void 0;
|
|
909
953
|
}
|
|
910
|
-
function
|
|
911
|
-
return typeof e == "string" && e.length > 0 && e.length <=
|
|
954
|
+
function Xt(e) {
|
|
955
|
+
return typeof e == "string" && e.length > 0 && e.length <= Kt ? e : void 0;
|
|
912
956
|
}
|
|
913
|
-
function
|
|
957
|
+
function Zt(e) {
|
|
914
958
|
if (typeof e != "object" || !e) return {};
|
|
915
|
-
let t = e, n = {}, r =
|
|
959
|
+
let t = e, n = {}, r = Xt(t.color);
|
|
916
960
|
r !== void 0 && (n.color = r);
|
|
917
|
-
let i =
|
|
918
|
-
i !== void 0 && (n.lineWidth = i),
|
|
919
|
-
let a =
|
|
961
|
+
let i = F(t.lineWidth, .5, Jt);
|
|
962
|
+
i !== void 0 && (n.lineWidth = i), Gt.includes(t.lineStyle) && (n.lineStyle = t.lineStyle);
|
|
963
|
+
let a = Xt(t.fillColor);
|
|
920
964
|
a !== void 0 && (n.fillColor = a);
|
|
921
|
-
let o =
|
|
965
|
+
let o = F(t.fillOpacity, 0, 1);
|
|
922
966
|
o !== void 0 && (n.fillOpacity = o);
|
|
923
|
-
let s =
|
|
924
|
-
return s !== void 0 && (n.fontSize = s), typeof t.text == "string" && (n.text = t.text.slice(0,
|
|
967
|
+
let s = F(t.fontSize, 6, Yt);
|
|
968
|
+
return s !== void 0 && (n.fontSize = s), typeof t.text == "string" && (n.text = t.text.slice(0, qt)), n;
|
|
925
969
|
}
|
|
926
970
|
//#endregion
|
|
927
971
|
//#region src/utils/chartTypeOptions.ts
|
|
928
|
-
var
|
|
929
|
-
function
|
|
930
|
-
if (!
|
|
972
|
+
var I = (e) => typeof e == "number" && Number.isFinite(e) && e > 0, L = (e, t, n) => typeof e == "number" && Number.isInteger(e) && e >= t && e <= n, R = (e) => typeof e == "object" && !!e && !Array.isArray(e);
|
|
973
|
+
function Qt(e) {
|
|
974
|
+
if (!R(e)) return {};
|
|
931
975
|
let t = {};
|
|
932
|
-
if (
|
|
976
|
+
if (R(e.renko)) {
|
|
933
977
|
let { boxSize: n, atrPeriod: r } = e.renko;
|
|
934
978
|
t.renko = {
|
|
935
|
-
...
|
|
936
|
-
...
|
|
979
|
+
...I(n) || n === "atr" ? { boxSize: n } : {},
|
|
980
|
+
...L(r, 1, 500) ? { atrPeriod: r } : {}
|
|
937
981
|
};
|
|
938
982
|
}
|
|
939
|
-
if (
|
|
983
|
+
if (R(e.lineBreak)) {
|
|
940
984
|
let { lines: n } = e.lineBreak;
|
|
941
|
-
t.lineBreak =
|
|
985
|
+
t.lineBreak = L(n, 1, 10) ? { lines: n } : {};
|
|
942
986
|
}
|
|
943
|
-
if (
|
|
987
|
+
if (R(e.kagi)) {
|
|
944
988
|
let { reversal: n, reversalType: r } = e.kagi;
|
|
945
989
|
t.kagi = {
|
|
946
|
-
...
|
|
990
|
+
...I(n) ? { reversal: n } : {},
|
|
947
991
|
...r === "percent" || r === "price" ? { reversalType: r } : {}
|
|
948
992
|
};
|
|
949
993
|
}
|
|
950
|
-
if (
|
|
994
|
+
if (R(e.pointAndFigure)) {
|
|
951
995
|
let { boxSize: n, reversal: r } = e.pointAndFigure;
|
|
952
996
|
t.pointAndFigure = {
|
|
953
|
-
...
|
|
954
|
-
...
|
|
997
|
+
...I(n) || n === "auto" ? { boxSize: n } : {},
|
|
998
|
+
...L(r, 1, 10) ? { reversal: r } : {}
|
|
955
999
|
};
|
|
956
1000
|
}
|
|
957
|
-
if (
|
|
1001
|
+
if (R(e.rangeBars)) {
|
|
958
1002
|
let { range: n } = e.rangeBars;
|
|
959
|
-
t.rangeBars =
|
|
1003
|
+
t.rangeBars = I(n) || n === "auto" ? { range: n } : {};
|
|
960
1004
|
}
|
|
961
1005
|
return t;
|
|
962
1006
|
}
|
|
963
1007
|
//#endregion
|
|
964
1008
|
//#region src/constants/themes.ts
|
|
965
|
-
var
|
|
966
|
-
family:
|
|
1009
|
+
var $t = "'Cascadia Mono', 'SF Mono', ui-monospace, Menlo, Consolas, monospace", en = "-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif", tn = {
|
|
1010
|
+
family: $t,
|
|
967
1011
|
sizeSmall: 11,
|
|
968
1012
|
sizeMedium: 13,
|
|
969
1013
|
sizeLarge: 15
|
|
970
|
-
},
|
|
1014
|
+
}, z = {
|
|
971
1015
|
amber: "#f2a93b",
|
|
972
1016
|
up: "#1c9e6d",
|
|
973
1017
|
down: "#e8505b",
|
|
@@ -978,57 +1022,57 @@ var It = "'Cascadia Mono', 'SF Mono', ui-monospace, Menlo, Consolas, monospace",
|
|
|
978
1022
|
rose: "#e25592",
|
|
979
1023
|
neutral: "#7d8696",
|
|
980
1024
|
ink: "#131416"
|
|
981
|
-
},
|
|
982
|
-
function
|
|
983
|
-
return
|
|
984
|
-
}
|
|
985
|
-
var
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
],
|
|
1025
|
+
}, nn = .22;
|
|
1026
|
+
function B(e) {
|
|
1027
|
+
return m(e, nn);
|
|
1028
|
+
}
|
|
1029
|
+
var rn = "#fbfaf6", V = "#1b1d21", an = "#131416", H = "#e6e3dc", on = "#1f7a5c", sn = "#b8423f", cn = "#4fae8a", ln = "#e2706b", un = "#6a6966", dn = "#8d8a84", fn = [
|
|
1030
|
+
z.blue,
|
|
1031
|
+
z.ochre,
|
|
1032
|
+
z.violet,
|
|
1033
|
+
z.cyan,
|
|
1034
|
+
z.rose
|
|
1035
|
+
], pn = {
|
|
992
1036
|
name: "dark",
|
|
993
|
-
background:
|
|
994
|
-
text:
|
|
1037
|
+
background: an,
|
|
1038
|
+
text: H,
|
|
995
1039
|
textSecondary: "#8d8b86",
|
|
996
1040
|
grid: "#1d1e21",
|
|
997
|
-
crosshair:
|
|
998
|
-
candleUp:
|
|
999
|
-
candleDown:
|
|
1000
|
-
candleUpWick:
|
|
1001
|
-
candleDownWick:
|
|
1002
|
-
lineColor:
|
|
1003
|
-
areaTopColor:
|
|
1004
|
-
areaBottomColor:
|
|
1005
|
-
volumeUp:
|
|
1006
|
-
volumeDown:
|
|
1041
|
+
crosshair: un,
|
|
1042
|
+
candleUp: cn,
|
|
1043
|
+
candleDown: ln,
|
|
1044
|
+
candleUpWick: cn,
|
|
1045
|
+
candleDownWick: ln,
|
|
1046
|
+
lineColor: H,
|
|
1047
|
+
areaTopColor: m(H, .14),
|
|
1048
|
+
areaBottomColor: m(H, 0),
|
|
1049
|
+
volumeUp: m(H, .14),
|
|
1050
|
+
volumeDown: m(H, .08),
|
|
1007
1051
|
axisLine: "#2a2b2f",
|
|
1008
1052
|
axisLabel: "#a9a6a0",
|
|
1009
1053
|
axisLabelBackground: "#232427",
|
|
1010
|
-
font:
|
|
1011
|
-
},
|
|
1054
|
+
font: tn
|
|
1055
|
+
}, mn = {
|
|
1012
1056
|
name: "light",
|
|
1013
|
-
background:
|
|
1014
|
-
text:
|
|
1057
|
+
background: rn,
|
|
1058
|
+
text: V,
|
|
1015
1059
|
textSecondary: "#6b6f76",
|
|
1016
1060
|
grid: "#ece8df",
|
|
1017
|
-
crosshair:
|
|
1018
|
-
candleUp:
|
|
1019
|
-
candleDown:
|
|
1020
|
-
candleUpWick:
|
|
1021
|
-
candleDownWick:
|
|
1022
|
-
lineColor:
|
|
1023
|
-
areaTopColor:
|
|
1024
|
-
areaBottomColor:
|
|
1025
|
-
volumeUp:
|
|
1026
|
-
volumeDown:
|
|
1061
|
+
crosshair: dn,
|
|
1062
|
+
candleUp: on,
|
|
1063
|
+
candleDown: sn,
|
|
1064
|
+
candleUpWick: on,
|
|
1065
|
+
candleDownWick: sn,
|
|
1066
|
+
lineColor: V,
|
|
1067
|
+
areaTopColor: m(V, .12),
|
|
1068
|
+
areaBottomColor: m(V, 0),
|
|
1069
|
+
volumeUp: m(V, .13),
|
|
1070
|
+
volumeDown: m(V, .08),
|
|
1027
1071
|
axisLine: "#cfcac0",
|
|
1028
1072
|
axisLabel: "#4a4e57",
|
|
1029
1073
|
axisLabelBackground: "#eeebe3",
|
|
1030
|
-
font:
|
|
1031
|
-
},
|
|
1074
|
+
font: tn
|
|
1075
|
+
}, hn = {
|
|
1032
1076
|
name: "terminal",
|
|
1033
1077
|
background: "#0E0E0E",
|
|
1034
1078
|
text: "#C0C0C0",
|
|
@@ -1042,8 +1086,8 @@ var Bt = "#fbfaf6", R = "#1b1d21", Vt = "#131416", z = "#e6e3dc", Ht = "#1f7a5c"
|
|
|
1042
1086
|
lineColor: "#3D8BFD",
|
|
1043
1087
|
areaTopColor: "rgba(61, 139, 253, 0.3)",
|
|
1044
1088
|
areaBottomColor: "rgba(61, 139, 253, 0.0)",
|
|
1045
|
-
volumeUp:
|
|
1046
|
-
volumeDown:
|
|
1089
|
+
volumeUp: B("#00FF87"),
|
|
1090
|
+
volumeDown: B("#FF3B4D"),
|
|
1047
1091
|
axisLine: "#1A1A1A",
|
|
1048
1092
|
axisLabel: "#8A8A8A",
|
|
1049
1093
|
axisLabelBackground: "#1A1A1A",
|
|
@@ -1053,11 +1097,11 @@ var Bt = "#fbfaf6", R = "#1b1d21", Vt = "#131416", z = "#e6e3dc", Ht = "#1f7a5c"
|
|
|
1053
1097
|
sizeMedium: 12,
|
|
1054
1098
|
sizeLarge: 14
|
|
1055
1099
|
}
|
|
1056
|
-
},
|
|
1057
|
-
function
|
|
1100
|
+
}, gn = new Set([hn.volumeUp, hn.volumeDown]);
|
|
1101
|
+
function _n(e) {
|
|
1058
1102
|
let t = (e, t) => {
|
|
1059
|
-
if (!
|
|
1060
|
-
let n =
|
|
1103
|
+
if (!gn.has(e)) return e;
|
|
1104
|
+
let n = B(t);
|
|
1061
1105
|
return n === t ? e : n;
|
|
1062
1106
|
};
|
|
1063
1107
|
return {
|
|
@@ -1067,67 +1111,67 @@ function B(e) {
|
|
|
1067
1111
|
}
|
|
1068
1112
|
//#endregion
|
|
1069
1113
|
//#region src/utils/chartStyle.ts
|
|
1070
|
-
var
|
|
1114
|
+
var vn = [
|
|
1071
1115
|
"solid",
|
|
1072
1116
|
"dashed",
|
|
1073
1117
|
"dotted"
|
|
1074
|
-
],
|
|
1118
|
+
], yn = 20, bn = 64, xn = 2, Sn = [
|
|
1075
1119
|
/^#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i,
|
|
1076
1120
|
/^[a-z]{3,30}$/i,
|
|
1077
1121
|
/^(?:rgba?|hsla?|hwb|lab|lch|oklab|oklch|color)\([0-9a-z.,%/\s-]*\)$/i
|
|
1078
1122
|
];
|
|
1079
|
-
function
|
|
1080
|
-
return typeof e == "string" && e.length <=
|
|
1123
|
+
function Cn(e) {
|
|
1124
|
+
return typeof e == "string" && e.length <= bn && Sn.some((t) => t.test(e.trim()));
|
|
1081
1125
|
}
|
|
1082
|
-
function
|
|
1126
|
+
function wn(e, t) {
|
|
1083
1127
|
switch (e) {
|
|
1084
|
-
case "color": return
|
|
1085
|
-
case "lineStyle": return
|
|
1086
|
-
case "width": return typeof t == "number" && Number.isFinite(t) && t > 0 && t <=
|
|
1128
|
+
case "color": return Cn(t);
|
|
1129
|
+
case "lineStyle": return vn.includes(t);
|
|
1130
|
+
case "width": return typeof t == "number" && Number.isFinite(t) && t > 0 && t <= yn;
|
|
1087
1131
|
case "boolean": return typeof t == "boolean";
|
|
1088
1132
|
}
|
|
1089
1133
|
}
|
|
1090
|
-
function
|
|
1134
|
+
function Tn(e) {
|
|
1091
1135
|
return Object.prototype.hasOwnProperty.call(t, e);
|
|
1092
1136
|
}
|
|
1093
|
-
function
|
|
1137
|
+
function En(e) {
|
|
1094
1138
|
let n = {}, r = [];
|
|
1095
1139
|
if (typeof e != "object" || !e || Array.isArray(e)) return {
|
|
1096
1140
|
overrides: {},
|
|
1097
1141
|
rejected: r
|
|
1098
1142
|
};
|
|
1099
|
-
for (let [i, a] of Object.entries(e))
|
|
1143
|
+
for (let [i, a] of Object.entries(e)) Tn(i) ? a === null ? n[i] = null : wn(t[i], a) ? n[i] = a : r.push(i) : r.push(i);
|
|
1100
1144
|
return {
|
|
1101
1145
|
overrides: n,
|
|
1102
1146
|
rejected: r
|
|
1103
1147
|
};
|
|
1104
1148
|
}
|
|
1105
|
-
function
|
|
1149
|
+
function Dn(e) {
|
|
1106
1150
|
if (typeof e != "object" || !e || Array.isArray(e)) return null;
|
|
1107
1151
|
let { background: t, separator: n } = e, r = {
|
|
1108
|
-
...
|
|
1109
|
-
...
|
|
1152
|
+
...Cn(t) ? { background: t } : {},
|
|
1153
|
+
...Cn(n) ? { separator: n } : {}
|
|
1110
1154
|
};
|
|
1111
1155
|
return Object.keys(r).length > 0 ? r : null;
|
|
1112
1156
|
}
|
|
1113
|
-
var
|
|
1114
|
-
function
|
|
1157
|
+
var On = /^[A-Za-z0-9_]{1,32}$/;
|
|
1158
|
+
function kn(e) {
|
|
1115
1159
|
if (typeof e != "object" || !e || Array.isArray(e)) return;
|
|
1116
1160
|
let t = {};
|
|
1117
1161
|
for (let [n, r] of Object.entries(e)) {
|
|
1118
|
-
if (!
|
|
1162
|
+
if (!On.test(n) || typeof r != "object" || !r) continue;
|
|
1119
1163
|
let { lineStyle: e, visible: i } = r, a = {
|
|
1120
|
-
|
|
1164
|
+
...vn.includes(e) ? { lineStyle: e } : {},
|
|
1121
1165
|
...typeof i == "boolean" ? { visible: i } : {}
|
|
1122
1166
|
};
|
|
1123
1167
|
Object.keys(a).length > 0 && (t[n] = a);
|
|
1124
1168
|
}
|
|
1125
1169
|
return Object.keys(t).length > 0 ? t : void 0;
|
|
1126
1170
|
}
|
|
1127
|
-
function
|
|
1171
|
+
function An(e, t, n = 1) {
|
|
1128
1172
|
return e === "solid" ? [] : e === "dotted" ? [n, n * 2] : [...t];
|
|
1129
1173
|
}
|
|
1130
|
-
function
|
|
1174
|
+
function jn(e, t, n) {
|
|
1131
1175
|
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;
|
|
1132
1176
|
return {
|
|
1133
1177
|
up: o,
|
|
@@ -1135,12 +1179,12 @@ function fn(e, t, n) {
|
|
|
1135
1179
|
wickUp: r("wickUpColor") ?? t("series.candlestick.wickUpColor") ?? (i === void 0 ? e.candleUpWick : o),
|
|
1136
1180
|
wickDown: r("wickDownColor") ?? t("series.candlestick.wickDownColor") ?? (a === void 0 ? e.candleDownWick : s),
|
|
1137
1181
|
line: r("color") ?? r("lineColor") ?? t("series.line.color") ?? e.lineColor,
|
|
1138
|
-
lineWidth: r("lineWidth") ?? t("series.line.lineWidth") ??
|
|
1182
|
+
lineWidth: r("lineWidth") ?? t("series.line.lineWidth") ?? xn,
|
|
1139
1183
|
top: r("topColor") ?? t("series.area.topColor") ?? e.areaTopColor,
|
|
1140
1184
|
bottom: r("bottomColor") ?? t("series.area.bottomColor") ?? e.areaBottomColor
|
|
1141
1185
|
};
|
|
1142
1186
|
}
|
|
1143
|
-
function
|
|
1187
|
+
function U(e, t, n) {
|
|
1144
1188
|
return {
|
|
1145
1189
|
visible: e(`${t}.visible`) ?? n.visible,
|
|
1146
1190
|
color: e(`${t}.color`) ?? n.color,
|
|
@@ -1148,21 +1192,21 @@ function H(e, t, n) {
|
|
|
1148
1192
|
width: e(`${t}.width`) ?? n.width
|
|
1149
1193
|
};
|
|
1150
1194
|
}
|
|
1151
|
-
function
|
|
1152
|
-
let { style: r, ...i } = e, a = n, o = (e) => a[e], s =
|
|
1195
|
+
function Mn(e, t, n) {
|
|
1196
|
+
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 = {
|
|
1153
1197
|
panes: {
|
|
1154
1198
|
background: l("panes.background", c),
|
|
1155
1199
|
separator: l("panes.separatorColor", i.axisLine),
|
|
1156
1200
|
title: l("panes.titleColor", i.textSecondary)
|
|
1157
1201
|
},
|
|
1158
1202
|
grid: {
|
|
1159
|
-
horizontal:
|
|
1203
|
+
horizontal: U(o, "grid.horizontal", {
|
|
1160
1204
|
visible: !0,
|
|
1161
1205
|
color: i.grid,
|
|
1162
1206
|
style: "solid",
|
|
1163
1207
|
width: 1
|
|
1164
1208
|
}),
|
|
1165
|
-
vertical:
|
|
1209
|
+
vertical: U(o, "grid.vertical", {
|
|
1166
1210
|
visible: !0,
|
|
1167
1211
|
color: i.grid,
|
|
1168
1212
|
style: "solid",
|
|
@@ -1170,13 +1214,13 @@ function pn(e, t, n) {
|
|
|
1170
1214
|
})
|
|
1171
1215
|
},
|
|
1172
1216
|
crosshair: {
|
|
1173
|
-
horizontal:
|
|
1217
|
+
horizontal: U(o, "crosshair.horizontal", {
|
|
1174
1218
|
visible: !0,
|
|
1175
1219
|
color: i.crosshair,
|
|
1176
1220
|
style: "solid",
|
|
1177
1221
|
width: 1
|
|
1178
1222
|
}),
|
|
1179
|
-
vertical:
|
|
1223
|
+
vertical: U(o, "crosshair.vertical", {
|
|
1180
1224
|
visible: !0,
|
|
1181
1225
|
color: i.crosshair,
|
|
1182
1226
|
style: "solid",
|
|
@@ -1248,7 +1292,7 @@ function pn(e, t, n) {
|
|
|
1248
1292
|
style: d
|
|
1249
1293
|
};
|
|
1250
1294
|
}
|
|
1251
|
-
var
|
|
1295
|
+
var Nn = {
|
|
1252
1296
|
"background.color": (e) => e.background,
|
|
1253
1297
|
"panes.background": (e, t) => t.panes.background,
|
|
1254
1298
|
"panes.separatorColor": (e, t) => t.panes.separator,
|
|
@@ -1267,8 +1311,8 @@ var mn = {
|
|
|
1267
1311
|
"lastPrice.downColor": (e, t) => t.lastPrice.down,
|
|
1268
1312
|
"lastPrice.style": (e, t) => t.lastPrice.style,
|
|
1269
1313
|
"lastPrice.width": (e, t) => t.lastPrice.width,
|
|
1270
|
-
"volume.upColor": (e) =>
|
|
1271
|
-
"volume.downColor": (e) =>
|
|
1314
|
+
"volume.upColor": (e) => _n(e).up,
|
|
1315
|
+
"volume.downColor": (e) => _n(e).down,
|
|
1272
1316
|
"sessionBreaks.color": (e, t) => t.sessionBreaks.color,
|
|
1273
1317
|
"sessionBreaks.style": (e, t) => t.sessionBreaks.style,
|
|
1274
1318
|
"sessionBreaks.width": (e, t) => t.sessionBreaks.width,
|
|
@@ -1285,16 +1329,16 @@ var mn = {
|
|
|
1285
1329
|
"tradeZones.lossColor": (e, t) => t.tradeZones.loss,
|
|
1286
1330
|
"tradeZones.activeColor": (e, t) => t.tradeZones.active,
|
|
1287
1331
|
"drawings.handleColor": (e, t) => t.drawings.handle
|
|
1288
|
-
},
|
|
1332
|
+
}, Pn = {
|
|
1289
1333
|
visible: "visible",
|
|
1290
1334
|
color: "color",
|
|
1291
1335
|
style: "style",
|
|
1292
1336
|
width: "width"
|
|
1293
1337
|
};
|
|
1294
|
-
function
|
|
1338
|
+
function Fn(e, t, n, r = "candlestick") {
|
|
1295
1339
|
let i = n.split(".");
|
|
1296
1340
|
if (i[0] === "series") {
|
|
1297
|
-
let n =
|
|
1341
|
+
let n = jn(e, (e) => t[e], i[1]);
|
|
1298
1342
|
switch (i[2]) {
|
|
1299
1343
|
case "upColor": return n.up;
|
|
1300
1344
|
case "downColor": return n.down;
|
|
@@ -1307,12 +1351,12 @@ function gn(e, t, n, r = "candlestick") {
|
|
|
1307
1351
|
case "bottomColor": return n.bottom;
|
|
1308
1352
|
}
|
|
1309
1353
|
}
|
|
1310
|
-
let a =
|
|
1311
|
-
return i[0] === "grid" || i[0] === "crosshair" && (i[1] === "horizontal" || i[1] === "vertical") ? (i[0] === "grid" ? o.grid : o.crosshair)[i[1]][
|
|
1354
|
+
let a = Mn(e, r, t), o = a.style;
|
|
1355
|
+
return i[0] === "grid" || i[0] === "crosshair" && (i[1] === "horizontal" || i[1] === "vertical") ? (i[0] === "grid" ? o.grid : o.crosshair)[i[1]][Pn[i[2]]] : Nn[n]?.(a, o) ?? null;
|
|
1312
1356
|
}
|
|
1313
1357
|
//#endregion
|
|
1314
1358
|
//#region src/constants/defaults.ts
|
|
1315
|
-
var
|
|
1359
|
+
var In = {
|
|
1316
1360
|
autoScale: !0,
|
|
1317
1361
|
rightMargin: 5,
|
|
1318
1362
|
minBarSpacing: 2,
|
|
@@ -1323,7 +1367,7 @@ var _n = {
|
|
|
1323
1367
|
vLineStyle: "solid"
|
|
1324
1368
|
},
|
|
1325
1369
|
crosshair: { mode: "magnet" }
|
|
1326
|
-
},
|
|
1370
|
+
}, Ln = [
|
|
1327
1371
|
"1s",
|
|
1328
1372
|
"1m",
|
|
1329
1373
|
"3m",
|
|
@@ -1340,7 +1384,7 @@ var _n = {
|
|
|
1340
1384
|
"3d",
|
|
1341
1385
|
"1w",
|
|
1342
1386
|
"1M"
|
|
1343
|
-
],
|
|
1387
|
+
], Rn = [
|
|
1344
1388
|
"1m",
|
|
1345
1389
|
"5m",
|
|
1346
1390
|
"15m",
|
|
@@ -1354,7 +1398,7 @@ var _n = {
|
|
|
1354
1398
|
"3M",
|
|
1355
1399
|
"6M",
|
|
1356
1400
|
"12M"
|
|
1357
|
-
],
|
|
1401
|
+
], zn = [
|
|
1358
1402
|
"1m",
|
|
1359
1403
|
"5m",
|
|
1360
1404
|
"15m",
|
|
@@ -1364,7 +1408,7 @@ var _n = {
|
|
|
1364
1408
|
"1d",
|
|
1365
1409
|
"1w",
|
|
1366
1410
|
"1M"
|
|
1367
|
-
],
|
|
1411
|
+
], Bn = [
|
|
1368
1412
|
"1m",
|
|
1369
1413
|
"5m",
|
|
1370
1414
|
"15m",
|
|
@@ -1372,7 +1416,7 @@ var _n = {
|
|
|
1372
1416
|
"4h",
|
|
1373
1417
|
"1d",
|
|
1374
1418
|
"1w"
|
|
1375
|
-
],
|
|
1419
|
+
], Vn = 8, Hn = 2, Un = 70, Wn = 30, Gn = 60, Kn = 120, qn = (1 + Math.sqrt(5)) / 2, Jn = [
|
|
1376
1420
|
1,
|
|
1377
1421
|
2,
|
|
1378
1422
|
3,
|
|
@@ -1384,12 +1428,12 @@ var _n = {
|
|
|
1384
1428
|
55,
|
|
1385
1429
|
89
|
|
1386
1430
|
];
|
|
1387
|
-
function
|
|
1388
|
-
return Math.round(e *
|
|
1431
|
+
function Yn(e, t, n = 1) {
|
|
1432
|
+
return Math.round(e * qn ** (t / n));
|
|
1389
1433
|
}
|
|
1390
1434
|
//#endregion
|
|
1391
1435
|
//#region src/i18n/en.ts
|
|
1392
|
-
var
|
|
1436
|
+
var W = {
|
|
1393
1437
|
candlestick: "Candlestick",
|
|
1394
1438
|
line: "Line",
|
|
1395
1439
|
area: "Area",
|
|
@@ -1492,7 +1536,7 @@ var U = {
|
|
|
1492
1536
|
error: "Error",
|
|
1493
1537
|
numberDecimalSeparator: ".",
|
|
1494
1538
|
numberGroupSeparator: ","
|
|
1495
|
-
},
|
|
1539
|
+
}, Xn = {
|
|
1496
1540
|
candlestick: "Nến",
|
|
1497
1541
|
line: "Đường",
|
|
1498
1542
|
area: "Vùng",
|
|
@@ -1595,43 +1639,43 @@ var U = {
|
|
|
1595
1639
|
error: "Lỗi",
|
|
1596
1640
|
numberDecimalSeparator: ",",
|
|
1597
1641
|
numberGroupSeparator: "."
|
|
1598
|
-
},
|
|
1599
|
-
function
|
|
1600
|
-
|
|
1642
|
+
}, G = new Map([["en", W], ["vi", Xn]]), K = "en", Zn = W;
|
|
1643
|
+
function Qn(e) {
|
|
1644
|
+
K = e, Zn = G.get(e) ?? W;
|
|
1601
1645
|
}
|
|
1602
|
-
function
|
|
1603
|
-
return
|
|
1646
|
+
function $n() {
|
|
1647
|
+
return K;
|
|
1604
1648
|
}
|
|
1605
|
-
function
|
|
1606
|
-
return
|
|
1649
|
+
function er(e) {
|
|
1650
|
+
return Zn[e] ?? W[e] ?? e;
|
|
1607
1651
|
}
|
|
1608
|
-
function
|
|
1609
|
-
|
|
1652
|
+
function tr(e, t) {
|
|
1653
|
+
G.set(e, t);
|
|
1610
1654
|
}
|
|
1611
|
-
function
|
|
1612
|
-
return
|
|
1655
|
+
function nr(e) {
|
|
1656
|
+
return G.get(e ?? K) ?? W;
|
|
1613
1657
|
}
|
|
1614
|
-
function
|
|
1615
|
-
let r =
|
|
1658
|
+
function q(e, t = 2, n) {
|
|
1659
|
+
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 = "";
|
|
1616
1660
|
for (let e = l.length - 1, t = 0; e >= 0; e--, t++) t > 0 && t % 3 == 0 && (u = a + u), u = l[e] + u;
|
|
1617
1661
|
return c && (u = "-" + u), s ? u + i + s : u;
|
|
1618
1662
|
}
|
|
1619
|
-
function
|
|
1620
|
-
return
|
|
1663
|
+
function rr(e) {
|
|
1664
|
+
return q(e, 0, "vi");
|
|
1621
1665
|
}
|
|
1622
|
-
function
|
|
1623
|
-
return e >= 1e9 ?
|
|
1666
|
+
function ir(e, t) {
|
|
1667
|
+
return e >= 1e9 ? q(e / 1e9, 2, t ?? K) + "B" : e >= 1e6 ? q(e / 1e6, 2, t ?? K) + "M" : e >= 1e3 ? q(e / 1e3, 2, t ?? K) + "K" : q(e, 0, t ?? K);
|
|
1624
1668
|
}
|
|
1625
1669
|
//#endregion
|
|
1626
1670
|
//#region src/market/presets.ts
|
|
1627
|
-
var
|
|
1671
|
+
var J = {
|
|
1628
1672
|
up: "#22C55E",
|
|
1629
1673
|
down: "#EF4444",
|
|
1630
1674
|
unchanged: "#EAB308",
|
|
1631
1675
|
ceiling: "#D946EF",
|
|
1632
1676
|
floor: "#06B6D4",
|
|
1633
1677
|
reference: "#EAB308"
|
|
1634
|
-
},
|
|
1678
|
+
}, Y = "Asia/Ho_Chi_Minh", ar = [
|
|
1635
1679
|
{
|
|
1636
1680
|
name: "ATO",
|
|
1637
1681
|
startTime: "09:00",
|
|
@@ -1662,7 +1706,7 @@ var q = {
|
|
|
1662
1706
|
endTime: "14:45",
|
|
1663
1707
|
type: "preClose"
|
|
1664
1708
|
}
|
|
1665
|
-
],
|
|
1709
|
+
], or = [
|
|
1666
1710
|
{
|
|
1667
1711
|
name: "Phiên 1",
|
|
1668
1712
|
startTime: "09:15",
|
|
@@ -1693,7 +1737,7 @@ var q = {
|
|
|
1693
1737
|
endTime: "15:00",
|
|
1694
1738
|
type: "postClose"
|
|
1695
1739
|
}
|
|
1696
|
-
],
|
|
1740
|
+
], sr = [
|
|
1697
1741
|
{
|
|
1698
1742
|
name: "Phiên 1",
|
|
1699
1743
|
startTime: "09:15",
|
|
@@ -1712,7 +1756,7 @@ var q = {
|
|
|
1712
1756
|
endTime: "14:30",
|
|
1713
1757
|
type: "continuous"
|
|
1714
1758
|
}
|
|
1715
|
-
],
|
|
1759
|
+
], cr = [
|
|
1716
1760
|
{
|
|
1717
1761
|
name: "ATO",
|
|
1718
1762
|
startTime: "08:45",
|
|
@@ -1743,7 +1787,7 @@ var q = {
|
|
|
1743
1787
|
endTime: "14:45",
|
|
1744
1788
|
type: "preClose"
|
|
1745
1789
|
}
|
|
1746
|
-
],
|
|
1790
|
+
], lr = {
|
|
1747
1791
|
type: "stock",
|
|
1748
1792
|
exchange: "HOSE",
|
|
1749
1793
|
currency: "VND",
|
|
@@ -1764,48 +1808,48 @@ var q = {
|
|
|
1764
1808
|
step: .1
|
|
1765
1809
|
}
|
|
1766
1810
|
],
|
|
1767
|
-
timeZone:
|
|
1811
|
+
timeZone: Y,
|
|
1768
1812
|
priceLimits: {
|
|
1769
1813
|
enabled: !0,
|
|
1770
1814
|
ceilingPercent: 7,
|
|
1771
1815
|
floorPercent: 7
|
|
1772
1816
|
},
|
|
1773
|
-
sessions:
|
|
1774
|
-
colorScheme:
|
|
1775
|
-
},
|
|
1776
|
-
...
|
|
1817
|
+
sessions: ar,
|
|
1818
|
+
colorScheme: J
|
|
1819
|
+
}, ur = {
|
|
1820
|
+
...lr,
|
|
1777
1821
|
priceSteps: void 0
|
|
1778
|
-
},
|
|
1822
|
+
}, dr = {
|
|
1779
1823
|
type: "stock",
|
|
1780
1824
|
exchange: "HNX",
|
|
1781
1825
|
currency: "VND",
|
|
1782
1826
|
pricePrecision: 1,
|
|
1783
1827
|
volumeUnit: 100,
|
|
1784
1828
|
priceStep: .1,
|
|
1785
|
-
timeZone:
|
|
1829
|
+
timeZone: Y,
|
|
1786
1830
|
priceLimits: {
|
|
1787
1831
|
enabled: !0,
|
|
1788
1832
|
ceilingPercent: 10,
|
|
1789
1833
|
floorPercent: 10
|
|
1790
1834
|
},
|
|
1791
|
-
sessions:
|
|
1792
|
-
colorScheme:
|
|
1793
|
-
},
|
|
1835
|
+
sessions: or,
|
|
1836
|
+
colorScheme: J
|
|
1837
|
+
}, fr = {
|
|
1794
1838
|
type: "stock",
|
|
1795
1839
|
exchange: "UPCOM",
|
|
1796
1840
|
currency: "VND",
|
|
1797
1841
|
pricePrecision: 1,
|
|
1798
1842
|
volumeUnit: 100,
|
|
1799
1843
|
priceStep: .1,
|
|
1800
|
-
timeZone:
|
|
1844
|
+
timeZone: Y,
|
|
1801
1845
|
priceLimits: {
|
|
1802
1846
|
enabled: !0,
|
|
1803
1847
|
ceilingPercent: 15,
|
|
1804
1848
|
floorPercent: 15
|
|
1805
1849
|
},
|
|
1806
|
-
sessions:
|
|
1807
|
-
colorScheme:
|
|
1808
|
-
},
|
|
1850
|
+
sessions: sr,
|
|
1851
|
+
colorScheme: J
|
|
1852
|
+
}, pr = {
|
|
1809
1853
|
type: "futures",
|
|
1810
1854
|
exchange: "HNX",
|
|
1811
1855
|
currency: "VND",
|
|
@@ -1813,20 +1857,20 @@ var q = {
|
|
|
1813
1857
|
volumeUnit: 1,
|
|
1814
1858
|
priceStep: .1,
|
|
1815
1859
|
contractMultiplier: 1e5,
|
|
1816
|
-
timeZone:
|
|
1860
|
+
timeZone: Y,
|
|
1817
1861
|
priceLimits: {
|
|
1818
1862
|
enabled: !0,
|
|
1819
1863
|
ceilingPercent: 7,
|
|
1820
1864
|
floorPercent: 7
|
|
1821
1865
|
},
|
|
1822
|
-
sessions:
|
|
1823
|
-
colorScheme:
|
|
1824
|
-
},
|
|
1866
|
+
sessions: cr,
|
|
1867
|
+
colorScheme: J
|
|
1868
|
+
}, mr = {
|
|
1825
1869
|
type: "crypto",
|
|
1826
1870
|
currency: "USDT",
|
|
1827
1871
|
pricePrecision: 2,
|
|
1828
1872
|
priceLimits: { enabled: !1 }
|
|
1829
|
-
},
|
|
1873
|
+
}, hr = {
|
|
1830
1874
|
type: "stock",
|
|
1831
1875
|
exchange: "NYSE",
|
|
1832
1876
|
currency: "USD",
|
|
@@ -1855,55 +1899,55 @@ var q = {
|
|
|
1855
1899
|
}
|
|
1856
1900
|
]
|
|
1857
1901
|
};
|
|
1858
|
-
function
|
|
1902
|
+
function gr(e) {
|
|
1859
1903
|
return {
|
|
1860
1904
|
...e,
|
|
1861
|
-
candleUp:
|
|
1862
|
-
candleDown:
|
|
1863
|
-
candleUpWick:
|
|
1864
|
-
candleDownWick:
|
|
1905
|
+
candleUp: J.up,
|
|
1906
|
+
candleDown: J.down,
|
|
1907
|
+
candleUpWick: J.up,
|
|
1908
|
+
candleDownWick: J.down
|
|
1865
1909
|
};
|
|
1866
1910
|
}
|
|
1867
|
-
var
|
|
1868
|
-
function
|
|
1911
|
+
var X = 1e-9;
|
|
1912
|
+
function _r(e, t) {
|
|
1869
1913
|
let n = t.priceStep;
|
|
1870
|
-
for (let r of t.priceSteps ?? []) e +
|
|
1914
|
+
for (let r of t.priceSteps ?? []) e + X >= r.from && (n = r.step);
|
|
1871
1915
|
return n !== void 0 && n > 0 ? n : void 0;
|
|
1872
1916
|
}
|
|
1873
|
-
function
|
|
1917
|
+
function vr(e, t) {
|
|
1874
1918
|
let n = t.priceStep;
|
|
1875
|
-
for (let r of t.priceSteps ?? []) e -
|
|
1919
|
+
for (let r of t.priceSteps ?? []) e - X > r.from && (n = r.step);
|
|
1876
1920
|
return n !== void 0 && n > 0 ? n : void 0;
|
|
1877
1921
|
}
|
|
1878
1922
|
function Z(e, t, n = "nearest") {
|
|
1879
|
-
let r =
|
|
1923
|
+
let r = _r(e, t);
|
|
1880
1924
|
if (r === void 0 || !Number.isFinite(e)) return e;
|
|
1881
|
-
let i = e / r, a = n === "down" ? Math.floor(i +
|
|
1882
|
-
return Number((a * r).toFixed(
|
|
1925
|
+
let i = e / r, a = n === "down" ? Math.floor(i + X) : n === "up" ? Math.ceil(i - X) : Math.round(i);
|
|
1926
|
+
return Number((a * r).toFixed(Mt(r)));
|
|
1883
1927
|
}
|
|
1884
|
-
function
|
|
1928
|
+
function yr(e, t) {
|
|
1885
1929
|
if (!t.priceLimits?.enabled || !t.priceLimits.ceilingPercent) return null;
|
|
1886
|
-
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 =
|
|
1930
|
+
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 = _r(i, t);
|
|
1887
1931
|
if (s === void 0) return {
|
|
1888
1932
|
ceiling: a,
|
|
1889
1933
|
floor: o,
|
|
1890
1934
|
reference: i
|
|
1891
1935
|
};
|
|
1892
1936
|
let c = Z(i + s, t);
|
|
1893
|
-
if (Math.abs(i - s) <
|
|
1937
|
+
if (Math.abs(i - s) < X) return {
|
|
1894
1938
|
ceiling: c,
|
|
1895
1939
|
floor: i,
|
|
1896
1940
|
reference: i
|
|
1897
1941
|
};
|
|
1898
1942
|
let l = Z(a, t, "down"), u = Z(o, t, "up");
|
|
1899
|
-
return l <= i && (l = c), u >= i && (u = Z(i - (
|
|
1943
|
+
return l <= i && (l = c), u >= i && (u = Z(i - (vr(i, t) ?? s), t)), u <= 0 && (u = i), {
|
|
1900
1944
|
ceiling: l,
|
|
1901
1945
|
floor: u,
|
|
1902
1946
|
reference: i
|
|
1903
1947
|
};
|
|
1904
1948
|
}
|
|
1905
1949
|
var Q = (e, t) => Math.round(e * t * 1e9) / 1e9;
|
|
1906
|
-
function
|
|
1950
|
+
function br(e, t) {
|
|
1907
1951
|
let n = Math.round(Math.log10(t));
|
|
1908
1952
|
return {
|
|
1909
1953
|
...e,
|
|
@@ -1919,11 +1963,11 @@ function er(e, t) {
|
|
|
1919
1963
|
}
|
|
1920
1964
|
};
|
|
1921
1965
|
}
|
|
1922
|
-
var
|
|
1923
|
-
function
|
|
1966
|
+
var xr = 6e4, Sr = 864e5;
|
|
1967
|
+
function Cr(e, t) {
|
|
1924
1968
|
let n, r;
|
|
1925
1969
|
if (t) {
|
|
1926
|
-
let i = new Date(e +
|
|
1970
|
+
let i = new Date(e + b(t, e) * xr);
|
|
1927
1971
|
n = i.getUTCHours(), r = i.getUTCMinutes();
|
|
1928
1972
|
} else {
|
|
1929
1973
|
let t = new Date(e);
|
|
@@ -1931,31 +1975,31 @@ function rr(e, t) {
|
|
|
1931
1975
|
}
|
|
1932
1976
|
return `${String(n).padStart(2, "0")}:${String(r).padStart(2, "0")}`;
|
|
1933
1977
|
}
|
|
1934
|
-
function
|
|
1935
|
-
if (n !== void 0 && !
|
|
1936
|
-
let r =
|
|
1978
|
+
function wr(e, t = Date.now(), n) {
|
|
1979
|
+
if (n !== void 0 && !y(n)) return null;
|
|
1980
|
+
let r = Cr(t, n);
|
|
1937
1981
|
for (let t of e) if (r >= t.startTime && r < t.endTime) return t;
|
|
1938
1982
|
return null;
|
|
1939
1983
|
}
|
|
1940
|
-
var $ = (e) => String(e).padStart(2, "0"),
|
|
1984
|
+
var $ = (e) => String(e).padStart(2, "0"), Tr = (e) => {
|
|
1941
1985
|
let t = new Date(e);
|
|
1942
1986
|
return `${t.getUTCFullYear()}-${$(t.getUTCMonth() + 1)}-${$(t.getUTCDate())}`;
|
|
1943
|
-
},
|
|
1944
|
-
function
|
|
1945
|
-
let r = Date.UTC(e, t - 1, 1), i = 1 + (
|
|
1987
|
+
}, Er = 4, Dr = 7 * 36e5;
|
|
1988
|
+
function Or(e, t, n) {
|
|
1989
|
+
let r = Date.UTC(e, t - 1, 1), i = 1 + (Er - new Date(r).getUTCDay() + 7) % 7, a = Date.UTC(e, t - 1, i + 14), o = (e) => {
|
|
1946
1990
|
let t = new Date(e).getUTCDay();
|
|
1947
|
-
return t === 0 || t === 6 || (n?.(
|
|
1991
|
+
return t === 0 || t === 6 || (n?.(Tr(e)) ?? !1);
|
|
1948
1992
|
};
|
|
1949
|
-
for (; o(a);) a -=
|
|
1950
|
-
return
|
|
1993
|
+
for (; o(a);) a -= Sr;
|
|
1994
|
+
return Tr(a);
|
|
1951
1995
|
}
|
|
1952
|
-
function
|
|
1953
|
-
let n =
|
|
1996
|
+
function kr(e, t) {
|
|
1997
|
+
let n = Tr(e + Dr), r = (e, n) => ({
|
|
1954
1998
|
symbol: `VN30F${$(e % 100)}${$(n)}`,
|
|
1955
1999
|
year: e,
|
|
1956
2000
|
month: n,
|
|
1957
|
-
lastTradingDay:
|
|
1958
|
-
}), i = (e) => e.month === 12 ? r(e.year + 1, 1) : r(e.year, e.month + 1), a = new Date(e +
|
|
2001
|
+
lastTradingDay: Or(e, n, t)
|
|
2002
|
+
}), i = (e) => e.month === 12 ? r(e.year + 1, 1) : r(e.year, e.month + 1), a = new Date(e + Dr), o = r(a.getUTCFullYear(), a.getUTCMonth() + 1);
|
|
1959
2003
|
n > o.lastTradingDay && (o = i(o));
|
|
1960
2004
|
let s = [o, i(o)], c = i(s[1]);
|
|
1961
2005
|
for (; s.length < 4;) c.month % 3 == 0 && s.push(c), c = i(c);
|
|
@@ -1963,7 +2007,7 @@ function lr(e, t) {
|
|
|
1963
2007
|
}
|
|
1964
2008
|
//#endregion
|
|
1965
2009
|
//#region src/icons/iconSet.ts
|
|
1966
|
-
var
|
|
2010
|
+
var Ar = {
|
|
1967
2011
|
cursor: { d: "M6 3.5L18.5 12.5L12.6 13.6L9.7 19.4z" },
|
|
1968
2012
|
trendingUp: { d: "M3 17L9 11L13 14.5L21 6.5M15 6.5H21V12.5" },
|
|
1969
2013
|
trendingDown: { d: "M3 7L9 13L13 9.5L21 17.5M15 17.5H21V11.5" },
|
|
@@ -2092,7 +2136,7 @@ var ur = {
|
|
|
2092
2136
|
]
|
|
2093
2137
|
] },
|
|
2094
2138
|
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" }
|
|
2095
|
-
},
|
|
2139
|
+
}, jr = {
|
|
2096
2140
|
trendLine: {
|
|
2097
2141
|
d: "M5 18L19 6",
|
|
2098
2142
|
dots: [[5, 18], [19, 6]]
|
|
@@ -2445,7 +2489,7 @@ var ur = {
|
|
|
2445
2489
|
],
|
|
2446
2490
|
dash: "M12 3V21"
|
|
2447
2491
|
}
|
|
2448
|
-
},
|
|
2492
|
+
}, Mr = {
|
|
2449
2493
|
candlestick: {
|
|
2450
2494
|
d: "M8 3.5V7M8 16V20.5M16 5V8.5M16 15.5V19",
|
|
2451
2495
|
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"]
|
|
@@ -2512,21 +2556,21 @@ var ur = {
|
|
|
2512
2556
|
"M16 4.5h3v6h-3z"
|
|
2513
2557
|
]
|
|
2514
2558
|
}
|
|
2515
|
-
},
|
|
2516
|
-
function
|
|
2517
|
-
let t =
|
|
2559
|
+
}, Nr = 1.75, Pr = .22, Fr = /* @__PURE__ */ new WeakMap();
|
|
2560
|
+
function Ir(e) {
|
|
2561
|
+
let t = Fr.get(e);
|
|
2518
2562
|
if (t) return t;
|
|
2519
2563
|
let n = "";
|
|
2520
|
-
e.soft && (n += `<path d="${e.soft}" fill="currentColor" fill-opacity="${
|
|
2564
|
+
e.soft && (n += `<path d="${e.soft}" fill="currentColor" fill-opacity="${Pr}" stroke="none"/>`);
|
|
2521
2565
|
for (let t of e.fills ?? []) n += `<path d="${t}" fill="currentColor" stroke="none"/>`;
|
|
2522
2566
|
e.d && (n += `<path d="${e.d}"/>`), e.dash && (n += `<path d="${e.dash}" stroke-dasharray="2 2.5"/>`);
|
|
2523
|
-
for (let [t, r, i =
|
|
2524
|
-
return
|
|
2567
|
+
for (let [t, r, i = Nr] of e.dots ?? []) n += `<circle cx="${t}" cy="${r}" r="${i}" fill="currentColor" stroke="none"/>`;
|
|
2568
|
+
return Fr.set(e, n), n;
|
|
2525
2569
|
}
|
|
2526
|
-
function
|
|
2527
|
-
return `<svg xmlns="http://www.w3.org/2000/svg" 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">${
|
|
2570
|
+
function Lr(e, t) {
|
|
2571
|
+
return `<svg xmlns="http://www.w3.org/2000/svg" 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">${Ir(e)}</svg>`;
|
|
2528
2572
|
}
|
|
2529
2573
|
//#endregion
|
|
2530
|
-
export { t as CHART_STYLE_KEYS,
|
|
2574
|
+
export { t as CHART_STYLE_KEYS, Mr as CHART_TYPE_ICONS, hn as DARK_TERMINAL, pn as DARK_THEME, Hn as DEFAULT_BAR_SPACING, Vn as DEFAULT_BAR_WIDTH, In as DEFAULT_CHART_OPTIONS, n as DEFAULT_DRAWING_STYLE, $t as DEFAULT_FONT_FAMILY, Kn as DEFAULT_PANEL_HEIGHT, o as DEFAULT_RECONNECT, i as DEFAULT_SIGNAL_STYLE, s as DEFAULT_STREAM_CONFIG, Bn as DEFAULT_TIMEFRAME_FAVORITES, a as DEFAULT_TRADE_ZONE_STYLE, r as DEFAULT_TRADING_CONFIG, jr as DRAWING_TOOL_ICONS, Jn as FIBONACCI, or as HNX_SESSIONS, ar as HOSE_SESSIONS, Nr as ICON_DOT_RADIUS, Pr as ICON_SOFT_OPACITY, mn as LIGHT_THEME, e as LayerType, mr as MARKET_CRYPTO, dr as MARKET_HNX, lr as MARKET_HOSE, ur as MARKET_HOSE_ETF, hr as MARKET_NYSE, fr as MARKET_UPCOM, pr as MARKET_VN30F, Gn as MIN_PANEL_HEIGHT, ce as MS_TIME_THRESHOLD, qn as PHI, Un as PRICE_AXIS_WIDTH, _t as PRICE_SOURCES, en as SANS_FONT_FAMILY, z as TC_PALETTE, fn as TC_SERIES_COLORS, Ln as TIMEFRAMES_CRYPTO, zn as TIMEFRAMES_FOREX, Rn as TIMEFRAMES_STOCK, Wn as TIME_AXIS_HEIGHT, Ar as UI_ICONS, sr as UPCOM_SESSIONS, cr as VN30F_SESSIONS, J as VN_COLORS, nn as VOLUME_ALPHA, ze as alignToTimeframe, lt as autoPricePrecision, at as barDateParts, it as barDateZone, le as barTimeUnit, Ue as barsAreDaily, Fn as chartStyleValue, ne as clamp, yr as computePriceLimits, ge as computePriceRange, se as computeTickStep, gr as createVNTheme, gt as detectPrecision, Ut as drawingOption, W as en, pe as findBarIndex, he as fitPriceRange, ft as formatFraction, q as formatNumber, A as formatPrice, dt as formatPriceScaleLabel, Re as formatTimestamp, rr as formatVND, ht as formatVolume, ir as formatVolumeLoc, pt as fractionTick, wr as getCurrentSession, $n as getLocale, nr as getLocaleStrings, ve as hexToRgba, Lr as iconSvg, xt as indicatorSource, ie as inverseLerp, Ve as isDateOnly, vt as isPriceSource, Le as isTimeFrame, S as isUtcTimeZone, y as isValidTimeZone, re as lerp, xe as lerpColor, An as lineDash, Ft as marketStatus, _e as mergeBar, oe as niceNumber, de as normalizeBar, ue as normalizeBarTime, C as offsetAt, me as padPriceRange, St as parseIndicatorSource, T as parseTimeframe, Yn as phiStep, kt as pickBaseTimeframe, mt as priceFormatterFor, _r as priceStepAt, ct as priceTagText, jt as rankSymbols, En as readChartStyleOverrides, Qt as readChartTypeOptions, kn as readIndicatorPlotStyles, te as readNews, Dn as readPaneStyle, l as readQuote, tr as registerLocale, Tt as resampleBars, Mn as resolveChartTheme, Wt as resolveDrawingOptions, _n as resolveVolumeColors, Z as roundToPriceStep, ae as roundToStep, Vt as sanitizeDrawingOptions, Zt as sanitizeDrawingStyle, br as scaleMarketPrices, M as sessionMinute, Qn as setLocale, fe as sliceVisibleData, yt as sourcePrice, Mt as stepDecimals, Nt as symbolTimeZone, er as t, Ie as tickBarCount, Be as timeParts, nt as timeframeBucketStart, $e as timeframeFollowsDays, et as timeframeSpansDays, E as timeframeToMs, We as tzLabel, Xn as vi, kr as vn30fContracts, Or as vn30fLastTradingDay, B as volumeColor, Ae as wallToUtc, m as withAlpha, b as zoneOffsetMinutes, Me as zonedDateFormatter };
|
|
2531
2575
|
|
|
2532
2576
|
//# sourceMappingURL=index.js.map
|