@tradecanvas/commons 1.11.0 → 1.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +612 -307
- package/dist/index.js.map +1 -1
- package/dist/types/chart.d.ts +13 -2
- package/dist/types/chart.d.ts.map +1 -1
- package/dist/types/events.d.ts +13 -5
- package/dist/types/events.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/indicator.d.ts +15 -0
- package/dist/types/indicator.d.ts.map +1 -1
- package/dist/types/style.d.ts +195 -0
- package/dist/types/style.d.ts.map +1 -0
- package/dist/types/theme.d.ts +7 -0
- package/dist/types/theme.d.ts.map +1 -1
- package/dist/utils/chartStyle.d.ts +33 -0
- package/dist/utils/chartStyle.d.ts.map +1 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -2,13 +2,103 @@
|
|
|
2
2
|
var e = /* @__PURE__ */ function(e) {
|
|
3
3
|
return e[e.Background = 0] = "Background", e[e.Main = 1] = "Main", e[e.Panel = 2] = "Panel", e[e.Overlay = 3] = "Overlay", e[e.UI = 4] = "UI", e[e.Hover = 5] = "Hover", e;
|
|
4
4
|
}({}), t = {
|
|
5
|
+
"background.color": "color",
|
|
6
|
+
"panes.background": "color",
|
|
7
|
+
"panes.separatorColor": "color",
|
|
8
|
+
"panes.titleColor": "color",
|
|
9
|
+
"grid.horizontal.visible": "boolean",
|
|
10
|
+
"grid.horizontal.color": "color",
|
|
11
|
+
"grid.horizontal.style": "lineStyle",
|
|
12
|
+
"grid.horizontal.width": "width",
|
|
13
|
+
"grid.vertical.visible": "boolean",
|
|
14
|
+
"grid.vertical.color": "color",
|
|
15
|
+
"grid.vertical.style": "lineStyle",
|
|
16
|
+
"grid.vertical.width": "width",
|
|
17
|
+
"crosshair.horizontal.visible": "boolean",
|
|
18
|
+
"crosshair.horizontal.color": "color",
|
|
19
|
+
"crosshair.horizontal.style": "lineStyle",
|
|
20
|
+
"crosshair.horizontal.width": "width",
|
|
21
|
+
"crosshair.vertical.visible": "boolean",
|
|
22
|
+
"crosshair.vertical.color": "color",
|
|
23
|
+
"crosshair.vertical.style": "lineStyle",
|
|
24
|
+
"crosshair.vertical.width": "width",
|
|
25
|
+
"crosshair.labelBackground": "color",
|
|
26
|
+
"crosshair.labelTextColor": "color",
|
|
27
|
+
"axis.price.lineColor": "color",
|
|
28
|
+
"axis.price.textColor": "color",
|
|
29
|
+
"axis.time.lineColor": "color",
|
|
30
|
+
"axis.time.textColor": "color",
|
|
31
|
+
"legend.textColor": "color",
|
|
32
|
+
"legend.labelColor": "color",
|
|
33
|
+
"watermark.color": "color",
|
|
34
|
+
"lastPrice.visible": "boolean",
|
|
35
|
+
"lastPrice.upColor": "color",
|
|
36
|
+
"lastPrice.downColor": "color",
|
|
37
|
+
"lastPrice.style": "lineStyle",
|
|
38
|
+
"lastPrice.width": "width",
|
|
39
|
+
"volume.upColor": "color",
|
|
40
|
+
"volume.downColor": "color",
|
|
41
|
+
"sessionBreaks.color": "color",
|
|
42
|
+
"sessionBreaks.style": "lineStyle",
|
|
43
|
+
"sessionBreaks.width": "width",
|
|
44
|
+
"highLow.color": "color",
|
|
45
|
+
"series.candlestick.upColor": "color",
|
|
46
|
+
"series.candlestick.downColor": "color",
|
|
47
|
+
"series.candlestick.wickUpColor": "color",
|
|
48
|
+
"series.candlestick.wickDownColor": "color",
|
|
49
|
+
"series.heikinAshi.upColor": "color",
|
|
50
|
+
"series.heikinAshi.downColor": "color",
|
|
51
|
+
"series.heikinAshi.wickUpColor": "color",
|
|
52
|
+
"series.heikinAshi.wickDownColor": "color",
|
|
53
|
+
"series.hollowCandle.upColor": "color",
|
|
54
|
+
"series.hollowCandle.downColor": "color",
|
|
55
|
+
"series.volumeCandles.upColor": "color",
|
|
56
|
+
"series.volumeCandles.downColor": "color",
|
|
57
|
+
"series.volumeCandles.wickUpColor": "color",
|
|
58
|
+
"series.volumeCandles.wickDownColor": "color",
|
|
59
|
+
"series.equivolume.upColor": "color",
|
|
60
|
+
"series.equivolume.downColor": "color",
|
|
61
|
+
"series.equivolume.wickUpColor": "color",
|
|
62
|
+
"series.equivolume.wickDownColor": "color",
|
|
63
|
+
"series.bar.upColor": "color",
|
|
64
|
+
"series.bar.downColor": "color",
|
|
65
|
+
"series.hiLo.upColor": "color",
|
|
66
|
+
"series.hiLo.downColor": "color",
|
|
67
|
+
"series.renko.upColor": "color",
|
|
68
|
+
"series.renko.downColor": "color",
|
|
69
|
+
"series.lineBreak.upColor": "color",
|
|
70
|
+
"series.lineBreak.downColor": "color",
|
|
71
|
+
"series.rangeBars.upColor": "color",
|
|
72
|
+
"series.rangeBars.downColor": "color",
|
|
73
|
+
"series.kagi.upColor": "color",
|
|
74
|
+
"series.kagi.downColor": "color",
|
|
75
|
+
"series.pointAndFigure.upColor": "color",
|
|
76
|
+
"series.pointAndFigure.downColor": "color",
|
|
77
|
+
"series.baseline.upColor": "color",
|
|
78
|
+
"series.baseline.downColor": "color",
|
|
79
|
+
"series.baseline.lineWidth": "width",
|
|
80
|
+
"series.line.color": "color",
|
|
81
|
+
"series.line.lineWidth": "width",
|
|
82
|
+
"series.stepLine.color": "color",
|
|
83
|
+
"series.stepLine.lineWidth": "width",
|
|
84
|
+
"series.lineWithMarkers.color": "color",
|
|
85
|
+
"series.lineWithMarkers.lineWidth": "width",
|
|
86
|
+
"series.area.lineColor": "color",
|
|
87
|
+
"series.area.lineWidth": "width",
|
|
88
|
+
"series.area.topColor": "color",
|
|
89
|
+
"series.area.bottomColor": "color",
|
|
90
|
+
"series.hlcArea.lineColor": "color",
|
|
91
|
+
"series.hlcArea.lineWidth": "width",
|
|
92
|
+
"series.hlcArea.topColor": "color",
|
|
93
|
+
"series.hlcArea.bottomColor": "color"
|
|
94
|
+
}, n = {
|
|
5
95
|
color: "#4c8dff",
|
|
6
96
|
lineWidth: 1,
|
|
7
97
|
lineStyle: "solid",
|
|
8
98
|
fillColor: "rgba(76, 141, 255, 0.1)",
|
|
9
99
|
fillOpacity: .1,
|
|
10
100
|
fontSize: 12
|
|
11
|
-
},
|
|
101
|
+
}, r = {
|
|
12
102
|
enabled: !0,
|
|
13
103
|
orderColors: {
|
|
14
104
|
buy: "#1fa874",
|
|
@@ -35,14 +125,14 @@ var e = /* @__PURE__ */ function(e) {
|
|
|
35
125
|
fillMarks: !0,
|
|
36
126
|
pricePrecision: 2,
|
|
37
127
|
dragThreshold: 3
|
|
38
|
-
},
|
|
128
|
+
}, i = {
|
|
39
129
|
longColor: "#1fa874",
|
|
40
130
|
shortColor: "#e8505b",
|
|
41
131
|
neutralColor: "#9E9E9E",
|
|
42
132
|
arrowSize: 12,
|
|
43
133
|
showLabel: !0,
|
|
44
134
|
showConfidence: !0
|
|
45
|
-
},
|
|
135
|
+
}, a = {
|
|
46
136
|
profitColor: "#1fa874",
|
|
47
137
|
lossColor: "#e8505b",
|
|
48
138
|
activeColor: "#4c8dff",
|
|
@@ -50,18 +140,18 @@ var e = /* @__PURE__ */ function(e) {
|
|
|
50
140
|
borderWidth: 1,
|
|
51
141
|
showLabel: !0,
|
|
52
142
|
showPnl: !0
|
|
53
|
-
},
|
|
143
|
+
}, o = {
|
|
54
144
|
enabled: !0,
|
|
55
145
|
maxRetries: Infinity,
|
|
56
146
|
baseDelay: 1e3,
|
|
57
147
|
maxDelay: 3e4,
|
|
58
148
|
backoffMultiplier: 2
|
|
59
|
-
},
|
|
149
|
+
}, s = {
|
|
60
150
|
historyLimit: 500,
|
|
61
151
|
autoScroll: !0,
|
|
62
152
|
showCurrentPriceLine: !0,
|
|
63
153
|
aggregateTicks: !1
|
|
64
|
-
},
|
|
154
|
+
}, c = [
|
|
65
155
|
"change",
|
|
66
156
|
"changePercent",
|
|
67
157
|
"open",
|
|
@@ -73,17 +163,17 @@ var e = /* @__PURE__ */ function(e) {
|
|
|
73
163
|
"ask",
|
|
74
164
|
"time"
|
|
75
165
|
];
|
|
76
|
-
function
|
|
166
|
+
function l(e) {
|
|
77
167
|
if (!e || typeof e != "object") return null;
|
|
78
168
|
let t = e, n = typeof t.symbol == "string" ? t.symbol.trim() : "";
|
|
79
|
-
if (!n || n.length > 64 || !
|
|
169
|
+
if (!n || n.length > 64 || !u(t.last)) return null;
|
|
80
170
|
let r = {
|
|
81
171
|
symbol: n,
|
|
82
172
|
last: t.last
|
|
83
173
|
};
|
|
84
|
-
for (let e of
|
|
174
|
+
for (let e of c) {
|
|
85
175
|
let n = t[e];
|
|
86
|
-
|
|
176
|
+
u(n) && (r[e] = n);
|
|
87
177
|
}
|
|
88
178
|
let i = r.prevClose ?? r.open;
|
|
89
179
|
if (r.change === void 0 && i !== void 0 && (r.change = r.last - i), r.changePercent === void 0 && r.change !== void 0) {
|
|
@@ -92,12 +182,12 @@ function c(e) {
|
|
|
92
182
|
}
|
|
93
183
|
return r;
|
|
94
184
|
}
|
|
95
|
-
function
|
|
185
|
+
function u(e) {
|
|
96
186
|
return typeof e == "number" && Number.isFinite(e);
|
|
97
187
|
}
|
|
98
188
|
//#endregion
|
|
99
189
|
//#region src/types/news.ts
|
|
100
|
-
var
|
|
190
|
+
var d = 300, f = 1e3, p = (e, t) => {
|
|
101
191
|
if (typeof e != "string") return;
|
|
102
192
|
let n = e.trim();
|
|
103
193
|
return n ? n.slice(0, t) : void 0;
|
|
@@ -114,18 +204,18 @@ function te(e, t = 20) {
|
|
|
114
204
|
let n = [];
|
|
115
205
|
for (let t of e) {
|
|
116
206
|
if (!t || typeof t != "object") continue;
|
|
117
|
-
let e = t, r =
|
|
207
|
+
let e = t, r = p(e.title, d);
|
|
118
208
|
if (!r || typeof e.time != "number" || !Number.isFinite(e.time)) continue;
|
|
119
209
|
let i = {
|
|
120
210
|
title: r,
|
|
121
211
|
time: e.time
|
|
122
212
|
}, a = ee(e.url);
|
|
123
213
|
a && (i.url = a);
|
|
124
|
-
let o =
|
|
214
|
+
let o = p(e.source, d);
|
|
125
215
|
o && (i.source = o);
|
|
126
|
-
let s =
|
|
216
|
+
let s = p(e.summary, f);
|
|
127
217
|
s && (i.summary = s);
|
|
128
|
-
let c =
|
|
218
|
+
let c = p(e.id, d);
|
|
129
219
|
c && (i.id = c), n.push(i);
|
|
130
220
|
}
|
|
131
221
|
return n.sort((e, t) => t.time - e.time).slice(0, Math.max(0, t));
|
|
@@ -144,12 +234,12 @@ function ie(e, t, n) {
|
|
|
144
234
|
function ae(e, t) {
|
|
145
235
|
return Math.round(e / t) * t;
|
|
146
236
|
}
|
|
147
|
-
function
|
|
237
|
+
function m(e, t) {
|
|
148
238
|
let n = Math.floor(Math.log10(e)), r = e / 10 ** n, i;
|
|
149
239
|
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;
|
|
150
240
|
}
|
|
151
241
|
function oe(e, t, n) {
|
|
152
|
-
return
|
|
242
|
+
return m(m(t - e, !1) / (n - 1), !0);
|
|
153
243
|
}
|
|
154
244
|
//#endregion
|
|
155
245
|
//#region src/utils/data.ts
|
|
@@ -229,7 +319,7 @@ function he(e, t, n) {
|
|
|
229
319
|
}
|
|
230
320
|
//#endregion
|
|
231
321
|
//#region src/utils/timezone.ts
|
|
232
|
-
var
|
|
322
|
+
var h = 6e4, g = 1440 * h, _ = 15 * h, ge = 8192, v = 7 * g, _e = 4096, ve = new Set([
|
|
233
323
|
"UTC",
|
|
234
324
|
"Etc/UTC",
|
|
235
325
|
"GMT",
|
|
@@ -240,8 +330,8 @@ var m = 6e4, h = 1440 * m, g = 15 * m, ge = 8192, _ = 7 * h, _e = 4096, ve = new
|
|
|
240
330
|
"Etc/Universal",
|
|
241
331
|
"Zulu",
|
|
242
332
|
"Etc/Zulu"
|
|
243
|
-
]), ye = /* @__PURE__ */ new Map(),
|
|
244
|
-
function
|
|
333
|
+
]), ye = /* @__PURE__ */ new Map(), y = /* @__PURE__ */ new Map(), be = /* @__PURE__ */ new Map();
|
|
334
|
+
function xe(e) {
|
|
245
335
|
let t = ye.get(e);
|
|
246
336
|
return t || (t = new Intl.DateTimeFormat("en-US", {
|
|
247
337
|
timeZone: e,
|
|
@@ -254,31 +344,31 @@ function be(e) {
|
|
|
254
344
|
second: "numeric"
|
|
255
345
|
}), ye.set(e, t)), t;
|
|
256
346
|
}
|
|
257
|
-
function
|
|
347
|
+
function Se(e) {
|
|
258
348
|
if (!e) return !1;
|
|
259
349
|
try {
|
|
260
|
-
return
|
|
350
|
+
return xe(e), !0;
|
|
261
351
|
} catch {
|
|
262
352
|
return !1;
|
|
263
353
|
}
|
|
264
354
|
}
|
|
265
355
|
function b(e, t) {
|
|
266
356
|
if (!Number.isFinite(t) || ve.has(e)) return 0;
|
|
267
|
-
let n =
|
|
268
|
-
n || (n = /* @__PURE__ */ new Map(),
|
|
269
|
-
let r = Math.floor(t /
|
|
270
|
-
return i || (i =
|
|
357
|
+
let n = be.get(e);
|
|
358
|
+
n || (n = /* @__PURE__ */ new Map(), be.set(e, n));
|
|
359
|
+
let r = Math.floor(t / v), i = n.get(r);
|
|
360
|
+
return i || (i = Ce(e, r * v), n.size >= _e && n.clear(), n.set(r, i)), t < i.change ? i.before : i.after;
|
|
271
361
|
}
|
|
272
|
-
function
|
|
273
|
-
let n = x(e, t), r = t +
|
|
362
|
+
function Ce(e, t) {
|
|
363
|
+
let n = x(e, t), r = t + v - _, i = x(e, r);
|
|
274
364
|
if (i === n) return {
|
|
275
365
|
before: n,
|
|
276
366
|
change: Infinity,
|
|
277
367
|
after: i
|
|
278
368
|
};
|
|
279
369
|
let a = t;
|
|
280
|
-
for (; r - a >
|
|
281
|
-
let t = a + Math.floor((r - a) /
|
|
370
|
+
for (; r - a > _;) {
|
|
371
|
+
let t = a + Math.floor((r - a) / _ / 2) * _;
|
|
282
372
|
x(e, t) === n ? a = t : r = t;
|
|
283
373
|
}
|
|
284
374
|
return {
|
|
@@ -288,10 +378,10 @@ function Se(e, t) {
|
|
|
288
378
|
};
|
|
289
379
|
}
|
|
290
380
|
function x(e, t) {
|
|
291
|
-
let n = Math.floor(t /
|
|
381
|
+
let n = Math.floor(t / _), r = `${e}|${n}`, i = y.get(r);
|
|
292
382
|
if (i !== void 0) return i;
|
|
293
|
-
let a = n *
|
|
294
|
-
for (let t of
|
|
383
|
+
let a = n * _, o = 1970, s = 1, c = 1, l = 0, u = 0, d = 0;
|
|
384
|
+
for (let t of xe(e).formatToParts(new Date(a))) {
|
|
295
385
|
let e = Number(t.value);
|
|
296
386
|
switch (t.type) {
|
|
297
387
|
case "year":
|
|
@@ -314,21 +404,21 @@ function x(e, t) {
|
|
|
314
404
|
break;
|
|
315
405
|
}
|
|
316
406
|
}
|
|
317
|
-
let f = Math.round((Date.UTC(o, s - 1, c, l, u, d) - a) /
|
|
318
|
-
return
|
|
407
|
+
let f = Math.round((Date.UTC(o, s - 1, c, l, u, d) - a) / h);
|
|
408
|
+
return y.size >= ge && y.clear(), y.set(r, f), f;
|
|
319
409
|
}
|
|
320
410
|
function S(e, t) {
|
|
321
411
|
return e === null ? -new Date(t).getTimezoneOffset() : typeof e == "number" ? e : b(e, t);
|
|
322
412
|
}
|
|
323
|
-
function
|
|
324
|
-
let n = e - S(t, e -
|
|
325
|
-
if (n + S(t, n) *
|
|
326
|
-
let r = e - S(t, e +
|
|
327
|
-
return r + S(t, r) *
|
|
328
|
-
}
|
|
329
|
-
var
|
|
330
|
-
function
|
|
331
|
-
let r = `${e}|${JSON.stringify(t)}|${n === null ? "local" : typeof n == "number" ? `fixed:${n}` : n}`, i =
|
|
413
|
+
function we(e, t) {
|
|
414
|
+
let n = e - S(t, e - g) * h;
|
|
415
|
+
if (n + S(t, n) * h === e) return n;
|
|
416
|
+
let r = e - S(t, e + g) * h;
|
|
417
|
+
return r + S(t, r) * h === e ? r : n;
|
|
418
|
+
}
|
|
419
|
+
var Te = /* @__PURE__ */ new Map();
|
|
420
|
+
function Ee(e, t, n) {
|
|
421
|
+
let r = `${e}|${JSON.stringify(t)}|${n === null ? "local" : typeof n == "number" ? `fixed:${n}` : n}`, i = Te.get(r);
|
|
332
422
|
if (i) return i;
|
|
333
423
|
let a = n === null ? void 0 : typeof n == "number" ? "UTC" : n, o;
|
|
334
424
|
try {
|
|
@@ -342,12 +432,12 @@ function we(e, t, n) {
|
|
|
342
432
|
timeZone: a
|
|
343
433
|
});
|
|
344
434
|
}
|
|
345
|
-
let s = typeof n == "number" ? n *
|
|
346
|
-
return i = (e) => o.format(new Date(e + s)),
|
|
435
|
+
let s = typeof n == "number" ? n * h : 0;
|
|
436
|
+
return i = (e) => o.format(new Date(e + s)), Te.set(r, i), i;
|
|
347
437
|
}
|
|
348
438
|
//#endregion
|
|
349
439
|
//#region src/utils/time.ts
|
|
350
|
-
var
|
|
440
|
+
var De = {
|
|
351
441
|
"1s": 1e3,
|
|
352
442
|
"5s": 5e3,
|
|
353
443
|
"15s": 15e3,
|
|
@@ -374,16 +464,16 @@ var Te = {
|
|
|
374
464
|
"3M": 7776e6,
|
|
375
465
|
"6M": 15552e6,
|
|
376
466
|
"12M": 31536e6
|
|
377
|
-
},
|
|
467
|
+
}, C = {
|
|
378
468
|
s: 1e3,
|
|
379
469
|
m: 6e4,
|
|
380
470
|
h: 36e5,
|
|
381
471
|
d: 864e5,
|
|
382
472
|
w: 6048e5,
|
|
383
473
|
M: 2592e6
|
|
384
|
-
},
|
|
385
|
-
function
|
|
386
|
-
let t =
|
|
474
|
+
}, Oe = /^([1-9]\d*)([smhdwM])$/;
|
|
475
|
+
function w(e) {
|
|
476
|
+
let t = Oe.exec(e);
|
|
387
477
|
if (!t) return null;
|
|
388
478
|
let n = Number(t[1]);
|
|
389
479
|
return Number.isSafeInteger(n) ? {
|
|
@@ -391,24 +481,24 @@ function T(e) {
|
|
|
391
481
|
unit: t[2]
|
|
392
482
|
} : null;
|
|
393
483
|
}
|
|
394
|
-
var
|
|
395
|
-
function
|
|
484
|
+
var ke = 1e6;
|
|
485
|
+
function Ae(e) {
|
|
396
486
|
let t = /^([1-9]\d*)T$/.exec(e);
|
|
397
487
|
if (!t) return null;
|
|
398
488
|
let n = Number(t[1]);
|
|
399
|
-
return Number.isSafeInteger(n) && n <=
|
|
489
|
+
return Number.isSafeInteger(n) && n <= ke ? n : null;
|
|
400
490
|
}
|
|
401
|
-
function
|
|
402
|
-
return
|
|
491
|
+
function je(e) {
|
|
492
|
+
return w(e) !== null;
|
|
403
493
|
}
|
|
404
|
-
function
|
|
405
|
-
let t =
|
|
494
|
+
function T(e) {
|
|
495
|
+
let t = De[e];
|
|
406
496
|
if (t !== void 0) return t;
|
|
407
|
-
let n =
|
|
408
|
-
return n ? n.count *
|
|
497
|
+
let n = w(e);
|
|
498
|
+
return n ? n.count * C[n.unit] : NaN;
|
|
409
499
|
}
|
|
410
|
-
function
|
|
411
|
-
let n = new Date(e), r =
|
|
500
|
+
function Me(e, t) {
|
|
501
|
+
let n = new Date(e), r = T(t);
|
|
412
502
|
return r >= 864e5 ? n.toLocaleDateString(void 0, {
|
|
413
503
|
month: "short",
|
|
414
504
|
day: "numeric"
|
|
@@ -421,11 +511,11 @@ function Ae(e, t) {
|
|
|
421
511
|
second: "2-digit"
|
|
422
512
|
});
|
|
423
513
|
}
|
|
424
|
-
function
|
|
425
|
-
let n =
|
|
514
|
+
function Ne(e, t) {
|
|
515
|
+
let n = T(t);
|
|
426
516
|
return Math.floor(e / n) * n;
|
|
427
517
|
}
|
|
428
|
-
function
|
|
518
|
+
function Pe(e, t) {
|
|
429
519
|
if (t === null) {
|
|
430
520
|
let t = new Date(e);
|
|
431
521
|
return {
|
|
@@ -445,11 +535,11 @@ function Me(e, t) {
|
|
|
445
535
|
minutes: n.getUTCMinutes()
|
|
446
536
|
};
|
|
447
537
|
}
|
|
448
|
-
function
|
|
538
|
+
function Fe(e) {
|
|
449
539
|
return e.hours === 0 && e.minutes === 0;
|
|
450
540
|
}
|
|
451
|
-
var
|
|
452
|
-
function
|
|
541
|
+
var Ie = 20 * 36e5;
|
|
542
|
+
function Le(e) {
|
|
453
543
|
let t = Math.min(e.length, 64);
|
|
454
544
|
if (t < 2) return;
|
|
455
545
|
let n = (e) => e > 0xe8d4a51000 ? e : e * 1e3, r = Infinity;
|
|
@@ -457,78 +547,78 @@ function Fe(e) {
|
|
|
457
547
|
let t = Math.abs(n(e[i].time) - n(e[i - 1].time));
|
|
458
548
|
t > 0 && t < r && (r = t);
|
|
459
549
|
}
|
|
460
|
-
return r === Infinity ? void 0 : r >=
|
|
550
|
+
return r === Infinity ? void 0 : r >= Ie;
|
|
461
551
|
}
|
|
462
|
-
function
|
|
552
|
+
function Re(e, t = Date.now()) {
|
|
463
553
|
let n = S(e, t), r = n >= 0 ? "+" : "-", i = Math.abs(n), a = Math.floor(i / 60), o = i % 60;
|
|
464
554
|
return o === 0 ? `UTC${r}${a}` : `UTC${r}${a}:${String(o).padStart(2, "0")}`;
|
|
465
555
|
}
|
|
466
|
-
var
|
|
467
|
-
function
|
|
468
|
-
let { count: r, unit: i } =
|
|
556
|
+
var ze = Date.UTC(1970, 0, 5);
|
|
557
|
+
function Be(e, t, n = 1) {
|
|
558
|
+
let { count: r, unit: i } = w(t) ?? {
|
|
469
559
|
count: 1,
|
|
470
560
|
unit: "m"
|
|
471
561
|
};
|
|
472
562
|
if (i === "s" || i === "m" || i === "h" || i === "d") {
|
|
473
|
-
let t = r *
|
|
563
|
+
let t = r * C[i];
|
|
474
564
|
return Math.floor(e / t) * t;
|
|
475
565
|
}
|
|
476
566
|
let a = new Date(e);
|
|
477
567
|
if (i === "w") {
|
|
478
|
-
let e =
|
|
568
|
+
let e = C.d, t = (a.getUTCDay() - n + 7) % 7, i = Date.UTC(a.getUTCFullYear(), a.getUTCMonth(), a.getUTCDate() - t);
|
|
479
569
|
if (r <= 1) return i;
|
|
480
|
-
let o = Math.floor((i -
|
|
481
|
-
return
|
|
570
|
+
let o = Math.floor((i - ze) / (7 * e));
|
|
571
|
+
return ze + Math.floor(o / r) * r * 7 * e;
|
|
482
572
|
}
|
|
483
573
|
let o = a.getUTCFullYear() * 12 + a.getUTCMonth(), s = Math.floor(o / r) * r;
|
|
484
574
|
return Date.UTC(Math.floor(s / 12), s % 12, 1);
|
|
485
575
|
}
|
|
486
576
|
//#endregion
|
|
487
577
|
//#region src/utils/precision.ts
|
|
488
|
-
var
|
|
489
|
-
function
|
|
490
|
-
let n = `${e}|${t}`, r =
|
|
491
|
-
return r || (
|
|
578
|
+
var Ve = 64, E = /* @__PURE__ */ new Map();
|
|
579
|
+
function He(e, t) {
|
|
580
|
+
let n = `${e}|${t}`, r = E.get(n);
|
|
581
|
+
return r || (E.size >= Ve && E.clear(), r = new Intl.NumberFormat(e, {
|
|
492
582
|
minimumFractionDigits: t,
|
|
493
583
|
maximumFractionDigits: t
|
|
494
|
-
}),
|
|
584
|
+
}), E.set(n, r)), r;
|
|
495
585
|
}
|
|
496
|
-
function
|
|
497
|
-
return
|
|
586
|
+
function D(e, t = 2, n = "en-US") {
|
|
587
|
+
return He(n, t).format(e);
|
|
498
588
|
}
|
|
499
|
-
function
|
|
589
|
+
function Ue(e, t) {
|
|
500
590
|
if (!(t > e) || !Number.isFinite(e) || !Number.isFinite(t)) return 2;
|
|
501
591
|
let n = oe(e, t, 8);
|
|
502
592
|
return n > 0 && n < 1 ? Math.ceil(-Math.log10(n)) + 1 : 2;
|
|
503
593
|
}
|
|
504
|
-
function
|
|
594
|
+
function We(e, t, n, r = 2, i = "en-US") {
|
|
505
595
|
if ((t === "percentage" || t === "indexedTo100") && n && n !== 0) {
|
|
506
596
|
if (t === "percentage") {
|
|
507
597
|
let t = (e / n - 1) * 100;
|
|
508
598
|
return `${t > 0 ? "+" : ""}${t.toFixed(2)}%`;
|
|
509
599
|
}
|
|
510
|
-
return
|
|
600
|
+
return D(e / n * 100, 2, i);
|
|
511
601
|
}
|
|
512
|
-
return
|
|
602
|
+
return D(e, r, i);
|
|
513
603
|
}
|
|
514
|
-
function
|
|
604
|
+
function Ge(e, t, n = 1) {
|
|
515
605
|
let r = Number.isInteger(n) && n > 1 ? n : 1;
|
|
516
606
|
if (!Number.isFinite(e) || !Number.isInteger(t) || t < 2) return String(e);
|
|
517
607
|
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)) : "";
|
|
518
608
|
return `${e < 0 && a > 0 ? "-" : ""}${o}'${String(c).padStart(l, "0")}${u}`;
|
|
519
609
|
}
|
|
520
|
-
function
|
|
610
|
+
function Ke(e) {
|
|
521
611
|
if (!Number.isInteger(e.denominator) || e.denominator < 2) return null;
|
|
522
612
|
let t = Number.isInteger(e.subDenominator) && (e.subDenominator ?? 0) > 1 ? e.subDenominator : 1;
|
|
523
613
|
return 1 / (e.denominator * t);
|
|
524
614
|
}
|
|
525
|
-
function
|
|
526
|
-
return e ? typeof e == "function" ? e :
|
|
615
|
+
function qe(e) {
|
|
616
|
+
return e ? typeof e == "function" ? e : Ke(e) === null ? null : (t) => Ge(t, e.denominator, e.subDenominator) : null;
|
|
527
617
|
}
|
|
528
|
-
function
|
|
618
|
+
function Je(e) {
|
|
529
619
|
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);
|
|
530
620
|
}
|
|
531
|
-
function
|
|
621
|
+
function Ye(e) {
|
|
532
622
|
let t = 0;
|
|
533
623
|
for (let n of e) {
|
|
534
624
|
let e = n.toString(), r = e.indexOf(".");
|
|
@@ -538,7 +628,7 @@ function Ge(e) {
|
|
|
538
628
|
}
|
|
539
629
|
//#endregion
|
|
540
630
|
//#region src/utils/priceSource.ts
|
|
541
|
-
var
|
|
631
|
+
var Xe = [
|
|
542
632
|
"close",
|
|
543
633
|
"open",
|
|
544
634
|
"high",
|
|
@@ -548,10 +638,10 @@ var Ke = [
|
|
|
548
638
|
"ohlc4",
|
|
549
639
|
"hlcc4"
|
|
550
640
|
];
|
|
551
|
-
function
|
|
552
|
-
return typeof e == "string" &&
|
|
641
|
+
function Ze(e) {
|
|
642
|
+
return typeof e == "string" && Xe.includes(e);
|
|
553
643
|
}
|
|
554
|
-
function
|
|
644
|
+
function Qe(e, t) {
|
|
555
645
|
switch (t) {
|
|
556
646
|
case "open": return e.open;
|
|
557
647
|
case "high": return e.high;
|
|
@@ -563,13 +653,13 @@ function Je(e, t) {
|
|
|
563
653
|
default: return e.close;
|
|
564
654
|
}
|
|
565
655
|
}
|
|
566
|
-
var
|
|
567
|
-
function
|
|
656
|
+
var $e = /^ind:([^:]+):(.+)$/;
|
|
657
|
+
function et(e, t) {
|
|
568
658
|
return `ind:${e}:${t}`;
|
|
569
659
|
}
|
|
570
|
-
function
|
|
660
|
+
function tt(e) {
|
|
571
661
|
if (typeof e != "string") return null;
|
|
572
|
-
let t =
|
|
662
|
+
let t = $e.exec(e);
|
|
573
663
|
return t ? {
|
|
574
664
|
instanceId: t[1],
|
|
575
665
|
key: t[2]
|
|
@@ -577,11 +667,11 @@ function Ze(e) {
|
|
|
577
667
|
}
|
|
578
668
|
//#endregion
|
|
579
669
|
//#region src/utils/resample.ts
|
|
580
|
-
var
|
|
581
|
-
function
|
|
670
|
+
var nt = 864e5;
|
|
671
|
+
function rt(e, t, n = 1) {
|
|
582
672
|
let r = [], i = null;
|
|
583
673
|
for (let a of e) {
|
|
584
|
-
let e =
|
|
674
|
+
let e = Be(a.time, t, n);
|
|
585
675
|
i === null || e !== i.time ? (i = {
|
|
586
676
|
time: e,
|
|
587
677
|
open: a.open,
|
|
@@ -593,37 +683,37 @@ function $e(e, t, n = 1) {
|
|
|
593
683
|
}
|
|
594
684
|
return r;
|
|
595
685
|
}
|
|
596
|
-
var
|
|
597
|
-
function
|
|
598
|
-
let n =
|
|
686
|
+
var O = (e) => e === "s" || e === "m" || e === "h" || e === "d";
|
|
687
|
+
function it(e, t) {
|
|
688
|
+
let n = w(e), r = w(t);
|
|
599
689
|
if (!n || !r) return !1;
|
|
600
|
-
let i =
|
|
601
|
-
return n.unit === "d" && n.count > 1 ? !1 :
|
|
690
|
+
let i = T(e);
|
|
691
|
+
return n.unit === "d" && n.count > 1 ? !1 : O(r.unit) ? O(n.unit) && T(t) % i === 0 : n.unit === r.unit ? r.count % n.count === 0 : O(n.unit) && nt % i === 0;
|
|
602
692
|
}
|
|
603
|
-
function
|
|
693
|
+
function at(e, t) {
|
|
604
694
|
let n = null, r = 0;
|
|
605
695
|
for (let i of t) {
|
|
606
|
-
if (!
|
|
607
|
-
let t =
|
|
696
|
+
if (!it(i, e)) continue;
|
|
697
|
+
let t = T(i);
|
|
608
698
|
t > r && (n = i, r = t);
|
|
609
699
|
}
|
|
610
700
|
return n;
|
|
611
701
|
}
|
|
612
702
|
//#endregion
|
|
613
703
|
//#region src/utils/symbols.ts
|
|
614
|
-
function
|
|
704
|
+
function ot(e, t) {
|
|
615
705
|
if (!e) return 0;
|
|
616
706
|
if (e === t) return 1e3;
|
|
617
707
|
if (e.startsWith(t)) return 600 - Math.min(100, e.length - t.length);
|
|
618
708
|
let n = e.indexOf(t);
|
|
619
709
|
return n >= 0 ? 300 - Math.min(100, n) : 0;
|
|
620
710
|
}
|
|
621
|
-
function
|
|
711
|
+
function st(e, t, n = 50, r) {
|
|
622
712
|
let i = t.trim().toUpperCase();
|
|
623
713
|
if (!i) return e.slice(0, n);
|
|
624
714
|
let a = [];
|
|
625
715
|
for (let t of e) {
|
|
626
|
-
let e = Math.max(
|
|
716
|
+
let e = Math.max(ot(t.symbol.toUpperCase(), i), ot((t.description ?? "").toUpperCase(), i) * .8);
|
|
627
717
|
e > 0 && a.push({
|
|
628
718
|
info: t,
|
|
629
719
|
score: e + (r?.(t) ?? 0)
|
|
@@ -631,7 +721,7 @@ function rt(e, t, n = 50, r) {
|
|
|
631
721
|
}
|
|
632
722
|
return a.sort((e, t) => t.score - e.score || e.info.symbol.localeCompare(t.info.symbol)), a.slice(0, n).map((e) => e.info);
|
|
633
723
|
}
|
|
634
|
-
function
|
|
724
|
+
function ct(e) {
|
|
635
725
|
let t = typeof e == "number" ? e : Number(e);
|
|
636
726
|
if (!Number.isFinite(t) || t <= 0) return 0;
|
|
637
727
|
for (let e = 0; e <= 12; e++) {
|
|
@@ -640,7 +730,7 @@ function it(e) {
|
|
|
640
730
|
}
|
|
641
731
|
return 12;
|
|
642
732
|
}
|
|
643
|
-
function
|
|
733
|
+
function k(e) {
|
|
644
734
|
let t = /^(\d{1,2}):(\d{2})$/.exec(e.trim());
|
|
645
735
|
if (!t) return null;
|
|
646
736
|
let n = Number(t[1]), r = Number(t[2]);
|
|
@@ -648,26 +738,26 @@ function M(e) {
|
|
|
648
738
|
}
|
|
649
739
|
//#endregion
|
|
650
740
|
//#region src/utils/marketStatus.ts
|
|
651
|
-
var
|
|
652
|
-
function
|
|
741
|
+
var A = 864e5, j = 6e4, lt = 8;
|
|
742
|
+
function ut(e, t) {
|
|
653
743
|
let n = e?.timezone, r = (e?.sessions ?? []).flatMap((e) => {
|
|
654
|
-
let t =
|
|
744
|
+
let t = k(e.start), n = k(e.end);
|
|
655
745
|
return t === null || n === null || t === n ? [] : [{
|
|
656
746
|
start: t,
|
|
657
747
|
end: n,
|
|
658
748
|
days: Array.isArray(e.days) ? e.days : null
|
|
659
749
|
}];
|
|
660
750
|
});
|
|
661
|
-
if (!n || !
|
|
751
|
+
if (!n || !Se(n) || r.length === 0 || !Number.isFinite(t)) return {
|
|
662
752
|
state: "always",
|
|
663
753
|
next: null
|
|
664
754
|
};
|
|
665
|
-
let i = b(n, t) *
|
|
666
|
-
for (let e = -1; e <=
|
|
667
|
-
let t = a + e *
|
|
755
|
+
let i = b(n, t) * j, a = Math.floor((t + i) / A) * A, o = (e) => e - b(n, e - b(n, e - i) * j) * j, s = [];
|
|
756
|
+
for (let e = -1; e <= lt; e++) {
|
|
757
|
+
let t = a + e * A, n = (Math.floor(t / A) + 4) % 7;
|
|
668
758
|
for (let e of r) {
|
|
669
759
|
if (e.days && !e.days.includes(n)) continue;
|
|
670
|
-
let r = t + e.start *
|
|
760
|
+
let r = t + e.start * j, i = (e.end > e.start ? t : t + A) + e.end * j;
|
|
671
761
|
s.push([o(r), o(i)]);
|
|
672
762
|
}
|
|
673
763
|
}
|
|
@@ -690,15 +780,15 @@ function ot(e, t) {
|
|
|
690
780
|
}
|
|
691
781
|
//#endregion
|
|
692
782
|
//#region src/utils/drawingOptions.ts
|
|
693
|
-
var
|
|
694
|
-
function
|
|
783
|
+
var dt = 48, ft = 2e3, pt = 1e4;
|
|
784
|
+
function mt(e) {
|
|
695
785
|
if (!Array.isArray(e)) return;
|
|
696
786
|
let t = [];
|
|
697
787
|
for (let n of e) {
|
|
698
|
-
if (t.length >=
|
|
788
|
+
if (t.length >= dt) break;
|
|
699
789
|
if (typeof n != "object" || !n) continue;
|
|
700
790
|
let { value: e, visible: r, color: i } = n;
|
|
701
|
-
if (typeof e != "number" || !Number.isFinite(e) || Math.abs(e) >
|
|
791
|
+
if (typeof e != "number" || !Number.isFinite(e) || Math.abs(e) > pt || r !== void 0 && typeof r != "boolean") continue;
|
|
702
792
|
let a = {
|
|
703
793
|
value: e,
|
|
704
794
|
visible: r ?? !0
|
|
@@ -707,169 +797,109 @@ function ut(e) {
|
|
|
707
797
|
}
|
|
708
798
|
return t;
|
|
709
799
|
}
|
|
710
|
-
function
|
|
800
|
+
function ht(e, t) {
|
|
711
801
|
switch (e.kind) {
|
|
712
802
|
case "boolean": return typeof t == "boolean" ? t : void 0;
|
|
713
803
|
case "number": return typeof t != "number" || !Number.isFinite(t) ? void 0 : Math.min(e.max ?? Infinity, Math.max(e.min ?? -Infinity, t));
|
|
714
804
|
case "choice": return typeof t == "string" && e.choices.some((e) => e.value === t) ? t : void 0;
|
|
715
|
-
case "levels": return
|
|
716
|
-
case "text": return typeof t == "string" ? t.slice(0,
|
|
805
|
+
case "levels": return mt(t);
|
|
806
|
+
case "text": return typeof t == "string" ? t.slice(0, ft) : void 0;
|
|
717
807
|
}
|
|
718
808
|
}
|
|
719
|
-
function
|
|
809
|
+
function gt(e, t) {
|
|
720
810
|
if (!e || typeof t != "object" || !t) return {};
|
|
721
811
|
let n = {};
|
|
722
812
|
for (let [r, i] of Object.entries(t)) {
|
|
723
813
|
let t = e[r];
|
|
724
814
|
if (!t) continue;
|
|
725
|
-
let a =
|
|
815
|
+
let a = ht(t, i);
|
|
726
816
|
a !== void 0 && (n[r] = a);
|
|
727
817
|
}
|
|
728
818
|
return n;
|
|
729
819
|
}
|
|
730
|
-
function
|
|
820
|
+
function _t(e) {
|
|
731
821
|
return Array.isArray(e) ? e.map((e) => ({ ...e })) : e;
|
|
732
822
|
}
|
|
733
|
-
function
|
|
823
|
+
function vt(e, t, n) {
|
|
734
824
|
let r = e?.[n];
|
|
735
|
-
return r ?
|
|
825
|
+
return r ? _t((t && n in t ? ht(r, t[n]) : void 0) ?? r.default) : t?.[n];
|
|
736
826
|
}
|
|
737
|
-
function
|
|
827
|
+
function yt(e, t) {
|
|
738
828
|
let n = {};
|
|
739
|
-
for (let r of Object.keys(e ?? {})) n[r] =
|
|
829
|
+
for (let r of Object.keys(e ?? {})) n[r] = vt(e, t, r);
|
|
740
830
|
return n;
|
|
741
831
|
}
|
|
742
832
|
//#endregion
|
|
743
833
|
//#region src/utils/drawingStyle.ts
|
|
744
|
-
var
|
|
834
|
+
var bt = [
|
|
745
835
|
"solid",
|
|
746
836
|
"dashed",
|
|
747
837
|
"dotted"
|
|
748
|
-
],
|
|
749
|
-
function
|
|
838
|
+
], xt = 64, St = 2e3, Ct = 20, wt = 200;
|
|
839
|
+
function M(e, t, n) {
|
|
750
840
|
return typeof e == "number" && Number.isFinite(e) ? Math.min(n, Math.max(t, e)) : void 0;
|
|
751
841
|
}
|
|
752
|
-
function
|
|
753
|
-
return typeof e == "string" && e.length > 0 && e.length <=
|
|
842
|
+
function Tt(e) {
|
|
843
|
+
return typeof e == "string" && e.length > 0 && e.length <= xt ? e : void 0;
|
|
754
844
|
}
|
|
755
|
-
function
|
|
845
|
+
function Et(e) {
|
|
756
846
|
if (typeof e != "object" || !e) return {};
|
|
757
|
-
let t = e, n = {}, r =
|
|
847
|
+
let t = e, n = {}, r = Tt(t.color);
|
|
758
848
|
r !== void 0 && (n.color = r);
|
|
759
|
-
let i =
|
|
760
|
-
i !== void 0 && (n.lineWidth = i),
|
|
761
|
-
let a =
|
|
849
|
+
let i = M(t.lineWidth, .5, Ct);
|
|
850
|
+
i !== void 0 && (n.lineWidth = i), bt.includes(t.lineStyle) && (n.lineStyle = t.lineStyle);
|
|
851
|
+
let a = Tt(t.fillColor);
|
|
762
852
|
a !== void 0 && (n.fillColor = a);
|
|
763
|
-
let o =
|
|
853
|
+
let o = M(t.fillOpacity, 0, 1);
|
|
764
854
|
o !== void 0 && (n.fillOpacity = o);
|
|
765
|
-
let s =
|
|
766
|
-
return s !== void 0 && (n.fontSize = s), typeof t.text == "string" && (n.text = t.text.slice(0,
|
|
855
|
+
let s = M(t.fontSize, 6, wt);
|
|
856
|
+
return s !== void 0 && (n.fontSize = s), typeof t.text == "string" && (n.text = t.text.slice(0, St)), n;
|
|
767
857
|
}
|
|
768
858
|
//#endregion
|
|
769
859
|
//#region src/utils/chartTypeOptions.ts
|
|
770
|
-
var
|
|
771
|
-
function
|
|
772
|
-
if (!
|
|
860
|
+
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);
|
|
861
|
+
function Dt(e) {
|
|
862
|
+
if (!F(e)) return {};
|
|
773
863
|
let t = {};
|
|
774
|
-
if (
|
|
864
|
+
if (F(e.renko)) {
|
|
775
865
|
let { boxSize: n, atrPeriod: r } = e.renko;
|
|
776
866
|
t.renko = {
|
|
777
|
-
...
|
|
778
|
-
...
|
|
867
|
+
...N(n) || n === "atr" ? { boxSize: n } : {},
|
|
868
|
+
...P(r, 1, 500) ? { atrPeriod: r } : {}
|
|
779
869
|
};
|
|
780
870
|
}
|
|
781
|
-
if (
|
|
871
|
+
if (F(e.lineBreak)) {
|
|
782
872
|
let { lines: n } = e.lineBreak;
|
|
783
|
-
t.lineBreak =
|
|
873
|
+
t.lineBreak = P(n, 1, 10) ? { lines: n } : {};
|
|
784
874
|
}
|
|
785
|
-
if (
|
|
875
|
+
if (F(e.kagi)) {
|
|
786
876
|
let { reversal: n, reversalType: r } = e.kagi;
|
|
787
877
|
t.kagi = {
|
|
788
|
-
...
|
|
878
|
+
...N(n) ? { reversal: n } : {},
|
|
789
879
|
...r === "percent" || r === "price" ? { reversalType: r } : {}
|
|
790
880
|
};
|
|
791
881
|
}
|
|
792
|
-
if (
|
|
882
|
+
if (F(e.pointAndFigure)) {
|
|
793
883
|
let { boxSize: n, reversal: r } = e.pointAndFigure;
|
|
794
884
|
t.pointAndFigure = {
|
|
795
|
-
...
|
|
796
|
-
...
|
|
885
|
+
...N(n) || n === "auto" ? { boxSize: n } : {},
|
|
886
|
+
...P(r, 1, 10) ? { reversal: r } : {}
|
|
797
887
|
};
|
|
798
888
|
}
|
|
799
|
-
if (
|
|
889
|
+
if (F(e.rangeBars)) {
|
|
800
890
|
let { range: n } = e.rangeBars;
|
|
801
|
-
t.rangeBars =
|
|
891
|
+
t.rangeBars = N(n) || n === "auto" ? { range: n } : {};
|
|
802
892
|
}
|
|
803
893
|
return t;
|
|
804
894
|
}
|
|
805
895
|
//#endregion
|
|
806
|
-
//#region src/constants/
|
|
807
|
-
var
|
|
808
|
-
|
|
809
|
-
rightMargin: 5,
|
|
810
|
-
minBarSpacing: 2,
|
|
811
|
-
maxBarSpacing: 30,
|
|
812
|
-
grid: {
|
|
813
|
-
visible: !0,
|
|
814
|
-
hLineStyle: "solid",
|
|
815
|
-
vLineStyle: "solid"
|
|
816
|
-
},
|
|
817
|
-
crosshair: { mode: "magnet" }
|
|
818
|
-
}, Tt = [
|
|
819
|
-
"1s",
|
|
820
|
-
"1m",
|
|
821
|
-
"3m",
|
|
822
|
-
"5m",
|
|
823
|
-
"15m",
|
|
824
|
-
"30m",
|
|
825
|
-
"1h",
|
|
826
|
-
"2h",
|
|
827
|
-
"4h",
|
|
828
|
-
"6h",
|
|
829
|
-
"8h",
|
|
830
|
-
"12h",
|
|
831
|
-
"1d",
|
|
832
|
-
"3d",
|
|
833
|
-
"1w",
|
|
834
|
-
"1M"
|
|
835
|
-
], Et = [
|
|
836
|
-
"1m",
|
|
837
|
-
"5m",
|
|
838
|
-
"15m",
|
|
839
|
-
"30m",
|
|
840
|
-
"1h",
|
|
841
|
-
"2h",
|
|
842
|
-
"4h",
|
|
843
|
-
"1d",
|
|
844
|
-
"1w",
|
|
845
|
-
"1M",
|
|
846
|
-
"3M",
|
|
847
|
-
"6M",
|
|
848
|
-
"12M"
|
|
849
|
-
], Dt = [
|
|
850
|
-
"1m",
|
|
851
|
-
"5m",
|
|
852
|
-
"15m",
|
|
853
|
-
"30m",
|
|
854
|
-
"1h",
|
|
855
|
-
"4h",
|
|
856
|
-
"1d",
|
|
857
|
-
"1w",
|
|
858
|
-
"1M"
|
|
859
|
-
], Ot = [
|
|
860
|
-
"1m",
|
|
861
|
-
"5m",
|
|
862
|
-
"15m",
|
|
863
|
-
"1h",
|
|
864
|
-
"4h",
|
|
865
|
-
"1d",
|
|
866
|
-
"1w"
|
|
867
|
-
], kt = 8, At = 2, jt = 70, Mt = 30, Nt = 60, Pt = 120, z = "-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif", B = {
|
|
868
|
-
family: z,
|
|
896
|
+
//#region src/constants/themes.ts
|
|
897
|
+
var Ot = "-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif", kt = {
|
|
898
|
+
family: Ot,
|
|
869
899
|
sizeSmall: 10,
|
|
870
900
|
sizeMedium: 12,
|
|
871
901
|
sizeLarge: 14
|
|
872
|
-
},
|
|
902
|
+
}, I = {
|
|
873
903
|
amber: "#f2a93b",
|
|
874
904
|
up: "#1fa874",
|
|
875
905
|
down: "#e8505b",
|
|
@@ -880,37 +910,37 @@ var wt = {
|
|
|
880
910
|
rose: "#e25592",
|
|
881
911
|
neutral: "#7d8696",
|
|
882
912
|
ink: "#0c1016"
|
|
883
|
-
},
|
|
884
|
-
function
|
|
885
|
-
return me(e,
|
|
886
|
-
}
|
|
887
|
-
var
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
],
|
|
913
|
+
}, At = .22;
|
|
914
|
+
function L(e) {
|
|
915
|
+
return me(e, At);
|
|
916
|
+
}
|
|
917
|
+
var R = "#2eb88a", z = "#e85a67", jt = [
|
|
918
|
+
I.blue,
|
|
919
|
+
I.ochre,
|
|
920
|
+
I.violet,
|
|
921
|
+
I.cyan,
|
|
922
|
+
I.rose
|
|
923
|
+
], B = {
|
|
894
924
|
name: "dark",
|
|
895
|
-
background:
|
|
925
|
+
background: I.ink,
|
|
896
926
|
text: "#d9dde4",
|
|
897
927
|
textSecondary: "#7d8696",
|
|
898
928
|
grid: "#161b23",
|
|
899
929
|
crosshair: "#8a93a3",
|
|
900
|
-
candleUp:
|
|
901
|
-
candleDown:
|
|
902
|
-
candleUpWick:
|
|
903
|
-
candleDownWick:
|
|
904
|
-
lineColor:
|
|
930
|
+
candleUp: R,
|
|
931
|
+
candleDown: z,
|
|
932
|
+
candleUpWick: R,
|
|
933
|
+
candleDownWick: z,
|
|
934
|
+
lineColor: I.amber,
|
|
905
935
|
areaTopColor: "rgba(242, 169, 59, 0.32)",
|
|
906
936
|
areaBottomColor: "rgba(242, 169, 59, 0.0)",
|
|
907
|
-
volumeUp:
|
|
908
|
-
volumeDown:
|
|
937
|
+
volumeUp: L(R),
|
|
938
|
+
volumeDown: L(z),
|
|
909
939
|
axisLine: "#1f2630",
|
|
910
940
|
axisLabel: "#9aa3b2",
|
|
911
941
|
axisLabelBackground: "#1f2630",
|
|
912
|
-
font:
|
|
913
|
-
},
|
|
942
|
+
font: kt
|
|
943
|
+
}, V = {
|
|
914
944
|
name: "light",
|
|
915
945
|
background: "#ffffff",
|
|
916
946
|
text: "#0f131a",
|
|
@@ -924,13 +954,13 @@ var U = "#2eb88a", W = "#e85a67", It = [
|
|
|
924
954
|
lineColor: "#c77a0a",
|
|
925
955
|
areaTopColor: "rgba(199, 122, 10, 0.24)",
|
|
926
956
|
areaBottomColor: "rgba(199, 122, 10, 0.0)",
|
|
927
|
-
volumeUp:
|
|
928
|
-
volumeDown:
|
|
957
|
+
volumeUp: L("#16a36a"),
|
|
958
|
+
volumeDown: L("#d9414f"),
|
|
929
959
|
axisLine: "#dde1e7",
|
|
930
960
|
axisLabel: "#5b6472",
|
|
931
961
|
axisLabelBackground: "#eef0f3",
|
|
932
|
-
font:
|
|
933
|
-
},
|
|
962
|
+
font: kt
|
|
963
|
+
}, H = {
|
|
934
964
|
name: "terminal",
|
|
935
965
|
background: "#0E0E0E",
|
|
936
966
|
text: "#C0C0C0",
|
|
@@ -955,18 +985,18 @@ var U = "#2eb88a", W = "#e85a67", It = [
|
|
|
955
985
|
sizeMedium: 12,
|
|
956
986
|
sizeLarge: 14
|
|
957
987
|
}
|
|
958
|
-
},
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
988
|
+
}, Mt = new Set([
|
|
989
|
+
B.volumeUp,
|
|
990
|
+
B.volumeDown,
|
|
991
|
+
V.volumeUp,
|
|
992
|
+
V.volumeDown,
|
|
993
|
+
H.volumeUp,
|
|
994
|
+
H.volumeDown
|
|
965
995
|
]);
|
|
966
|
-
function
|
|
996
|
+
function U(e) {
|
|
967
997
|
let t = (e, t) => {
|
|
968
|
-
if (!
|
|
969
|
-
let n =
|
|
998
|
+
if (!Mt.has(e)) return e;
|
|
999
|
+
let n = L(t);
|
|
970
1000
|
return n === t ? e : n;
|
|
971
1001
|
};
|
|
972
1002
|
return {
|
|
@@ -975,8 +1005,283 @@ function Rt(e) {
|
|
|
975
1005
|
};
|
|
976
1006
|
}
|
|
977
1007
|
//#endregion
|
|
978
|
-
//#region src/
|
|
979
|
-
var
|
|
1008
|
+
//#region src/utils/chartStyle.ts
|
|
1009
|
+
var Nt = [
|
|
1010
|
+
"solid",
|
|
1011
|
+
"dashed",
|
|
1012
|
+
"dotted"
|
|
1013
|
+
], Pt = 20, Ft = 64, It = 2, Lt = [
|
|
1014
|
+
/^#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i,
|
|
1015
|
+
/^[a-z]{3,30}$/i,
|
|
1016
|
+
/^(?:rgba?|hsla?|hwb|lab|lch|oklab|oklch|color)\([0-9a-z.,%/\s-]*\)$/i
|
|
1017
|
+
];
|
|
1018
|
+
function W(e) {
|
|
1019
|
+
return typeof e == "string" && e.length <= Ft && Lt.some((t) => t.test(e.trim()));
|
|
1020
|
+
}
|
|
1021
|
+
function Rt(e, t) {
|
|
1022
|
+
switch (e) {
|
|
1023
|
+
case "color": return W(t);
|
|
1024
|
+
case "lineStyle": return Nt.includes(t);
|
|
1025
|
+
case "width": return typeof t == "number" && Number.isFinite(t) && t > 0 && t <= Pt;
|
|
1026
|
+
case "boolean": return typeof t == "boolean";
|
|
1027
|
+
}
|
|
1028
|
+
}
|
|
1029
|
+
function zt(e) {
|
|
1030
|
+
return Object.prototype.hasOwnProperty.call(t, e);
|
|
1031
|
+
}
|
|
1032
|
+
function Bt(e) {
|
|
1033
|
+
let n = {}, r = [];
|
|
1034
|
+
if (typeof e != "object" || !e || Array.isArray(e)) return {
|
|
1035
|
+
overrides: {},
|
|
1036
|
+
rejected: r
|
|
1037
|
+
};
|
|
1038
|
+
for (let [i, a] of Object.entries(e)) zt(i) ? a === null ? n[i] = null : Rt(t[i], a) ? n[i] = a : r.push(i) : r.push(i);
|
|
1039
|
+
return {
|
|
1040
|
+
overrides: n,
|
|
1041
|
+
rejected: r
|
|
1042
|
+
};
|
|
1043
|
+
}
|
|
1044
|
+
function Vt(e) {
|
|
1045
|
+
if (typeof e != "object" || !e || Array.isArray(e)) return null;
|
|
1046
|
+
let { background: t, separator: n } = e, r = {
|
|
1047
|
+
...W(t) ? { background: t } : {},
|
|
1048
|
+
...W(n) ? { separator: n } : {}
|
|
1049
|
+
};
|
|
1050
|
+
return Object.keys(r).length > 0 ? r : null;
|
|
1051
|
+
}
|
|
1052
|
+
var Ht = /^[A-Za-z0-9_]{1,32}$/;
|
|
1053
|
+
function Ut(e) {
|
|
1054
|
+
if (typeof e != "object" || !e || Array.isArray(e)) return;
|
|
1055
|
+
let t = {};
|
|
1056
|
+
for (let [n, r] of Object.entries(e)) {
|
|
1057
|
+
if (!Ht.test(n) || typeof r != "object" || !r) continue;
|
|
1058
|
+
let { lineStyle: e, visible: i } = r, a = {
|
|
1059
|
+
...Nt.includes(e) ? { lineStyle: e } : {},
|
|
1060
|
+
...typeof i == "boolean" ? { visible: i } : {}
|
|
1061
|
+
};
|
|
1062
|
+
Object.keys(a).length > 0 && (t[n] = a);
|
|
1063
|
+
}
|
|
1064
|
+
return Object.keys(t).length > 0 ? t : void 0;
|
|
1065
|
+
}
|
|
1066
|
+
function Wt(e, t, n = 1) {
|
|
1067
|
+
return e === "solid" ? [] : e === "dotted" ? [n, n * 2] : [...t];
|
|
1068
|
+
}
|
|
1069
|
+
function Gt(e, t, n) {
|
|
1070
|
+
let r = (e) => t(`series.${n}.${e}`), i = r("upColor") ?? t("series.candlestick.upColor"), a = r("downColor") ?? t("series.candlestick.downColor"), o = i ?? e.candleUp, s = a ?? e.candleDown;
|
|
1071
|
+
return {
|
|
1072
|
+
up: o,
|
|
1073
|
+
down: s,
|
|
1074
|
+
wickUp: r("wickUpColor") ?? t("series.candlestick.wickUpColor") ?? (i === void 0 ? e.candleUpWick : o),
|
|
1075
|
+
wickDown: r("wickDownColor") ?? t("series.candlestick.wickDownColor") ?? (a === void 0 ? e.candleDownWick : s),
|
|
1076
|
+
line: r("color") ?? r("lineColor") ?? t("series.line.color") ?? e.lineColor,
|
|
1077
|
+
lineWidth: r("lineWidth") ?? t("series.line.lineWidth") ?? It,
|
|
1078
|
+
top: r("topColor") ?? t("series.area.topColor") ?? e.areaTopColor,
|
|
1079
|
+
bottom: r("bottomColor") ?? t("series.area.bottomColor") ?? e.areaBottomColor
|
|
1080
|
+
};
|
|
1081
|
+
}
|
|
1082
|
+
function G(e, t, n) {
|
|
1083
|
+
return {
|
|
1084
|
+
visible: e(`${t}.visible`) ?? n.visible,
|
|
1085
|
+
color: e(`${t}.color`) ?? n.color,
|
|
1086
|
+
style: e(`${t}.style`) ?? n.style,
|
|
1087
|
+
width: e(`${t}.width`) ?? n.width
|
|
1088
|
+
};
|
|
1089
|
+
}
|
|
1090
|
+
function Kt(e, t, n) {
|
|
1091
|
+
let { style: r, ...i } = e, a = n, o = (e) => a[e], s = Gt(i, o, t), c = o("background.color") ?? i.background, l = (e, t) => o(e) ?? t, u = {
|
|
1092
|
+
panes: {
|
|
1093
|
+
background: l("panes.background", c),
|
|
1094
|
+
separator: l("panes.separatorColor", i.axisLine),
|
|
1095
|
+
title: l("panes.titleColor", i.textSecondary)
|
|
1096
|
+
},
|
|
1097
|
+
grid: {
|
|
1098
|
+
horizontal: G(o, "grid.horizontal", {
|
|
1099
|
+
visible: !0,
|
|
1100
|
+
color: i.grid,
|
|
1101
|
+
style: "solid",
|
|
1102
|
+
width: 1
|
|
1103
|
+
}),
|
|
1104
|
+
vertical: G(o, "grid.vertical", {
|
|
1105
|
+
visible: !0,
|
|
1106
|
+
color: i.grid,
|
|
1107
|
+
style: "solid",
|
|
1108
|
+
width: 1
|
|
1109
|
+
})
|
|
1110
|
+
},
|
|
1111
|
+
crosshair: {
|
|
1112
|
+
horizontal: G(o, "crosshair.horizontal", {
|
|
1113
|
+
visible: !0,
|
|
1114
|
+
color: i.crosshair,
|
|
1115
|
+
style: "dashed",
|
|
1116
|
+
width: 1
|
|
1117
|
+
}),
|
|
1118
|
+
vertical: G(o, "crosshair.vertical", {
|
|
1119
|
+
visible: !0,
|
|
1120
|
+
color: i.crosshair,
|
|
1121
|
+
style: "dashed",
|
|
1122
|
+
width: 1
|
|
1123
|
+
}),
|
|
1124
|
+
labelBackground: l("crosshair.labelBackground", i.text),
|
|
1125
|
+
labelText: l("crosshair.labelTextColor", c)
|
|
1126
|
+
},
|
|
1127
|
+
axis: {
|
|
1128
|
+
price: {
|
|
1129
|
+
line: l("axis.price.lineColor", i.axisLine),
|
|
1130
|
+
text: l("axis.price.textColor", i.axisLabel)
|
|
1131
|
+
},
|
|
1132
|
+
time: {
|
|
1133
|
+
line: l("axis.time.lineColor", i.axisLine),
|
|
1134
|
+
text: l("axis.time.textColor", i.axisLabel)
|
|
1135
|
+
}
|
|
1136
|
+
},
|
|
1137
|
+
legend: {
|
|
1138
|
+
text: l("legend.textColor", i.text),
|
|
1139
|
+
label: l("legend.labelColor", i.textSecondary)
|
|
1140
|
+
},
|
|
1141
|
+
watermark: { color: o("watermark.color") ?? null },
|
|
1142
|
+
lastPrice: {
|
|
1143
|
+
visible: o("lastPrice.visible") ?? !0,
|
|
1144
|
+
up: l("lastPrice.upColor", s.up),
|
|
1145
|
+
down: l("lastPrice.downColor", s.down),
|
|
1146
|
+
style: o("lastPrice.style") ?? "dashed",
|
|
1147
|
+
width: o("lastPrice.width") ?? 1
|
|
1148
|
+
},
|
|
1149
|
+
sessionBreaks: {
|
|
1150
|
+
color: o("sessionBreaks.color") ?? null,
|
|
1151
|
+
style: o("sessionBreaks.style") ?? null,
|
|
1152
|
+
width: o("sessionBreaks.width") ?? null
|
|
1153
|
+
},
|
|
1154
|
+
highLow: { color: o("highLow.color") ?? null },
|
|
1155
|
+
series: { lineWidth: s.lineWidth }
|
|
1156
|
+
};
|
|
1157
|
+
return {
|
|
1158
|
+
...i,
|
|
1159
|
+
background: c,
|
|
1160
|
+
candleUp: s.up,
|
|
1161
|
+
candleDown: s.down,
|
|
1162
|
+
candleUpWick: s.wickUp,
|
|
1163
|
+
candleDownWick: s.wickDown,
|
|
1164
|
+
lineColor: s.line,
|
|
1165
|
+
areaTopColor: s.top,
|
|
1166
|
+
areaBottomColor: s.bottom,
|
|
1167
|
+
volumeUp: l("volume.upColor", i.volumeUp),
|
|
1168
|
+
volumeDown: l("volume.downColor", i.volumeDown),
|
|
1169
|
+
style: u
|
|
1170
|
+
};
|
|
1171
|
+
}
|
|
1172
|
+
var qt = {
|
|
1173
|
+
"background.color": (e) => e.background,
|
|
1174
|
+
"panes.background": (e, t) => t.panes.background,
|
|
1175
|
+
"panes.separatorColor": (e, t) => t.panes.separator,
|
|
1176
|
+
"panes.titleColor": (e, t) => t.panes.title,
|
|
1177
|
+
"crosshair.labelBackground": (e, t) => t.crosshair.labelBackground,
|
|
1178
|
+
"crosshair.labelTextColor": (e, t) => t.crosshair.labelText,
|
|
1179
|
+
"axis.price.lineColor": (e, t) => t.axis.price.line,
|
|
1180
|
+
"axis.price.textColor": (e, t) => t.axis.price.text,
|
|
1181
|
+
"axis.time.lineColor": (e, t) => t.axis.time.line,
|
|
1182
|
+
"axis.time.textColor": (e, t) => t.axis.time.text,
|
|
1183
|
+
"legend.textColor": (e, t) => t.legend.text,
|
|
1184
|
+
"legend.labelColor": (e, t) => t.legend.label,
|
|
1185
|
+
"watermark.color": (e, t) => t.watermark.color,
|
|
1186
|
+
"lastPrice.visible": (e, t) => t.lastPrice.visible,
|
|
1187
|
+
"lastPrice.upColor": (e, t) => t.lastPrice.up,
|
|
1188
|
+
"lastPrice.downColor": (e, t) => t.lastPrice.down,
|
|
1189
|
+
"lastPrice.style": (e, t) => t.lastPrice.style,
|
|
1190
|
+
"lastPrice.width": (e, t) => t.lastPrice.width,
|
|
1191
|
+
"volume.upColor": (e) => U(e).up,
|
|
1192
|
+
"volume.downColor": (e) => U(e).down,
|
|
1193
|
+
"sessionBreaks.color": (e, t) => t.sessionBreaks.color,
|
|
1194
|
+
"sessionBreaks.style": (e, t) => t.sessionBreaks.style,
|
|
1195
|
+
"sessionBreaks.width": (e, t) => t.sessionBreaks.width,
|
|
1196
|
+
"highLow.color": (e, t) => t.highLow.color
|
|
1197
|
+
}, Jt = {
|
|
1198
|
+
visible: "visible",
|
|
1199
|
+
color: "color",
|
|
1200
|
+
style: "style",
|
|
1201
|
+
width: "width"
|
|
1202
|
+
};
|
|
1203
|
+
function Yt(e, t, n, r = "candlestick") {
|
|
1204
|
+
let i = n.split(".");
|
|
1205
|
+
if (i[0] === "series") {
|
|
1206
|
+
let n = Gt(e, (e) => t[e], i[1]);
|
|
1207
|
+
switch (i[2]) {
|
|
1208
|
+
case "upColor": return n.up;
|
|
1209
|
+
case "downColor": return n.down;
|
|
1210
|
+
case "wickUpColor": return n.wickUp;
|
|
1211
|
+
case "wickDownColor": return n.wickDown;
|
|
1212
|
+
case "color":
|
|
1213
|
+
case "lineColor": return n.line;
|
|
1214
|
+
case "lineWidth": return n.lineWidth;
|
|
1215
|
+
case "topColor": return n.top;
|
|
1216
|
+
case "bottomColor": return n.bottom;
|
|
1217
|
+
}
|
|
1218
|
+
}
|
|
1219
|
+
let a = Kt(e, r, t), o = a.style;
|
|
1220
|
+
return i[0] === "grid" || i[0] === "crosshair" && (i[1] === "horizontal" || i[1] === "vertical") ? (i[0] === "grid" ? o.grid : o.crosshair)[i[1]][Jt[i[2]]] : qt[n]?.(a, o) ?? null;
|
|
1221
|
+
}
|
|
1222
|
+
//#endregion
|
|
1223
|
+
//#region src/constants/defaults.ts
|
|
1224
|
+
var Xt = {
|
|
1225
|
+
autoScale: !0,
|
|
1226
|
+
rightMargin: 5,
|
|
1227
|
+
minBarSpacing: 2,
|
|
1228
|
+
maxBarSpacing: 30,
|
|
1229
|
+
grid: {
|
|
1230
|
+
visible: !0,
|
|
1231
|
+
hLineStyle: "solid",
|
|
1232
|
+
vLineStyle: "solid"
|
|
1233
|
+
},
|
|
1234
|
+
crosshair: { mode: "magnet" }
|
|
1235
|
+
}, Zt = [
|
|
1236
|
+
"1s",
|
|
1237
|
+
"1m",
|
|
1238
|
+
"3m",
|
|
1239
|
+
"5m",
|
|
1240
|
+
"15m",
|
|
1241
|
+
"30m",
|
|
1242
|
+
"1h",
|
|
1243
|
+
"2h",
|
|
1244
|
+
"4h",
|
|
1245
|
+
"6h",
|
|
1246
|
+
"8h",
|
|
1247
|
+
"12h",
|
|
1248
|
+
"1d",
|
|
1249
|
+
"3d",
|
|
1250
|
+
"1w",
|
|
1251
|
+
"1M"
|
|
1252
|
+
], Qt = [
|
|
1253
|
+
"1m",
|
|
1254
|
+
"5m",
|
|
1255
|
+
"15m",
|
|
1256
|
+
"30m",
|
|
1257
|
+
"1h",
|
|
1258
|
+
"2h",
|
|
1259
|
+
"4h",
|
|
1260
|
+
"1d",
|
|
1261
|
+
"1w",
|
|
1262
|
+
"1M",
|
|
1263
|
+
"3M",
|
|
1264
|
+
"6M",
|
|
1265
|
+
"12M"
|
|
1266
|
+
], $t = [
|
|
1267
|
+
"1m",
|
|
1268
|
+
"5m",
|
|
1269
|
+
"15m",
|
|
1270
|
+
"30m",
|
|
1271
|
+
"1h",
|
|
1272
|
+
"4h",
|
|
1273
|
+
"1d",
|
|
1274
|
+
"1w",
|
|
1275
|
+
"1M"
|
|
1276
|
+
], en = [
|
|
1277
|
+
"1m",
|
|
1278
|
+
"5m",
|
|
1279
|
+
"15m",
|
|
1280
|
+
"1h",
|
|
1281
|
+
"4h",
|
|
1282
|
+
"1d",
|
|
1283
|
+
"1w"
|
|
1284
|
+
], tn = 8, nn = 2, rn = 70, an = 30, on = 60, sn = 120, K = {
|
|
980
1285
|
candlestick: "Candlestick",
|
|
981
1286
|
line: "Line",
|
|
982
1287
|
area: "Area",
|
|
@@ -1079,7 +1384,7 @@ var J = {
|
|
|
1079
1384
|
error: "Error",
|
|
1080
1385
|
numberDecimalSeparator: ".",
|
|
1081
1386
|
numberGroupSeparator: ","
|
|
1082
|
-
},
|
|
1387
|
+
}, cn = {
|
|
1083
1388
|
candlestick: "Nến",
|
|
1084
1389
|
line: "Đường",
|
|
1085
1390
|
area: "Vùng",
|
|
@@ -1182,43 +1487,43 @@ var J = {
|
|
|
1182
1487
|
error: "Lỗi",
|
|
1183
1488
|
numberDecimalSeparator: ",",
|
|
1184
1489
|
numberGroupSeparator: "."
|
|
1185
|
-
},
|
|
1186
|
-
function
|
|
1187
|
-
|
|
1490
|
+
}, q = new Map([["en", K], ["vi", cn]]), J = "en", Y = K;
|
|
1491
|
+
function ln(e) {
|
|
1492
|
+
J = e, Y = q.get(e) ?? K;
|
|
1188
1493
|
}
|
|
1189
|
-
function
|
|
1190
|
-
return
|
|
1494
|
+
function un() {
|
|
1495
|
+
return J;
|
|
1191
1496
|
}
|
|
1192
|
-
function
|
|
1193
|
-
return
|
|
1497
|
+
function dn(e) {
|
|
1498
|
+
return Y[e] ?? K[e] ?? e;
|
|
1194
1499
|
}
|
|
1195
|
-
function
|
|
1196
|
-
|
|
1500
|
+
function fn(e, t) {
|
|
1501
|
+
q.set(e, t);
|
|
1197
1502
|
}
|
|
1198
|
-
function
|
|
1199
|
-
return
|
|
1503
|
+
function pn(e) {
|
|
1504
|
+
return q.get(e ?? J) ?? K;
|
|
1200
1505
|
}
|
|
1201
|
-
function
|
|
1202
|
-
let r =
|
|
1506
|
+
function X(e, t = 2, n) {
|
|
1507
|
+
let r = q.get(n ?? J) ?? K, i = r.numberDecimalSeparator, a = r.numberGroupSeparator, [o, s] = e.toFixed(t).split("."), c = o.startsWith("-"), l = c ? o.slice(1) : o, u = "";
|
|
1203
1508
|
for (let e = l.length - 1, t = 0; e >= 0; e--, t++) t > 0 && t % 3 == 0 && (u = a + u), u = l[e] + u;
|
|
1204
1509
|
return c && (u = "-" + u), s ? u + i + s : u;
|
|
1205
1510
|
}
|
|
1206
|
-
function
|
|
1207
|
-
return
|
|
1511
|
+
function mn(e) {
|
|
1512
|
+
return X(e, 0, "vi");
|
|
1208
1513
|
}
|
|
1209
|
-
function
|
|
1210
|
-
return e >= 1e9 ?
|
|
1514
|
+
function hn(e, t) {
|
|
1515
|
+
return e >= 1e9 ? X(e / 1e9, 2, t ?? J) + "B" : e >= 1e6 ? X(e / 1e6, 2, t ?? J) + "M" : e >= 1e3 ? X(e / 1e3, 2, t ?? J) + "K" : X(e, 0, t ?? J);
|
|
1211
1516
|
}
|
|
1212
1517
|
//#endregion
|
|
1213
1518
|
//#region src/market/presets.ts
|
|
1214
|
-
var
|
|
1519
|
+
var Z = {
|
|
1215
1520
|
up: "#FF0000",
|
|
1216
1521
|
down: "#0000FF",
|
|
1217
1522
|
unchanged: "#FFD700",
|
|
1218
1523
|
ceiling: "#FF00FF",
|
|
1219
1524
|
floor: "#00FFFF",
|
|
1220
1525
|
reference: "#FFD700"
|
|
1221
|
-
},
|
|
1526
|
+
}, Q = [
|
|
1222
1527
|
{
|
|
1223
1528
|
name: "ATO",
|
|
1224
1529
|
startTime: "09:00",
|
|
@@ -1274,7 +1579,7 @@ var Q = {
|
|
|
1274
1579
|
endTime: "14:45",
|
|
1275
1580
|
type: "preClose"
|
|
1276
1581
|
}
|
|
1277
|
-
],
|
|
1582
|
+
], gn = {
|
|
1278
1583
|
type: "stock",
|
|
1279
1584
|
exchange: "HOSE",
|
|
1280
1585
|
currency: "VND",
|
|
@@ -1286,9 +1591,9 @@ var Q = {
|
|
|
1286
1591
|
ceilingPercent: 7,
|
|
1287
1592
|
floorPercent: 7
|
|
1288
1593
|
},
|
|
1289
|
-
sessions:
|
|
1290
|
-
colorScheme:
|
|
1291
|
-
},
|
|
1594
|
+
sessions: Q,
|
|
1595
|
+
colorScheme: Z
|
|
1596
|
+
}, _n = {
|
|
1292
1597
|
type: "stock",
|
|
1293
1598
|
exchange: "HNX",
|
|
1294
1599
|
currency: "VND",
|
|
@@ -1301,8 +1606,8 @@ var Q = {
|
|
|
1301
1606
|
floorPercent: 10
|
|
1302
1607
|
},
|
|
1303
1608
|
sessions: $,
|
|
1304
|
-
colorScheme:
|
|
1305
|
-
},
|
|
1609
|
+
colorScheme: Z
|
|
1610
|
+
}, vn = {
|
|
1306
1611
|
type: "stock",
|
|
1307
1612
|
exchange: "UPCOM",
|
|
1308
1613
|
currency: "VND",
|
|
@@ -1315,13 +1620,13 @@ var Q = {
|
|
|
1315
1620
|
floorPercent: 15
|
|
1316
1621
|
},
|
|
1317
1622
|
sessions: $,
|
|
1318
|
-
colorScheme:
|
|
1319
|
-
},
|
|
1623
|
+
colorScheme: Z
|
|
1624
|
+
}, yn = {
|
|
1320
1625
|
type: "crypto",
|
|
1321
1626
|
currency: "USDT",
|
|
1322
1627
|
pricePrecision: 2,
|
|
1323
1628
|
priceLimits: { enabled: !1 }
|
|
1324
|
-
},
|
|
1629
|
+
}, bn = {
|
|
1325
1630
|
type: "stock",
|
|
1326
1631
|
exchange: "NYSE",
|
|
1327
1632
|
currency: "USD",
|
|
@@ -1349,18 +1654,18 @@ var Q = {
|
|
|
1349
1654
|
}
|
|
1350
1655
|
]
|
|
1351
1656
|
};
|
|
1352
|
-
function
|
|
1657
|
+
function xn(e) {
|
|
1353
1658
|
return {
|
|
1354
1659
|
...e,
|
|
1355
|
-
candleUp:
|
|
1356
|
-
candleDown:
|
|
1357
|
-
candleUpWick:
|
|
1358
|
-
candleDownWick:
|
|
1660
|
+
candleUp: Z.up,
|
|
1661
|
+
candleDown: Z.down,
|
|
1662
|
+
candleUpWick: Z.up,
|
|
1663
|
+
candleDownWick: Z.down,
|
|
1359
1664
|
volumeUp: "rgba(255, 0, 0, 0.3)",
|
|
1360
1665
|
volumeDown: "rgba(0, 0, 255, 0.3)"
|
|
1361
1666
|
};
|
|
1362
1667
|
}
|
|
1363
|
-
function
|
|
1668
|
+
function Sn(e, t) {
|
|
1364
1669
|
if (!t.priceLimits?.enabled || !t.priceLimits.ceilingPercent) return null;
|
|
1365
1670
|
let n = t.priceLimits.ceilingPercent / 100, r = (t.priceLimits.floorPercent ?? t.priceLimits.ceilingPercent) / 100;
|
|
1366
1671
|
return {
|
|
@@ -1369,12 +1674,12 @@ function tn(e, t) {
|
|
|
1369
1674
|
reference: e
|
|
1370
1675
|
};
|
|
1371
1676
|
}
|
|
1372
|
-
function
|
|
1677
|
+
function Cn(e) {
|
|
1373
1678
|
let t = /* @__PURE__ */ new Date(), n = `${String(t.getHours()).padStart(2, "0")}:${String(t.getMinutes()).padStart(2, "0")}`;
|
|
1374
1679
|
for (let t of e) if (n >= t.startTime && n < t.endTime) return t;
|
|
1375
1680
|
return null;
|
|
1376
1681
|
}
|
|
1377
1682
|
//#endregion
|
|
1378
|
-
export {
|
|
1683
|
+
export { t as CHART_STYLE_KEYS, H as DARK_TERMINAL, B as DARK_THEME, nn as DEFAULT_BAR_SPACING, tn as DEFAULT_BAR_WIDTH, Xt as DEFAULT_CHART_OPTIONS, n as DEFAULT_DRAWING_STYLE, Ot as DEFAULT_FONT_FAMILY, sn as DEFAULT_PANEL_HEIGHT, o as DEFAULT_RECONNECT, i as DEFAULT_SIGNAL_STYLE, s as DEFAULT_STREAM_CONFIG, en as DEFAULT_TIMEFRAME_FAVORITES, a as DEFAULT_TRADE_ZONE_STYLE, r as DEFAULT_TRADING_CONFIG, $ as HNX_SESSIONS, Q as HOSE_SESSIONS, V as LIGHT_THEME, e as LayerType, yn as MARKET_CRYPTO, _n as MARKET_HNX, gn as MARKET_HOSE, bn as MARKET_NYSE, vn as MARKET_UPCOM, on as MIN_PANEL_HEIGHT, rn as PRICE_AXIS_WIDTH, Xe as PRICE_SOURCES, I as TC_PALETTE, jt as TC_SERIES_COLORS, Zt as TIMEFRAMES_CRYPTO, $t as TIMEFRAMES_FOREX, Qt as TIMEFRAMES_STOCK, an as TIME_AXIS_HEIGHT, Z as VN_COLORS, At as VOLUME_ALPHA, Ne as alignToTimeframe, Ue as autoPricePrecision, Le as barsAreDaily, Yt as chartStyleValue, ne as clamp, Sn as computePriceLimits, de as computePriceRange, oe as computeTickStep, xn as createVNTheme, Ye as detectPrecision, vt as drawingOption, K as en, ue as findBarIndex, Ge as formatFraction, X as formatNumber, D as formatPrice, We as formatPriceScaleLabel, Me as formatTimestamp, mn as formatVND, Je as formatVolume, hn as formatVolumeLoc, Ke as fractionTick, Cn as getCurrentSession, un as getLocale, pn as getLocaleStrings, pe as hexToRgba, et as indicatorSource, ie as inverseLerp, Fe as isDateOnly, Ze as isPriceSource, je as isTimeFrame, Se as isValidTimeZone, re as lerp, he as lerpColor, Wt as lineDash, ut as marketStatus, fe as mergeBar, m as niceNumber, ce as normalizeBar, se as normalizeBarTime, S as offsetAt, tt as parseIndicatorSource, w as parseTimeframe, at as pickBaseTimeframe, qe as priceFormatterFor, st as rankSymbols, Bt as readChartStyleOverrides, Dt as readChartTypeOptions, Ut as readIndicatorPlotStyles, te as readNews, Vt as readPaneStyle, l as readQuote, fn as registerLocale, rt as resampleBars, Kt as resolveChartTheme, yt as resolveDrawingOptions, U as resolveVolumeColors, ae as roundToStep, gt as sanitizeDrawingOptions, Et as sanitizeDrawingStyle, k as sessionMinute, ln as setLocale, le as sliceVisibleData, Qe as sourcePrice, ct as stepDecimals, dn as t, Ae as tickBarCount, Pe as timeParts, Be as timeframeBucketStart, T as timeframeToMs, Re as tzLabel, cn as vi, L as volumeColor, we as wallToUtc, me as withAlpha, b as zoneOffsetMinutes, Ee as zonedDateFormatter };
|
|
1379
1684
|
|
|
1380
1685
|
//# sourceMappingURL=index.js.map
|