@tradecanvas/commons 1.57.0 → 1.59.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/i18n/index.d.ts +2 -0
- package/dist/i18n/index.d.ts.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +256 -252
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -245,26 +245,26 @@ function ae(e, t, n) {
|
|
|
245
245
|
function oe(e, t) {
|
|
246
246
|
return Math.round(e / t) * t;
|
|
247
247
|
}
|
|
248
|
-
function
|
|
248
|
+
function se(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 ce(e, t, n) {
|
|
253
|
+
return se(se(t - e, !1) / (n - 1), !0);
|
|
254
254
|
}
|
|
255
255
|
//#endregion
|
|
256
256
|
//#region src/utils/data.ts
|
|
257
|
-
var
|
|
258
|
-
function
|
|
257
|
+
var le = 1e11;
|
|
258
|
+
function ue(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 de(e, t) {
|
|
263
263
|
return t === void 0 ? Math.abs(e) >= 1e11 ? e : e * 1e3 : e * t;
|
|
264
264
|
}
|
|
265
|
-
function
|
|
265
|
+
function fe(e) {
|
|
266
266
|
return {
|
|
267
|
-
time:
|
|
267
|
+
time: de(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 de(e) {
|
|
|
272
272
|
volume: e.volume ?? e.v ?? 0
|
|
273
273
|
};
|
|
274
274
|
}
|
|
275
|
-
function
|
|
275
|
+
function pe(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 me(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 pe(e, t) {
|
|
|
286
286
|
}
|
|
287
287
|
return n;
|
|
288
288
|
}
|
|
289
|
-
function
|
|
289
|
+
function he(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 me(e, t, n, r = !1) {
|
|
|
301
301
|
max: t + a * n
|
|
302
302
|
};
|
|
303
303
|
}
|
|
304
|
-
function
|
|
304
|
+
function ge(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 he(e, t, n, r = !1) {
|
|
|
316
316
|
max: t + o * n.top
|
|
317
317
|
};
|
|
318
318
|
}
|
|
319
|
-
function
|
|
319
|
+
function _e(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 ge(e, t, n, r = .05, i = !1) {
|
|
|
326
326
|
return s === Infinity ? {
|
|
327
327
|
min: 0,
|
|
328
328
|
max: 1
|
|
329
|
-
} :
|
|
329
|
+
} : he(s, c, r, i);
|
|
330
330
|
}
|
|
331
|
-
function
|
|
331
|
+
function ve(e, t) {
|
|
332
332
|
return {
|
|
333
333
|
...e,
|
|
334
334
|
high: Math.max(e.high, t.price),
|
|
@@ -339,18 +339,18 @@ function _e(e, t) {
|
|
|
339
339
|
}
|
|
340
340
|
//#endregion
|
|
341
341
|
//#region src/utils/color.ts
|
|
342
|
-
function
|
|
342
|
+
function ye(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 p(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 ye(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 be = 3;
|
|
353
|
+
function xe(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,14 +373,14 @@ function h(e) {
|
|
|
373
373
|
a: Math.min(1, Math.max(0, i))
|
|
374
374
|
};
|
|
375
375
|
}
|
|
376
|
-
function
|
|
377
|
-
let r =
|
|
376
|
+
function Se(e, t, n) {
|
|
377
|
+
let r = xe(e), i = xe(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(be))})`;
|
|
381
381
|
}
|
|
382
|
-
function
|
|
383
|
-
let t =
|
|
382
|
+
function Ce(e) {
|
|
383
|
+
let t = xe(e);
|
|
384
384
|
if (!t) return null;
|
|
385
385
|
let n = (e) => {
|
|
386
386
|
let t = e / 255;
|
|
@@ -388,26 +388,26 @@ function xe(e) {
|
|
|
388
388
|
};
|
|
389
389
|
return .2126 * n(t.r) + .7152 * n(t.g) + .0722 * n(t.b);
|
|
390
390
|
}
|
|
391
|
-
function
|
|
392
|
-
let n =
|
|
391
|
+
function m(e, t) {
|
|
392
|
+
let n = Ce(e), r = Ce(t);
|
|
393
393
|
return n === null || r === null ? null : (Math.max(n, r) + .05) / (Math.min(n, r) + .05);
|
|
394
394
|
}
|
|
395
|
-
var
|
|
396
|
-
function
|
|
397
|
-
let i =
|
|
395
|
+
var we = 20;
|
|
396
|
+
function Te(e, t, n, r) {
|
|
397
|
+
let i = m(e, t);
|
|
398
398
|
if (i === null || i >= r) return e;
|
|
399
|
-
for (let i = 1; i <=
|
|
400
|
-
let a =
|
|
401
|
-
if ((
|
|
399
|
+
for (let i = 1; i <= we; i++) {
|
|
400
|
+
let a = Se(e, n, i / we);
|
|
401
|
+
if ((m(a, t) ?? 0) >= r) return a;
|
|
402
402
|
}
|
|
403
403
|
return n;
|
|
404
404
|
}
|
|
405
|
-
function
|
|
406
|
-
return (
|
|
405
|
+
function Ee(e, t, n) {
|
|
406
|
+
return (m(e, t) ?? 0) >= (m(e, n) ?? 0) ? t : n;
|
|
407
407
|
}
|
|
408
408
|
//#endregion
|
|
409
409
|
//#region src/utils/timezone.ts
|
|
410
|
-
var
|
|
410
|
+
var h = 6e4, De = 1440 * h, g = 15 * h, Oe = 8192, ke = 7 * De, Ae = 4096, je = new Set([
|
|
411
411
|
"UTC",
|
|
412
412
|
"Etc/UTC",
|
|
413
413
|
"GMT",
|
|
@@ -418,9 +418,9 @@ var _ = 6e4, Te = 1440 * _, v = 15 * _, Ee = 8192, De = 7 * Te, Oe = 4096, ke =
|
|
|
418
418
|
"Etc/Universal",
|
|
419
419
|
"Zulu",
|
|
420
420
|
"Etc/Zulu"
|
|
421
|
-
]),
|
|
422
|
-
function
|
|
423
|
-
let t =
|
|
421
|
+
]), Me = /* @__PURE__ */ new Map(), _ = /* @__PURE__ */ new Map(), Ne = /* @__PURE__ */ new Map();
|
|
422
|
+
function Pe(e) {
|
|
423
|
+
let t = Me.get(e);
|
|
424
424
|
return t || (t = new Intl.DateTimeFormat("en-US", {
|
|
425
425
|
timeZone: e,
|
|
426
426
|
hourCycle: "h23",
|
|
@@ -430,34 +430,34 @@ function Me(e) {
|
|
|
430
430
|
hour: "numeric",
|
|
431
431
|
minute: "numeric",
|
|
432
432
|
second: "numeric"
|
|
433
|
-
}),
|
|
433
|
+
}), Me.set(e, t)), t;
|
|
434
434
|
}
|
|
435
|
-
function
|
|
435
|
+
function v(e) {
|
|
436
436
|
if (!e) return !1;
|
|
437
437
|
try {
|
|
438
|
-
return
|
|
438
|
+
return Pe(e), !0;
|
|
439
439
|
} catch {
|
|
440
440
|
return !1;
|
|
441
441
|
}
|
|
442
442
|
}
|
|
443
|
-
function
|
|
444
|
-
if (!Number.isFinite(t) ||
|
|
445
|
-
let n =
|
|
446
|
-
n || (n = /* @__PURE__ */ new Map(),
|
|
447
|
-
let r = Math.floor(t /
|
|
448
|
-
return i || (i =
|
|
449
|
-
}
|
|
450
|
-
function
|
|
451
|
-
let n =
|
|
443
|
+
function y(e, t) {
|
|
444
|
+
if (!Number.isFinite(t) || je.has(e)) return 0;
|
|
445
|
+
let n = Ne.get(e);
|
|
446
|
+
n || (n = /* @__PURE__ */ new Map(), Ne.set(e, n));
|
|
447
|
+
let r = Math.floor(t / ke), i = n.get(r);
|
|
448
|
+
return i || (i = Fe(e, r * ke), n.size >= Ae && n.clear(), n.set(r, i)), t < i.change ? i.before : i.after;
|
|
449
|
+
}
|
|
450
|
+
function Fe(e, t) {
|
|
451
|
+
let n = b(e, t), r = t + ke - g, i = b(e, r);
|
|
452
452
|
if (i === n) return {
|
|
453
453
|
before: n,
|
|
454
454
|
change: Infinity,
|
|
455
455
|
after: i
|
|
456
456
|
};
|
|
457
457
|
let a = t;
|
|
458
|
-
for (; r - a >
|
|
459
|
-
let t = a + Math.floor((r - a) /
|
|
460
|
-
|
|
458
|
+
for (; r - a > g;) {
|
|
459
|
+
let t = a + Math.floor((r - a) / g / 2) * g;
|
|
460
|
+
b(e, t) === n ? a = t : r = t;
|
|
461
461
|
}
|
|
462
462
|
return {
|
|
463
463
|
before: n,
|
|
@@ -465,11 +465,11 @@ function Pe(e, t) {
|
|
|
465
465
|
after: i
|
|
466
466
|
};
|
|
467
467
|
}
|
|
468
|
-
function
|
|
469
|
-
let n = Math.floor(t /
|
|
468
|
+
function b(e, t) {
|
|
469
|
+
let n = Math.floor(t / g), r = `${e}|${n}`, i = _.get(r);
|
|
470
470
|
if (i !== void 0) return i;
|
|
471
|
-
let a = n *
|
|
472
|
-
for (let t of
|
|
471
|
+
let a = n * g, o = 1970, s = 1, c = 1, l = 0, u = 0, d = 0;
|
|
472
|
+
for (let t of Pe(e).formatToParts(new Date(a))) {
|
|
473
473
|
let e = Number(t.value);
|
|
474
474
|
switch (t.type) {
|
|
475
475
|
case "year":
|
|
@@ -492,20 +492,20 @@ function Fe(e, t) {
|
|
|
492
492
|
break;
|
|
493
493
|
}
|
|
494
494
|
}
|
|
495
|
-
let ee = Math.round((Date.UTC(o, s - 1, c, l, u, d) - a) /
|
|
496
|
-
return
|
|
495
|
+
let ee = Math.round((Date.UTC(o, s - 1, c, l, u, d) - a) / h);
|
|
496
|
+
return _.size >= Oe && _.clear(), _.set(r, ee), ee;
|
|
497
497
|
}
|
|
498
498
|
function x(e) {
|
|
499
|
-
return e === 0 || typeof e == "string" &&
|
|
499
|
+
return e === 0 || typeof e == "string" && je.has(e);
|
|
500
500
|
}
|
|
501
501
|
function S(e, t) {
|
|
502
|
-
return e === null ? -new Date(t).getTimezoneOffset() : typeof e == "number" ? e :
|
|
502
|
+
return e === null ? -new Date(t).getTimezoneOffset() : typeof e == "number" ? e : y(e, t);
|
|
503
503
|
}
|
|
504
504
|
function Ie(e, t) {
|
|
505
|
-
let n = e - S(t, e -
|
|
506
|
-
if (n + S(t, n) *
|
|
507
|
-
let r = e - S(t, e +
|
|
508
|
-
return r + S(t, r) *
|
|
505
|
+
let n = e - S(t, e - De) * h;
|
|
506
|
+
if (n + S(t, n) * h === e) return n;
|
|
507
|
+
let r = e - S(t, e + De) * h;
|
|
508
|
+
return r + S(t, r) * h === e ? r : n;
|
|
509
509
|
}
|
|
510
510
|
var Le = /* @__PURE__ */ new Map();
|
|
511
511
|
function Re(e, t, n) {
|
|
@@ -523,7 +523,7 @@ function Re(e, t, n) {
|
|
|
523
523
|
timeZone: a
|
|
524
524
|
});
|
|
525
525
|
}
|
|
526
|
-
let s = typeof n == "number" ? n *
|
|
526
|
+
let s = typeof n == "number" ? n * h : 0;
|
|
527
527
|
return i = (e) => o.format(new Date(e + s)), Le.set(r, i), i;
|
|
528
528
|
}
|
|
529
529
|
//#endregion
|
|
@@ -633,7 +633,7 @@ var Je = 20 * 36e5;
|
|
|
633
633
|
function Ye(e) {
|
|
634
634
|
let t = Math.min(e.length, 64);
|
|
635
635
|
if (t < 2) return;
|
|
636
|
-
let n =
|
|
636
|
+
let n = ue(e), r = Infinity;
|
|
637
637
|
for (let i = 1; i < t; i++) {
|
|
638
638
|
let t = Math.abs(e[i].time - e[i - 1].time) * n;
|
|
639
639
|
t > 0 && t < r && (r = t);
|
|
@@ -648,30 +648,30 @@ var Ze = Date.UTC(1970, 0, 5), Qe = C.m, E = C.d, $e = 24, et = {
|
|
|
648
648
|
count: 1,
|
|
649
649
|
unit: "m"
|
|
650
650
|
}, tt = 256, D = /* @__PURE__ */ new Map();
|
|
651
|
-
function
|
|
651
|
+
function O(e) {
|
|
652
652
|
let t = D.get(e);
|
|
653
653
|
return t || (t = w(e) ?? et, D.size >= tt && D.clear(), D.set(e, t)), t;
|
|
654
654
|
}
|
|
655
|
-
function
|
|
655
|
+
function nt({ unit: e }) {
|
|
656
656
|
return e === "d" || e === "w" || e === "M";
|
|
657
657
|
}
|
|
658
|
+
function rt(e) {
|
|
659
|
+
return e.unit === "h" ? e.count > 1 && $e % e.count === 0 : nt(e);
|
|
660
|
+
}
|
|
658
661
|
function it(e) {
|
|
659
|
-
return
|
|
662
|
+
return rt(O(e));
|
|
660
663
|
}
|
|
661
664
|
function at(e) {
|
|
662
|
-
return
|
|
665
|
+
return nt(O(e));
|
|
663
666
|
}
|
|
664
667
|
function ot(e) {
|
|
665
|
-
return rt(nt(e));
|
|
666
|
-
}
|
|
667
|
-
function st(e) {
|
|
668
668
|
return e !== void 0 && !x(e);
|
|
669
669
|
}
|
|
670
|
-
function
|
|
671
|
-
let r =
|
|
672
|
-
return !
|
|
670
|
+
function st(e, t, n = 1) {
|
|
671
|
+
let r = O(t), i = typeof n == "number" ? n : n.weekStartsOn ?? 1, a = typeof n == "number" ? void 0 : n.timeZone;
|
|
672
|
+
return !ot(a) || !rt(r) || typeof n == "object" && n.dates && e % E === 0 ? ct(e, r, i) : Ie(ct(e + S(a, e) * Qe, r, i), a);
|
|
673
673
|
}
|
|
674
|
-
function
|
|
674
|
+
function ct(e, { count: t, unit: n }, r) {
|
|
675
675
|
if (n === "s" || n === "m" || n === "h" || n === "d") {
|
|
676
676
|
let r = t * C[n];
|
|
677
677
|
return Math.floor(e / r) * r;
|
|
@@ -686,62 +686,62 @@ function lt(e, { count: t, unit: n }, r) {
|
|
|
686
686
|
let a = i.getUTCFullYear() * 12 + i.getUTCMonth(), o = Math.floor(a / t) * t;
|
|
687
687
|
return Date.UTC(Math.floor(o / 12), o % 12, 1);
|
|
688
688
|
}
|
|
689
|
-
function
|
|
690
|
-
return e % E === 0 ? 0 : n &&
|
|
689
|
+
function lt(e, t, n) {
|
|
690
|
+
return e % E === 0 ? 0 : n && st(e, "1d", { timeZone: n }) === e ? n : t;
|
|
691
691
|
}
|
|
692
|
-
function
|
|
693
|
-
return Ke(e,
|
|
692
|
+
function ut(e, t, n) {
|
|
693
|
+
return Ke(e, lt(e, t, n));
|
|
694
694
|
}
|
|
695
695
|
//#endregion
|
|
696
696
|
//#region src/utils/precision.ts
|
|
697
|
-
var
|
|
698
|
-
function
|
|
699
|
-
let n = `${e}|${t}`, r =
|
|
700
|
-
return r || (
|
|
697
|
+
var dt = 64, k = /* @__PURE__ */ new Map();
|
|
698
|
+
function ft(e, t) {
|
|
699
|
+
let n = `${e}|${t}`, r = k.get(n);
|
|
700
|
+
return r || (k.size >= dt && k.clear(), r = new Intl.NumberFormat(e, {
|
|
701
701
|
minimumFractionDigits: t,
|
|
702
702
|
maximumFractionDigits: t
|
|
703
|
-
}),
|
|
703
|
+
}), k.set(n, r)), r;
|
|
704
704
|
}
|
|
705
|
-
function
|
|
706
|
-
return t.formatPrice ? t.formatPrice(e) :
|
|
705
|
+
function pt(e, t, n) {
|
|
706
|
+
return t.formatPrice ? t.formatPrice(e) : A(e, n ?? t.pricePrecision ?? mt(t.priceRange.min, t.priceRange.max), t.numberLocale ?? "en-US");
|
|
707
707
|
}
|
|
708
|
-
function
|
|
709
|
-
return
|
|
708
|
+
function A(e, t = 2, n = "en-US") {
|
|
709
|
+
return ft(n, t).format(e);
|
|
710
710
|
}
|
|
711
|
-
function
|
|
711
|
+
function mt(e, t) {
|
|
712
712
|
if (!(t > e) || !Number.isFinite(e) || !Number.isFinite(t)) return 2;
|
|
713
|
-
let n =
|
|
713
|
+
let n = ce(e, t, 8);
|
|
714
714
|
return n > 0 && n < 1 ? Math.ceil(-Math.log10(n)) + 1 : 2;
|
|
715
715
|
}
|
|
716
|
-
var
|
|
717
|
-
function
|
|
716
|
+
var ht = 2;
|
|
717
|
+
function gt(e, t, n, r = 2, i = "en-US") {
|
|
718
718
|
if ((t === "percentage" || t === "indexedTo100") && n && n !== 0) {
|
|
719
719
|
if (t === "percentage") {
|
|
720
|
-
let t = (e / n - 1) * 100, r =
|
|
721
|
-
return `${r ===
|
|
720
|
+
let t = (e / n - 1) * 100, r = A(Math.abs(t), ht, i);
|
|
721
|
+
return `${r === A(0, ht, i) ? "" : t > 0 ? "+" : "-"}${r}%`;
|
|
722
722
|
}
|
|
723
|
-
return
|
|
723
|
+
return A(e / n * 100, 2, i);
|
|
724
724
|
}
|
|
725
|
-
return
|
|
725
|
+
return A(e, r, i);
|
|
726
726
|
}
|
|
727
|
-
function
|
|
727
|
+
function _t(e, t, n = 1) {
|
|
728
728
|
let r = Number.isInteger(n) && n > 1 ? n : 1;
|
|
729
729
|
if (!Number.isFinite(e) || !Number.isInteger(t) || t < 2) return String(e);
|
|
730
730
|
let i = t * r, a = Math.round(Math.abs(e) * i), o = Math.floor(a / i), s = a - o * i, c = Math.floor(s / r), l = String(t - 1).length, u = r > 1 ? String(Math.floor((s - c * r) / r * 10)) : "";
|
|
731
731
|
return `${e < 0 && a > 0 ? "-" : ""}${o}'${String(c).padStart(l, "0")}${u}`;
|
|
732
732
|
}
|
|
733
|
-
function
|
|
733
|
+
function vt(e) {
|
|
734
734
|
if (!Number.isInteger(e.denominator) || e.denominator < 2) return null;
|
|
735
735
|
let t = Number.isInteger(e.subDenominator) && (e.subDenominator ?? 0) > 1 ? e.subDenominator : 1;
|
|
736
736
|
return 1 / (e.denominator * t);
|
|
737
737
|
}
|
|
738
|
-
function
|
|
739
|
-
return e ? typeof e == "function" ? e :
|
|
738
|
+
function yt(e) {
|
|
739
|
+
return e ? typeof e == "function" ? e : vt(e) === null ? null : (t) => _t(t, e.denominator, e.subDenominator) : null;
|
|
740
740
|
}
|
|
741
|
-
function
|
|
741
|
+
function bt(e) {
|
|
742
742
|
return e >= 1e9 ? (e / 1e9).toFixed(2) + "B" : e >= 1e6 ? (e / 1e6).toFixed(2) + "M" : e >= 1e3 ? (e / 1e3).toFixed(2) + "K" : e.toFixed(0);
|
|
743
743
|
}
|
|
744
|
-
function
|
|
744
|
+
function xt(e) {
|
|
745
745
|
let t = 0;
|
|
746
746
|
for (let n of e) {
|
|
747
747
|
let e = n.toString(), r = e.indexOf(".");
|
|
@@ -751,7 +751,7 @@ function St(e) {
|
|
|
751
751
|
}
|
|
752
752
|
//#endregion
|
|
753
753
|
//#region src/utils/priceSource.ts
|
|
754
|
-
var
|
|
754
|
+
var St = [
|
|
755
755
|
"close",
|
|
756
756
|
"open",
|
|
757
757
|
"high",
|
|
@@ -761,10 +761,10 @@ var Ct = [
|
|
|
761
761
|
"ohlc4",
|
|
762
762
|
"hlcc4"
|
|
763
763
|
];
|
|
764
|
-
function
|
|
765
|
-
return typeof e == "string" &&
|
|
764
|
+
function Ct(e) {
|
|
765
|
+
return typeof e == "string" && St.includes(e);
|
|
766
766
|
}
|
|
767
|
-
function
|
|
767
|
+
function wt(e, t) {
|
|
768
768
|
switch (t) {
|
|
769
769
|
case "open": return e.open;
|
|
770
770
|
case "high": return e.high;
|
|
@@ -776,13 +776,13 @@ function Tt(e, t) {
|
|
|
776
776
|
default: return e.close;
|
|
777
777
|
}
|
|
778
778
|
}
|
|
779
|
-
var
|
|
780
|
-
function
|
|
779
|
+
var Tt = /^ind:([^:]+):(.+)$/;
|
|
780
|
+
function Et(e, t) {
|
|
781
781
|
return `ind:${e}:${t}`;
|
|
782
782
|
}
|
|
783
|
-
function
|
|
783
|
+
function Dt(e) {
|
|
784
784
|
if (typeof e != "string") return null;
|
|
785
|
-
let t =
|
|
785
|
+
let t = Tt.exec(e);
|
|
786
786
|
return t ? {
|
|
787
787
|
instanceId: t[1],
|
|
788
788
|
key: t[2]
|
|
@@ -790,11 +790,11 @@ function Ot(e) {
|
|
|
790
790
|
}
|
|
791
791
|
//#endregion
|
|
792
792
|
//#region src/utils/resample.ts
|
|
793
|
-
var
|
|
794
|
-
function
|
|
795
|
-
let r =
|
|
793
|
+
var Ot = 864e5, kt = 6e4;
|
|
794
|
+
function At(e, t, n = 1) {
|
|
795
|
+
let r = jt(e, t, n), i = [], a = null;
|
|
796
796
|
for (let n of e) {
|
|
797
|
-
let e =
|
|
797
|
+
let e = st(n.time, t, r);
|
|
798
798
|
a === null || e !== a.time ? (a = {
|
|
799
799
|
time: e,
|
|
800
800
|
open: n.open,
|
|
@@ -806,27 +806,27 @@ function jt(e, t, n = 1) {
|
|
|
806
806
|
}
|
|
807
807
|
return i;
|
|
808
808
|
}
|
|
809
|
-
function
|
|
810
|
-
return typeof n == "number" || n.timeZone === void 0 || n.dates !== void 0 || x(n.timeZone) || !
|
|
809
|
+
function jt(e, t, n) {
|
|
810
|
+
return typeof n == "number" || n.timeZone === void 0 || n.dates !== void 0 || x(n.timeZone) || !it(t) ? n : {
|
|
811
811
|
...n,
|
|
812
812
|
dates: Ye(e) === !0
|
|
813
813
|
};
|
|
814
814
|
}
|
|
815
|
-
var
|
|
815
|
+
var Mt = (e) => e === "s" || e === "m" || e === "h" || e === "d";
|
|
816
816
|
function Nt(e, t) {
|
|
817
817
|
let n = w(e), r = w(t);
|
|
818
818
|
if (!n || !r) return !1;
|
|
819
819
|
let i = T(e);
|
|
820
|
-
return n.unit === "d" && n.count > 1 ? !1 :
|
|
820
|
+
return n.unit === "d" && n.count > 1 ? !1 : Mt(r.unit) ? Mt(n.unit) && T(t) % i === 0 : n.unit === r.unit ? r.count % n.count === 0 : Mt(n.unit) && Ot % i === 0;
|
|
821
821
|
}
|
|
822
822
|
function Pt(e, t) {
|
|
823
823
|
let n = T(e);
|
|
824
|
-
if (!(n <
|
|
824
|
+
if (!(n < Ot)) return !0;
|
|
825
825
|
let r = (/* @__PURE__ */ new Date()).getUTCFullYear();
|
|
826
|
-
return [Date.UTC(r, 0, 1), Date.UTC(r, 6, 1)].every((e) => S(t, e) *
|
|
826
|
+
return [Date.UTC(r, 0, 1), Date.UTC(r, 6, 1)].every((e) => S(t, e) * kt % n === 0);
|
|
827
827
|
}
|
|
828
828
|
function Ft(e, t, n = {}) {
|
|
829
|
-
let { timeZone: r } = n, i = r !== void 0 && !x(r) &&
|
|
829
|
+
let { timeZone: r } = n, i = r !== void 0 && !x(r) && it(e) ? r : void 0, a = null, o = 0;
|
|
830
830
|
for (let n of t) {
|
|
831
831
|
if (!Nt(n, e) || i !== void 0 && !Pt(n, i)) continue;
|
|
832
832
|
let t = T(n);
|
|
@@ -868,7 +868,7 @@ function Rt(e) {
|
|
|
868
868
|
function zt(e) {
|
|
869
869
|
return e?.timeZone ?? e?.timezone;
|
|
870
870
|
}
|
|
871
|
-
function
|
|
871
|
+
function Bt(e) {
|
|
872
872
|
let t = /^(\d{1,2}):(\d{2})$/.exec(e.trim());
|
|
873
873
|
if (!t) return null;
|
|
874
874
|
let n = Number(t[1]), r = Number(t[2]);
|
|
@@ -876,26 +876,26 @@ function j(e) {
|
|
|
876
876
|
}
|
|
877
877
|
//#endregion
|
|
878
878
|
//#region src/utils/marketStatus.ts
|
|
879
|
-
var
|
|
880
|
-
function
|
|
879
|
+
var j = 864e5, M = 6e4, Vt = 8;
|
|
880
|
+
function Ht(e, t) {
|
|
881
881
|
let n = zt(e), r = (e?.sessions ?? []).flatMap((e) => {
|
|
882
|
-
let t =
|
|
882
|
+
let t = Bt(e.start), n = Bt(e.end);
|
|
883
883
|
return t === null || n === null || t === n ? [] : [{
|
|
884
884
|
start: t,
|
|
885
885
|
end: n,
|
|
886
886
|
days: Array.isArray(e.days) ? e.days : null
|
|
887
887
|
}];
|
|
888
888
|
});
|
|
889
|
-
if (!n || !
|
|
889
|
+
if (!n || !v(n) || r.length === 0 || !Number.isFinite(t)) return {
|
|
890
890
|
state: "always",
|
|
891
891
|
next: null
|
|
892
892
|
};
|
|
893
|
-
let i =
|
|
894
|
-
for (let e = -1; e <=
|
|
895
|
-
let t = a + e *
|
|
893
|
+
let i = y(n, t) * M, a = Math.floor((t + i) / j) * j, o = (e) => e - y(n, e - y(n, e - i) * M) * M, s = [];
|
|
894
|
+
for (let e = -1; e <= Vt; e++) {
|
|
895
|
+
let t = a + e * j, n = (Math.floor(t / j) + 4) % 7;
|
|
896
896
|
for (let e of r) {
|
|
897
897
|
if (e.days && !e.days.includes(n)) continue;
|
|
898
|
-
let r = t + e.start *
|
|
898
|
+
let r = t + e.start * M, i = (e.end > e.start ? t : t + j) + e.end * M;
|
|
899
899
|
s.push([o(r), o(i)]);
|
|
900
900
|
}
|
|
901
901
|
}
|
|
@@ -918,15 +918,15 @@ function Vt(e, t) {
|
|
|
918
918
|
}
|
|
919
919
|
//#endregion
|
|
920
920
|
//#region src/utils/drawingOptions.ts
|
|
921
|
-
var
|
|
922
|
-
function
|
|
921
|
+
var Ut = 48, Wt = 2e3, Gt = 1e4;
|
|
922
|
+
function Kt(e) {
|
|
923
923
|
if (!Array.isArray(e)) return;
|
|
924
924
|
let t = [];
|
|
925
925
|
for (let n of e) {
|
|
926
|
-
if (t.length >=
|
|
926
|
+
if (t.length >= Ut) break;
|
|
927
927
|
if (typeof n != "object" || !n) continue;
|
|
928
928
|
let { value: e, visible: r, color: i } = n;
|
|
929
|
-
if (typeof e != "number" || !Number.isFinite(e) || Math.abs(e) >
|
|
929
|
+
if (typeof e != "number" || !Number.isFinite(e) || Math.abs(e) > Gt || r !== void 0 && typeof r != "boolean") continue;
|
|
930
930
|
let a = {
|
|
931
931
|
value: e,
|
|
932
932
|
visible: r ?? !0
|
|
@@ -935,98 +935,98 @@ function Gt(e) {
|
|
|
935
935
|
}
|
|
936
936
|
return t;
|
|
937
937
|
}
|
|
938
|
-
function
|
|
938
|
+
function qt(e, t) {
|
|
939
939
|
switch (e.kind) {
|
|
940
940
|
case "boolean": return typeof t == "boolean" ? t : void 0;
|
|
941
941
|
case "number": return typeof t != "number" || !Number.isFinite(t) ? void 0 : Math.min(e.max ?? Infinity, Math.max(e.min ?? -Infinity, t));
|
|
942
942
|
case "choice": return typeof t == "string" && e.choices.some((e) => e.value === t) ? t : void 0;
|
|
943
|
-
case "levels": return
|
|
944
|
-
case "text": return typeof t == "string" ? t.slice(0,
|
|
943
|
+
case "levels": return Kt(t);
|
|
944
|
+
case "text": return typeof t == "string" ? t.slice(0, Wt) : void 0;
|
|
945
945
|
}
|
|
946
946
|
}
|
|
947
|
-
function
|
|
947
|
+
function Jt(e, t) {
|
|
948
948
|
if (!e || typeof t != "object" || !t) return {};
|
|
949
949
|
let n = {};
|
|
950
950
|
for (let [r, i] of Object.entries(t)) {
|
|
951
951
|
let t = e[r];
|
|
952
952
|
if (!t) continue;
|
|
953
|
-
let a =
|
|
953
|
+
let a = qt(t, i);
|
|
954
954
|
a !== void 0 && (n[r] = a);
|
|
955
955
|
}
|
|
956
956
|
return n;
|
|
957
957
|
}
|
|
958
|
-
function
|
|
958
|
+
function Yt(e) {
|
|
959
959
|
return Array.isArray(e) ? e.map((e) => ({ ...e })) : e;
|
|
960
960
|
}
|
|
961
|
-
function
|
|
961
|
+
function Xt(e, t, n) {
|
|
962
962
|
let r = e?.[n];
|
|
963
|
-
return r ?
|
|
963
|
+
return r ? Yt((t && n in t ? qt(r, t[n]) : void 0) ?? r.default) : t?.[n];
|
|
964
964
|
}
|
|
965
|
-
function
|
|
965
|
+
function Zt(e, t) {
|
|
966
966
|
let n = {};
|
|
967
|
-
for (let r of Object.keys(e ?? {})) n[r] =
|
|
967
|
+
for (let r of Object.keys(e ?? {})) n[r] = Xt(e, t, r);
|
|
968
968
|
return n;
|
|
969
969
|
}
|
|
970
970
|
//#endregion
|
|
971
971
|
//#region src/utils/drawingStyle.ts
|
|
972
|
-
var
|
|
972
|
+
var Qt = [
|
|
973
973
|
"solid",
|
|
974
974
|
"dashed",
|
|
975
975
|
"dotted"
|
|
976
|
-
],
|
|
977
|
-
function
|
|
976
|
+
], $t = 64, en = 2e3, tn = 20, nn = 200;
|
|
977
|
+
function rn(e, t, n) {
|
|
978
978
|
return typeof e == "number" && Number.isFinite(e) ? Math.min(n, Math.max(t, e)) : void 0;
|
|
979
979
|
}
|
|
980
|
-
function rn(e) {
|
|
981
|
-
return typeof e == "string" && e.length > 0 && e.length <= Qt ? e : void 0;
|
|
982
|
-
}
|
|
983
980
|
function an(e) {
|
|
981
|
+
return typeof e == "string" && e.length > 0 && e.length <= $t ? e : void 0;
|
|
982
|
+
}
|
|
983
|
+
function on(e) {
|
|
984
984
|
if (typeof e != "object" || !e) return {};
|
|
985
|
-
let t = e, n = {}, r =
|
|
985
|
+
let t = e, n = {}, r = an(t.color);
|
|
986
986
|
r !== void 0 && (n.color = r);
|
|
987
|
-
let i =
|
|
988
|
-
i !== void 0 && (n.lineWidth = i),
|
|
989
|
-
let a =
|
|
987
|
+
let i = rn(t.lineWidth, .5, tn);
|
|
988
|
+
i !== void 0 && (n.lineWidth = i), Qt.includes(t.lineStyle) && (n.lineStyle = t.lineStyle);
|
|
989
|
+
let a = an(t.fillColor);
|
|
990
990
|
a !== void 0 && (n.fillColor = a);
|
|
991
|
-
let o =
|
|
991
|
+
let o = rn(t.fillOpacity, 0, 1);
|
|
992
992
|
o !== void 0 && (n.fillOpacity = o);
|
|
993
|
-
let s =
|
|
994
|
-
return s !== void 0 && (n.fontSize = s), typeof t.text == "string" && (n.text = t.text.slice(0,
|
|
993
|
+
let s = rn(t.fontSize, 6, nn);
|
|
994
|
+
return s !== void 0 && (n.fontSize = s), typeof t.text == "string" && (n.text = t.text.slice(0, en)), n;
|
|
995
995
|
}
|
|
996
996
|
//#endregion
|
|
997
997
|
//#region src/utils/chartTypeOptions.ts
|
|
998
|
-
var
|
|
998
|
+
var N = (e) => typeof e == "number" && Number.isFinite(e) && e > 0, P = (e, t, n) => typeof e == "number" && Number.isInteger(e) && e >= t && e <= n, F = (e) => typeof e == "object" && !!e && !Array.isArray(e);
|
|
999
999
|
function sn(e) {
|
|
1000
1000
|
if (!F(e)) return {};
|
|
1001
1001
|
let t = {};
|
|
1002
1002
|
if (F(e.renko)) {
|
|
1003
1003
|
let { boxSize: n, atrPeriod: r } = e.renko;
|
|
1004
1004
|
t.renko = {
|
|
1005
|
-
...
|
|
1006
|
-
...
|
|
1005
|
+
...N(n) || n === "atr" ? { boxSize: n } : {},
|
|
1006
|
+
...P(r, 1, 500) ? { atrPeriod: r } : {}
|
|
1007
1007
|
};
|
|
1008
1008
|
}
|
|
1009
1009
|
if (F(e.lineBreak)) {
|
|
1010
1010
|
let { lines: n } = e.lineBreak;
|
|
1011
|
-
t.lineBreak =
|
|
1011
|
+
t.lineBreak = P(n, 1, 10) ? { lines: n } : {};
|
|
1012
1012
|
}
|
|
1013
1013
|
if (F(e.kagi)) {
|
|
1014
1014
|
let { reversal: n, reversalType: r } = e.kagi;
|
|
1015
1015
|
t.kagi = {
|
|
1016
|
-
...
|
|
1016
|
+
...N(n) ? { reversal: n } : {},
|
|
1017
1017
|
...r === "percent" || r === "price" ? { reversalType: r } : {}
|
|
1018
1018
|
};
|
|
1019
1019
|
}
|
|
1020
1020
|
if (F(e.pointAndFigure)) {
|
|
1021
1021
|
let { boxSize: n, reversal: r } = e.pointAndFigure;
|
|
1022
1022
|
t.pointAndFigure = {
|
|
1023
|
-
...
|
|
1024
|
-
...
|
|
1023
|
+
...N(n) || n === "auto" ? { boxSize: n } : {},
|
|
1024
|
+
...P(r, 1, 10) ? { reversal: r } : {}
|
|
1025
1025
|
};
|
|
1026
1026
|
}
|
|
1027
1027
|
if (F(e.rangeBars)) {
|
|
1028
1028
|
let { range: n } = e.rangeBars;
|
|
1029
|
-
t.rangeBars =
|
|
1029
|
+
t.rangeBars = N(n) || n === "auto" ? { range: n } : {};
|
|
1030
1030
|
}
|
|
1031
1031
|
return t;
|
|
1032
1032
|
}
|
|
@@ -1050,7 +1050,7 @@ var cn = "'Cascadia Mono', 'SF Mono', ui-monospace, Menlo, Consolas, monospace",
|
|
|
1050
1050
|
ink: "#131416"
|
|
1051
1051
|
}, dn = .22;
|
|
1052
1052
|
function L(e) {
|
|
1053
|
-
return
|
|
1053
|
+
return p(e, dn);
|
|
1054
1054
|
}
|
|
1055
1055
|
var fn = "#fbfaf6", R = "#1b1d21", pn = "#131416", z = "#e6e3dc", mn = "#1f7a5c", hn = "#b8423f", gn = "#4fae8a", _n = "#e2706b", vn = "#6a6966", yn = "#8d8a84", bn = {
|
|
1056
1056
|
ceiling: "#FF00FF",
|
|
@@ -1078,10 +1078,10 @@ var fn = "#fbfaf6", R = "#1b1d21", pn = "#131416", z = "#e6e3dc", mn = "#1f7a5c"
|
|
|
1078
1078
|
candleUpWick: gn,
|
|
1079
1079
|
candleDownWick: _n,
|
|
1080
1080
|
lineColor: z,
|
|
1081
|
-
areaTopColor:
|
|
1082
|
-
areaBottomColor:
|
|
1083
|
-
volumeUp:
|
|
1084
|
-
volumeDown:
|
|
1081
|
+
areaTopColor: p(z, .14),
|
|
1082
|
+
areaBottomColor: p(z, 0),
|
|
1083
|
+
volumeUp: p(z, .14),
|
|
1084
|
+
volumeDown: p(z, .08),
|
|
1085
1085
|
axisLine: "#2a2b2f",
|
|
1086
1086
|
axisLabel: "#a9a6a0",
|
|
1087
1087
|
axisLabelBackground: "#232427",
|
|
@@ -1099,10 +1099,10 @@ var fn = "#fbfaf6", R = "#1b1d21", pn = "#131416", z = "#e6e3dc", mn = "#1f7a5c"
|
|
|
1099
1099
|
candleUpWick: mn,
|
|
1100
1100
|
candleDownWick: hn,
|
|
1101
1101
|
lineColor: R,
|
|
1102
|
-
areaTopColor:
|
|
1103
|
-
areaBottomColor:
|
|
1104
|
-
volumeUp:
|
|
1105
|
-
volumeDown:
|
|
1102
|
+
areaTopColor: p(R, .12),
|
|
1103
|
+
areaBottomColor: p(R, 0),
|
|
1104
|
+
volumeUp: p(R, .13),
|
|
1105
|
+
volumeDown: p(R, .08),
|
|
1106
1106
|
axisLine: "#cfcac0",
|
|
1107
1107
|
axisLabel: "#4a4e57",
|
|
1108
1108
|
axisLabelBackground: "#eeebe3",
|
|
@@ -1704,9 +1704,13 @@ var dr = [
|
|
|
1704
1704
|
[1e8, "억"],
|
|
1705
1705
|
[1e4, "만"]
|
|
1706
1706
|
];
|
|
1707
|
-
function fr(e
|
|
1707
|
+
function fr(e) {
|
|
1708
|
+
return /^ko([-_]|$)/i.test(e);
|
|
1709
|
+
}
|
|
1710
|
+
function pr(e, t) {
|
|
1708
1711
|
let n = t ?? K;
|
|
1709
|
-
if (
|
|
1712
|
+
if (!Number.isFinite(e)) return String(e);
|
|
1713
|
+
if (fr(n)) {
|
|
1710
1714
|
for (let [t, r] of dr) if (Math.round(e / t * 100) >= 100) return q(e / t, 2, n) + r;
|
|
1711
1715
|
return q(e, 0, n);
|
|
1712
1716
|
}
|
|
@@ -1721,14 +1725,14 @@ var J = {
|
|
|
1721
1725
|
ceiling: "#D946EF",
|
|
1722
1726
|
floor: "#06B6D4",
|
|
1723
1727
|
reference: "#EAB308"
|
|
1724
|
-
}, Y = "Asia/Ho_Chi_Minh",
|
|
1728
|
+
}, Y = "Asia/Ho_Chi_Minh", mr = {
|
|
1725
1729
|
up: "#E8313F",
|
|
1726
1730
|
down: "#2F6FEB",
|
|
1727
1731
|
unchanged: "#8B8F99",
|
|
1728
1732
|
ceiling: "#C2121F",
|
|
1729
1733
|
floor: "#1E4FC2",
|
|
1730
1734
|
reference: "#8B8F99"
|
|
1731
|
-
},
|
|
1735
|
+
}, hr = "Asia/Seoul", gr = [
|
|
1732
1736
|
{
|
|
1733
1737
|
name: "ATO",
|
|
1734
1738
|
startTime: "09:00",
|
|
@@ -1759,7 +1763,7 @@ var J = {
|
|
|
1759
1763
|
endTime: "14:45",
|
|
1760
1764
|
type: "preClose"
|
|
1761
1765
|
}
|
|
1762
|
-
],
|
|
1766
|
+
], _r = [
|
|
1763
1767
|
{
|
|
1764
1768
|
name: "Phiên 1",
|
|
1765
1769
|
startTime: "09:15",
|
|
@@ -1790,7 +1794,7 @@ var J = {
|
|
|
1790
1794
|
endTime: "15:00",
|
|
1791
1795
|
type: "postClose"
|
|
1792
1796
|
}
|
|
1793
|
-
],
|
|
1797
|
+
], vr = [
|
|
1794
1798
|
{
|
|
1795
1799
|
name: "Phiên 1",
|
|
1796
1800
|
startTime: "09:15",
|
|
@@ -1809,7 +1813,7 @@ var J = {
|
|
|
1809
1813
|
endTime: "14:30",
|
|
1810
1814
|
type: "continuous"
|
|
1811
1815
|
}
|
|
1812
|
-
],
|
|
1816
|
+
], yr = [
|
|
1813
1817
|
{
|
|
1814
1818
|
name: "ATO",
|
|
1815
1819
|
startTime: "08:45",
|
|
@@ -1840,7 +1844,7 @@ var J = {
|
|
|
1840
1844
|
endTime: "14:45",
|
|
1841
1845
|
type: "preClose"
|
|
1842
1846
|
}
|
|
1843
|
-
],
|
|
1847
|
+
], br = [
|
|
1844
1848
|
{
|
|
1845
1849
|
name: "장전 동시호가",
|
|
1846
1850
|
startTime: "08:30",
|
|
@@ -1871,7 +1875,7 @@ var J = {
|
|
|
1871
1875
|
endTime: "20:00",
|
|
1872
1876
|
type: "postClose"
|
|
1873
1877
|
}
|
|
1874
|
-
],
|
|
1878
|
+
], xr = [
|
|
1875
1879
|
{
|
|
1876
1880
|
name: "프리마켓",
|
|
1877
1881
|
startTime: "08:00",
|
|
@@ -1890,7 +1894,7 @@ var J = {
|
|
|
1890
1894
|
endTime: "20:00",
|
|
1891
1895
|
type: "postClose"
|
|
1892
1896
|
}
|
|
1893
|
-
],
|
|
1897
|
+
], Sr = [
|
|
1894
1898
|
{
|
|
1895
1899
|
from: 0,
|
|
1896
1900
|
step: 1
|
|
@@ -1919,7 +1923,7 @@ var J = {
|
|
|
1919
1923
|
from: 5e5,
|
|
1920
1924
|
step: 1e3
|
|
1921
1925
|
}
|
|
1922
|
-
],
|
|
1926
|
+
], Cr = [
|
|
1923
1927
|
{
|
|
1924
1928
|
from: 0,
|
|
1925
1929
|
step: 1e-8
|
|
@@ -1980,7 +1984,7 @@ var J = {
|
|
|
1980
1984
|
from: 1e6,
|
|
1981
1985
|
step: 1e3
|
|
1982
1986
|
}
|
|
1983
|
-
],
|
|
1987
|
+
], wr = {
|
|
1984
1988
|
type: "stock",
|
|
1985
1989
|
exchange: "HOSE",
|
|
1986
1990
|
currency: "VND",
|
|
@@ -2007,12 +2011,12 @@ var J = {
|
|
|
2007
2011
|
ceilingPercent: 7,
|
|
2008
2012
|
floorPercent: 7
|
|
2009
2013
|
},
|
|
2010
|
-
sessions:
|
|
2014
|
+
sessions: gr,
|
|
2011
2015
|
colorScheme: J
|
|
2012
|
-
}, wr = {
|
|
2013
|
-
...Cr,
|
|
2014
|
-
priceSteps: void 0
|
|
2015
2016
|
}, Tr = {
|
|
2017
|
+
...wr,
|
|
2018
|
+
priceSteps: void 0
|
|
2019
|
+
}, Er = {
|
|
2016
2020
|
type: "stock",
|
|
2017
2021
|
exchange: "HNX",
|
|
2018
2022
|
currency: "VND",
|
|
@@ -2025,9 +2029,9 @@ var J = {
|
|
|
2025
2029
|
ceilingPercent: 10,
|
|
2026
2030
|
floorPercent: 10
|
|
2027
2031
|
},
|
|
2028
|
-
sessions:
|
|
2032
|
+
sessions: _r,
|
|
2029
2033
|
colorScheme: J
|
|
2030
|
-
},
|
|
2034
|
+
}, Dr = {
|
|
2031
2035
|
type: "stock",
|
|
2032
2036
|
exchange: "UPCOM",
|
|
2033
2037
|
currency: "VND",
|
|
@@ -2040,9 +2044,9 @@ var J = {
|
|
|
2040
2044
|
ceilingPercent: 15,
|
|
2041
2045
|
floorPercent: 15
|
|
2042
2046
|
},
|
|
2043
|
-
sessions:
|
|
2047
|
+
sessions: vr,
|
|
2044
2048
|
colorScheme: J
|
|
2045
|
-
},
|
|
2049
|
+
}, Or = {
|
|
2046
2050
|
type: "futures",
|
|
2047
2051
|
exchange: "HNX",
|
|
2048
2052
|
currency: "VND",
|
|
@@ -2056,44 +2060,44 @@ var J = {
|
|
|
2056
2060
|
ceilingPercent: 7,
|
|
2057
2061
|
floorPercent: 7
|
|
2058
2062
|
},
|
|
2059
|
-
sessions:
|
|
2063
|
+
sessions: yr,
|
|
2060
2064
|
colorScheme: J
|
|
2061
|
-
},
|
|
2065
|
+
}, kr = {
|
|
2062
2066
|
type: "stock",
|
|
2063
2067
|
exchange: "KRX",
|
|
2064
2068
|
currency: "KRW",
|
|
2065
2069
|
pricePrecision: 0,
|
|
2066
2070
|
volumeUnit: 1,
|
|
2067
2071
|
priceStep: 1,
|
|
2068
|
-
priceSteps:
|
|
2069
|
-
timeZone:
|
|
2072
|
+
priceSteps: Sr,
|
|
2073
|
+
timeZone: hr,
|
|
2070
2074
|
priceLimits: {
|
|
2071
2075
|
enabled: !0,
|
|
2072
2076
|
ceilingPercent: 30,
|
|
2073
2077
|
floorPercent: 30,
|
|
2074
2078
|
roundMove: !0
|
|
2075
2079
|
},
|
|
2076
|
-
sessions:
|
|
2077
|
-
colorScheme:
|
|
2078
|
-
}, kr = {
|
|
2079
|
-
...Or,
|
|
2080
|
-
exchange: "NXT",
|
|
2081
|
-
sessions: br
|
|
2080
|
+
sessions: br,
|
|
2081
|
+
colorScheme: mr
|
|
2082
2082
|
}, Ar = {
|
|
2083
|
+
...kr,
|
|
2084
|
+
exchange: "NXT",
|
|
2085
|
+
sessions: xr
|
|
2086
|
+
}, jr = {
|
|
2083
2087
|
type: "crypto",
|
|
2084
2088
|
exchange: "UPBIT",
|
|
2085
2089
|
currency: "KRW",
|
|
2086
2090
|
priceStep: 1e-8,
|
|
2087
|
-
priceSteps:
|
|
2088
|
-
timeZone:
|
|
2091
|
+
priceSteps: Cr,
|
|
2092
|
+
timeZone: hr,
|
|
2089
2093
|
priceLimits: { enabled: !1 },
|
|
2090
|
-
colorScheme:
|
|
2091
|
-
},
|
|
2094
|
+
colorScheme: mr
|
|
2095
|
+
}, Mr = {
|
|
2092
2096
|
type: "crypto",
|
|
2093
2097
|
currency: "USDT",
|
|
2094
2098
|
pricePrecision: 2,
|
|
2095
2099
|
priceLimits: { enabled: !1 }
|
|
2096
|
-
},
|
|
2100
|
+
}, Nr = {
|
|
2097
2101
|
type: "stock",
|
|
2098
2102
|
exchange: "NYSE",
|
|
2099
2103
|
currency: "USD",
|
|
@@ -2122,10 +2126,10 @@ var J = {
|
|
|
2122
2126
|
}
|
|
2123
2127
|
]
|
|
2124
2128
|
};
|
|
2125
|
-
function
|
|
2126
|
-
return
|
|
2129
|
+
function Pr(e) {
|
|
2130
|
+
return Fr(e, J);
|
|
2127
2131
|
}
|
|
2128
|
-
function
|
|
2132
|
+
function Fr(e, t) {
|
|
2129
2133
|
return {
|
|
2130
2134
|
...e,
|
|
2131
2135
|
candleUp: t.up,
|
|
@@ -2135,25 +2139,25 @@ function Pr(e, t) {
|
|
|
2135
2139
|
};
|
|
2136
2140
|
}
|
|
2137
2141
|
var X = 1e-9;
|
|
2138
|
-
function
|
|
2142
|
+
function Ir(e, t) {
|
|
2139
2143
|
let n = t.priceStep;
|
|
2140
2144
|
for (let r of t.priceSteps ?? []) e + X >= r.from && (n = r.step);
|
|
2141
2145
|
return n !== void 0 && n > 0 ? n : void 0;
|
|
2142
2146
|
}
|
|
2143
|
-
function
|
|
2147
|
+
function Lr(e, t) {
|
|
2144
2148
|
let n = t.priceStep;
|
|
2145
2149
|
for (let r of t.priceSteps ?? []) e - X > r.from && (n = r.step);
|
|
2146
2150
|
return n !== void 0 && n > 0 ? n : void 0;
|
|
2147
2151
|
}
|
|
2148
2152
|
function Z(e, t, n = "nearest") {
|
|
2149
|
-
let r =
|
|
2153
|
+
let r = Ir(e, t);
|
|
2150
2154
|
if (r === void 0 || !Number.isFinite(e)) return e;
|
|
2151
2155
|
let i = e / r, a = n === "down" ? Math.floor(i + X) : n === "up" ? Math.ceil(i - X) : Math.round(i);
|
|
2152
2156
|
return Number((a * r).toFixed(Rt(r)));
|
|
2153
2157
|
}
|
|
2154
|
-
function
|
|
2158
|
+
function Rr(e, t) {
|
|
2155
2159
|
if (!t.priceLimits?.enabled || !t.priceLimits.ceilingPercent) return null;
|
|
2156
|
-
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 =
|
|
2160
|
+
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 = Ir(i, t);
|
|
2157
2161
|
if (s === void 0) return {
|
|
2158
2162
|
ceiling: a,
|
|
2159
2163
|
floor: o,
|
|
@@ -2174,14 +2178,14 @@ function Lr(e, t) {
|
|
|
2174
2178
|
};
|
|
2175
2179
|
l = Z(i + Z(i * n, e, "down"), t, "down"), u = Z(i - Z(i * r, e, "down"), t, "down");
|
|
2176
2180
|
} else l = Z(a, t, "down"), u = Z(o, t, "up");
|
|
2177
|
-
return l <= i && (l = c), u >= i && (u = Z(i - (
|
|
2181
|
+
return l <= i && (l = c), u >= i && (u = Z(i - (Lr(i, t) ?? s), t)), u <= 0 && (u = i), {
|
|
2178
2182
|
ceiling: l,
|
|
2179
2183
|
floor: u,
|
|
2180
2184
|
reference: i
|
|
2181
2185
|
};
|
|
2182
2186
|
}
|
|
2183
2187
|
var Q = (e, t) => Math.round(e * t * 1e9) / 1e9;
|
|
2184
|
-
function
|
|
2188
|
+
function zr(e, t) {
|
|
2185
2189
|
let n = Math.round(Math.log10(t));
|
|
2186
2190
|
return {
|
|
2187
2191
|
...e,
|
|
@@ -2197,11 +2201,11 @@ function Rr(e, t) {
|
|
|
2197
2201
|
}
|
|
2198
2202
|
};
|
|
2199
2203
|
}
|
|
2200
|
-
var
|
|
2201
|
-
function
|
|
2204
|
+
var Br = 6e4, Vr = 864e5;
|
|
2205
|
+
function Hr(e, t) {
|
|
2202
2206
|
let n, r;
|
|
2203
2207
|
if (t) {
|
|
2204
|
-
let i = new Date(e +
|
|
2208
|
+
let i = new Date(e + y(t, e) * Br);
|
|
2205
2209
|
n = i.getUTCHours(), r = i.getUTCMinutes();
|
|
2206
2210
|
} else {
|
|
2207
2211
|
let t = new Date(e);
|
|
@@ -2209,31 +2213,31 @@ function Vr(e, t) {
|
|
|
2209
2213
|
}
|
|
2210
2214
|
return `${String(n).padStart(2, "0")}:${String(r).padStart(2, "0")}`;
|
|
2211
2215
|
}
|
|
2212
|
-
function
|
|
2213
|
-
if (n !== void 0 && !
|
|
2214
|
-
let r =
|
|
2216
|
+
function Ur(e, t = Date.now(), n) {
|
|
2217
|
+
if (n !== void 0 && !v(n)) return null;
|
|
2218
|
+
let r = Hr(t, n);
|
|
2215
2219
|
for (let t of e) if (r >= t.startTime && r < t.endTime) return t;
|
|
2216
2220
|
return null;
|
|
2217
2221
|
}
|
|
2218
|
-
var $ = (e) => String(e).padStart(2, "0"),
|
|
2222
|
+
var $ = (e) => String(e).padStart(2, "0"), Wr = (e) => {
|
|
2219
2223
|
let t = new Date(e);
|
|
2220
2224
|
return `${t.getUTCFullYear()}-${$(t.getUTCMonth() + 1)}-${$(t.getUTCDate())}`;
|
|
2221
|
-
},
|
|
2222
|
-
function
|
|
2223
|
-
let r = Date.UTC(e, t - 1, 1), i = 1 + (
|
|
2225
|
+
}, Gr = 4, Kr = 7 * 36e5;
|
|
2226
|
+
function qr(e, t, n) {
|
|
2227
|
+
let r = Date.UTC(e, t - 1, 1), i = 1 + (Gr - new Date(r).getUTCDay() + 7) % 7, a = Date.UTC(e, t - 1, i + 14), o = (e) => {
|
|
2224
2228
|
let t = new Date(e).getUTCDay();
|
|
2225
|
-
return t === 0 || t === 6 || (n?.(
|
|
2229
|
+
return t === 0 || t === 6 || (n?.(Wr(e)) ?? !1);
|
|
2226
2230
|
};
|
|
2227
|
-
for (; o(a);) a -=
|
|
2228
|
-
return
|
|
2231
|
+
for (; o(a);) a -= Vr;
|
|
2232
|
+
return Wr(a);
|
|
2229
2233
|
}
|
|
2230
|
-
function
|
|
2231
|
-
let n =
|
|
2234
|
+
function Jr(e, t) {
|
|
2235
|
+
let n = Wr(e + Kr), r = (e, n) => ({
|
|
2232
2236
|
symbol: `VN30F${$(e % 100)}${$(n)}`,
|
|
2233
2237
|
year: e,
|
|
2234
2238
|
month: n,
|
|
2235
|
-
lastTradingDay:
|
|
2236
|
-
}), i = (e) => e.month === 12 ? r(e.year + 1, 1) : r(e.year, e.month + 1), a = new Date(e +
|
|
2239
|
+
lastTradingDay: qr(e, n, t)
|
|
2240
|
+
}), i = (e) => e.month === 12 ? r(e.year + 1, 1) : r(e.year, e.month + 1), a = new Date(e + Kr), o = r(a.getUTCFullYear(), a.getUTCMonth() + 1);
|
|
2237
2241
|
n > o.lastTradingDay && (o = i(o));
|
|
2238
2242
|
let s = [o, i(o)], c = i(s[1]);
|
|
2239
2243
|
for (; s.length < 4;) c.month % 3 == 0 && s.push(c), c = i(c);
|
|
@@ -2241,7 +2245,7 @@ function qr(e, t) {
|
|
|
2241
2245
|
}
|
|
2242
2246
|
//#endregion
|
|
2243
2247
|
//#region src/icons/iconSet.ts
|
|
2244
|
-
var
|
|
2248
|
+
var Yr = {
|
|
2245
2249
|
cursor: { d: "M6 3.5L18.5 12.5L12.6 13.6L9.7 19.4z" },
|
|
2246
2250
|
trendingUp: { d: "M3 17L9 11L13 14.5L21 6.5M15 6.5H21V12.5" },
|
|
2247
2251
|
trendingDown: { d: "M3 7L9 13L13 9.5L21 17.5M15 17.5H21V11.5" },
|
|
@@ -2375,7 +2379,7 @@ var Jr = {
|
|
|
2375
2379
|
]
|
|
2376
2380
|
] },
|
|
2377
2381
|
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" }
|
|
2378
|
-
},
|
|
2382
|
+
}, Xr = {
|
|
2379
2383
|
trendLine: {
|
|
2380
2384
|
d: "M5 18L19 6",
|
|
2381
2385
|
dots: [[5, 18], [19, 6]]
|
|
@@ -2728,7 +2732,7 @@ var Jr = {
|
|
|
2728
2732
|
],
|
|
2729
2733
|
dash: "M12 3V21"
|
|
2730
2734
|
}
|
|
2731
|
-
},
|
|
2735
|
+
}, Zr = {
|
|
2732
2736
|
candlestick: {
|
|
2733
2737
|
d: "M8 3.5V7M8 16V20.5M16 5V8.5M16 15.5V19",
|
|
2734
2738
|
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"]
|
|
@@ -2795,21 +2799,21 @@ var Jr = {
|
|
|
2795
2799
|
"M16 4.5h3v6h-3z"
|
|
2796
2800
|
]
|
|
2797
2801
|
}
|
|
2798
|
-
},
|
|
2799
|
-
function
|
|
2800
|
-
let t =
|
|
2802
|
+
}, Qr = 1.75, $r = .22, ei = /* @__PURE__ */ new WeakMap();
|
|
2803
|
+
function ti(e) {
|
|
2804
|
+
let t = ei.get(e);
|
|
2801
2805
|
if (t) return t;
|
|
2802
2806
|
let n = "";
|
|
2803
|
-
e.soft && (n += `<path d="${e.soft}" fill="currentColor" fill-opacity="${
|
|
2807
|
+
e.soft && (n += `<path d="${e.soft}" fill="currentColor" fill-opacity="${$r}" stroke="none"/>`);
|
|
2804
2808
|
for (let t of e.fills ?? []) n += `<path d="${t}" fill="currentColor" stroke="none"/>`;
|
|
2805
2809
|
e.d && (n += `<path d="${e.d}"/>`), e.dash && (n += `<path d="${e.dash}" stroke-dasharray="2 2.5"/>`);
|
|
2806
|
-
for (let [t, r, i =
|
|
2807
|
-
return
|
|
2810
|
+
for (let [t, r, i = Qr] of e.dots ?? []) n += `<circle cx="${t}" cy="${r}" r="${i}" fill="currentColor" stroke="none"/>`;
|
|
2811
|
+
return ei.set(e, n), n;
|
|
2808
2812
|
}
|
|
2809
|
-
function
|
|
2810
|
-
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">${
|
|
2813
|
+
function ni(e, t) {
|
|
2814
|
+
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">${ti(e)}</svg>`;
|
|
2811
2815
|
}
|
|
2812
2816
|
//#endregion
|
|
2813
|
-
export { t as CHART_STYLE_KEYS,
|
|
2817
|
+
export { t as CHART_STYLE_KEYS, Zr as CHART_TYPE_ICONS, bn as DARK_PRICE_LIMITS, B as DARK_TERMINAL, Cn as DARK_THEME, Yn as DEFAULT_BAR_SPACING, Jn as DEFAULT_BAR_WIDTH, Un as DEFAULT_CHART_OPTIONS, n as DEFAULT_DRAWING_STYLE, cn as DEFAULT_FONT_FAMILY, $n as DEFAULT_PANEL_HEIGHT, o as DEFAULT_RECONNECT, i as DEFAULT_SIGNAL_STYLE, s as DEFAULT_STREAM_CONFIG, qn as DEFAULT_TIMEFRAME_FAVORITES, a as DEFAULT_TRADE_ZONE_STYLE, r as DEFAULT_TRADING_CONFIG, Xr as DRAWING_TOOL_ICONS, tr as FIBONACCI, _r as HNX_SESSIONS, gr as HOSE_SESSIONS, Qr as ICON_DOT_RADIUS, $r as ICON_SOFT_OPACITY, br as KRX_SESSIONS, mr as KR_COLORS, xn as LIGHT_PRICE_LIMITS, wn as LIGHT_THEME, e as LayerType, Mr as MARKET_CRYPTO, Er as MARKET_HNX, wr as MARKET_HOSE, Tr as MARKET_HOSE_ETF, kr as MARKET_KRX, Ar as MARKET_NXT, Nr as MARKET_NYSE, jr as MARKET_UPBIT_KRW, Dr as MARKET_UPCOM, Or as MARKET_VN30F, Qn as MIN_PANEL_HEIGHT, le as MS_TIME_THRESHOLD, xr as NXT_SESSIONS, er as PHI, Xn as PRICE_AXIS_WIDTH, St as PRICE_SOURCES, ln as SANS_FONT_FAMILY, I as TC_PALETTE, Sn as TC_SERIES_COLORS, Wn as TIMEFRAMES_CRYPTO, Kn as TIMEFRAMES_FOREX, Gn as TIMEFRAMES_STOCK, Zn as TIME_AXIS_HEIGHT, Yr as UI_ICONS, vr as UPCOM_SESSIONS, yr as VN30F_SESSIONS, J as VN_COLORS, dn as VOLUME_ALPHA, Ge as alignToTimeframe, mt as autoPricePrecision, ut as barDateParts, lt as barDateZone, ue as barTimeUnit, Ye as barsAreDaily, Hn as chartStyleValue, re as clamp, Rr as computePriceLimits, _e as computePriceRange, ce as computeTickStep, m as contrastRatio, Fr as createMarketTheme, Pr as createVNTheme, xt as detectPrecision, Xt as drawingOption, W as en, me as findBarIndex, ge as fitPriceRange, _t as formatFraction, q as formatNumber, A as formatPrice, gt as formatPriceScaleLabel, We as formatTimestamp, ur as formatVND, bt as formatVolume, pr as formatVolumeLoc, vt as fractionTick, Ur as getCurrentSession, or as getLocale, lr as getLocaleStrings, ye as hexToRgba, ni as iconSvg, Et as indicatorSource, Ee as inkOn, ae as inverseLerp, qe as isDateOnly, Ct as isPriceSource, Ue as isTimeFrame, x as isUtcTimeZone, v as isValidTimeZone, ie as lerp, Se as lerpColor, Ln as lineDash, Ht as marketStatus, ve as mergeBar, se as niceNumber, fe as normalizeBar, de as normalizeBarTime, S as offsetAt, he as padPriceRange, Dt as parseIndicatorSource, w as parseTimeframe, nr as phiStep, Ft as pickBaseTimeframe, yt as priceFormatterFor, Ir as priceStepAt, pt as priceTagText, Lt as rankSymbols, Nn as readChartStyleOverrides, sn as readChartTypeOptions, In as readIndicatorPlotStyles, ne as readNews, Pn as readPaneStyle, l as readQuote, Te as readableOn, cr as registerLocale, At as resampleBars, zn as resolveChartTheme, Zt as resolveDrawingOptions, V as resolveVolumeColors, Z as roundToPriceStep, oe as roundToStep, Jt as sanitizeDrawingOptions, on as sanitizeDrawingStyle, zr as scaleMarketPrices, Bt as sessionMinute, ar as setLocale, pe as sliceVisibleData, wt as sourcePrice, Rt as stepDecimals, zt as symbolTimeZone, sr as t, He as tickBarCount, Ke as timeParts, st as timeframeBucketStart, it as timeframeFollowsDays, at as timeframeSpansDays, T as timeframeToMs, Xe as tzLabel, fr as usesKoreanUnits, rr as vi, Jr as vn30fContracts, qr as vn30fLastTradingDay, L as volumeColor, Ie as wallToUtc, p as withAlpha, y as zoneOffsetMinutes, Re as zonedDateFormatter };
|
|
2814
2818
|
|
|
2815
2819
|
//# sourceMappingURL=index.js.map
|