@tradecanvas/commons 1.59.1 → 1.59.3
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.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +330 -322
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -198,11 +198,11 @@ function u(e) {
|
|
|
198
198
|
}
|
|
199
199
|
//#endregion
|
|
200
200
|
//#region src/types/news.ts
|
|
201
|
-
var d = 300,
|
|
201
|
+
var d = 300, f = 1e3, p = (e, t) => {
|
|
202
202
|
if (typeof e != "string") return;
|
|
203
203
|
let n = e.trim();
|
|
204
204
|
return n ? n.slice(0, t) : void 0;
|
|
205
|
-
},
|
|
205
|
+
}, ee = (e) => {
|
|
206
206
|
if (typeof e == "string") try {
|
|
207
207
|
let t = new URL(e);
|
|
208
208
|
return t.protocol === "https:" || t.protocol === "http:" ? t.href : void 0;
|
|
@@ -210,61 +210,61 @@ var d = 300, ee = 1e3, f = (e, t) => {
|
|
|
210
210
|
return;
|
|
211
211
|
}
|
|
212
212
|
};
|
|
213
|
-
function
|
|
213
|
+
function te(e, t = 20) {
|
|
214
214
|
if (!Array.isArray(e)) return [];
|
|
215
215
|
let n = [];
|
|
216
216
|
for (let t of e) {
|
|
217
217
|
if (!t || typeof t != "object") continue;
|
|
218
|
-
let e = t, r =
|
|
218
|
+
let e = t, r = p(e.title, d);
|
|
219
219
|
if (!r || typeof e.time != "number" || !Number.isFinite(e.time)) continue;
|
|
220
220
|
let i = {
|
|
221
221
|
title: r,
|
|
222
222
|
time: e.time
|
|
223
|
-
}, a =
|
|
223
|
+
}, a = ee(e.url);
|
|
224
224
|
a && (i.url = a);
|
|
225
|
-
let o =
|
|
225
|
+
let o = p(e.source, d);
|
|
226
226
|
o && (i.source = o);
|
|
227
|
-
let s =
|
|
227
|
+
let s = p(e.summary, f);
|
|
228
228
|
s && (i.summary = s);
|
|
229
|
-
let c =
|
|
229
|
+
let c = p(e.id, d);
|
|
230
230
|
c && (i.id = c), n.push(i);
|
|
231
231
|
}
|
|
232
232
|
return n.sort((e, t) => t.time - e.time).slice(0, Math.max(0, t));
|
|
233
233
|
}
|
|
234
234
|
//#endregion
|
|
235
235
|
//#region src/utils/math.ts
|
|
236
|
-
function
|
|
236
|
+
function ne(e, t, n) {
|
|
237
237
|
return Math.max(t, Math.min(n, e));
|
|
238
238
|
}
|
|
239
|
-
function
|
|
239
|
+
function re(e, t, n) {
|
|
240
240
|
return e + (t - e) * n;
|
|
241
241
|
}
|
|
242
|
-
function
|
|
242
|
+
function ie(e, t, n) {
|
|
243
243
|
return e === t ? 0 : (n - e) / (t - e);
|
|
244
244
|
}
|
|
245
|
-
function
|
|
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 fe(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 me(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 he(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 ge(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 _e(e, t, n, r = .05, i = !1) {
|
|
|
326
326
|
return s === Infinity ? {
|
|
327
327
|
min: 0,
|
|
328
328
|
max: 1
|
|
329
|
-
} :
|
|
329
|
+
} : me(s, c, r, i);
|
|
330
330
|
}
|
|
331
|
-
function
|
|
331
|
+
function _e(e, t) {
|
|
332
332
|
return {
|
|
333
333
|
...e,
|
|
334
334
|
high: Math.max(e.high, t.price),
|
|
@@ -339,18 +339,18 @@ function ve(e, t) {
|
|
|
339
339
|
}
|
|
340
340
|
//#endregion
|
|
341
341
|
//#region src/utils/color.ts
|
|
342
|
-
function
|
|
342
|
+
function ve(e, t = 1) {
|
|
343
343
|
let n = e.slice(1);
|
|
344
344
|
return (n.length === 3 || n.length === 4) && (n = [...n.slice(0, 3)].map((e) => e + e).join("")), `rgba(${parseInt(n.slice(0, 2), 16)}, ${parseInt(n.slice(2, 4), 16)}, ${parseInt(n.slice(4, 6), 16)}, ${t})`;
|
|
345
345
|
}
|
|
346
|
-
function
|
|
346
|
+
function m(e, t) {
|
|
347
347
|
let n = e.trim();
|
|
348
|
-
if (/^#([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i.test(n)) return
|
|
348
|
+
if (/^#([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i.test(n)) return ve(n, t);
|
|
349
349
|
let r = n.match(/^rgba?\(\s*(\d+(?:\.\d+)?)[\s,]+(\d+(?:\.\d+)?)[\s,]+(\d+(?:\.\d+)?)/i);
|
|
350
350
|
return r ? `rgba(${r[1]}, ${r[2]}, ${r[3]}, ${t})` : e;
|
|
351
351
|
}
|
|
352
|
-
var
|
|
353
|
-
function
|
|
352
|
+
var ye = 3;
|
|
353
|
+
function h(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 xe(e) {
|
|
|
373
373
|
a: Math.min(1, Math.max(0, i))
|
|
374
374
|
};
|
|
375
375
|
}
|
|
376
|
-
function
|
|
377
|
-
let r =
|
|
376
|
+
function be(e, t, n) {
|
|
377
|
+
let r = h(e), i = h(t);
|
|
378
378
|
if (!r || !i) return n < .5 ? e : t;
|
|
379
379
|
let a = r.a + (i.a - r.a) * n, o = (e, t) => a === 0 ? 0 : Math.round((e * r.a + (t * i.a - e * r.a) * n) / a), s = `${o(r.r, i.r)},${o(r.g, i.g)},${o(r.b, i.b)}`;
|
|
380
|
-
return a >= 1 ? `rgb(${s})` : `rgba(${s},${Number(a.toFixed(
|
|
380
|
+
return a >= 1 ? `rgb(${s})` : `rgba(${s},${Number(a.toFixed(ye))})`;
|
|
381
381
|
}
|
|
382
|
-
function
|
|
383
|
-
let t =
|
|
382
|
+
function xe(e) {
|
|
383
|
+
let t = h(e);
|
|
384
384
|
if (!t) return null;
|
|
385
385
|
let n = (e) => {
|
|
386
386
|
let t = e / 255;
|
|
@@ -388,26 +388,26 @@ function Ce(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 g(e, t) {
|
|
392
|
+
let n = xe(e), r = xe(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 Se = 20;
|
|
396
|
+
function Ce(e, t, n, r) {
|
|
397
|
+
let i = g(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 <= Se; i++) {
|
|
400
|
+
let a = be(e, n, i / Se);
|
|
401
|
+
if ((g(a, t) ?? 0) >= r) return a;
|
|
402
402
|
}
|
|
403
403
|
return n;
|
|
404
404
|
}
|
|
405
|
-
function
|
|
406
|
-
return (
|
|
405
|
+
function we(e, t, n) {
|
|
406
|
+
return (g(e, t) ?? 0) >= (g(e, n) ?? 0) ? t : n;
|
|
407
407
|
}
|
|
408
408
|
//#endregion
|
|
409
409
|
//#region src/utils/timezone.ts
|
|
410
|
-
var
|
|
410
|
+
var _ = 6e4, Te = 1440 * _, v = 15 * _, Ee = 8192, De = 7 * Te, Oe = 4096, ke = new Set([
|
|
411
411
|
"UTC",
|
|
412
412
|
"Etc/UTC",
|
|
413
413
|
"GMT",
|
|
@@ -418,9 +418,9 @@ var h = 6e4, De = 1440 * h, g = 15 * h, Oe = 8192, ke = 7 * De, Ae = 4096, je =
|
|
|
418
418
|
"Etc/Universal",
|
|
419
419
|
"Zulu",
|
|
420
420
|
"Etc/Zulu"
|
|
421
|
-
]),
|
|
422
|
-
function
|
|
423
|
-
let t =
|
|
421
|
+
]), Ae = /* @__PURE__ */ new Map(), y = /* @__PURE__ */ new Map(), je = /* @__PURE__ */ new Map();
|
|
422
|
+
function Me(e) {
|
|
423
|
+
let t = Ae.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 Pe(e) {
|
|
|
430
430
|
hour: "numeric",
|
|
431
431
|
minute: "numeric",
|
|
432
432
|
second: "numeric"
|
|
433
|
-
}),
|
|
433
|
+
}), Ae.set(e, t)), t;
|
|
434
434
|
}
|
|
435
|
-
function
|
|
435
|
+
function Ne(e) {
|
|
436
436
|
if (!e) return !1;
|
|
437
437
|
try {
|
|
438
|
-
return
|
|
438
|
+
return Me(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 b(e, t) {
|
|
444
|
+
if (!Number.isFinite(t) || ke.has(e)) return 0;
|
|
445
|
+
let n = je.get(e);
|
|
446
|
+
n || (n = /* @__PURE__ */ new Map(), je.set(e, n));
|
|
447
|
+
let r = Math.floor(t / De), i = n.get(r);
|
|
448
|
+
return i || (i = Pe(e, r * De), n.size >= Oe && n.clear(), n.set(r, i)), t < i.change ? i.before : i.after;
|
|
449
|
+
}
|
|
450
|
+
function Pe(e, t) {
|
|
451
|
+
let n = x(e, t), r = t + De - v, i = x(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 > v;) {
|
|
459
|
+
let t = a + Math.floor((r - a) / v / 2) * v;
|
|
460
|
+
x(e, t) === n ? a = t : r = t;
|
|
461
461
|
}
|
|
462
462
|
return {
|
|
463
463
|
before: n,
|
|
@@ -465,11 +465,11 @@ function Fe(e, t) {
|
|
|
465
465
|
after: i
|
|
466
466
|
};
|
|
467
467
|
}
|
|
468
|
-
function
|
|
469
|
-
let n = Math.floor(t /
|
|
468
|
+
function x(e, t) {
|
|
469
|
+
let n = Math.floor(t / v), r = `${e}|${n}`, i = y.get(r);
|
|
470
470
|
if (i !== void 0) return i;
|
|
471
|
-
let a = n *
|
|
472
|
-
for (let t of
|
|
471
|
+
let a = n * v, o = 1970, s = 1, c = 1, l = 0, u = 0, d = 0;
|
|
472
|
+
for (let t of Me(e).formatToParts(new Date(a))) {
|
|
473
473
|
let e = Number(t.value);
|
|
474
474
|
switch (t.type) {
|
|
475
475
|
case "year":
|
|
@@ -492,24 +492,24 @@ function b(e, t) {
|
|
|
492
492
|
break;
|
|
493
493
|
}
|
|
494
494
|
}
|
|
495
|
-
let
|
|
496
|
-
return
|
|
495
|
+
let f = Math.round((Date.UTC(o, s - 1, c, l, u, d) - a) / _);
|
|
496
|
+
return y.size >= Ee && y.clear(), y.set(r, f), f;
|
|
497
497
|
}
|
|
498
|
-
function
|
|
499
|
-
return e === 0 || typeof e == "string" &&
|
|
498
|
+
function S(e) {
|
|
499
|
+
return e === 0 || typeof e == "string" && ke.has(e);
|
|
500
500
|
}
|
|
501
|
-
function
|
|
502
|
-
return e === null ? -new Date(t).getTimezoneOffset() : typeof e == "number" ? e :
|
|
501
|
+
function C(e, t) {
|
|
502
|
+
return e === null ? -new Date(t).getTimezoneOffset() : typeof e == "number" ? e : b(e, t);
|
|
503
503
|
}
|
|
504
|
-
function
|
|
505
|
-
let n = e -
|
|
506
|
-
if (n +
|
|
507
|
-
let r = e -
|
|
508
|
-
return r +
|
|
509
|
-
}
|
|
510
|
-
var
|
|
511
|
-
function
|
|
512
|
-
let r = `${e}|${JSON.stringify(t)}|${n === null ? "local" : typeof n == "number" ? `fixed:${n}` : n}`, i =
|
|
504
|
+
function Fe(e, t) {
|
|
505
|
+
let n = e - C(t, e - Te) * _;
|
|
506
|
+
if (n + C(t, n) * _ === e) return n;
|
|
507
|
+
let r = e - C(t, e + Te) * _;
|
|
508
|
+
return r + C(t, r) * _ === e ? r : n;
|
|
509
|
+
}
|
|
510
|
+
var Ie = /* @__PURE__ */ new Map();
|
|
511
|
+
function Le(e, t, n) {
|
|
512
|
+
let r = `${e}|${JSON.stringify(t)}|${n === null ? "local" : typeof n == "number" ? `fixed:${n}` : n}`, i = Ie.get(r);
|
|
513
513
|
if (i) return i;
|
|
514
514
|
let a = n === null ? void 0 : typeof n == "number" ? "UTC" : n, o;
|
|
515
515
|
try {
|
|
@@ -523,12 +523,12 @@ function Re(e, t, n) {
|
|
|
523
523
|
timeZone: a
|
|
524
524
|
});
|
|
525
525
|
}
|
|
526
|
-
let s = typeof n == "number" ? n *
|
|
527
|
-
return i = (e) => o.format(new Date(e + s)),
|
|
526
|
+
let s = typeof n == "number" ? n * _ : 0;
|
|
527
|
+
return i = (e) => o.format(new Date(e + s)), Ie.set(r, i), i;
|
|
528
528
|
}
|
|
529
529
|
//#endregion
|
|
530
530
|
//#region src/utils/time.ts
|
|
531
|
-
var
|
|
531
|
+
var Re = {
|
|
532
532
|
"1s": 1e3,
|
|
533
533
|
"5s": 5e3,
|
|
534
534
|
"15s": 15e3,
|
|
@@ -555,16 +555,16 @@ var ze = {
|
|
|
555
555
|
"3M": 7776e6,
|
|
556
556
|
"6M": 15552e6,
|
|
557
557
|
"12M": 31536e6
|
|
558
|
-
},
|
|
558
|
+
}, w = {
|
|
559
559
|
s: 1e3,
|
|
560
560
|
m: 6e4,
|
|
561
561
|
h: 36e5,
|
|
562
562
|
d: 864e5,
|
|
563
563
|
w: 6048e5,
|
|
564
564
|
M: 2592e6
|
|
565
|
-
},
|
|
566
|
-
function
|
|
567
|
-
let t =
|
|
565
|
+
}, ze = /^([1-9]\d*)([smhdwM])$/;
|
|
566
|
+
function T(e) {
|
|
567
|
+
let t = ze.exec(e);
|
|
568
568
|
if (!t) return null;
|
|
569
569
|
let n = Number(t[1]);
|
|
570
570
|
return Number.isSafeInteger(n) ? {
|
|
@@ -572,24 +572,24 @@ function w(e) {
|
|
|
572
572
|
unit: t[2]
|
|
573
573
|
} : null;
|
|
574
574
|
}
|
|
575
|
-
var
|
|
576
|
-
function
|
|
575
|
+
var Be = 1e6;
|
|
576
|
+
function Ve(e) {
|
|
577
577
|
let t = /^([1-9]\d*)T$/.exec(e);
|
|
578
578
|
if (!t) return null;
|
|
579
579
|
let n = Number(t[1]);
|
|
580
|
-
return Number.isSafeInteger(n) && n <=
|
|
580
|
+
return Number.isSafeInteger(n) && n <= Be ? n : null;
|
|
581
581
|
}
|
|
582
|
-
function
|
|
583
|
-
return
|
|
582
|
+
function He(e) {
|
|
583
|
+
return T(e) !== null;
|
|
584
584
|
}
|
|
585
|
-
function
|
|
586
|
-
let t =
|
|
585
|
+
function E(e) {
|
|
586
|
+
let t = Re[e];
|
|
587
587
|
if (t !== void 0) return t;
|
|
588
|
-
let n =
|
|
589
|
-
return n ? n.count *
|
|
588
|
+
let n = T(e);
|
|
589
|
+
return n ? n.count * w[n.unit] : NaN;
|
|
590
590
|
}
|
|
591
|
-
function
|
|
592
|
-
let n = new Date(e), r =
|
|
591
|
+
function Ue(e, t) {
|
|
592
|
+
let n = new Date(e), r = E(t);
|
|
593
593
|
return r >= 864e5 ? n.toLocaleDateString(void 0, {
|
|
594
594
|
month: "short",
|
|
595
595
|
day: "numeric"
|
|
@@ -602,11 +602,11 @@ function We(e, t) {
|
|
|
602
602
|
second: "2-digit"
|
|
603
603
|
});
|
|
604
604
|
}
|
|
605
|
-
function
|
|
606
|
-
let n =
|
|
605
|
+
function We(e, t) {
|
|
606
|
+
let n = E(t);
|
|
607
607
|
return Math.floor(e / n) * n;
|
|
608
608
|
}
|
|
609
|
-
function
|
|
609
|
+
function Ge(e, t) {
|
|
610
610
|
if (t === null) {
|
|
611
611
|
let t = new Date(e);
|
|
612
612
|
return {
|
|
@@ -617,7 +617,7 @@ function Ke(e, t) {
|
|
|
617
617
|
minutes: t.getMinutes()
|
|
618
618
|
};
|
|
619
619
|
}
|
|
620
|
-
let n = new Date(e +
|
|
620
|
+
let n = new Date(e + C(t, e) * 6e4);
|
|
621
621
|
return {
|
|
622
622
|
year: n.getUTCFullYear(),
|
|
623
623
|
month: n.getUTCMonth() + 1,
|
|
@@ -626,122 +626,122 @@ function Ke(e, t) {
|
|
|
626
626
|
minutes: n.getUTCMinutes()
|
|
627
627
|
};
|
|
628
628
|
}
|
|
629
|
-
function
|
|
629
|
+
function Ke(e) {
|
|
630
630
|
return e.hours === 0 && e.minutes === 0;
|
|
631
631
|
}
|
|
632
|
-
var
|
|
633
|
-
function
|
|
632
|
+
var qe = 20 * 36e5;
|
|
633
|
+
function Je(e) {
|
|
634
634
|
let t = Math.min(e.length, 64);
|
|
635
635
|
if (t < 2) return;
|
|
636
|
-
let n =
|
|
636
|
+
let n = le(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);
|
|
640
640
|
}
|
|
641
|
-
return r === Infinity ? void 0 : r >=
|
|
641
|
+
return r === Infinity ? void 0 : r >= qe;
|
|
642
642
|
}
|
|
643
|
-
function
|
|
644
|
-
let n =
|
|
643
|
+
function Ye(e, t = Date.now()) {
|
|
644
|
+
let n = C(e, t), r = n >= 0 ? "+" : "-", i = Math.abs(n), a = Math.floor(i / 60), o = i % 60;
|
|
645
645
|
return o === 0 ? `UTC${r}${a}` : `UTC${r}${a}:${String(o).padStart(2, "0")}`;
|
|
646
646
|
}
|
|
647
|
-
var
|
|
647
|
+
var Xe = Date.UTC(1970, 0, 5), Ze = w.m, D = w.d, Qe = 24, $e = {
|
|
648
648
|
count: 1,
|
|
649
649
|
unit: "m"
|
|
650
|
-
},
|
|
651
|
-
function
|
|
652
|
-
let t =
|
|
653
|
-
return t || (t =
|
|
650
|
+
}, et = 256, O = /* @__PURE__ */ new Map();
|
|
651
|
+
function k(e) {
|
|
652
|
+
let t = O.get(e);
|
|
653
|
+
return t || (t = T(e) ?? $e, O.size >= et && O.clear(), O.set(e, t)), t;
|
|
654
654
|
}
|
|
655
|
-
function
|
|
655
|
+
function tt({ unit: e }) {
|
|
656
656
|
return e === "d" || e === "w" || e === "M";
|
|
657
657
|
}
|
|
658
|
+
function nt(e) {
|
|
659
|
+
return e.unit === "h" ? e.count > 1 && Qe % e.count === 0 : tt(e);
|
|
660
|
+
}
|
|
658
661
|
function rt(e) {
|
|
659
|
-
return
|
|
662
|
+
return nt(k(e));
|
|
660
663
|
}
|
|
661
664
|
function it(e) {
|
|
662
|
-
return
|
|
665
|
+
return tt(k(e));
|
|
663
666
|
}
|
|
664
667
|
function at(e) {
|
|
665
|
-
return
|
|
666
|
-
}
|
|
667
|
-
function ot(e) {
|
|
668
|
-
return e !== void 0 && !x(e);
|
|
668
|
+
return e !== void 0 && !S(e);
|
|
669
669
|
}
|
|
670
|
-
function
|
|
671
|
-
let r =
|
|
672
|
-
return !
|
|
670
|
+
function ot(e, t, n = 1) {
|
|
671
|
+
let r = k(t), i = typeof n == "number" ? n : n.weekStartsOn ?? 1, a = typeof n == "number" ? void 0 : n.timeZone;
|
|
672
|
+
return !at(a) || !nt(r) || typeof n == "object" && n.dates && e % D === 0 ? st(e, r, i) : Fe(st(e + C(a, e) * Ze, r, i), a);
|
|
673
673
|
}
|
|
674
|
-
function
|
|
674
|
+
function st(e, { count: t, unit: n }, r) {
|
|
675
675
|
if (n === "s" || n === "m" || n === "h" || n === "d") {
|
|
676
|
-
let r = t *
|
|
676
|
+
let r = t * w[n];
|
|
677
677
|
return Math.floor(e / r) * r;
|
|
678
678
|
}
|
|
679
679
|
let i = new Date(e);
|
|
680
680
|
if (n === "w") {
|
|
681
681
|
let e = (i.getUTCDay() - r + 7) % 7, n = Date.UTC(i.getUTCFullYear(), i.getUTCMonth(), i.getUTCDate() - e);
|
|
682
682
|
if (t <= 1) return n;
|
|
683
|
-
let a = Math.floor((n -
|
|
684
|
-
return
|
|
683
|
+
let a = Math.floor((n - Xe) / (7 * D));
|
|
684
|
+
return Xe + Math.floor(a / t) * t * 7 * D;
|
|
685
685
|
}
|
|
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 %
|
|
689
|
+
function ct(e, t, n) {
|
|
690
|
+
return e % D === 0 ? 0 : n && ot(e, "1d", { timeZone: n }) === e ? n : t;
|
|
691
691
|
}
|
|
692
|
-
function
|
|
693
|
-
return
|
|
692
|
+
function lt(e, t, n) {
|
|
693
|
+
return Ge(e, ct(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 ut = 64, A = /* @__PURE__ */ new Map();
|
|
698
|
+
function dt(e, t) {
|
|
699
|
+
let n = `${e}|${t}`, r = A.get(n);
|
|
700
|
+
return r || (A.size >= ut && A.clear(), r = new Intl.NumberFormat(e, {
|
|
701
701
|
minimumFractionDigits: t,
|
|
702
702
|
maximumFractionDigits: t
|
|
703
|
-
}),
|
|
703
|
+
}), A.set(n, r)), r;
|
|
704
704
|
}
|
|
705
|
-
function
|
|
706
|
-
return t.formatPrice ? t.formatPrice(e) :
|
|
705
|
+
function ft(e, t, n) {
|
|
706
|
+
return t.formatPrice ? t.formatPrice(e) : j(e, n ?? t.pricePrecision ?? pt(t.priceRange.min, t.priceRange.max), t.numberLocale ?? "en-US");
|
|
707
707
|
}
|
|
708
|
-
function
|
|
709
|
-
return
|
|
708
|
+
function j(e, t = 2, n = "en-US") {
|
|
709
|
+
return dt(n, t).format(e);
|
|
710
710
|
}
|
|
711
|
-
function
|
|
711
|
+
function pt(e, t) {
|
|
712
712
|
if (!(t > e) || !Number.isFinite(e) || !Number.isFinite(t)) return 2;
|
|
713
|
-
let n =
|
|
713
|
+
let n = se(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 mt = 2;
|
|
717
|
+
function ht(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 = j(Math.abs(t), mt, i);
|
|
721
|
+
return `${r === j(0, mt, i) ? "" : t > 0 ? "+" : "-"}${r}%`;
|
|
722
722
|
}
|
|
723
|
-
return
|
|
723
|
+
return j(e / n * 100, 2, i);
|
|
724
724
|
}
|
|
725
|
-
return
|
|
725
|
+
return j(e, r, i);
|
|
726
726
|
}
|
|
727
|
-
function
|
|
727
|
+
function gt(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 _t(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 vt(e) {
|
|
739
|
+
return e ? typeof e == "function" ? e : _t(e) === null ? null : (t) => gt(t, e.denominator, e.subDenominator) : null;
|
|
740
740
|
}
|
|
741
|
-
function
|
|
741
|
+
function yt(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 bt(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 xt(e) {
|
|
|
751
751
|
}
|
|
752
752
|
//#endregion
|
|
753
753
|
//#region src/utils/priceSource.ts
|
|
754
|
-
var
|
|
754
|
+
var xt = [
|
|
755
755
|
"close",
|
|
756
756
|
"open",
|
|
757
757
|
"high",
|
|
@@ -761,10 +761,10 @@ var St = [
|
|
|
761
761
|
"ohlc4",
|
|
762
762
|
"hlcc4"
|
|
763
763
|
];
|
|
764
|
-
function
|
|
765
|
-
return typeof e == "string" &&
|
|
764
|
+
function St(e) {
|
|
765
|
+
return typeof e == "string" && xt.includes(e);
|
|
766
766
|
}
|
|
767
|
-
function
|
|
767
|
+
function Ct(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 wt(e, t) {
|
|
|
776
776
|
default: return e.close;
|
|
777
777
|
}
|
|
778
778
|
}
|
|
779
|
-
var
|
|
780
|
-
function
|
|
779
|
+
var wt = /^ind:([^:]+):(.+)$/;
|
|
780
|
+
function Tt(e, t) {
|
|
781
781
|
return `ind:${e}:${t}`;
|
|
782
782
|
}
|
|
783
|
-
function
|
|
783
|
+
function Et(e) {
|
|
784
784
|
if (typeof e != "string") return null;
|
|
785
|
-
let t =
|
|
785
|
+
let t = wt.exec(e);
|
|
786
786
|
return t ? {
|
|
787
787
|
instanceId: t[1],
|
|
788
788
|
key: t[2]
|
|
@@ -790,11 +790,11 @@ function Dt(e) {
|
|
|
790
790
|
}
|
|
791
791
|
//#endregion
|
|
792
792
|
//#region src/utils/resample.ts
|
|
793
|
-
var
|
|
794
|
-
function
|
|
795
|
-
let r =
|
|
793
|
+
var Dt = 864e5, Ot = 6e4;
|
|
794
|
+
function kt(e, t, n = 1) {
|
|
795
|
+
let r = At(e, t, n), i = [], a = null;
|
|
796
796
|
for (let n of e) {
|
|
797
|
-
let e =
|
|
797
|
+
let e = ot(n.time, t, r);
|
|
798
798
|
a === null || e !== a.time ? (a = {
|
|
799
799
|
time: e,
|
|
800
800
|
open: n.open,
|
|
@@ -806,49 +806,49 @@ function At(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 ||
|
|
809
|
+
function At(e, t, n) {
|
|
810
|
+
return typeof n == "number" || n.timeZone === void 0 || n.dates !== void 0 || S(n.timeZone) || !rt(t) ? n : {
|
|
811
811
|
...n,
|
|
812
|
-
dates:
|
|
812
|
+
dates: Je(e) === !0
|
|
813
813
|
};
|
|
814
814
|
}
|
|
815
|
-
var
|
|
816
|
-
function
|
|
817
|
-
let n =
|
|
815
|
+
var jt = (e) => e === "s" || e === "m" || e === "h" || e === "d";
|
|
816
|
+
function Mt(e, t) {
|
|
817
|
+
let n = T(e), r = T(t);
|
|
818
818
|
if (!n || !r) return !1;
|
|
819
|
-
let i =
|
|
820
|
-
return n.unit === "d" && n.count > 1 ? !1 :
|
|
819
|
+
let i = E(e);
|
|
820
|
+
return n.unit === "d" && n.count > 1 ? !1 : jt(r.unit) ? jt(n.unit) && E(t) % i === 0 : n.unit === r.unit ? r.count % n.count === 0 : jt(n.unit) && Dt % i === 0;
|
|
821
821
|
}
|
|
822
|
-
function
|
|
823
|
-
let n =
|
|
824
|
-
if (!(n <
|
|
822
|
+
function Nt(e, t) {
|
|
823
|
+
let n = E(e);
|
|
824
|
+
if (!(n < Dt)) return !0;
|
|
825
825
|
let r = (/* @__PURE__ */ new Date()).getUTCFullYear();
|
|
826
|
-
return [Date.UTC(r, 0, 1), Date.UTC(r, 6, 1)].every((e) =>
|
|
826
|
+
return [Date.UTC(r, 0, 1), Date.UTC(r, 6, 1)].every((e) => C(t, e) * Ot % n === 0);
|
|
827
827
|
}
|
|
828
|
-
function
|
|
829
|
-
let { timeZone: r } = n, i = r !== void 0 && !
|
|
828
|
+
function Pt(e, t, n = {}) {
|
|
829
|
+
let { timeZone: r } = n, i = r !== void 0 && !S(r) && rt(e) ? r : void 0, a = null, o = 0;
|
|
830
830
|
for (let n of t) {
|
|
831
|
-
if (!
|
|
832
|
-
let t =
|
|
831
|
+
if (!Mt(n, e) || i !== void 0 && !Nt(n, i)) continue;
|
|
832
|
+
let t = E(n);
|
|
833
833
|
t > o && (a = n, o = t);
|
|
834
834
|
}
|
|
835
835
|
return a;
|
|
836
836
|
}
|
|
837
837
|
//#endregion
|
|
838
838
|
//#region src/utils/symbols.ts
|
|
839
|
-
function
|
|
839
|
+
function Ft(e, t) {
|
|
840
840
|
if (!e) return 0;
|
|
841
841
|
if (e === t) return 1e3;
|
|
842
842
|
if (e.startsWith(t)) return 600 - Math.min(100, e.length - t.length);
|
|
843
843
|
let n = e.indexOf(t);
|
|
844
844
|
return n >= 0 ? 300 - Math.min(100, n) : 0;
|
|
845
845
|
}
|
|
846
|
-
function
|
|
846
|
+
function It(e, t, n = 50, r) {
|
|
847
847
|
let i = t.trim().toUpperCase();
|
|
848
848
|
if (!i) return e.slice(0, n);
|
|
849
849
|
let a = [];
|
|
850
850
|
for (let t of e) {
|
|
851
|
-
let e = Math.max(
|
|
851
|
+
let e = Math.max(Ft(t.symbol.toUpperCase(), i), Ft((t.description ?? "").toUpperCase(), i) * .8);
|
|
852
852
|
e > 0 && a.push({
|
|
853
853
|
info: t,
|
|
854
854
|
score: e + (r?.(t) ?? 0)
|
|
@@ -856,7 +856,7 @@ function Lt(e, t, n = 50, r) {
|
|
|
856
856
|
}
|
|
857
857
|
return a.sort((e, t) => t.score - e.score || e.info.symbol.localeCompare(t.info.symbol)), a.slice(0, n).map((e) => e.info);
|
|
858
858
|
}
|
|
859
|
-
function
|
|
859
|
+
function Lt(e) {
|
|
860
860
|
let t = typeof e == "number" ? e : Number(e);
|
|
861
861
|
if (!Number.isFinite(t) || t <= 0) return 0;
|
|
862
862
|
for (let e = 0; e <= 12; e++) {
|
|
@@ -865,10 +865,10 @@ function Rt(e) {
|
|
|
865
865
|
}
|
|
866
866
|
return 12;
|
|
867
867
|
}
|
|
868
|
-
function
|
|
868
|
+
function Rt(e) {
|
|
869
869
|
return e?.timeZone ?? e?.timezone;
|
|
870
870
|
}
|
|
871
|
-
function
|
|
871
|
+
function zt(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 Bt(e) {
|
|
|
876
876
|
}
|
|
877
877
|
//#endregion
|
|
878
878
|
//#region src/utils/marketStatus.ts
|
|
879
|
-
var
|
|
880
|
-
function
|
|
881
|
-
let n =
|
|
882
|
-
let t =
|
|
879
|
+
var M = 864e5, N = 6e4, Bt = 8;
|
|
880
|
+
function Vt(e, t) {
|
|
881
|
+
let n = Rt(e), r = (e?.sessions ?? []).flatMap((e) => {
|
|
882
|
+
let t = zt(e.start), n = zt(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 || !Ne(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 = b(n, t) * N, a = Math.floor((t + i) / M) * M, o = (e) => e - b(n, e - b(n, e - i) * N) * N, s = [];
|
|
894
|
+
for (let e = -1; e <= Bt; e++) {
|
|
895
|
+
let t = a + e * M, n = (Math.floor(t / M) + 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 * N, i = (e.end > e.start ? t : t + M) + e.end * N;
|
|
899
899
|
s.push([o(r), o(i)]);
|
|
900
900
|
}
|
|
901
901
|
}
|
|
@@ -918,15 +918,15 @@ function Ht(e, t) {
|
|
|
918
918
|
}
|
|
919
919
|
//#endregion
|
|
920
920
|
//#region src/utils/drawingOptions.ts
|
|
921
|
-
var
|
|
922
|
-
function
|
|
921
|
+
var Ht = 48, Ut = 2e3, Wt = 1e4;
|
|
922
|
+
function Gt(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 >= Ht) 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) > Wt || 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 Kt(e) {
|
|
|
935
935
|
}
|
|
936
936
|
return t;
|
|
937
937
|
}
|
|
938
|
-
function
|
|
938
|
+
function Kt(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 Gt(t);
|
|
944
|
+
case "text": return typeof t == "string" ? t.slice(0, Ut) : void 0;
|
|
945
945
|
}
|
|
946
946
|
}
|
|
947
|
-
function
|
|
947
|
+
function qt(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 = Kt(t, i);
|
|
954
954
|
a !== void 0 && (n[r] = a);
|
|
955
955
|
}
|
|
956
956
|
return n;
|
|
957
957
|
}
|
|
958
|
-
function
|
|
958
|
+
function Jt(e) {
|
|
959
959
|
return Array.isArray(e) ? e.map((e) => ({ ...e })) : e;
|
|
960
960
|
}
|
|
961
|
-
function
|
|
961
|
+
function Yt(e, t, n) {
|
|
962
962
|
let r = e?.[n];
|
|
963
|
-
return r ?
|
|
963
|
+
return r ? Jt((t && n in t ? Kt(r, t[n]) : void 0) ?? r.default) : t?.[n];
|
|
964
964
|
}
|
|
965
|
-
function
|
|
965
|
+
function Xt(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] = Yt(e, t, r);
|
|
968
968
|
return n;
|
|
969
969
|
}
|
|
970
970
|
//#endregion
|
|
971
971
|
//#region src/utils/drawingStyle.ts
|
|
972
|
-
var
|
|
972
|
+
var Zt = [
|
|
973
973
|
"solid",
|
|
974
974
|
"dashed",
|
|
975
975
|
"dotted"
|
|
976
|
-
],
|
|
977
|
-
function
|
|
976
|
+
], Qt = 64, $t = 2e3, en = 20, tn = 200;
|
|
977
|
+
function nn(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
|
|
981
|
-
return typeof e == "string" && e.length > 0 && e.length <=
|
|
980
|
+
function rn(e) {
|
|
981
|
+
return typeof e == "string" && e.length > 0 && e.length <= Qt ? e : void 0;
|
|
982
982
|
}
|
|
983
|
-
function
|
|
983
|
+
function an(e) {
|
|
984
984
|
if (typeof e != "object" || !e) return {};
|
|
985
|
-
let t = e, n = {}, r =
|
|
985
|
+
let t = e, n = {}, r = rn(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 = nn(t.lineWidth, .5, en);
|
|
988
|
+
i !== void 0 && (n.lineWidth = i), Zt.includes(t.lineStyle) && (n.lineStyle = t.lineStyle);
|
|
989
|
+
let a = rn(t.fillColor);
|
|
990
990
|
a !== void 0 && (n.fillColor = a);
|
|
991
|
-
let o =
|
|
991
|
+
let o = nn(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 = nn(t.fontSize, 6, tn);
|
|
994
|
+
return s !== void 0 && (n.fontSize = s), typeof t.text == "string" && (n.text = t.text.slice(0, $t)), n;
|
|
995
995
|
}
|
|
996
996
|
//#endregion
|
|
997
997
|
//#region src/utils/chartTypeOptions.ts
|
|
998
|
-
var
|
|
998
|
+
var P = (e) => typeof e == "number" && Number.isFinite(e) && e > 0, on = (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
|
+
...P(n) || n === "atr" ? { boxSize: n } : {},
|
|
1006
|
+
...on(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 = on(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
|
+
...P(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
|
+
...P(n) || n === "auto" ? { boxSize: n } : {},
|
|
1024
|
+
...on(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 = P(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 m(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: m(z, .14),
|
|
1082
|
+
areaBottomColor: m(z, 0),
|
|
1083
|
+
volumeUp: m(z, .14),
|
|
1084
|
+
volumeDown: m(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: m(R, .12),
|
|
1103
|
+
areaBottomColor: m(R, 0),
|
|
1104
|
+
volumeUp: m(R, .13),
|
|
1105
|
+
volumeDown: m(R, .08),
|
|
1106
1106
|
axisLine: "#cfcac0",
|
|
1107
1107
|
axisLabel: "#4a4e57",
|
|
1108
1108
|
axisLabelBackground: "#eeebe3",
|
|
@@ -1707,14 +1707,22 @@ var dr = [
|
|
|
1707
1707
|
function fr(e) {
|
|
1708
1708
|
return /^ko([-_]|$)/i.test(e);
|
|
1709
1709
|
}
|
|
1710
|
-
function pr(e, t) {
|
|
1710
|
+
function pr(e, t, n) {
|
|
1711
|
+
try {
|
|
1712
|
+
return j(e, t, n);
|
|
1713
|
+
} catch {
|
|
1714
|
+
return q(e, t, "en");
|
|
1715
|
+
}
|
|
1716
|
+
}
|
|
1717
|
+
function mr(e, t) {
|
|
1711
1718
|
let n = t ?? K;
|
|
1712
1719
|
if (!Number.isFinite(e)) return String(e);
|
|
1713
1720
|
if (fr(n)) {
|
|
1714
1721
|
for (let [t, r] of dr) if (Math.round(e / t * 100) >= 100) return q(e / t, 2, n) + r;
|
|
1715
1722
|
return q(e, 0, n);
|
|
1716
1723
|
}
|
|
1717
|
-
|
|
1724
|
+
let r = G.has(n) ? (e, t) => q(e, t, n) : (e, t) => pr(e, t, n);
|
|
1725
|
+
return e >= 1e9 ? r(e / 1e9, 2) + "B" : e >= 1e6 ? r(e / 1e6, 2) + "M" : e >= 1e3 ? r(e / 1e3, 2) + "K" : r(e, 0);
|
|
1718
1726
|
}
|
|
1719
1727
|
//#endregion
|
|
1720
1728
|
//#region src/market/presets.ts
|
|
@@ -1725,14 +1733,14 @@ var J = {
|
|
|
1725
1733
|
ceiling: "#D946EF",
|
|
1726
1734
|
floor: "#06B6D4",
|
|
1727
1735
|
reference: "#EAB308"
|
|
1728
|
-
}, Y = "Asia/Ho_Chi_Minh",
|
|
1736
|
+
}, Y = "Asia/Ho_Chi_Minh", hr = {
|
|
1729
1737
|
up: "#E8313F",
|
|
1730
1738
|
down: "#2F6FEB",
|
|
1731
1739
|
unchanged: "#8B8F99",
|
|
1732
1740
|
ceiling: "#C2121F",
|
|
1733
1741
|
floor: "#1E4FC2",
|
|
1734
1742
|
reference: "#8B8F99"
|
|
1735
|
-
},
|
|
1743
|
+
}, gr = "Asia/Seoul", _r = [
|
|
1736
1744
|
{
|
|
1737
1745
|
name: "ATO",
|
|
1738
1746
|
startTime: "09:00",
|
|
@@ -1763,7 +1771,7 @@ var J = {
|
|
|
1763
1771
|
endTime: "14:45",
|
|
1764
1772
|
type: "preClose"
|
|
1765
1773
|
}
|
|
1766
|
-
],
|
|
1774
|
+
], vr = [
|
|
1767
1775
|
{
|
|
1768
1776
|
name: "Phiên 1",
|
|
1769
1777
|
startTime: "09:15",
|
|
@@ -1794,7 +1802,7 @@ var J = {
|
|
|
1794
1802
|
endTime: "15:00",
|
|
1795
1803
|
type: "postClose"
|
|
1796
1804
|
}
|
|
1797
|
-
],
|
|
1805
|
+
], yr = [
|
|
1798
1806
|
{
|
|
1799
1807
|
name: "Phiên 1",
|
|
1800
1808
|
startTime: "09:15",
|
|
@@ -1813,7 +1821,7 @@ var J = {
|
|
|
1813
1821
|
endTime: "14:30",
|
|
1814
1822
|
type: "continuous"
|
|
1815
1823
|
}
|
|
1816
|
-
],
|
|
1824
|
+
], br = [
|
|
1817
1825
|
{
|
|
1818
1826
|
name: "ATO",
|
|
1819
1827
|
startTime: "08:45",
|
|
@@ -1844,7 +1852,7 @@ var J = {
|
|
|
1844
1852
|
endTime: "14:45",
|
|
1845
1853
|
type: "preClose"
|
|
1846
1854
|
}
|
|
1847
|
-
],
|
|
1855
|
+
], xr = [
|
|
1848
1856
|
{
|
|
1849
1857
|
name: "장전 동시호가",
|
|
1850
1858
|
startTime: "08:30",
|
|
@@ -1875,7 +1883,7 @@ var J = {
|
|
|
1875
1883
|
endTime: "20:00",
|
|
1876
1884
|
type: "postClose"
|
|
1877
1885
|
}
|
|
1878
|
-
],
|
|
1886
|
+
], Sr = [
|
|
1879
1887
|
{
|
|
1880
1888
|
name: "프리마켓",
|
|
1881
1889
|
startTime: "08:00",
|
|
@@ -1894,7 +1902,7 @@ var J = {
|
|
|
1894
1902
|
endTime: "20:00",
|
|
1895
1903
|
type: "postClose"
|
|
1896
1904
|
}
|
|
1897
|
-
],
|
|
1905
|
+
], Cr = [
|
|
1898
1906
|
{
|
|
1899
1907
|
from: 0,
|
|
1900
1908
|
step: 1
|
|
@@ -1923,7 +1931,7 @@ var J = {
|
|
|
1923
1931
|
from: 5e5,
|
|
1924
1932
|
step: 1e3
|
|
1925
1933
|
}
|
|
1926
|
-
],
|
|
1934
|
+
], wr = [
|
|
1927
1935
|
{
|
|
1928
1936
|
from: 0,
|
|
1929
1937
|
step: 1e-8
|
|
@@ -1984,7 +1992,7 @@ var J = {
|
|
|
1984
1992
|
from: 1e6,
|
|
1985
1993
|
step: 1e3
|
|
1986
1994
|
}
|
|
1987
|
-
],
|
|
1995
|
+
], Tr = {
|
|
1988
1996
|
type: "stock",
|
|
1989
1997
|
exchange: "HOSE",
|
|
1990
1998
|
currency: "VND",
|
|
@@ -2011,12 +2019,12 @@ var J = {
|
|
|
2011
2019
|
ceilingPercent: 7,
|
|
2012
2020
|
floorPercent: 7
|
|
2013
2021
|
},
|
|
2014
|
-
sessions:
|
|
2022
|
+
sessions: _r,
|
|
2015
2023
|
colorScheme: J
|
|
2016
|
-
}, Tr = {
|
|
2017
|
-
...wr,
|
|
2018
|
-
priceSteps: void 0
|
|
2019
2024
|
}, Er = {
|
|
2025
|
+
...Tr,
|
|
2026
|
+
priceSteps: void 0
|
|
2027
|
+
}, Dr = {
|
|
2020
2028
|
type: "stock",
|
|
2021
2029
|
exchange: "HNX",
|
|
2022
2030
|
currency: "VND",
|
|
@@ -2029,9 +2037,9 @@ var J = {
|
|
|
2029
2037
|
ceilingPercent: 10,
|
|
2030
2038
|
floorPercent: 10
|
|
2031
2039
|
},
|
|
2032
|
-
sessions:
|
|
2040
|
+
sessions: vr,
|
|
2033
2041
|
colorScheme: J
|
|
2034
|
-
},
|
|
2042
|
+
}, Or = {
|
|
2035
2043
|
type: "stock",
|
|
2036
2044
|
exchange: "UPCOM",
|
|
2037
2045
|
currency: "VND",
|
|
@@ -2044,9 +2052,9 @@ var J = {
|
|
|
2044
2052
|
ceilingPercent: 15,
|
|
2045
2053
|
floorPercent: 15
|
|
2046
2054
|
},
|
|
2047
|
-
sessions:
|
|
2055
|
+
sessions: yr,
|
|
2048
2056
|
colorScheme: J
|
|
2049
|
-
},
|
|
2057
|
+
}, kr = {
|
|
2050
2058
|
type: "futures",
|
|
2051
2059
|
exchange: "HNX",
|
|
2052
2060
|
currency: "VND",
|
|
@@ -2060,44 +2068,44 @@ var J = {
|
|
|
2060
2068
|
ceilingPercent: 7,
|
|
2061
2069
|
floorPercent: 7
|
|
2062
2070
|
},
|
|
2063
|
-
sessions:
|
|
2071
|
+
sessions: br,
|
|
2064
2072
|
colorScheme: J
|
|
2065
|
-
},
|
|
2073
|
+
}, Ar = {
|
|
2066
2074
|
type: "stock",
|
|
2067
2075
|
exchange: "KRX",
|
|
2068
2076
|
currency: "KRW",
|
|
2069
2077
|
pricePrecision: 0,
|
|
2070
2078
|
volumeUnit: 1,
|
|
2071
2079
|
priceStep: 1,
|
|
2072
|
-
priceSteps:
|
|
2073
|
-
timeZone:
|
|
2080
|
+
priceSteps: Cr,
|
|
2081
|
+
timeZone: gr,
|
|
2074
2082
|
priceLimits: {
|
|
2075
2083
|
enabled: !0,
|
|
2076
2084
|
ceilingPercent: 30,
|
|
2077
2085
|
floorPercent: 30,
|
|
2078
2086
|
roundMove: !0
|
|
2079
2087
|
},
|
|
2080
|
-
sessions:
|
|
2081
|
-
colorScheme:
|
|
2082
|
-
}, Ar = {
|
|
2083
|
-
...kr,
|
|
2084
|
-
exchange: "NXT",
|
|
2085
|
-
sessions: xr
|
|
2088
|
+
sessions: xr,
|
|
2089
|
+
colorScheme: hr
|
|
2086
2090
|
}, jr = {
|
|
2091
|
+
...Ar,
|
|
2092
|
+
exchange: "NXT",
|
|
2093
|
+
sessions: Sr
|
|
2094
|
+
}, Mr = {
|
|
2087
2095
|
type: "crypto",
|
|
2088
2096
|
exchange: "UPBIT",
|
|
2089
2097
|
currency: "KRW",
|
|
2090
2098
|
priceStep: 1e-8,
|
|
2091
|
-
priceSteps:
|
|
2092
|
-
timeZone:
|
|
2099
|
+
priceSteps: wr,
|
|
2100
|
+
timeZone: gr,
|
|
2093
2101
|
priceLimits: { enabled: !1 },
|
|
2094
|
-
colorScheme:
|
|
2095
|
-
},
|
|
2102
|
+
colorScheme: hr
|
|
2103
|
+
}, Nr = {
|
|
2096
2104
|
type: "crypto",
|
|
2097
2105
|
currency: "USDT",
|
|
2098
2106
|
pricePrecision: 2,
|
|
2099
2107
|
priceLimits: { enabled: !1 }
|
|
2100
|
-
},
|
|
2108
|
+
}, Pr = {
|
|
2101
2109
|
type: "stock",
|
|
2102
2110
|
exchange: "NYSE",
|
|
2103
2111
|
currency: "USD",
|
|
@@ -2126,10 +2134,10 @@ var J = {
|
|
|
2126
2134
|
}
|
|
2127
2135
|
]
|
|
2128
2136
|
};
|
|
2129
|
-
function
|
|
2130
|
-
return
|
|
2137
|
+
function Fr(e) {
|
|
2138
|
+
return Ir(e, J);
|
|
2131
2139
|
}
|
|
2132
|
-
function
|
|
2140
|
+
function Ir(e, t) {
|
|
2133
2141
|
return {
|
|
2134
2142
|
...e,
|
|
2135
2143
|
candleUp: t.up,
|
|
@@ -2139,25 +2147,25 @@ function Fr(e, t) {
|
|
|
2139
2147
|
};
|
|
2140
2148
|
}
|
|
2141
2149
|
var X = 1e-9;
|
|
2142
|
-
function
|
|
2150
|
+
function Lr(e, t) {
|
|
2143
2151
|
let n = t.priceStep;
|
|
2144
2152
|
for (let r of t.priceSteps ?? []) e + X >= r.from && (n = r.step);
|
|
2145
2153
|
return n !== void 0 && n > 0 ? n : void 0;
|
|
2146
2154
|
}
|
|
2147
|
-
function
|
|
2155
|
+
function Rr(e, t) {
|
|
2148
2156
|
let n = t.priceStep;
|
|
2149
2157
|
for (let r of t.priceSteps ?? []) e - X > r.from && (n = r.step);
|
|
2150
2158
|
return n !== void 0 && n > 0 ? n : void 0;
|
|
2151
2159
|
}
|
|
2152
2160
|
function Z(e, t, n = "nearest") {
|
|
2153
|
-
let r =
|
|
2161
|
+
let r = Lr(e, t);
|
|
2154
2162
|
if (r === void 0 || !Number.isFinite(e)) return e;
|
|
2155
2163
|
let i = e / r, a = n === "down" ? Math.floor(i + X) : n === "up" ? Math.ceil(i - X) : Math.round(i);
|
|
2156
|
-
return Number((a * r).toFixed(
|
|
2164
|
+
return Number((a * r).toFixed(Lt(r)));
|
|
2157
2165
|
}
|
|
2158
|
-
function
|
|
2166
|
+
function zr(e, t) {
|
|
2159
2167
|
if (!t.priceLimits?.enabled || !t.priceLimits.ceilingPercent) return null;
|
|
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 =
|
|
2168
|
+
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 = Lr(i, t);
|
|
2161
2169
|
if (s === void 0) return {
|
|
2162
2170
|
ceiling: a,
|
|
2163
2171
|
floor: o,
|
|
@@ -2178,14 +2186,14 @@ function Rr(e, t) {
|
|
|
2178
2186
|
};
|
|
2179
2187
|
l = Z(i + Z(i * n, e, "down"), t, "down"), u = Z(i - Z(i * r, e, "down"), t, "down");
|
|
2180
2188
|
} else l = Z(a, t, "down"), u = Z(o, t, "up");
|
|
2181
|
-
return l <= i && (l = c), u >= i && (u = Z(i - (
|
|
2189
|
+
return l <= i && (l = c), u >= i && (u = Z(i - (Rr(i, t) ?? s), t)), u <= 0 && (u = i), {
|
|
2182
2190
|
ceiling: l,
|
|
2183
2191
|
floor: u,
|
|
2184
2192
|
reference: i
|
|
2185
2193
|
};
|
|
2186
2194
|
}
|
|
2187
2195
|
var Q = (e, t) => Math.round(e * t * 1e9) / 1e9;
|
|
2188
|
-
function
|
|
2196
|
+
function Br(e, t) {
|
|
2189
2197
|
let n = Math.round(Math.log10(t));
|
|
2190
2198
|
return {
|
|
2191
2199
|
...e,
|
|
@@ -2201,11 +2209,11 @@ function zr(e, t) {
|
|
|
2201
2209
|
}
|
|
2202
2210
|
};
|
|
2203
2211
|
}
|
|
2204
|
-
var
|
|
2205
|
-
function
|
|
2212
|
+
var Vr = 6e4, Hr = 864e5;
|
|
2213
|
+
function Ur(e, t) {
|
|
2206
2214
|
let n, r;
|
|
2207
2215
|
if (t) {
|
|
2208
|
-
let i = new Date(e +
|
|
2216
|
+
let i = new Date(e + b(t, e) * Vr);
|
|
2209
2217
|
n = i.getUTCHours(), r = i.getUTCMinutes();
|
|
2210
2218
|
} else {
|
|
2211
2219
|
let t = new Date(e);
|
|
@@ -2213,31 +2221,31 @@ function Hr(e, t) {
|
|
|
2213
2221
|
}
|
|
2214
2222
|
return `${String(n).padStart(2, "0")}:${String(r).padStart(2, "0")}`;
|
|
2215
2223
|
}
|
|
2216
|
-
function
|
|
2217
|
-
if (n !== void 0 && !
|
|
2218
|
-
let r =
|
|
2224
|
+
function Wr(e, t = Date.now(), n) {
|
|
2225
|
+
if (n !== void 0 && !Ne(n)) return null;
|
|
2226
|
+
let r = Ur(t, n);
|
|
2219
2227
|
for (let t of e) if (r >= t.startTime && r < t.endTime) return t;
|
|
2220
2228
|
return null;
|
|
2221
2229
|
}
|
|
2222
|
-
var $ = (e) => String(e).padStart(2, "0"),
|
|
2230
|
+
var $ = (e) => String(e).padStart(2, "0"), Gr = (e) => {
|
|
2223
2231
|
let t = new Date(e);
|
|
2224
2232
|
return `${t.getUTCFullYear()}-${$(t.getUTCMonth() + 1)}-${$(t.getUTCDate())}`;
|
|
2225
|
-
},
|
|
2226
|
-
function
|
|
2227
|
-
let r = Date.UTC(e, t - 1, 1), i = 1 + (
|
|
2233
|
+
}, Kr = 4, qr = 7 * 36e5;
|
|
2234
|
+
function Jr(e, t, n) {
|
|
2235
|
+
let r = Date.UTC(e, t - 1, 1), i = 1 + (Kr - new Date(r).getUTCDay() + 7) % 7, a = Date.UTC(e, t - 1, i + 14), o = (e) => {
|
|
2228
2236
|
let t = new Date(e).getUTCDay();
|
|
2229
|
-
return t === 0 || t === 6 || (n?.(
|
|
2237
|
+
return t === 0 || t === 6 || (n?.(Gr(e)) ?? !1);
|
|
2230
2238
|
};
|
|
2231
|
-
for (; o(a);) a -=
|
|
2232
|
-
return
|
|
2239
|
+
for (; o(a);) a -= Hr;
|
|
2240
|
+
return Gr(a);
|
|
2233
2241
|
}
|
|
2234
|
-
function
|
|
2235
|
-
let n =
|
|
2242
|
+
function Yr(e, t) {
|
|
2243
|
+
let n = Gr(e + qr), r = (e, n) => ({
|
|
2236
2244
|
symbol: `VN30F${$(e % 100)}${$(n)}`,
|
|
2237
2245
|
year: e,
|
|
2238
2246
|
month: n,
|
|
2239
|
-
lastTradingDay:
|
|
2240
|
-
}), i = (e) => e.month === 12 ? r(e.year + 1, 1) : r(e.year, e.month + 1), a = new Date(e +
|
|
2247
|
+
lastTradingDay: Jr(e, n, t)
|
|
2248
|
+
}), i = (e) => e.month === 12 ? r(e.year + 1, 1) : r(e.year, e.month + 1), a = new Date(e + qr), o = r(a.getUTCFullYear(), a.getUTCMonth() + 1);
|
|
2241
2249
|
n > o.lastTradingDay && (o = i(o));
|
|
2242
2250
|
let s = [o, i(o)], c = i(s[1]);
|
|
2243
2251
|
for (; s.length < 4;) c.month % 3 == 0 && s.push(c), c = i(c);
|
|
@@ -2245,7 +2253,7 @@ function Jr(e, t) {
|
|
|
2245
2253
|
}
|
|
2246
2254
|
//#endregion
|
|
2247
2255
|
//#region src/icons/iconSet.ts
|
|
2248
|
-
var
|
|
2256
|
+
var Xr = {
|
|
2249
2257
|
cursor: { d: "M6 3.5L18.5 12.5L12.6 13.6L9.7 19.4z" },
|
|
2250
2258
|
trendingUp: { d: "M3 17L9 11L13 14.5L21 6.5M15 6.5H21V12.5" },
|
|
2251
2259
|
trendingDown: { d: "M3 7L9 13L13 9.5L21 17.5M15 17.5H21V11.5" },
|
|
@@ -2379,7 +2387,7 @@ var Yr = {
|
|
|
2379
2387
|
]
|
|
2380
2388
|
] },
|
|
2381
2389
|
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" }
|
|
2382
|
-
},
|
|
2390
|
+
}, Zr = {
|
|
2383
2391
|
trendLine: {
|
|
2384
2392
|
d: "M5 18L19 6",
|
|
2385
2393
|
dots: [[5, 18], [19, 6]]
|
|
@@ -2732,7 +2740,7 @@ var Yr = {
|
|
|
2732
2740
|
],
|
|
2733
2741
|
dash: "M12 3V21"
|
|
2734
2742
|
}
|
|
2735
|
-
},
|
|
2743
|
+
}, Qr = {
|
|
2736
2744
|
candlestick: {
|
|
2737
2745
|
d: "M8 3.5V7M8 16V20.5M16 5V8.5M16 15.5V19",
|
|
2738
2746
|
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"]
|
|
@@ -2799,21 +2807,21 @@ var Yr = {
|
|
|
2799
2807
|
"M16 4.5h3v6h-3z"
|
|
2800
2808
|
]
|
|
2801
2809
|
}
|
|
2802
|
-
},
|
|
2803
|
-
function
|
|
2804
|
-
let t =
|
|
2810
|
+
}, $r = 1.75, ei = .22, ti = /* @__PURE__ */ new WeakMap();
|
|
2811
|
+
function ni(e) {
|
|
2812
|
+
let t = ti.get(e);
|
|
2805
2813
|
if (t) return t;
|
|
2806
2814
|
let n = "";
|
|
2807
|
-
e.soft && (n += `<path d="${e.soft}" fill="currentColor" fill-opacity="${
|
|
2815
|
+
e.soft && (n += `<path d="${e.soft}" fill="currentColor" fill-opacity="${ei}" stroke="none"/>`);
|
|
2808
2816
|
for (let t of e.fills ?? []) n += `<path d="${t}" fill="currentColor" stroke="none"/>`;
|
|
2809
2817
|
e.d && (n += `<path d="${e.d}"/>`), e.dash && (n += `<path d="${e.dash}" stroke-dasharray="2 2.5"/>`);
|
|
2810
|
-
for (let [t, r, i =
|
|
2811
|
-
return
|
|
2818
|
+
for (let [t, r, i = $r] of e.dots ?? []) n += `<circle cx="${t}" cy="${r}" r="${i}" fill="currentColor" stroke="none"/>`;
|
|
2819
|
+
return ti.set(e, n), n;
|
|
2812
2820
|
}
|
|
2813
|
-
function
|
|
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">${
|
|
2821
|
+
function ri(e, t) {
|
|
2822
|
+
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">${ni(e)}</svg>`;
|
|
2815
2823
|
}
|
|
2816
2824
|
//#endregion
|
|
2817
|
-
export { t as CHART_STYLE_KEYS,
|
|
2825
|
+
export { t as CHART_STYLE_KEYS, Qr 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, Zr as DRAWING_TOOL_ICONS, tr as FIBONACCI, vr as HNX_SESSIONS, _r as HOSE_SESSIONS, $r as ICON_DOT_RADIUS, ei as ICON_SOFT_OPACITY, xr as KRX_SESSIONS, hr as KR_COLORS, xn as LIGHT_PRICE_LIMITS, wn as LIGHT_THEME, e as LayerType, Nr as MARKET_CRYPTO, Dr as MARKET_HNX, Tr as MARKET_HOSE, Er as MARKET_HOSE_ETF, Ar as MARKET_KRX, jr as MARKET_NXT, Pr as MARKET_NYSE, Mr as MARKET_UPBIT_KRW, Or as MARKET_UPCOM, kr as MARKET_VN30F, Qn as MIN_PANEL_HEIGHT, ce as MS_TIME_THRESHOLD, Sr as NXT_SESSIONS, er as PHI, Xn as PRICE_AXIS_WIDTH, xt 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, Xr as UI_ICONS, yr as UPCOM_SESSIONS, br as VN30F_SESSIONS, J as VN_COLORS, dn as VOLUME_ALPHA, We as alignToTimeframe, pt as autoPricePrecision, lt as barDateParts, ct as barDateZone, le as barTimeUnit, Je as barsAreDaily, Hn as chartStyleValue, ne as clamp, zr as computePriceLimits, ge as computePriceRange, se as computeTickStep, g as contrastRatio, Ir as createMarketTheme, Fr as createVNTheme, bt as detectPrecision, Yt as drawingOption, W as en, pe as findBarIndex, he as fitPriceRange, gt as formatFraction, q as formatNumber, j as formatPrice, ht as formatPriceScaleLabel, Ue as formatTimestamp, ur as formatVND, yt as formatVolume, mr as formatVolumeLoc, _t as fractionTick, Wr as getCurrentSession, or as getLocale, lr as getLocaleStrings, ve as hexToRgba, ri as iconSvg, Tt as indicatorSource, we as inkOn, ie as inverseLerp, Ke as isDateOnly, St as isPriceSource, He as isTimeFrame, S as isUtcTimeZone, Ne as isValidTimeZone, re as lerp, be as lerpColor, Ln as lineDash, Vt as marketStatus, _e as mergeBar, oe as niceNumber, de as normalizeBar, ue as normalizeBarTime, C as offsetAt, me as padPriceRange, Et as parseIndicatorSource, T as parseTimeframe, nr as phiStep, Pt as pickBaseTimeframe, vt as priceFormatterFor, Lr as priceStepAt, ft as priceTagText, It as rankSymbols, Nn as readChartStyleOverrides, sn as readChartTypeOptions, In as readIndicatorPlotStyles, te as readNews, Pn as readPaneStyle, l as readQuote, Ce as readableOn, cr as registerLocale, kt as resampleBars, zn as resolveChartTheme, Xt as resolveDrawingOptions, V as resolveVolumeColors, Z as roundToPriceStep, ae as roundToStep, qt as sanitizeDrawingOptions, an as sanitizeDrawingStyle, Br as scaleMarketPrices, zt as sessionMinute, ar as setLocale, fe as sliceVisibleData, Ct as sourcePrice, Lt as stepDecimals, Rt as symbolTimeZone, sr as t, Ve as tickBarCount, Ge as timeParts, ot as timeframeBucketStart, rt as timeframeFollowsDays, it as timeframeSpansDays, E as timeframeToMs, Ye as tzLabel, fr as usesKoreanUnits, rr as vi, Yr as vn30fContracts, Jr as vn30fLastTradingDay, L as volumeColor, Fe as wallToUtc, m as withAlpha, b as zoneOffsetMinutes, Le as zonedDateFormatter };
|
|
2818
2826
|
|
|
2819
2827
|
//# sourceMappingURL=index.js.map
|