@tradecanvas/commons 1.50.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 +459 -393
- 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 +41 -8
- 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 +13 -1
- package/dist/types/symbol.d.ts.map +1 -1
- package/dist/utils/color.d.ts +8 -0
- package/dist/utils/color.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,27 +339,49 @@ 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
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
352
|
+
var ye = 3;
|
|
353
|
+
function be(e) {
|
|
354
|
+
let t = e.trim(), n = /^#([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i.exec(t);
|
|
355
|
+
if (n) {
|
|
356
|
+
let e = n[1];
|
|
357
|
+
e.length <= 4 && (e = [...e].map((e) => e + e).join(""));
|
|
358
|
+
let t = (t) => parseInt(e.slice(t, t + 2), 16);
|
|
359
|
+
return {
|
|
360
|
+
r: t(0),
|
|
361
|
+
g: t(2),
|
|
362
|
+
b: t(4),
|
|
363
|
+
a: e.length === 8 ? t(6) / 255 : 1
|
|
364
|
+
};
|
|
365
|
+
}
|
|
366
|
+
let r = /^rgba?\(\s*([\d.]+)[\s,]+([\d.]+)[\s,]+([\d.]+)(?:\s*[,/]\s*([\d.]+)(%)?)?\s*\)$/i.exec(t);
|
|
367
|
+
if (!r) return null;
|
|
368
|
+
let i = r[4] === void 0 ? 1 : Number(r[4]) / (r[5] ? 100 : 1);
|
|
369
|
+
return {
|
|
370
|
+
r: Number(r[1]),
|
|
371
|
+
g: Number(r[2]),
|
|
372
|
+
b: Number(r[3]),
|
|
373
|
+
a: Math.min(1, Math.max(0, i))
|
|
374
|
+
};
|
|
375
|
+
}
|
|
376
|
+
function xe(e, t, n) {
|
|
377
|
+
let r = be(e), i = be(t);
|
|
378
|
+
if (!r || !i) return n < .5 ? e : t;
|
|
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(ye))})`;
|
|
359
381
|
}
|
|
360
382
|
//#endregion
|
|
361
383
|
//#region src/utils/timezone.ts
|
|
362
|
-
var
|
|
384
|
+
var h = 6e4, Se = 1440 * h, g = 15 * h, Ce = 8192, _ = 7 * Se, we = 4096, Te = new Set([
|
|
363
385
|
"UTC",
|
|
364
386
|
"Etc/UTC",
|
|
365
387
|
"GMT",
|
|
@@ -370,9 +392,9 @@ var g = 6e4, _ = 1440 * g, v = 15 * g, ye = 8192, y = 7 * _, be = 4096, xe = new
|
|
|
370
392
|
"Etc/Universal",
|
|
371
393
|
"Zulu",
|
|
372
394
|
"Etc/Zulu"
|
|
373
|
-
]),
|
|
374
|
-
function
|
|
375
|
-
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);
|
|
376
398
|
return t || (t = new Intl.DateTimeFormat("en-US", {
|
|
377
399
|
timeZone: e,
|
|
378
400
|
hourCycle: "h23",
|
|
@@ -382,34 +404,34 @@ function we(e) {
|
|
|
382
404
|
hour: "numeric",
|
|
383
405
|
minute: "numeric",
|
|
384
406
|
second: "numeric"
|
|
385
|
-
}),
|
|
407
|
+
}), Ee.set(e, t)), t;
|
|
386
408
|
}
|
|
387
|
-
function
|
|
409
|
+
function y(e) {
|
|
388
410
|
if (!e) return !1;
|
|
389
411
|
try {
|
|
390
|
-
return
|
|
412
|
+
return Oe(e), !0;
|
|
391
413
|
} catch {
|
|
392
414
|
return !1;
|
|
393
415
|
}
|
|
394
416
|
}
|
|
395
|
-
function
|
|
396
|
-
if (!Number.isFinite(t) ||
|
|
397
|
-
let n =
|
|
398
|
-
n || (n = /* @__PURE__ */ new Map(),
|
|
399
|
-
let r = Math.floor(t /
|
|
400
|
-
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;
|
|
401
423
|
}
|
|
402
|
-
function
|
|
403
|
-
let n =
|
|
424
|
+
function ke(e, t) {
|
|
425
|
+
let n = x(e, t), r = t + _ - g, i = x(e, r);
|
|
404
426
|
if (i === n) return {
|
|
405
427
|
before: n,
|
|
406
428
|
change: Infinity,
|
|
407
429
|
after: i
|
|
408
430
|
};
|
|
409
431
|
let a = t;
|
|
410
|
-
for (; r - a >
|
|
411
|
-
let t = a + Math.floor((r - a) /
|
|
412
|
-
|
|
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;
|
|
413
435
|
}
|
|
414
436
|
return {
|
|
415
437
|
before: n,
|
|
@@ -417,11 +439,11 @@ function Te(e, t) {
|
|
|
417
439
|
after: i
|
|
418
440
|
};
|
|
419
441
|
}
|
|
420
|
-
function
|
|
421
|
-
let n = Math.floor(t /
|
|
442
|
+
function x(e, t) {
|
|
443
|
+
let n = Math.floor(t / g), r = `${e}|${n}`, i = v.get(r);
|
|
422
444
|
if (i !== void 0) return i;
|
|
423
|
-
let a = n *
|
|
424
|
-
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))) {
|
|
425
447
|
let e = Number(t.value);
|
|
426
448
|
switch (t.type) {
|
|
427
449
|
case "year":
|
|
@@ -444,21 +466,24 @@ function C(e, t) {
|
|
|
444
466
|
break;
|
|
445
467
|
}
|
|
446
468
|
}
|
|
447
|
-
let f = Math.round((Date.UTC(o, s - 1, c, l, u, d) - a) /
|
|
448
|
-
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;
|
|
449
471
|
}
|
|
450
|
-
function
|
|
451
|
-
return e ===
|
|
472
|
+
function S(e) {
|
|
473
|
+
return e === 0 || typeof e == "string" && Te.has(e);
|
|
452
474
|
}
|
|
453
|
-
function
|
|
454
|
-
|
|
455
|
-
if (n + w(t, n) * g === e) return n;
|
|
456
|
-
let r = e - w(t, e + _) * g;
|
|
457
|
-
return r + w(t, r) * g === e ? r : n;
|
|
475
|
+
function C(e, t) {
|
|
476
|
+
return e === null ? -new Date(t).getTimezoneOffset() : typeof e == "number" ? e : b(e, t);
|
|
458
477
|
}
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
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;
|
|
483
|
+
}
|
|
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);
|
|
462
487
|
if (i) return i;
|
|
463
488
|
let a = n === null ? void 0 : typeof n == "number" ? "UTC" : n, o;
|
|
464
489
|
try {
|
|
@@ -472,12 +497,12 @@ function Oe(e, t, n) {
|
|
|
472
497
|
timeZone: a
|
|
473
498
|
});
|
|
474
499
|
}
|
|
475
|
-
let s = typeof n == "number" ? n *
|
|
476
|
-
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;
|
|
477
502
|
}
|
|
478
503
|
//#endregion
|
|
479
504
|
//#region src/utils/time.ts
|
|
480
|
-
var
|
|
505
|
+
var Ne = {
|
|
481
506
|
"1s": 1e3,
|
|
482
507
|
"5s": 5e3,
|
|
483
508
|
"15s": 15e3,
|
|
@@ -504,16 +529,16 @@ var ke = {
|
|
|
504
529
|
"3M": 7776e6,
|
|
505
530
|
"6M": 15552e6,
|
|
506
531
|
"12M": 31536e6
|
|
507
|
-
},
|
|
532
|
+
}, w = {
|
|
508
533
|
s: 1e3,
|
|
509
534
|
m: 6e4,
|
|
510
535
|
h: 36e5,
|
|
511
536
|
d: 864e5,
|
|
512
537
|
w: 6048e5,
|
|
513
538
|
M: 2592e6
|
|
514
|
-
},
|
|
539
|
+
}, Pe = /^([1-9]\d*)([smhdwM])$/;
|
|
515
540
|
function T(e) {
|
|
516
|
-
let t =
|
|
541
|
+
let t = Pe.exec(e);
|
|
517
542
|
if (!t) return null;
|
|
518
543
|
let n = Number(t[1]);
|
|
519
544
|
return Number.isSafeInteger(n) ? {
|
|
@@ -521,23 +546,23 @@ function T(e) {
|
|
|
521
546
|
unit: t[2]
|
|
522
547
|
} : null;
|
|
523
548
|
}
|
|
524
|
-
var
|
|
525
|
-
function
|
|
549
|
+
var Fe = 1e6;
|
|
550
|
+
function Ie(e) {
|
|
526
551
|
let t = /^([1-9]\d*)T$/.exec(e);
|
|
527
552
|
if (!t) return null;
|
|
528
553
|
let n = Number(t[1]);
|
|
529
|
-
return Number.isSafeInteger(n) && n <=
|
|
554
|
+
return Number.isSafeInteger(n) && n <= Fe ? n : null;
|
|
530
555
|
}
|
|
531
|
-
function
|
|
556
|
+
function Le(e) {
|
|
532
557
|
return T(e) !== null;
|
|
533
558
|
}
|
|
534
559
|
function E(e) {
|
|
535
|
-
let t =
|
|
560
|
+
let t = Ne[e];
|
|
536
561
|
if (t !== void 0) return t;
|
|
537
562
|
let n = T(e);
|
|
538
|
-
return n ? n.count *
|
|
563
|
+
return n ? n.count * w[n.unit] : NaN;
|
|
539
564
|
}
|
|
540
|
-
function
|
|
565
|
+
function Re(e, t) {
|
|
541
566
|
let n = new Date(e), r = E(t);
|
|
542
567
|
return r >= 864e5 ? n.toLocaleDateString(void 0, {
|
|
543
568
|
month: "short",
|
|
@@ -551,11 +576,11 @@ function Fe(e, t) {
|
|
|
551
576
|
second: "2-digit"
|
|
552
577
|
});
|
|
553
578
|
}
|
|
554
|
-
function
|
|
579
|
+
function ze(e, t) {
|
|
555
580
|
let n = E(t);
|
|
556
581
|
return Math.floor(e / n) * n;
|
|
557
582
|
}
|
|
558
|
-
function
|
|
583
|
+
function Be(e, t) {
|
|
559
584
|
if (t === null) {
|
|
560
585
|
let t = new Date(e);
|
|
561
586
|
return {
|
|
@@ -566,7 +591,7 @@ function Le(e, t) {
|
|
|
566
591
|
minutes: t.getMinutes()
|
|
567
592
|
};
|
|
568
593
|
}
|
|
569
|
-
let n = new Date(e +
|
|
594
|
+
let n = new Date(e + C(t, e) * 6e4);
|
|
570
595
|
return {
|
|
571
596
|
year: n.getUTCFullYear(),
|
|
572
597
|
month: n.getUTCMonth() + 1,
|
|
@@ -575,93 +600,122 @@ function Le(e, t) {
|
|
|
575
600
|
minutes: n.getUTCMinutes()
|
|
576
601
|
};
|
|
577
602
|
}
|
|
578
|
-
function
|
|
603
|
+
function Ve(e) {
|
|
579
604
|
return e.hours === 0 && e.minutes === 0;
|
|
580
605
|
}
|
|
581
|
-
var
|
|
582
|
-
function
|
|
606
|
+
var He = 20 * 36e5;
|
|
607
|
+
function Ue(e) {
|
|
583
608
|
let t = Math.min(e.length, 64);
|
|
584
609
|
if (t < 2) return;
|
|
585
|
-
let n =
|
|
610
|
+
let n = le(e), r = Infinity;
|
|
586
611
|
for (let i = 1; i < t; i++) {
|
|
587
612
|
let t = Math.abs(e[i].time - e[i - 1].time) * n;
|
|
588
613
|
t > 0 && t < r && (r = t);
|
|
589
614
|
}
|
|
590
|
-
return r === Infinity ? void 0 : r >=
|
|
615
|
+
return r === Infinity ? void 0 : r >= He;
|
|
591
616
|
}
|
|
592
|
-
function
|
|
593
|
-
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;
|
|
594
619
|
return o === 0 ? `UTC${r}${a}` : `UTC${r}${a}:${String(o).padStart(2, "0")}`;
|
|
595
620
|
}
|
|
596
|
-
var
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
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;
|
|
605
652
|
}
|
|
606
|
-
let
|
|
607
|
-
if (
|
|
608
|
-
let e =
|
|
609
|
-
if (
|
|
610
|
-
let
|
|
611
|
-
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;
|
|
612
659
|
}
|
|
613
|
-
let
|
|
614
|
-
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));
|
|
615
668
|
}
|
|
616
669
|
//#endregion
|
|
617
670
|
//#region src/utils/precision.ts
|
|
618
|
-
var
|
|
619
|
-
function
|
|
620
|
-
let n = `${e}|${t}`, r =
|
|
621
|
-
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, {
|
|
622
675
|
minimumFractionDigits: t,
|
|
623
676
|
maximumFractionDigits: t
|
|
624
|
-
}),
|
|
677
|
+
}), k.set(n, r)), r;
|
|
625
678
|
}
|
|
626
|
-
function
|
|
627
|
-
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");
|
|
628
681
|
}
|
|
629
|
-
function
|
|
630
|
-
return
|
|
682
|
+
function A(e, t = 2, n = "en-US") {
|
|
683
|
+
return st(n, t).format(e);
|
|
631
684
|
}
|
|
632
|
-
function
|
|
685
|
+
function lt(e, t) {
|
|
633
686
|
if (!(t > e) || !Number.isFinite(e) || !Number.isFinite(t)) return 2;
|
|
634
|
-
let n =
|
|
687
|
+
let n = se(e, t, 8);
|
|
635
688
|
return n > 0 && n < 1 ? Math.ceil(-Math.log10(n)) + 1 : 2;
|
|
636
689
|
}
|
|
637
|
-
|
|
690
|
+
var ut = 2;
|
|
691
|
+
function dt(e, t, n, r = 2, i = "en-US") {
|
|
638
692
|
if ((t === "percentage" || t === "indexedTo100") && n && n !== 0) {
|
|
639
693
|
if (t === "percentage") {
|
|
640
|
-
let t = (e / n - 1) * 100;
|
|
641
|
-
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}%`;
|
|
642
696
|
}
|
|
643
|
-
return
|
|
697
|
+
return A(e / n * 100, 2, i);
|
|
644
698
|
}
|
|
645
|
-
return
|
|
699
|
+
return A(e, r, i);
|
|
646
700
|
}
|
|
647
|
-
function
|
|
701
|
+
function ft(e, t, n = 1) {
|
|
648
702
|
let r = Number.isInteger(n) && n > 1 ? n : 1;
|
|
649
703
|
if (!Number.isFinite(e) || !Number.isInteger(t) || t < 2) return String(e);
|
|
650
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)) : "";
|
|
651
705
|
return `${e < 0 && a > 0 ? "-" : ""}${o}'${String(c).padStart(l, "0")}${u}`;
|
|
652
706
|
}
|
|
653
|
-
function
|
|
707
|
+
function pt(e) {
|
|
654
708
|
if (!Number.isInteger(e.denominator) || e.denominator < 2) return null;
|
|
655
709
|
let t = Number.isInteger(e.subDenominator) && (e.subDenominator ?? 0) > 1 ? e.subDenominator : 1;
|
|
656
710
|
return 1 / (e.denominator * t);
|
|
657
711
|
}
|
|
658
|
-
function
|
|
659
|
-
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;
|
|
660
714
|
}
|
|
661
|
-
function
|
|
715
|
+
function ht(e) {
|
|
662
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);
|
|
663
717
|
}
|
|
664
|
-
function
|
|
718
|
+
function gt(e) {
|
|
665
719
|
let t = 0;
|
|
666
720
|
for (let n of e) {
|
|
667
721
|
let e = n.toString(), r = e.indexOf(".");
|
|
@@ -671,7 +725,7 @@ function $e(e) {
|
|
|
671
725
|
}
|
|
672
726
|
//#endregion
|
|
673
727
|
//#region src/utils/priceSource.ts
|
|
674
|
-
var
|
|
728
|
+
var _t = [
|
|
675
729
|
"close",
|
|
676
730
|
"open",
|
|
677
731
|
"high",
|
|
@@ -681,10 +735,10 @@ var et = [
|
|
|
681
735
|
"ohlc4",
|
|
682
736
|
"hlcc4"
|
|
683
737
|
];
|
|
684
|
-
function
|
|
685
|
-
return typeof e == "string" &&
|
|
738
|
+
function vt(e) {
|
|
739
|
+
return typeof e == "string" && _t.includes(e);
|
|
686
740
|
}
|
|
687
|
-
function
|
|
741
|
+
function yt(e, t) {
|
|
688
742
|
switch (t) {
|
|
689
743
|
case "open": return e.open;
|
|
690
744
|
case "high": return e.high;
|
|
@@ -696,13 +750,13 @@ function nt(e, t) {
|
|
|
696
750
|
default: return e.close;
|
|
697
751
|
}
|
|
698
752
|
}
|
|
699
|
-
var
|
|
700
|
-
function
|
|
753
|
+
var bt = /^ind:([^:]+):(.+)$/;
|
|
754
|
+
function xt(e, t) {
|
|
701
755
|
return `ind:${e}:${t}`;
|
|
702
756
|
}
|
|
703
|
-
function
|
|
757
|
+
function St(e) {
|
|
704
758
|
if (typeof e != "string") return null;
|
|
705
|
-
let t =
|
|
759
|
+
let t = bt.exec(e);
|
|
706
760
|
return t ? {
|
|
707
761
|
instanceId: t[1],
|
|
708
762
|
key: t[2]
|
|
@@ -710,53 +764,65 @@ function at(e) {
|
|
|
710
764
|
}
|
|
711
765
|
//#endregion
|
|
712
766
|
//#region src/utils/resample.ts
|
|
713
|
-
var
|
|
714
|
-
function
|
|
715
|
-
let r = [],
|
|
716
|
-
for (let
|
|
717
|
-
let e =
|
|
718
|
-
|
|
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 = {
|
|
719
773
|
time: e,
|
|
720
|
-
open:
|
|
721
|
-
high:
|
|
722
|
-
low:
|
|
723
|
-
close:
|
|
724
|
-
volume:
|
|
725
|
-
},
|
|
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);
|
|
726
780
|
}
|
|
727
|
-
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
|
+
};
|
|
728
788
|
}
|
|
729
|
-
var
|
|
730
|
-
function
|
|
789
|
+
var j = (e) => e === "s" || e === "m" || e === "h" || e === "d";
|
|
790
|
+
function Dt(e, t) {
|
|
731
791
|
let n = T(e), r = T(t);
|
|
732
792
|
if (!n || !r) return !1;
|
|
733
793
|
let i = E(e);
|
|
734
|
-
return n.unit === "d" && n.count > 1 ? !1 :
|
|
735
|
-
}
|
|
736
|
-
function
|
|
737
|
-
let n =
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
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);
|
|
742
808
|
}
|
|
743
|
-
return
|
|
809
|
+
return a;
|
|
744
810
|
}
|
|
745
811
|
//#endregion
|
|
746
812
|
//#region src/utils/symbols.ts
|
|
747
|
-
function
|
|
813
|
+
function At(e, t) {
|
|
748
814
|
if (!e) return 0;
|
|
749
815
|
if (e === t) return 1e3;
|
|
750
816
|
if (e.startsWith(t)) return 600 - Math.min(100, e.length - t.length);
|
|
751
817
|
let n = e.indexOf(t);
|
|
752
818
|
return n >= 0 ? 300 - Math.min(100, n) : 0;
|
|
753
819
|
}
|
|
754
|
-
function
|
|
820
|
+
function jt(e, t, n = 50, r) {
|
|
755
821
|
let i = t.trim().toUpperCase();
|
|
756
822
|
if (!i) return e.slice(0, n);
|
|
757
823
|
let a = [];
|
|
758
824
|
for (let t of e) {
|
|
759
|
-
let e = Math.max(
|
|
825
|
+
let e = Math.max(At(t.symbol.toUpperCase(), i), At((t.description ?? "").toUpperCase(), i) * .8);
|
|
760
826
|
e > 0 && a.push({
|
|
761
827
|
info: t,
|
|
762
828
|
score: e + (r?.(t) ?? 0)
|
|
@@ -764,7 +830,7 @@ function dt(e, t, n = 50, r) {
|
|
|
764
830
|
}
|
|
765
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);
|
|
766
832
|
}
|
|
767
|
-
function
|
|
833
|
+
function Mt(e) {
|
|
768
834
|
let t = typeof e == "number" ? e : Number(e);
|
|
769
835
|
if (!Number.isFinite(t) || t <= 0) return 0;
|
|
770
836
|
for (let e = 0; e <= 12; e++) {
|
|
@@ -773,10 +839,10 @@ function ft(e) {
|
|
|
773
839
|
}
|
|
774
840
|
return 12;
|
|
775
841
|
}
|
|
776
|
-
function
|
|
842
|
+
function Nt(e) {
|
|
777
843
|
return e?.timeZone ?? e?.timezone;
|
|
778
844
|
}
|
|
779
|
-
function
|
|
845
|
+
function M(e) {
|
|
780
846
|
let t = /^(\d{1,2}):(\d{2})$/.exec(e.trim());
|
|
781
847
|
if (!t) return null;
|
|
782
848
|
let n = Number(t[1]), r = Number(t[2]);
|
|
@@ -784,26 +850,26 @@ function A(e) {
|
|
|
784
850
|
}
|
|
785
851
|
//#endregion
|
|
786
852
|
//#region src/utils/marketStatus.ts
|
|
787
|
-
var
|
|
788
|
-
function
|
|
789
|
-
let n =
|
|
790
|
-
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);
|
|
791
857
|
return t === null || n === null || t === n ? [] : [{
|
|
792
858
|
start: t,
|
|
793
859
|
end: n,
|
|
794
860
|
days: Array.isArray(e.days) ? e.days : null
|
|
795
861
|
}];
|
|
796
862
|
});
|
|
797
|
-
if (!n || !
|
|
863
|
+
if (!n || !y(n) || r.length === 0 || !Number.isFinite(t)) return {
|
|
798
864
|
state: "always",
|
|
799
865
|
next: null
|
|
800
866
|
};
|
|
801
|
-
let i =
|
|
802
|
-
for (let e = -1; e <=
|
|
803
|
-
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;
|
|
804
870
|
for (let e of r) {
|
|
805
871
|
if (e.days && !e.days.includes(n)) continue;
|
|
806
|
-
let r = t + e.start *
|
|
872
|
+
let r = t + e.start * P, i = (e.end > e.start ? t : t + N) + e.end * P;
|
|
807
873
|
s.push([o(r), o(i)]);
|
|
808
874
|
}
|
|
809
875
|
}
|
|
@@ -826,15 +892,15 @@ function ht(e, t) {
|
|
|
826
892
|
}
|
|
827
893
|
//#endregion
|
|
828
894
|
//#region src/utils/drawingOptions.ts
|
|
829
|
-
var
|
|
830
|
-
function
|
|
895
|
+
var It = 48, Lt = 2e3, Rt = 1e4;
|
|
896
|
+
function zt(e) {
|
|
831
897
|
if (!Array.isArray(e)) return;
|
|
832
898
|
let t = [];
|
|
833
899
|
for (let n of e) {
|
|
834
|
-
if (t.length >=
|
|
900
|
+
if (t.length >= It) break;
|
|
835
901
|
if (typeof n != "object" || !n) continue;
|
|
836
902
|
let { value: e, visible: r, color: i } = n;
|
|
837
|
-
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;
|
|
838
904
|
let a = {
|
|
839
905
|
value: e,
|
|
840
906
|
visible: r ?? !0
|
|
@@ -843,109 +909,109 @@ function yt(e) {
|
|
|
843
909
|
}
|
|
844
910
|
return t;
|
|
845
911
|
}
|
|
846
|
-
function
|
|
912
|
+
function Bt(e, t) {
|
|
847
913
|
switch (e.kind) {
|
|
848
914
|
case "boolean": return typeof t == "boolean" ? t : void 0;
|
|
849
915
|
case "number": return typeof t != "number" || !Number.isFinite(t) ? void 0 : Math.min(e.max ?? Infinity, Math.max(e.min ?? -Infinity, t));
|
|
850
916
|
case "choice": return typeof t == "string" && e.choices.some((e) => e.value === t) ? t : void 0;
|
|
851
|
-
case "levels": return
|
|
852
|
-
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;
|
|
853
919
|
}
|
|
854
920
|
}
|
|
855
|
-
function
|
|
921
|
+
function Vt(e, t) {
|
|
856
922
|
if (!e || typeof t != "object" || !t) return {};
|
|
857
923
|
let n = {};
|
|
858
924
|
for (let [r, i] of Object.entries(t)) {
|
|
859
925
|
let t = e[r];
|
|
860
926
|
if (!t) continue;
|
|
861
|
-
let a =
|
|
927
|
+
let a = Bt(t, i);
|
|
862
928
|
a !== void 0 && (n[r] = a);
|
|
863
929
|
}
|
|
864
930
|
return n;
|
|
865
931
|
}
|
|
866
|
-
function
|
|
932
|
+
function Ht(e) {
|
|
867
933
|
return Array.isArray(e) ? e.map((e) => ({ ...e })) : e;
|
|
868
934
|
}
|
|
869
|
-
function
|
|
935
|
+
function Ut(e, t, n) {
|
|
870
936
|
let r = e?.[n];
|
|
871
|
-
return r ?
|
|
937
|
+
return r ? Ht((t && n in t ? Bt(r, t[n]) : void 0) ?? r.default) : t?.[n];
|
|
872
938
|
}
|
|
873
|
-
function
|
|
939
|
+
function Wt(e, t) {
|
|
874
940
|
let n = {};
|
|
875
|
-
for (let r of Object.keys(e ?? {})) n[r] =
|
|
941
|
+
for (let r of Object.keys(e ?? {})) n[r] = Ut(e, t, r);
|
|
876
942
|
return n;
|
|
877
943
|
}
|
|
878
944
|
//#endregion
|
|
879
945
|
//#region src/utils/drawingStyle.ts
|
|
880
|
-
var
|
|
946
|
+
var Gt = [
|
|
881
947
|
"solid",
|
|
882
948
|
"dashed",
|
|
883
949
|
"dotted"
|
|
884
|
-
],
|
|
885
|
-
function
|
|
950
|
+
], Kt = 64, qt = 2e3, Jt = 20, Yt = 200;
|
|
951
|
+
function F(e, t, n) {
|
|
886
952
|
return typeof e == "number" && Number.isFinite(e) ? Math.min(n, Math.max(t, e)) : void 0;
|
|
887
953
|
}
|
|
888
|
-
function
|
|
889
|
-
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;
|
|
890
956
|
}
|
|
891
|
-
function
|
|
957
|
+
function Zt(e) {
|
|
892
958
|
if (typeof e != "object" || !e) return {};
|
|
893
|
-
let t = e, n = {}, r =
|
|
959
|
+
let t = e, n = {}, r = Xt(t.color);
|
|
894
960
|
r !== void 0 && (n.color = r);
|
|
895
|
-
let i =
|
|
896
|
-
i !== void 0 && (n.lineWidth = i),
|
|
897
|
-
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);
|
|
898
964
|
a !== void 0 && (n.fillColor = a);
|
|
899
|
-
let o =
|
|
965
|
+
let o = F(t.fillOpacity, 0, 1);
|
|
900
966
|
o !== void 0 && (n.fillOpacity = o);
|
|
901
|
-
let s =
|
|
902
|
-
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;
|
|
903
969
|
}
|
|
904
970
|
//#endregion
|
|
905
971
|
//#region src/utils/chartTypeOptions.ts
|
|
906
|
-
var
|
|
907
|
-
function
|
|
908
|
-
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 {};
|
|
909
975
|
let t = {};
|
|
910
|
-
if (
|
|
976
|
+
if (R(e.renko)) {
|
|
911
977
|
let { boxSize: n, atrPeriod: r } = e.renko;
|
|
912
978
|
t.renko = {
|
|
913
|
-
...
|
|
914
|
-
...
|
|
979
|
+
...I(n) || n === "atr" ? { boxSize: n } : {},
|
|
980
|
+
...L(r, 1, 500) ? { atrPeriod: r } : {}
|
|
915
981
|
};
|
|
916
982
|
}
|
|
917
|
-
if (
|
|
983
|
+
if (R(e.lineBreak)) {
|
|
918
984
|
let { lines: n } = e.lineBreak;
|
|
919
|
-
t.lineBreak =
|
|
985
|
+
t.lineBreak = L(n, 1, 10) ? { lines: n } : {};
|
|
920
986
|
}
|
|
921
|
-
if (
|
|
987
|
+
if (R(e.kagi)) {
|
|
922
988
|
let { reversal: n, reversalType: r } = e.kagi;
|
|
923
989
|
t.kagi = {
|
|
924
|
-
...
|
|
990
|
+
...I(n) ? { reversal: n } : {},
|
|
925
991
|
...r === "percent" || r === "price" ? { reversalType: r } : {}
|
|
926
992
|
};
|
|
927
993
|
}
|
|
928
|
-
if (
|
|
994
|
+
if (R(e.pointAndFigure)) {
|
|
929
995
|
let { boxSize: n, reversal: r } = e.pointAndFigure;
|
|
930
996
|
t.pointAndFigure = {
|
|
931
|
-
...
|
|
932
|
-
...
|
|
997
|
+
...I(n) || n === "auto" ? { boxSize: n } : {},
|
|
998
|
+
...L(r, 1, 10) ? { reversal: r } : {}
|
|
933
999
|
};
|
|
934
1000
|
}
|
|
935
|
-
if (
|
|
1001
|
+
if (R(e.rangeBars)) {
|
|
936
1002
|
let { range: n } = e.rangeBars;
|
|
937
|
-
t.rangeBars =
|
|
1003
|
+
t.rangeBars = I(n) || n === "auto" ? { range: n } : {};
|
|
938
1004
|
}
|
|
939
1005
|
return t;
|
|
940
1006
|
}
|
|
941
1007
|
//#endregion
|
|
942
1008
|
//#region src/constants/themes.ts
|
|
943
|
-
var
|
|
944
|
-
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,
|
|
945
1011
|
sizeSmall: 11,
|
|
946
1012
|
sizeMedium: 13,
|
|
947
1013
|
sizeLarge: 15
|
|
948
|
-
},
|
|
1014
|
+
}, z = {
|
|
949
1015
|
amber: "#f2a93b",
|
|
950
1016
|
up: "#1c9e6d",
|
|
951
1017
|
down: "#e8505b",
|
|
@@ -956,57 +1022,57 @@ var Nt = "'Cascadia Mono', 'SF Mono', ui-monospace, Menlo, Consolas, monospace",
|
|
|
956
1022
|
rose: "#e25592",
|
|
957
1023
|
neutral: "#7d8696",
|
|
958
1024
|
ink: "#131416"
|
|
959
|
-
},
|
|
960
|
-
function
|
|
961
|
-
return
|
|
962
|
-
}
|
|
963
|
-
var
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
],
|
|
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 = {
|
|
970
1036
|
name: "dark",
|
|
971
|
-
background:
|
|
972
|
-
text:
|
|
1037
|
+
background: an,
|
|
1038
|
+
text: H,
|
|
973
1039
|
textSecondary: "#8d8b86",
|
|
974
1040
|
grid: "#1d1e21",
|
|
975
|
-
crosshair:
|
|
976
|
-
candleUp:
|
|
977
|
-
candleDown:
|
|
978
|
-
candleUpWick:
|
|
979
|
-
candleDownWick:
|
|
980
|
-
lineColor:
|
|
981
|
-
areaTopColor:
|
|
982
|
-
areaBottomColor:
|
|
983
|
-
volumeUp:
|
|
984
|
-
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),
|
|
985
1051
|
axisLine: "#2a2b2f",
|
|
986
1052
|
axisLabel: "#a9a6a0",
|
|
987
1053
|
axisLabelBackground: "#232427",
|
|
988
|
-
font:
|
|
989
|
-
},
|
|
1054
|
+
font: tn
|
|
1055
|
+
}, mn = {
|
|
990
1056
|
name: "light",
|
|
991
|
-
background:
|
|
992
|
-
text:
|
|
1057
|
+
background: rn,
|
|
1058
|
+
text: V,
|
|
993
1059
|
textSecondary: "#6b6f76",
|
|
994
1060
|
grid: "#ece8df",
|
|
995
|
-
crosshair:
|
|
996
|
-
candleUp:
|
|
997
|
-
candleDown:
|
|
998
|
-
candleUpWick:
|
|
999
|
-
candleDownWick:
|
|
1000
|
-
lineColor:
|
|
1001
|
-
areaTopColor:
|
|
1002
|
-
areaBottomColor:
|
|
1003
|
-
volumeUp:
|
|
1004
|
-
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),
|
|
1005
1071
|
axisLine: "#cfcac0",
|
|
1006
1072
|
axisLabel: "#4a4e57",
|
|
1007
1073
|
axisLabelBackground: "#eeebe3",
|
|
1008
|
-
font:
|
|
1009
|
-
},
|
|
1074
|
+
font: tn
|
|
1075
|
+
}, hn = {
|
|
1010
1076
|
name: "terminal",
|
|
1011
1077
|
background: "#0E0E0E",
|
|
1012
1078
|
text: "#C0C0C0",
|
|
@@ -1020,8 +1086,8 @@ var Lt = "#fbfaf6", z = "#1b1d21", Rt = "#131416", B = "#e6e3dc", zt = "#1f7a5c"
|
|
|
1020
1086
|
lineColor: "#3D8BFD",
|
|
1021
1087
|
areaTopColor: "rgba(61, 139, 253, 0.3)",
|
|
1022
1088
|
areaBottomColor: "rgba(61, 139, 253, 0.0)",
|
|
1023
|
-
volumeUp:
|
|
1024
|
-
volumeDown:
|
|
1089
|
+
volumeUp: B("#00FF87"),
|
|
1090
|
+
volumeDown: B("#FF3B4D"),
|
|
1025
1091
|
axisLine: "#1A1A1A",
|
|
1026
1092
|
axisLabel: "#8A8A8A",
|
|
1027
1093
|
axisLabelBackground: "#1A1A1A",
|
|
@@ -1031,11 +1097,11 @@ var Lt = "#fbfaf6", z = "#1b1d21", Rt = "#131416", B = "#e6e3dc", zt = "#1f7a5c"
|
|
|
1031
1097
|
sizeMedium: 12,
|
|
1032
1098
|
sizeLarge: 14
|
|
1033
1099
|
}
|
|
1034
|
-
},
|
|
1035
|
-
function
|
|
1100
|
+
}, gn = new Set([hn.volumeUp, hn.volumeDown]);
|
|
1101
|
+
function _n(e) {
|
|
1036
1102
|
let t = (e, t) => {
|
|
1037
|
-
if (!
|
|
1038
|
-
let n =
|
|
1103
|
+
if (!gn.has(e)) return e;
|
|
1104
|
+
let n = B(t);
|
|
1039
1105
|
return n === t ? e : n;
|
|
1040
1106
|
};
|
|
1041
1107
|
return {
|
|
@@ -1045,67 +1111,67 @@ function Xt(e) {
|
|
|
1045
1111
|
}
|
|
1046
1112
|
//#endregion
|
|
1047
1113
|
//#region src/utils/chartStyle.ts
|
|
1048
|
-
var
|
|
1114
|
+
var vn = [
|
|
1049
1115
|
"solid",
|
|
1050
1116
|
"dashed",
|
|
1051
1117
|
"dotted"
|
|
1052
|
-
],
|
|
1118
|
+
], yn = 20, bn = 64, xn = 2, Sn = [
|
|
1053
1119
|
/^#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i,
|
|
1054
1120
|
/^[a-z]{3,30}$/i,
|
|
1055
1121
|
/^(?:rgba?|hsla?|hwb|lab|lch|oklab|oklch|color)\([0-9a-z.,%/\s-]*\)$/i
|
|
1056
1122
|
];
|
|
1057
|
-
function
|
|
1058
|
-
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()));
|
|
1059
1125
|
}
|
|
1060
|
-
function
|
|
1126
|
+
function wn(e, t) {
|
|
1061
1127
|
switch (e) {
|
|
1062
|
-
case "color": return
|
|
1063
|
-
case "lineStyle": return
|
|
1064
|
-
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;
|
|
1065
1131
|
case "boolean": return typeof t == "boolean";
|
|
1066
1132
|
}
|
|
1067
1133
|
}
|
|
1068
|
-
function
|
|
1134
|
+
function Tn(e) {
|
|
1069
1135
|
return Object.prototype.hasOwnProperty.call(t, e);
|
|
1070
1136
|
}
|
|
1071
|
-
function
|
|
1137
|
+
function En(e) {
|
|
1072
1138
|
let n = {}, r = [];
|
|
1073
1139
|
if (typeof e != "object" || !e || Array.isArray(e)) return {
|
|
1074
1140
|
overrides: {},
|
|
1075
1141
|
rejected: r
|
|
1076
1142
|
};
|
|
1077
|
-
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);
|
|
1078
1144
|
return {
|
|
1079
1145
|
overrides: n,
|
|
1080
1146
|
rejected: r
|
|
1081
1147
|
};
|
|
1082
1148
|
}
|
|
1083
|
-
function
|
|
1149
|
+
function Dn(e) {
|
|
1084
1150
|
if (typeof e != "object" || !e || Array.isArray(e)) return null;
|
|
1085
1151
|
let { background: t, separator: n } = e, r = {
|
|
1086
|
-
...
|
|
1087
|
-
...
|
|
1152
|
+
...Cn(t) ? { background: t } : {},
|
|
1153
|
+
...Cn(n) ? { separator: n } : {}
|
|
1088
1154
|
};
|
|
1089
1155
|
return Object.keys(r).length > 0 ? r : null;
|
|
1090
1156
|
}
|
|
1091
|
-
var
|
|
1092
|
-
function
|
|
1157
|
+
var On = /^[A-Za-z0-9_]{1,32}$/;
|
|
1158
|
+
function kn(e) {
|
|
1093
1159
|
if (typeof e != "object" || !e || Array.isArray(e)) return;
|
|
1094
1160
|
let t = {};
|
|
1095
1161
|
for (let [n, r] of Object.entries(e)) {
|
|
1096
|
-
if (!
|
|
1162
|
+
if (!On.test(n) || typeof r != "object" || !r) continue;
|
|
1097
1163
|
let { lineStyle: e, visible: i } = r, a = {
|
|
1098
|
-
...
|
|
1164
|
+
...vn.includes(e) ? { lineStyle: e } : {},
|
|
1099
1165
|
...typeof i == "boolean" ? { visible: i } : {}
|
|
1100
1166
|
};
|
|
1101
1167
|
Object.keys(a).length > 0 && (t[n] = a);
|
|
1102
1168
|
}
|
|
1103
1169
|
return Object.keys(t).length > 0 ? t : void 0;
|
|
1104
1170
|
}
|
|
1105
|
-
function
|
|
1171
|
+
function An(e, t, n = 1) {
|
|
1106
1172
|
return e === "solid" ? [] : e === "dotted" ? [n, n * 2] : [...t];
|
|
1107
1173
|
}
|
|
1108
|
-
function
|
|
1174
|
+
function jn(e, t, n) {
|
|
1109
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;
|
|
1110
1176
|
return {
|
|
1111
1177
|
up: o,
|
|
@@ -1113,12 +1179,12 @@ function un(e, t, n) {
|
|
|
1113
1179
|
wickUp: r("wickUpColor") ?? t("series.candlestick.wickUpColor") ?? (i === void 0 ? e.candleUpWick : o),
|
|
1114
1180
|
wickDown: r("wickDownColor") ?? t("series.candlestick.wickDownColor") ?? (a === void 0 ? e.candleDownWick : s),
|
|
1115
1181
|
line: r("color") ?? r("lineColor") ?? t("series.line.color") ?? e.lineColor,
|
|
1116
|
-
lineWidth: r("lineWidth") ?? t("series.line.lineWidth") ??
|
|
1182
|
+
lineWidth: r("lineWidth") ?? t("series.line.lineWidth") ?? xn,
|
|
1117
1183
|
top: r("topColor") ?? t("series.area.topColor") ?? e.areaTopColor,
|
|
1118
1184
|
bottom: r("bottomColor") ?? t("series.area.bottomColor") ?? e.areaBottomColor
|
|
1119
1185
|
};
|
|
1120
1186
|
}
|
|
1121
|
-
function
|
|
1187
|
+
function U(e, t, n) {
|
|
1122
1188
|
return {
|
|
1123
1189
|
visible: e(`${t}.visible`) ?? n.visible,
|
|
1124
1190
|
color: e(`${t}.color`) ?? n.color,
|
|
@@ -1126,21 +1192,21 @@ function H(e, t, n) {
|
|
|
1126
1192
|
width: e(`${t}.width`) ?? n.width
|
|
1127
1193
|
};
|
|
1128
1194
|
}
|
|
1129
|
-
function
|
|
1130
|
-
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 = {
|
|
1131
1197
|
panes: {
|
|
1132
1198
|
background: l("panes.background", c),
|
|
1133
1199
|
separator: l("panes.separatorColor", i.axisLine),
|
|
1134
1200
|
title: l("panes.titleColor", i.textSecondary)
|
|
1135
1201
|
},
|
|
1136
1202
|
grid: {
|
|
1137
|
-
horizontal:
|
|
1203
|
+
horizontal: U(o, "grid.horizontal", {
|
|
1138
1204
|
visible: !0,
|
|
1139
1205
|
color: i.grid,
|
|
1140
1206
|
style: "solid",
|
|
1141
1207
|
width: 1
|
|
1142
1208
|
}),
|
|
1143
|
-
vertical:
|
|
1209
|
+
vertical: U(o, "grid.vertical", {
|
|
1144
1210
|
visible: !0,
|
|
1145
1211
|
color: i.grid,
|
|
1146
1212
|
style: "solid",
|
|
@@ -1148,13 +1214,13 @@ function dn(e, t, n) {
|
|
|
1148
1214
|
})
|
|
1149
1215
|
},
|
|
1150
1216
|
crosshair: {
|
|
1151
|
-
horizontal:
|
|
1217
|
+
horizontal: U(o, "crosshair.horizontal", {
|
|
1152
1218
|
visible: !0,
|
|
1153
1219
|
color: i.crosshair,
|
|
1154
1220
|
style: "solid",
|
|
1155
1221
|
width: 1
|
|
1156
1222
|
}),
|
|
1157
|
-
vertical:
|
|
1223
|
+
vertical: U(o, "crosshair.vertical", {
|
|
1158
1224
|
visible: !0,
|
|
1159
1225
|
color: i.crosshair,
|
|
1160
1226
|
style: "solid",
|
|
@@ -1226,7 +1292,7 @@ function dn(e, t, n) {
|
|
|
1226
1292
|
style: d
|
|
1227
1293
|
};
|
|
1228
1294
|
}
|
|
1229
|
-
var
|
|
1295
|
+
var Nn = {
|
|
1230
1296
|
"background.color": (e) => e.background,
|
|
1231
1297
|
"panes.background": (e, t) => t.panes.background,
|
|
1232
1298
|
"panes.separatorColor": (e, t) => t.panes.separator,
|
|
@@ -1245,8 +1311,8 @@ var fn = {
|
|
|
1245
1311
|
"lastPrice.downColor": (e, t) => t.lastPrice.down,
|
|
1246
1312
|
"lastPrice.style": (e, t) => t.lastPrice.style,
|
|
1247
1313
|
"lastPrice.width": (e, t) => t.lastPrice.width,
|
|
1248
|
-
"volume.upColor": (e) =>
|
|
1249
|
-
"volume.downColor": (e) =>
|
|
1314
|
+
"volume.upColor": (e) => _n(e).up,
|
|
1315
|
+
"volume.downColor": (e) => _n(e).down,
|
|
1250
1316
|
"sessionBreaks.color": (e, t) => t.sessionBreaks.color,
|
|
1251
1317
|
"sessionBreaks.style": (e, t) => t.sessionBreaks.style,
|
|
1252
1318
|
"sessionBreaks.width": (e, t) => t.sessionBreaks.width,
|
|
@@ -1263,16 +1329,16 @@ var fn = {
|
|
|
1263
1329
|
"tradeZones.lossColor": (e, t) => t.tradeZones.loss,
|
|
1264
1330
|
"tradeZones.activeColor": (e, t) => t.tradeZones.active,
|
|
1265
1331
|
"drawings.handleColor": (e, t) => t.drawings.handle
|
|
1266
|
-
},
|
|
1332
|
+
}, Pn = {
|
|
1267
1333
|
visible: "visible",
|
|
1268
1334
|
color: "color",
|
|
1269
1335
|
style: "style",
|
|
1270
1336
|
width: "width"
|
|
1271
1337
|
};
|
|
1272
|
-
function
|
|
1338
|
+
function Fn(e, t, n, r = "candlestick") {
|
|
1273
1339
|
let i = n.split(".");
|
|
1274
1340
|
if (i[0] === "series") {
|
|
1275
|
-
let n =
|
|
1341
|
+
let n = jn(e, (e) => t[e], i[1]);
|
|
1276
1342
|
switch (i[2]) {
|
|
1277
1343
|
case "upColor": return n.up;
|
|
1278
1344
|
case "downColor": return n.down;
|
|
@@ -1285,12 +1351,12 @@ function mn(e, t, n, r = "candlestick") {
|
|
|
1285
1351
|
case "bottomColor": return n.bottom;
|
|
1286
1352
|
}
|
|
1287
1353
|
}
|
|
1288
|
-
let a =
|
|
1289
|
-
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;
|
|
1290
1356
|
}
|
|
1291
1357
|
//#endregion
|
|
1292
1358
|
//#region src/constants/defaults.ts
|
|
1293
|
-
var
|
|
1359
|
+
var In = {
|
|
1294
1360
|
autoScale: !0,
|
|
1295
1361
|
rightMargin: 5,
|
|
1296
1362
|
minBarSpacing: 2,
|
|
@@ -1301,7 +1367,7 @@ var hn = {
|
|
|
1301
1367
|
vLineStyle: "solid"
|
|
1302
1368
|
},
|
|
1303
1369
|
crosshair: { mode: "magnet" }
|
|
1304
|
-
},
|
|
1370
|
+
}, Ln = [
|
|
1305
1371
|
"1s",
|
|
1306
1372
|
"1m",
|
|
1307
1373
|
"3m",
|
|
@@ -1318,7 +1384,7 @@ var hn = {
|
|
|
1318
1384
|
"3d",
|
|
1319
1385
|
"1w",
|
|
1320
1386
|
"1M"
|
|
1321
|
-
],
|
|
1387
|
+
], Rn = [
|
|
1322
1388
|
"1m",
|
|
1323
1389
|
"5m",
|
|
1324
1390
|
"15m",
|
|
@@ -1332,7 +1398,7 @@ var hn = {
|
|
|
1332
1398
|
"3M",
|
|
1333
1399
|
"6M",
|
|
1334
1400
|
"12M"
|
|
1335
|
-
],
|
|
1401
|
+
], zn = [
|
|
1336
1402
|
"1m",
|
|
1337
1403
|
"5m",
|
|
1338
1404
|
"15m",
|
|
@@ -1342,7 +1408,7 @@ var hn = {
|
|
|
1342
1408
|
"1d",
|
|
1343
1409
|
"1w",
|
|
1344
1410
|
"1M"
|
|
1345
|
-
],
|
|
1411
|
+
], Bn = [
|
|
1346
1412
|
"1m",
|
|
1347
1413
|
"5m",
|
|
1348
1414
|
"15m",
|
|
@@ -1350,7 +1416,7 @@ var hn = {
|
|
|
1350
1416
|
"4h",
|
|
1351
1417
|
"1d",
|
|
1352
1418
|
"1w"
|
|
1353
|
-
],
|
|
1419
|
+
], Vn = 8, Hn = 2, Un = 70, Wn = 30, Gn = 60, Kn = 120, qn = (1 + Math.sqrt(5)) / 2, Jn = [
|
|
1354
1420
|
1,
|
|
1355
1421
|
2,
|
|
1356
1422
|
3,
|
|
@@ -1362,12 +1428,12 @@ var hn = {
|
|
|
1362
1428
|
55,
|
|
1363
1429
|
89
|
|
1364
1430
|
];
|
|
1365
|
-
function
|
|
1366
|
-
return Math.round(e *
|
|
1431
|
+
function Yn(e, t, n = 1) {
|
|
1432
|
+
return Math.round(e * qn ** (t / n));
|
|
1367
1433
|
}
|
|
1368
1434
|
//#endregion
|
|
1369
1435
|
//#region src/i18n/en.ts
|
|
1370
|
-
var
|
|
1436
|
+
var W = {
|
|
1371
1437
|
candlestick: "Candlestick",
|
|
1372
1438
|
line: "Line",
|
|
1373
1439
|
area: "Area",
|
|
@@ -1470,7 +1536,7 @@ var U = {
|
|
|
1470
1536
|
error: "Error",
|
|
1471
1537
|
numberDecimalSeparator: ".",
|
|
1472
1538
|
numberGroupSeparator: ","
|
|
1473
|
-
},
|
|
1539
|
+
}, Xn = {
|
|
1474
1540
|
candlestick: "Nến",
|
|
1475
1541
|
line: "Đường",
|
|
1476
1542
|
area: "Vùng",
|
|
@@ -1573,43 +1639,43 @@ var U = {
|
|
|
1573
1639
|
error: "Lỗi",
|
|
1574
1640
|
numberDecimalSeparator: ",",
|
|
1575
1641
|
numberGroupSeparator: "."
|
|
1576
|
-
},
|
|
1577
|
-
function
|
|
1578
|
-
|
|
1642
|
+
}, G = new Map([["en", W], ["vi", Xn]]), K = "en", Zn = W;
|
|
1643
|
+
function Qn(e) {
|
|
1644
|
+
K = e, Zn = G.get(e) ?? W;
|
|
1579
1645
|
}
|
|
1580
|
-
function
|
|
1581
|
-
return
|
|
1646
|
+
function $n() {
|
|
1647
|
+
return K;
|
|
1582
1648
|
}
|
|
1583
|
-
function
|
|
1584
|
-
return
|
|
1649
|
+
function er(e) {
|
|
1650
|
+
return Zn[e] ?? W[e] ?? e;
|
|
1585
1651
|
}
|
|
1586
|
-
function
|
|
1587
|
-
|
|
1652
|
+
function tr(e, t) {
|
|
1653
|
+
G.set(e, t);
|
|
1588
1654
|
}
|
|
1589
|
-
function
|
|
1590
|
-
return
|
|
1655
|
+
function nr(e) {
|
|
1656
|
+
return G.get(e ?? K) ?? W;
|
|
1591
1657
|
}
|
|
1592
|
-
function
|
|
1593
|
-
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 = "";
|
|
1594
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;
|
|
1595
1661
|
return c && (u = "-" + u), s ? u + i + s : u;
|
|
1596
1662
|
}
|
|
1597
|
-
function
|
|
1598
|
-
return
|
|
1663
|
+
function rr(e) {
|
|
1664
|
+
return q(e, 0, "vi");
|
|
1599
1665
|
}
|
|
1600
|
-
function
|
|
1601
|
-
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);
|
|
1602
1668
|
}
|
|
1603
1669
|
//#endregion
|
|
1604
1670
|
//#region src/market/presets.ts
|
|
1605
|
-
var
|
|
1671
|
+
var J = {
|
|
1606
1672
|
up: "#22C55E",
|
|
1607
1673
|
down: "#EF4444",
|
|
1608
1674
|
unchanged: "#EAB308",
|
|
1609
1675
|
ceiling: "#D946EF",
|
|
1610
1676
|
floor: "#06B6D4",
|
|
1611
1677
|
reference: "#EAB308"
|
|
1612
|
-
},
|
|
1678
|
+
}, Y = "Asia/Ho_Chi_Minh", ar = [
|
|
1613
1679
|
{
|
|
1614
1680
|
name: "ATO",
|
|
1615
1681
|
startTime: "09:00",
|
|
@@ -1640,7 +1706,7 @@ var q = {
|
|
|
1640
1706
|
endTime: "14:45",
|
|
1641
1707
|
type: "preClose"
|
|
1642
1708
|
}
|
|
1643
|
-
],
|
|
1709
|
+
], or = [
|
|
1644
1710
|
{
|
|
1645
1711
|
name: "Phiên 1",
|
|
1646
1712
|
startTime: "09:15",
|
|
@@ -1671,7 +1737,7 @@ var q = {
|
|
|
1671
1737
|
endTime: "15:00",
|
|
1672
1738
|
type: "postClose"
|
|
1673
1739
|
}
|
|
1674
|
-
],
|
|
1740
|
+
], sr = [
|
|
1675
1741
|
{
|
|
1676
1742
|
name: "Phiên 1",
|
|
1677
1743
|
startTime: "09:15",
|
|
@@ -1690,7 +1756,7 @@ var q = {
|
|
|
1690
1756
|
endTime: "14:30",
|
|
1691
1757
|
type: "continuous"
|
|
1692
1758
|
}
|
|
1693
|
-
],
|
|
1759
|
+
], cr = [
|
|
1694
1760
|
{
|
|
1695
1761
|
name: "ATO",
|
|
1696
1762
|
startTime: "08:45",
|
|
@@ -1721,7 +1787,7 @@ var q = {
|
|
|
1721
1787
|
endTime: "14:45",
|
|
1722
1788
|
type: "preClose"
|
|
1723
1789
|
}
|
|
1724
|
-
],
|
|
1790
|
+
], lr = {
|
|
1725
1791
|
type: "stock",
|
|
1726
1792
|
exchange: "HOSE",
|
|
1727
1793
|
currency: "VND",
|
|
@@ -1742,48 +1808,48 @@ var q = {
|
|
|
1742
1808
|
step: .1
|
|
1743
1809
|
}
|
|
1744
1810
|
],
|
|
1745
|
-
timeZone:
|
|
1811
|
+
timeZone: Y,
|
|
1746
1812
|
priceLimits: {
|
|
1747
1813
|
enabled: !0,
|
|
1748
1814
|
ceilingPercent: 7,
|
|
1749
1815
|
floorPercent: 7
|
|
1750
1816
|
},
|
|
1751
|
-
sessions:
|
|
1752
|
-
colorScheme:
|
|
1753
|
-
},
|
|
1754
|
-
...
|
|
1817
|
+
sessions: ar,
|
|
1818
|
+
colorScheme: J
|
|
1819
|
+
}, ur = {
|
|
1820
|
+
...lr,
|
|
1755
1821
|
priceSteps: void 0
|
|
1756
|
-
},
|
|
1822
|
+
}, dr = {
|
|
1757
1823
|
type: "stock",
|
|
1758
1824
|
exchange: "HNX",
|
|
1759
1825
|
currency: "VND",
|
|
1760
1826
|
pricePrecision: 1,
|
|
1761
1827
|
volumeUnit: 100,
|
|
1762
1828
|
priceStep: .1,
|
|
1763
|
-
timeZone:
|
|
1829
|
+
timeZone: Y,
|
|
1764
1830
|
priceLimits: {
|
|
1765
1831
|
enabled: !0,
|
|
1766
1832
|
ceilingPercent: 10,
|
|
1767
1833
|
floorPercent: 10
|
|
1768
1834
|
},
|
|
1769
|
-
sessions:
|
|
1770
|
-
colorScheme:
|
|
1771
|
-
},
|
|
1835
|
+
sessions: or,
|
|
1836
|
+
colorScheme: J
|
|
1837
|
+
}, fr = {
|
|
1772
1838
|
type: "stock",
|
|
1773
1839
|
exchange: "UPCOM",
|
|
1774
1840
|
currency: "VND",
|
|
1775
1841
|
pricePrecision: 1,
|
|
1776
1842
|
volumeUnit: 100,
|
|
1777
1843
|
priceStep: .1,
|
|
1778
|
-
timeZone:
|
|
1844
|
+
timeZone: Y,
|
|
1779
1845
|
priceLimits: {
|
|
1780
1846
|
enabled: !0,
|
|
1781
1847
|
ceilingPercent: 15,
|
|
1782
1848
|
floorPercent: 15
|
|
1783
1849
|
},
|
|
1784
|
-
sessions:
|
|
1785
|
-
colorScheme:
|
|
1786
|
-
},
|
|
1850
|
+
sessions: sr,
|
|
1851
|
+
colorScheme: J
|
|
1852
|
+
}, pr = {
|
|
1787
1853
|
type: "futures",
|
|
1788
1854
|
exchange: "HNX",
|
|
1789
1855
|
currency: "VND",
|
|
@@ -1791,20 +1857,20 @@ var q = {
|
|
|
1791
1857
|
volumeUnit: 1,
|
|
1792
1858
|
priceStep: .1,
|
|
1793
1859
|
contractMultiplier: 1e5,
|
|
1794
|
-
timeZone:
|
|
1860
|
+
timeZone: Y,
|
|
1795
1861
|
priceLimits: {
|
|
1796
1862
|
enabled: !0,
|
|
1797
1863
|
ceilingPercent: 7,
|
|
1798
1864
|
floorPercent: 7
|
|
1799
1865
|
},
|
|
1800
|
-
sessions:
|
|
1801
|
-
colorScheme:
|
|
1802
|
-
},
|
|
1866
|
+
sessions: cr,
|
|
1867
|
+
colorScheme: J
|
|
1868
|
+
}, mr = {
|
|
1803
1869
|
type: "crypto",
|
|
1804
1870
|
currency: "USDT",
|
|
1805
1871
|
pricePrecision: 2,
|
|
1806
1872
|
priceLimits: { enabled: !1 }
|
|
1807
|
-
},
|
|
1873
|
+
}, hr = {
|
|
1808
1874
|
type: "stock",
|
|
1809
1875
|
exchange: "NYSE",
|
|
1810
1876
|
currency: "USD",
|
|
@@ -1833,55 +1899,55 @@ var q = {
|
|
|
1833
1899
|
}
|
|
1834
1900
|
]
|
|
1835
1901
|
};
|
|
1836
|
-
function
|
|
1902
|
+
function gr(e) {
|
|
1837
1903
|
return {
|
|
1838
1904
|
...e,
|
|
1839
|
-
candleUp:
|
|
1840
|
-
candleDown:
|
|
1841
|
-
candleUpWick:
|
|
1842
|
-
candleDownWick:
|
|
1905
|
+
candleUp: J.up,
|
|
1906
|
+
candleDown: J.down,
|
|
1907
|
+
candleUpWick: J.up,
|
|
1908
|
+
candleDownWick: J.down
|
|
1843
1909
|
};
|
|
1844
1910
|
}
|
|
1845
|
-
var
|
|
1846
|
-
function
|
|
1911
|
+
var X = 1e-9;
|
|
1912
|
+
function _r(e, t) {
|
|
1847
1913
|
let n = t.priceStep;
|
|
1848
|
-
for (let r of t.priceSteps ?? []) e +
|
|
1914
|
+
for (let r of t.priceSteps ?? []) e + X >= r.from && (n = r.step);
|
|
1849
1915
|
return n !== void 0 && n > 0 ? n : void 0;
|
|
1850
1916
|
}
|
|
1851
|
-
function
|
|
1917
|
+
function vr(e, t) {
|
|
1852
1918
|
let n = t.priceStep;
|
|
1853
|
-
for (let r of t.priceSteps ?? []) e -
|
|
1919
|
+
for (let r of t.priceSteps ?? []) e - X > r.from && (n = r.step);
|
|
1854
1920
|
return n !== void 0 && n > 0 ? n : void 0;
|
|
1855
1921
|
}
|
|
1856
1922
|
function Z(e, t, n = "nearest") {
|
|
1857
|
-
let r =
|
|
1923
|
+
let r = _r(e, t);
|
|
1858
1924
|
if (r === void 0 || !Number.isFinite(e)) return e;
|
|
1859
|
-
let i = e / r, a = n === "down" ? Math.floor(i +
|
|
1860
|
-
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)));
|
|
1861
1927
|
}
|
|
1862
|
-
function
|
|
1928
|
+
function yr(e, t) {
|
|
1863
1929
|
if (!t.priceLimits?.enabled || !t.priceLimits.ceilingPercent) return null;
|
|
1864
|
-
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);
|
|
1865
1931
|
if (s === void 0) return {
|
|
1866
1932
|
ceiling: a,
|
|
1867
1933
|
floor: o,
|
|
1868
1934
|
reference: i
|
|
1869
1935
|
};
|
|
1870
1936
|
let c = Z(i + s, t);
|
|
1871
|
-
if (Math.abs(i - s) <
|
|
1937
|
+
if (Math.abs(i - s) < X) return {
|
|
1872
1938
|
ceiling: c,
|
|
1873
1939
|
floor: i,
|
|
1874
1940
|
reference: i
|
|
1875
1941
|
};
|
|
1876
1942
|
let l = Z(a, t, "down"), u = Z(o, t, "up");
|
|
1877
|
-
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), {
|
|
1878
1944
|
ceiling: l,
|
|
1879
1945
|
floor: u,
|
|
1880
1946
|
reference: i
|
|
1881
1947
|
};
|
|
1882
1948
|
}
|
|
1883
1949
|
var Q = (e, t) => Math.round(e * t * 1e9) / 1e9;
|
|
1884
|
-
function
|
|
1950
|
+
function br(e, t) {
|
|
1885
1951
|
let n = Math.round(Math.log10(t));
|
|
1886
1952
|
return {
|
|
1887
1953
|
...e,
|
|
@@ -1897,11 +1963,11 @@ function Qn(e, t) {
|
|
|
1897
1963
|
}
|
|
1898
1964
|
};
|
|
1899
1965
|
}
|
|
1900
|
-
var
|
|
1901
|
-
function
|
|
1966
|
+
var xr = 6e4, Sr = 864e5;
|
|
1967
|
+
function Cr(e, t) {
|
|
1902
1968
|
let n, r;
|
|
1903
1969
|
if (t) {
|
|
1904
|
-
let i = new Date(e +
|
|
1970
|
+
let i = new Date(e + b(t, e) * xr);
|
|
1905
1971
|
n = i.getUTCHours(), r = i.getUTCMinutes();
|
|
1906
1972
|
} else {
|
|
1907
1973
|
let t = new Date(e);
|
|
@@ -1909,31 +1975,31 @@ function tr(e, t) {
|
|
|
1909
1975
|
}
|
|
1910
1976
|
return `${String(n).padStart(2, "0")}:${String(r).padStart(2, "0")}`;
|
|
1911
1977
|
}
|
|
1912
|
-
function
|
|
1913
|
-
if (n !== void 0 && !
|
|
1914
|
-
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);
|
|
1915
1981
|
for (let t of e) if (r >= t.startTime && r < t.endTime) return t;
|
|
1916
1982
|
return null;
|
|
1917
1983
|
}
|
|
1918
|
-
var $ = (e) => String(e).padStart(2, "0"),
|
|
1984
|
+
var $ = (e) => String(e).padStart(2, "0"), Tr = (e) => {
|
|
1919
1985
|
let t = new Date(e);
|
|
1920
1986
|
return `${t.getUTCFullYear()}-${$(t.getUTCMonth() + 1)}-${$(t.getUTCDate())}`;
|
|
1921
|
-
},
|
|
1922
|
-
function
|
|
1923
|
-
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) => {
|
|
1924
1990
|
let t = new Date(e).getUTCDay();
|
|
1925
|
-
return t === 0 || t === 6 || (n?.(
|
|
1991
|
+
return t === 0 || t === 6 || (n?.(Tr(e)) ?? !1);
|
|
1926
1992
|
};
|
|
1927
|
-
for (; o(a);) a -=
|
|
1928
|
-
return
|
|
1993
|
+
for (; o(a);) a -= Sr;
|
|
1994
|
+
return Tr(a);
|
|
1929
1995
|
}
|
|
1930
|
-
function
|
|
1931
|
-
let n =
|
|
1996
|
+
function kr(e, t) {
|
|
1997
|
+
let n = Tr(e + Dr), r = (e, n) => ({
|
|
1932
1998
|
symbol: `VN30F${$(e % 100)}${$(n)}`,
|
|
1933
1999
|
year: e,
|
|
1934
2000
|
month: n,
|
|
1935
|
-
lastTradingDay:
|
|
1936
|
-
}), 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);
|
|
1937
2003
|
n > o.lastTradingDay && (o = i(o));
|
|
1938
2004
|
let s = [o, i(o)], c = i(s[1]);
|
|
1939
2005
|
for (; s.length < 4;) c.month % 3 == 0 && s.push(c), c = i(c);
|
|
@@ -1941,7 +2007,7 @@ function sr(e, t) {
|
|
|
1941
2007
|
}
|
|
1942
2008
|
//#endregion
|
|
1943
2009
|
//#region src/icons/iconSet.ts
|
|
1944
|
-
var
|
|
2010
|
+
var Ar = {
|
|
1945
2011
|
cursor: { d: "M6 3.5L18.5 12.5L12.6 13.6L9.7 19.4z" },
|
|
1946
2012
|
trendingUp: { d: "M3 17L9 11L13 14.5L21 6.5M15 6.5H21V12.5" },
|
|
1947
2013
|
trendingDown: { d: "M3 7L9 13L13 9.5L21 17.5M15 17.5H21V11.5" },
|
|
@@ -2070,7 +2136,7 @@ var cr = {
|
|
|
2070
2136
|
]
|
|
2071
2137
|
] },
|
|
2072
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" }
|
|
2073
|
-
},
|
|
2139
|
+
}, jr = {
|
|
2074
2140
|
trendLine: {
|
|
2075
2141
|
d: "M5 18L19 6",
|
|
2076
2142
|
dots: [[5, 18], [19, 6]]
|
|
@@ -2423,7 +2489,7 @@ var cr = {
|
|
|
2423
2489
|
],
|
|
2424
2490
|
dash: "M12 3V21"
|
|
2425
2491
|
}
|
|
2426
|
-
},
|
|
2492
|
+
}, Mr = {
|
|
2427
2493
|
candlestick: {
|
|
2428
2494
|
d: "M8 3.5V7M8 16V20.5M16 5V8.5M16 15.5V19",
|
|
2429
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"]
|
|
@@ -2490,21 +2556,21 @@ var cr = {
|
|
|
2490
2556
|
"M16 4.5h3v6h-3z"
|
|
2491
2557
|
]
|
|
2492
2558
|
}
|
|
2493
|
-
},
|
|
2494
|
-
function
|
|
2495
|
-
let t =
|
|
2559
|
+
}, Nr = 1.75, Pr = .22, Fr = /* @__PURE__ */ new WeakMap();
|
|
2560
|
+
function Ir(e) {
|
|
2561
|
+
let t = Fr.get(e);
|
|
2496
2562
|
if (t) return t;
|
|
2497
2563
|
let n = "";
|
|
2498
|
-
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"/>`);
|
|
2499
2565
|
for (let t of e.fills ?? []) n += `<path d="${t}" fill="currentColor" stroke="none"/>`;
|
|
2500
2566
|
e.d && (n += `<path d="${e.d}"/>`), e.dash && (n += `<path d="${e.dash}" stroke-dasharray="2 2.5"/>`);
|
|
2501
|
-
for (let [t, r, i =
|
|
2502
|
-
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;
|
|
2503
2569
|
}
|
|
2504
|
-
function
|
|
2505
|
-
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>`;
|
|
2506
2572
|
}
|
|
2507
2573
|
//#endregion
|
|
2508
|
-
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 };
|
|
2509
2575
|
|
|
2510
2576
|
//# sourceMappingURL=index.js.map
|