minerva-design 1.13.2 → 1.14.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/CHANGELOG.md +10 -0
- package/custom-elements.json +194 -12
- package/dist/angular/fesm2022/minerva-angular.mjs +20 -0
- package/dist/angular/fesm2022/minerva-angular.mjs.map +1 -1
- package/dist/angular/types/minerva-angular.d.ts +10 -1
- package/dist/charts/canvas.d.cts +1 -0
- package/dist/charts/canvas.d.ts +1 -0
- package/dist/charts/engine/canvas.cjs +1 -1
- package/dist/charts/engine/canvas.cjs.map +1 -1
- package/dist/charts/engine/canvas.js +152 -128
- package/dist/charts/engine/canvas.js.map +1 -1
- package/dist/charts/engine/chart.cjs +1 -1
- package/dist/charts/engine/chart.cjs.map +1 -1
- package/dist/charts/engine/chart.js +475 -405
- package/dist/charts/engine/chart.js.map +1 -1
- package/dist/charts/engine/controller.cjs +2 -2
- package/dist/charts/engine/controller.cjs.map +1 -1
- package/dist/charts/engine/controller.js +263 -248
- package/dist/charts/engine/controller.js.map +1 -1
- package/dist/charts/engine/dom.cjs +1 -1
- package/dist/charts/engine/dom.cjs.map +1 -1
- package/dist/charts/engine/dom.d.cts +34 -0
- package/dist/charts/engine/dom.d.ts +34 -0
- package/dist/charts/engine/dom.js +62 -51
- package/dist/charts/engine/dom.js.map +1 -1
- package/dist/charts/engine/graph/chart.cjs +1 -1
- package/dist/charts/engine/graph/chart.cjs.map +1 -1
- package/dist/charts/engine/graph/chart.js +835 -821
- package/dist/charts/engine/graph/chart.js.map +1 -1
- package/dist/charts/engine/graph/dom.cjs +1 -1
- package/dist/charts/engine/graph/dom.cjs.map +1 -1
- package/dist/charts/engine/graph/dom.js +44 -51
- package/dist/charts/engine/graph/dom.js.map +1 -1
- package/dist/charts/engine/hover-rect.cjs +2 -0
- package/dist/charts/engine/hover-rect.cjs.map +1 -0
- package/dist/charts/engine/hover-rect.d.cts +10 -0
- package/dist/charts/engine/hover-rect.d.ts +10 -0
- package/dist/charts/engine/hover-rect.js +47 -0
- package/dist/charts/engine/hover-rect.js.map +1 -0
- package/dist/charts/engine/items.cjs +1 -1
- package/dist/charts/engine/items.cjs.map +1 -1
- package/dist/charts/engine/items.js +8 -8
- package/dist/charts/engine/model.cjs +1 -1
- package/dist/charts/engine/model.cjs.map +1 -1
- package/dist/charts/engine/model.js +191 -191
- package/dist/charts/engine/model.js.map +1 -1
- package/dist/charts/engine/orderbook/depth.cjs +1 -1
- package/dist/charts/engine/orderbook/depth.cjs.map +1 -1
- package/dist/charts/engine/orderbook/depth.js +63 -63
- package/dist/charts/engine/orderbook/heatmap.cjs +1 -1
- package/dist/charts/engine/orderbook/heatmap.cjs.map +1 -1
- package/dist/charts/engine/orderbook/heatmap.js +155 -155
- package/dist/charts/engine/orderbook/host.cjs +1 -1
- package/dist/charts/engine/orderbook/host.cjs.map +1 -1
- package/dist/charts/engine/orderbook/host.js +87 -75
- package/dist/charts/engine/orderbook/host.js.map +1 -1
- package/dist/charts/engine/orderbook/ladder.cjs +1 -1
- package/dist/charts/engine/orderbook/ladder.cjs.map +1 -1
- package/dist/charts/engine/orderbook/ladder.js +41 -41
- package/dist/charts/engine/orderbook/tape.cjs +1 -1
- package/dist/charts/engine/orderbook/tape.cjs.map +1 -1
- package/dist/charts/engine/orderbook/tape.js +31 -31
- package/dist/charts/engine/presets.cjs +2 -2
- package/dist/charts/engine/presets.cjs.map +1 -1
- package/dist/charts/engine/presets.js +15 -15
- package/dist/charts/engine/renderers/vector-gpu.cjs +24 -0
- package/dist/charts/engine/renderers/vector-gpu.cjs.map +1 -0
- package/dist/charts/engine/renderers/vector-gpu.d.cts +22 -0
- package/dist/charts/engine/renderers/vector-gpu.d.ts +22 -0
- package/dist/charts/engine/renderers/vector-gpu.js +301 -0
- package/dist/charts/engine/renderers/vector-gpu.js.map +1 -0
- package/dist/charts/engine/renderers/vector.cjs +2 -0
- package/dist/charts/engine/renderers/vector.cjs.map +1 -0
- package/dist/charts/engine/renderers/vector.d.cts +140 -0
- package/dist/charts/engine/renderers/vector.d.ts +140 -0
- package/dist/charts/engine/renderers/vector.js +568 -0
- package/dist/charts/engine/renderers/vector.js.map +1 -0
- package/dist/charts/engine/scene.cjs +1 -1
- package/dist/charts/engine/scene.cjs.map +1 -1
- package/dist/charts/engine/scene.d.cts +43 -3
- package/dist/charts/engine/scene.d.ts +43 -3
- package/dist/charts/engine/scene.js +411 -338
- package/dist/charts/engine/scene.js.map +1 -1
- package/dist/charts/engine/shapes/bullet.cjs +1 -1
- package/dist/charts/engine/shapes/bullet.cjs.map +1 -1
- package/dist/charts/engine/shapes/bullet.js +36 -36
- package/dist/charts/engine/shapes/calendar.cjs +1 -1
- package/dist/charts/engine/shapes/calendar.cjs.map +1 -1
- package/dist/charts/engine/shapes/calendar.js +53 -53
- package/dist/charts/engine/shapes/chart.cjs +1 -1
- package/dist/charts/engine/shapes/chart.cjs.map +1 -1
- package/dist/charts/engine/shapes/chart.d.cts +3 -2
- package/dist/charts/engine/shapes/chart.d.ts +3 -2
- package/dist/charts/engine/shapes/chart.js +192 -162
- package/dist/charts/engine/shapes/chart.js.map +1 -1
- package/dist/charts/engine/shapes/draw.cjs +1 -1
- package/dist/charts/engine/shapes/draw.cjs.map +1 -1
- package/dist/charts/engine/shapes/draw.js +87 -86
- package/dist/charts/engine/shapes/draw.js.map +1 -1
- package/dist/charts/engine/shapes/layout.cjs +2 -2
- package/dist/charts/engine/shapes/layout.cjs.map +1 -1
- package/dist/charts/engine/shapes/layout.d.cts +8 -7
- package/dist/charts/engine/shapes/layout.d.ts +8 -7
- package/dist/charts/engine/shapes/layout.js +262 -166
- package/dist/charts/engine/shapes/layout.js.map +1 -1
- package/dist/charts/engine/shapes/types.d.cts +13 -1
- package/dist/charts/engine/shapes/types.d.ts +13 -1
- package/dist/charts/engine/three-d/chart.cjs +1 -1
- package/dist/charts/engine/three-d/chart.cjs.map +1 -1
- package/dist/charts/engine/three-d/chart.js +266 -257
- package/dist/charts/engine/three-d/chart.js.map +1 -1
- package/dist/charts/engine/three-d/dom.cjs +1 -1
- package/dist/charts/engine/three-d/dom.cjs.map +1 -1
- package/dist/charts/engine/three-d/dom.js +28 -35
- package/dist/charts/engine/three-d/dom.js.map +1 -1
- package/dist/charts/engine/three-d/geometry.cjs +1 -1
- package/dist/charts/engine/three-d/geometry.cjs.map +1 -1
- package/dist/charts/engine/three-d/geometry.js +70 -70
- package/dist/charts/engine/three-d/overlay.cjs +1 -1
- package/dist/charts/engine/three-d/overlay.cjs.map +1 -1
- package/dist/charts/engine/three-d/overlay.js +15 -15
- package/dist/charts/engine/tooltip.cjs +2 -0
- package/dist/charts/engine/tooltip.cjs.map +1 -0
- package/dist/charts/engine/tooltip.d.cts +94 -0
- package/dist/charts/engine/tooltip.d.ts +94 -0
- package/dist/charts/engine/tooltip.js +242 -0
- package/dist/charts/engine/tooltip.js.map +1 -0
- package/dist/charts/engine/trading/chart.cjs +1 -1
- package/dist/charts/engine/trading/chart.cjs.map +1 -1
- package/dist/charts/engine/trading/chart.js +135 -135
- package/dist/charts/react/shapes.cjs +1 -1
- package/dist/charts/react/shapes.cjs.map +1 -1
- package/dist/charts/react/shapes.d.cts +10 -1
- package/dist/charts/react/shapes.d.ts +10 -1
- package/dist/charts/react/shapes.js +24 -19
- package/dist/charts/react/shapes.js.map +1 -1
- package/dist/core/contracts.cjs +1 -1
- package/dist/core/contracts.cjs.map +1 -1
- package/dist/core/contracts.js +1 -1
- package/dist/core/contracts.js.map +1 -1
- package/dist/native/charts/src/canvas.cjs +1 -1
- package/dist/native/charts/src/canvas.js +8 -7
- package/dist/native/charts/src/engine/canvas.cjs +1 -1
- package/dist/native/charts/src/engine/canvas.js +2 -0
- package/dist/native/charts/src/engine/controller.cjs +2 -2
- package/dist/native/charts/src/engine/controller.cjs.map +1 -1
- package/dist/native/charts/src/engine/controller.js +102 -87
- package/dist/native/charts/src/engine/controller.js.map +1 -1
- package/dist/native/charts/src/engine/hover-rect.cjs +2 -0
- package/dist/native/charts/src/engine/hover-rect.cjs.map +1 -0
- package/dist/native/charts/src/engine/hover-rect.js +47 -0
- package/dist/native/charts/src/engine/hover-rect.js.map +1 -0
- package/dist/native/charts/src/engine/scene.cjs +1 -1
- package/dist/native/charts/src/engine/scene.cjs.map +1 -1
- package/dist/native/charts/src/engine/scene.js +318 -245
- package/dist/native/charts/src/engine/scene.js.map +1 -1
- package/dist/native/charts/src/engine/shapes/draw.cjs +1 -1
- package/dist/native/charts/src/engine/shapes/draw.cjs.map +1 -1
- package/dist/native/charts/src/engine/shapes/draw.js +81 -80
- package/dist/native/charts/src/engine/shapes/draw.js.map +1 -1
- package/dist/native/charts/src/engine/shapes/layout.cjs +2 -2
- package/dist/native/charts/src/engine/shapes/layout.cjs.map +1 -1
- package/dist/native/charts/src/engine/shapes/layout.js +239 -143
- package/dist/native/charts/src/engine/shapes/layout.js.map +1 -1
- package/dist/native/charts/src/engine/tooltip.cjs +2 -0
- package/dist/native/charts/src/engine/tooltip.cjs.map +1 -0
- package/dist/native/charts/src/engine/tooltip.js +164 -0
- package/dist/native/charts/src/engine/tooltip.js.map +1 -0
- package/dist/native/components/Chart/scene.cjs +1 -1
- package/dist/native/components/Chart/scene.cjs.map +1 -1
- package/dist/native/components/Chart/scene.js +210 -187
- package/dist/native/components/Chart/scene.js.map +1 -1
- package/dist/native/source/components/Chart/scene.tsx +55 -2
- package/dist/taro/index.js +2026 -1626
- package/dist/uni/charts-canvas.js +1 -0
- package/dist/vue/components/Chart/BulletChart.vue.d.ts +2 -0
- package/dist/vue/components/Chart/CalendarHeatmap.vue.d.ts +2 -0
- package/dist/vue/components/Chart/ChordChart.vue.d.ts +2 -0
- package/dist/vue/components/Chart/DonutChart.vue.d.ts +2 -0
- package/dist/vue/components/Chart/FunnelChart.vue.d.ts +2 -0
- package/dist/vue/components/Chart/GaugeChart.vue.d.ts +2 -0
- package/dist/vue/components/Chart/PieChart.vue.d.ts +2 -0
- package/dist/vue/components/Chart/RadarChart.vue.d.ts +2 -0
- package/dist/vue/components/Chart/RadialBarChart.vue.d.ts +2 -0
- package/dist/vue/components/Chart/SankeyChart.vue.d.ts +2 -0
- package/dist/vue/components/Chart/SunburstChart.vue.d.ts +2 -0
- package/dist/vue/components/Chart/TreemapChart.vue.d.ts +2 -0
- package/dist/vue/components/Chart/props.d.ts +2 -0
- package/dist/vue/components/Chart/props.js +1 -0
- package/dist/vue/components/Chart/props.js.map +1 -1
- package/dist/vue/components/Chart/shape.d.ts +2 -1
- package/dist/vue/components/Chart/shape.js +2 -0
- package/dist/vue/components/Chart/shape.js.map +1 -1
- package/dist/vue/components/Chart/types.d.ts +2 -0
- package/dist/weapp/charts/canvas.js +2576 -1969
- package/dist/weapp/charts/core.js +1 -0
- package/dist/web-components/components/chart/shape-chart.d.ts +9 -7
- package/dist/web-components/components/chart/shape-chart.js +3 -0
- package/dist/web-components/components/chart/shape-chart.js.map +1 -1
- package/dist/web-components/components/chart/shapes-extended.d.ts +6 -6
- package/dist/web-components/components/chart/shapes-extended.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createDataCanvas as e, styleElement as t } from "../dom.js";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
2
|
+
import { languageOf as n, localeLabels as r, resolveLocale as i } from "../locale.js";
|
|
3
|
+
import { stepDecimals as a } from "../scale.js";
|
|
4
|
+
import { luminance as o, mix as s, packColor as c, parseColor as l, toCss as u } from "../color.js";
|
|
5
5
|
import { createRenderer as d } from "../renderers/detect.js";
|
|
6
6
|
import { followDefaultRenderer as f } from "../renderers/follow.js";
|
|
7
7
|
import { readTheme as p, themeColorsChanged as m, watchTheme as h } from "../theme.js";
|
|
@@ -35,15 +35,15 @@ var ot = 28, st = 60, ct = 60, lt = 48, T = "price", ut = "var(--success-color,
|
|
|
35
35
|
stopLoss: "stopLoss",
|
|
36
36
|
alert: "alert"
|
|
37
37
|
}, E = (e, t, n) => e < t ? t : e > n ? n : e, yt = (e) => {
|
|
38
|
-
let t =
|
|
39
|
-
return t &&
|
|
38
|
+
let t = l(e);
|
|
39
|
+
return t && o(t) > .5 ? "#0b0e11" : "#fff";
|
|
40
40
|
}, D = Number.isFinite, bt = "B S Alt+B Alt+S O Shift+O ArrowUp ArrowDown Shift+ArrowUp Shift+ArrowDown Enter Escape Delete", xt = (e, t, n) => D(n) ? e === "buy" ? t <= n ? "limit" : "stop" : t >= n ? "limit" : "stop" : "limit", St = {
|
|
41
41
|
minWidth: "0",
|
|
42
42
|
maxWidth: "100%",
|
|
43
43
|
overflow: "hidden",
|
|
44
44
|
textOverflow: "ellipsis"
|
|
45
|
-
}, Ct = "display:inline-flex;gap:3px;max-width:100%;overflow:hidden;text-overflow:ellipsis", O = (
|
|
46
|
-
let O =
|
|
45
|
+
}, Ct = "display:inline-flex;gap:3px;max-width:100%;overflow:hidden;text-overflow:ellipsis", O = (o, l = {}) => {
|
|
46
|
+
let O = o.ownerDocument, wt = O.defaultView, k = { ...l }, Tt = !1, Et = (e, n) => t(O.createElement(e), n), A = Et("div", {
|
|
47
47
|
position: "relative",
|
|
48
48
|
width: "100%",
|
|
49
49
|
height: "100%",
|
|
@@ -124,7 +124,7 @@ var ot = 28, st = 60, ct = 60, lt = 48, T = "price", ut = "var(--success-color,
|
|
|
124
124
|
});
|
|
125
125
|
j.rows = 1;
|
|
126
126
|
let Pt = Et("style", {});
|
|
127
|
-
Pt.textContent = ".minerva-trading-toolbar button{all:unset;box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;min-width:26px;height:26px;padding:0 5px;border-radius:5px;cursor:pointer;color:var(--text-color,#1f2937)}.minerva-trading-toolbar button:hover{background:color-mix(in srgb,var(--text-color,#1f2937) 9%,transparent)}.minerva-trading-toolbar button:focus-visible{box-shadow:inset 0 0 0 2px var(--primary-color,#2962ff)}.minerva-trading-toolbar button[aria-pressed=\"true\"]{background:color-mix(in srgb,var(--primary-color,#2962ff) 16%,transparent);color:var(--primary-color,#2962ff)}.minerva-trading-toolbar .sep{width:1px;height:18px;margin:0 3px;background:var(--border-color,#e5e7eb)}", A.append(Pt, Ot, kt, At, jt, Nt, j, Mt),
|
|
127
|
+
Pt.textContent = ".minerva-trading-toolbar button{all:unset;box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;min-width:26px;height:26px;padding:0 5px;border-radius:5px;cursor:pointer;color:var(--text-color,#1f2937)}.minerva-trading-toolbar button:hover{background:color-mix(in srgb,var(--text-color,#1f2937) 9%,transparent)}.minerva-trading-toolbar button:focus-visible{box-shadow:inset 0 0 0 2px var(--primary-color,#2962ff)}.minerva-trading-toolbar button[aria-pressed=\"true\"]{background:color-mix(in srgb,var(--primary-color,#2962ff) 16%,transparent);color:var(--primary-color,#2962ff)}.minerva-trading-toolbar .sep{width:1px;height:18px;margin:0 3px;background:var(--border-color,#e5e7eb)}", A.append(Pt, Ot, kt, At, jt, Nt, j, Mt), o.appendChild(A);
|
|
128
128
|
let M = qe(), Ft = Ge(), It = {
|
|
129
129
|
time: M.time,
|
|
130
130
|
open: /* @__PURE__ */ new Float64Array(),
|
|
@@ -136,9 +136,9 @@ var ot = 28, st = 60, ct = 60, lt = 48, T = "price", ut = "var(--success-color,
|
|
|
136
136
|
dn = e;
|
|
137
137
|
}), B = null, V = null, pn = !1, H = null, U = null, mn = /* @__PURE__ */ new Map(), hn = null, gn = null, _n = null, vn = null, W = k.drawings ?? [], yn = null, bn = W, xn = [], Sn = [], Cn = "false|false", wn = k.drawingMode ?? "cursor", Tn = null, En = null, G = null, Dn = 0, On = T, kn = 0, An = /* @__PURE__ */ new Map(), jn = null, Mn = "", Nn = !1, Pn = /* @__PURE__ */ new Map(), Fn = null, In = [], Ln = -1, Rn = null, zn = !1, Bn = null, Vn = "", Hn = NaN, Un = null, K = null, Wn = !1, Gn = 4, Kn = null, qn = /* @__PURE__ */ new Map(), q = (e, t) => {
|
|
138
138
|
qn.get(e)?.forEach((e) => e(t));
|
|
139
|
-
}, J =
|
|
140
|
-
J =
|
|
141
|
-
}, Xn = () => Jn, Y = () => M.length, Zn = () => k.chartStyle ?? "candles", Qn = () => k.colorConvention === "redUp" || k.colorConvention === "auto" && he(J), $n = () => k.upColor ?? (Qn() ? dt : ut), er = () => k.downColor ?? (Qn() ? ut : dt), tr = (e, t = R.primary) => R.resolve ? R.resolve(e, t) : t, X = (e, t = 1) =>
|
|
139
|
+
}, J = i(k.locale), Jn = r(Oe, J, k.labels), Yn = () => {
|
|
140
|
+
J = i(k.locale), Jn = r(Oe, J, k.labels);
|
|
141
|
+
}, Xn = () => Jn, Y = () => M.length, Zn = () => k.chartStyle ?? "candles", Qn = () => k.colorConvention === "redUp" || k.colorConvention === "auto" && he(J), $n = () => k.upColor ?? (Qn() ? dt : ut), er = () => k.downColor ?? (Qn() ? ut : dt), tr = (e, t = R.primary) => R.resolve ? R.resolve(e, t) : t, X = (e, t = 1) => u(tr(e), t), nr = () => k.precision ?? qt, rr = me(2, void 0), ir = "", Z = (e) => {
|
|
142
142
|
if (k.formatPrice) return k.formatPrice(e);
|
|
143
143
|
let t = `${nr()}|${J}`;
|
|
144
144
|
return t !== ir && (rr = me(nr(), J), ir = t), rr(e);
|
|
@@ -436,18 +436,18 @@ var ot = 28, st = 60, ct = 60, lt = 48, T = "price", ut = "var(--success-color,
|
|
|
436
436
|
text: ge(e.time, e.weight, J, i),
|
|
437
437
|
bold: e.weight >= (i ? 50 : 60)
|
|
438
438
|
}));
|
|
439
|
-
}, Gr = (e, t) => e.id === T ? e.scale.mode === "percent" ? le(t, J, Math.min(2,
|
|
440
|
-
let n = [],
|
|
441
|
-
up:
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
439
|
+
}, Gr = (e, t) => e.id === T ? e.scale.mode === "percent" ? le(t, J, Math.min(2, a(e.step))) : Z(Fe(e.scale, t)) : e.study?.compact ? ue(t, J) : ce(t, Math.min(4, a(e.step)), J), Kr = (e, t) => e.overlay && e.type !== "volume" ? Z(t) : e.compact ? ue(t, J) : ce(t, e.range ? 2 : Math.max(2, Math.min(6, nr())), J), qr = (e, t) => {
|
|
440
|
+
let n = [], r = e.cols, i = tr($n()), a = tr(er()), o = c(i), l = c(a), u = R.background, d = Se(N * e.size * t, t), f = (n) => cr(Fr(e, n)) * t, p = Zn(), m = Math.max(.5, d.body / 2), h = {
|
|
441
|
+
up: c([
|
|
442
|
+
i[0],
|
|
443
|
+
i[1],
|
|
444
|
+
i[2],
|
|
445
445
|
.5
|
|
446
446
|
]),
|
|
447
|
-
down:
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
447
|
+
down: c([
|
|
448
|
+
a[0],
|
|
449
|
+
a[1],
|
|
450
|
+
a[2],
|
|
451
451
|
.5
|
|
452
452
|
])
|
|
453
453
|
};
|
|
@@ -493,15 +493,15 @@ var ot = 28, st = 60, ct = 60, lt = 48, T = "price", ut = "var(--success-color,
|
|
|
493
493
|
if (g.id === T) {
|
|
494
494
|
if (zt.find((e) => e.overlay && e.type === "volume" && sr(e)) && tn > 0) {
|
|
495
495
|
let t = (v - _) * .2;
|
|
496
|
-
n.push((n,
|
|
497
|
-
let
|
|
498
|
-
for (let o = n; o <=
|
|
499
|
-
let n =
|
|
496
|
+
n.push((n, i) => {
|
|
497
|
+
let a = new ye();
|
|
498
|
+
for (let o = n; o <= i; o++) {
|
|
499
|
+
let n = r.volume[o] / Ir(e, o);
|
|
500
500
|
if (!(n > 0)) continue;
|
|
501
|
-
let
|
|
502
|
-
|
|
501
|
+
let i = v - n / tn * t, [s, c] = we(i, v);
|
|
502
|
+
a.push(d.snap(f(o)), s, c, r.close[o] >= r.open[o] ? h.up : h.down);
|
|
503
503
|
}
|
|
504
|
-
return [
|
|
504
|
+
return [a.item("", 0, m)];
|
|
505
505
|
});
|
|
506
506
|
}
|
|
507
507
|
for (let e of Ht) {
|
|
@@ -510,18 +510,18 @@ var ot = 28, st = 60, ct = 60, lt = 48, T = "price", ut = "var(--success-color,
|
|
|
510
510
|
}
|
|
511
511
|
if (p === "line" || p === "area" || p === "baseline") {
|
|
512
512
|
let t = tr(pt);
|
|
513
|
-
if (p === "area" && n.push((n,
|
|
513
|
+
if (p === "area" && n.push((n, i, a) => {
|
|
514
514
|
let o = new ve(_, v);
|
|
515
|
-
for (let t =
|
|
515
|
+
for (let t = a ? Math.max(e.g0, n - 1) : n; t <= i; t++) o.push(f(t), b(r.close[t]), v);
|
|
516
516
|
return o.count > 1 ? [o.item("", 0, t, .28)] : [];
|
|
517
517
|
}), p === "baseline") {
|
|
518
518
|
let t = b(Br());
|
|
519
|
-
n.push((n,
|
|
519
|
+
n.push((n, o, s) => {
|
|
520
520
|
let c = new ve(_, v), l = new ve(_, v), u = new be(_, v), d = new be(_, v), p = NaN, m = NaN, h = (e, n) => {
|
|
521
521
|
c.push(e, Math.min(n, t), t), l.push(e, Math.max(n, t), t), n <= t ? u.push(e, n) : u.break(), n >= t ? d.push(e, n) : d.break();
|
|
522
522
|
};
|
|
523
|
-
for (let
|
|
524
|
-
let e = f(
|
|
523
|
+
for (let i = s ? Math.max(e.g0, n - 1) : n; i <= o; i++) {
|
|
524
|
+
let e = f(i), n = b(r.close[i]);
|
|
525
525
|
if (D(m) && (m - t) * (n - t) < 0) {
|
|
526
526
|
let r = (t - m) / (n - m);
|
|
527
527
|
h(p + (e - p) * r, t);
|
|
@@ -529,50 +529,50 @@ var ot = 28, st = 60, ct = 60, lt = 48, T = "price", ut = "var(--success-color,
|
|
|
529
529
|
h(e, n), p = e, m = n;
|
|
530
530
|
}
|
|
531
531
|
let g = [];
|
|
532
|
-
return c.count > 1 && g.push(c.item("u", 0,
|
|
532
|
+
return c.count > 1 && g.push(c.item("u", 0, i, .22), l.item("d", 0, a, .22)), u.count > 1 && g.push(u.item("ul", 0, i, 2)), d.count > 1 && g.push(d.item("dl", 0, a, 2)), g;
|
|
533
533
|
});
|
|
534
|
-
} else n.push(x((e) =>
|
|
534
|
+
} else n.push(x((e) => r.close[e], t, 2));
|
|
535
535
|
} else {
|
|
536
|
-
let e = p === "hollowCandles", t = p === "bars",
|
|
537
|
-
n.push((n,
|
|
538
|
-
let
|
|
539
|
-
for (let g = n; g <=
|
|
540
|
-
let n =
|
|
536
|
+
let e = p === "hollowCandles", t = p === "bars", i = d.wick, a = d.body;
|
|
537
|
+
n.push((n, s) => {
|
|
538
|
+
let c = new ye(), u = new ye(), p = new ye(), m = new ye(), h = Math.max(i, Math.round((a - i) / 2));
|
|
539
|
+
for (let g = n; g <= s; g++) {
|
|
540
|
+
let n = r.open[g], s = r.high[g], y = r.low[g], x = r.close[g];
|
|
541
541
|
if (!D(n) || !D(x)) continue;
|
|
542
|
-
let S = (e ? x >= (g > 0 ?
|
|
542
|
+
let S = (e ? x >= (g > 0 ? r.close[g - 1] : n) : x >= n) ? o : l, ee = d.snap(f(g)), [te, ne] = we(b(s), b(y));
|
|
543
543
|
if (t) {
|
|
544
544
|
let e = Ce(te, ne, _, v);
|
|
545
|
-
e &&
|
|
545
|
+
e && c.push(ee, e[0], e[1], S);
|
|
546
546
|
for (let [e, t] of [[n, -1], [x, 1]]) {
|
|
547
|
-
let n = Math.round(b(e) -
|
|
548
|
-
n < _ || n +
|
|
547
|
+
let n = Math.round(b(e) - i / 2);
|
|
548
|
+
n < _ || n + i > v || m.push(ee + t * (i / 2 + h / 2), n, n + i, S);
|
|
549
549
|
}
|
|
550
550
|
continue;
|
|
551
551
|
}
|
|
552
552
|
let [re, ie] = we(b(n), b(x));
|
|
553
|
-
if (
|
|
553
|
+
if (a <= i) {
|
|
554
554
|
let e = Ce(te, ne, _, v);
|
|
555
|
-
e &&
|
|
555
|
+
e && c.push(ee, e[0], e[1], S);
|
|
556
556
|
continue;
|
|
557
557
|
}
|
|
558
558
|
if (e && x > n) {
|
|
559
559
|
let e = [[te, re], [ie, ne]];
|
|
560
560
|
for (let [t, n] of e) {
|
|
561
561
|
let e = n > t ? Ce(t, n, _, v) : null;
|
|
562
|
-
e &&
|
|
562
|
+
e && c.push(ee, e[0], e[1], S);
|
|
563
563
|
}
|
|
564
564
|
let t = Ce(re, ie, _, v);
|
|
565
|
-
t && (
|
|
566
|
-
for (let e of [re, ie -
|
|
565
|
+
t && (c.push(ee - a / 2 + i / 2, t[0], t[1], S), c.push(ee + a / 2 - i / 2, t[0], t[1], S));
|
|
566
|
+
for (let e of [re, ie - i]) e >= _ && e + i <= v && p.push(ee, e, e + i, S);
|
|
567
567
|
continue;
|
|
568
568
|
}
|
|
569
569
|
let ae = Ce(te, ne, _, v);
|
|
570
|
-
ae &&
|
|
570
|
+
ae && c.push(ee, ae[0], ae[1], S);
|
|
571
571
|
let C = Ce(re, ie, _, v);
|
|
572
572
|
C && u.push(ee, C[0], C[1], S);
|
|
573
573
|
}
|
|
574
|
-
let g = [
|
|
575
|
-
return u.count && g.push(u.item("b", 0,
|
|
574
|
+
let g = [c.item("w", 0, i / 2)];
|
|
575
|
+
return u.count && g.push(u.item("b", 0, a / 2)), p.count && g.push(p.item("c", 0, a / 2)), m.count && g.push(m.item("t", 0, h / 2)), g;
|
|
576
576
|
});
|
|
577
577
|
}
|
|
578
578
|
}
|
|
@@ -586,47 +586,47 @@ var ot = 28, st = 60, ct = 60, lt = 48, T = "price", ut = "var(--success-color,
|
|
|
586
586
|
}
|
|
587
587
|
for (let g of p.outputs) if (g.kind === "volume") {
|
|
588
588
|
let t = b(0);
|
|
589
|
-
n.push((n,
|
|
590
|
-
let
|
|
591
|
-
for (let o = n; o <=
|
|
592
|
-
let n =
|
|
589
|
+
n.push((n, i) => {
|
|
590
|
+
let a = new ye();
|
|
591
|
+
for (let o = n; o <= i; o++) {
|
|
592
|
+
let n = r.volume[o] / Ir(e, o);
|
|
593
593
|
if (!(n > 0)) continue;
|
|
594
|
-
let
|
|
595
|
-
|
|
594
|
+
let i = Ce(...we(b(n), t), _, v);
|
|
595
|
+
i && a.push(d.snap(f(o)), i[0], i[1], r.close[o] >= r.open[o] ? h.up : h.down);
|
|
596
596
|
}
|
|
597
|
-
return [
|
|
597
|
+
return [a.item("", 0, m)];
|
|
598
598
|
});
|
|
599
599
|
} else if (g.kind === "histogram") {
|
|
600
|
-
let t = b(0),
|
|
601
|
-
up:
|
|
600
|
+
let t = b(0), r = {
|
|
601
|
+
up: o,
|
|
602
602
|
down: l
|
|
603
603
|
}, p = {
|
|
604
|
-
up:
|
|
605
|
-
down:
|
|
604
|
+
up: c(s(u, i, .45)),
|
|
605
|
+
down: c(s(u, a, .45))
|
|
606
606
|
}, h = br(g);
|
|
607
|
-
n.push((n,
|
|
608
|
-
let
|
|
609
|
-
for (let s = n; s <=
|
|
610
|
-
let n =
|
|
607
|
+
n.push((n, i) => {
|
|
608
|
+
let a = vr(e, g.values, h), o = new ye();
|
|
609
|
+
for (let s = n; s <= i; s++) {
|
|
610
|
+
let n = a.last[s];
|
|
611
611
|
if (!D(n)) continue;
|
|
612
|
-
let
|
|
612
|
+
let i = s > 0 ? a.last[s - 1] : n, c = n >= 0 ? n >= i ? r.up : p.up : n <= i ? r.down : p.down, l = Math.min(0, D(a.min[s]) ? a.min[s] : n), u = Math.max(0, D(a.max[s]) ? a.max[s] : n), m = Ce(...e.level ? we(b(u), b(l)) : we(b(n), t), _, v);
|
|
613
613
|
m && o.push(d.snap(f(s)), m[0], m[1], c);
|
|
614
614
|
}
|
|
615
615
|
return [o.item("", 0, m)];
|
|
616
616
|
});
|
|
617
617
|
} else if (g.kind === "dots") {
|
|
618
|
-
let
|
|
618
|
+
let i = g.color ? c(tr(_r(g.color))) : 0, a = E(N * e.size * .22, 1.25, 2.6), s = a * t;
|
|
619
619
|
n.push((t, n) => {
|
|
620
|
-
let
|
|
621
|
-
for (let
|
|
622
|
-
let t = e.level ? g.values[Math.min(Y() - 1,
|
|
620
|
+
let c = new ye();
|
|
621
|
+
for (let a = t; a <= n; a++) {
|
|
622
|
+
let t = e.level ? g.values[Math.min(Y() - 1, a * e.size + e.size - 1)] : g.values[a];
|
|
623
623
|
if (!D(t)) continue;
|
|
624
624
|
let n = b(t);
|
|
625
625
|
if (n < _ || n > v) continue;
|
|
626
|
-
let u =
|
|
627
|
-
|
|
626
|
+
let u = i || (t <= r.close[a] ? o : l);
|
|
627
|
+
c.push(f(a), n - s, n + s, u);
|
|
628
628
|
}
|
|
629
|
-
return
|
|
629
|
+
return c.count ? [c.item("", 0, s, 0, a)] : [];
|
|
630
630
|
});
|
|
631
631
|
} else {
|
|
632
632
|
let e = tr(_r(g.color));
|
|
@@ -755,7 +755,7 @@ var ot = 28, st = 60, ct = 60, lt = 48, T = "price", ut = "var(--success-color,
|
|
|
755
755
|
r = i;
|
|
756
756
|
}
|
|
757
757
|
if (n.length) {
|
|
758
|
-
e.save(), e.strokeStyle =
|
|
758
|
+
e.save(), e.strokeStyle = u(R.textMuted, .4), e.setLineDash([4, 4]), e.beginPath();
|
|
759
759
|
for (let t of n) e.moveTo(t, 0), e.lineTo(t, I);
|
|
760
760
|
e.stroke(), e.restore();
|
|
761
761
|
}
|
|
@@ -786,25 +786,25 @@ var ot = 28, st = 60, ct = 60, lt = 48, T = "price", ut = "var(--success-color,
|
|
|
786
786
|
})
|
|
787
787
|
};
|
|
788
788
|
}
|
|
789
|
-
let
|
|
790
|
-
if (
|
|
791
|
-
let
|
|
792
|
-
for (let e = 0; e < i; e++)
|
|
793
|
-
if (!(
|
|
794
|
-
let
|
|
789
|
+
let o = Kn.result;
|
|
790
|
+
if (o.poc < 0) return;
|
|
791
|
+
let s = 0;
|
|
792
|
+
for (let e = 0; e < i; e++) s = Math.max(s, (o.up[e] ?? 0) + (o.down[e] ?? 0));
|
|
793
|
+
if (!(s > 0)) return;
|
|
794
|
+
let c = F * E(n.width ?? .28, .05, .9), l = (n.side ?? "right") === "right", d = tr(_r(n.upColor ?? "up")), f = tr(_r(n.downColor ?? "down"));
|
|
795
795
|
e.save(), e.beginPath(), e.rect(0, r.top, F, r.height), e.clip();
|
|
796
796
|
for (let t = 0; t < i; t++) {
|
|
797
|
-
let n =
|
|
797
|
+
let n = o.up[t] ?? 0, i = o.down[t] ?? 0;
|
|
798
798
|
if (!(n + i > 0)) continue;
|
|
799
|
-
let a = w(r.scale,
|
|
800
|
-
e.fillStyle =
|
|
799
|
+
let a = w(r.scale, o.low + t * o.step), p = w(r.scale, o.low + (t + 1) * o.step), m = Math.min(a, p), h = Math.max(1, Math.abs(p - a) - +(Math.abs(p - a) > 4)), g = t >= o.valueAreaFrom && t <= o.valueAreaTo ? .42 : .17, _ = n / s * c, v = i / s * c, y = l ? F : 0, b = l ? -1 : 1;
|
|
800
|
+
e.fillStyle = u(d, g), e.fillRect(Math.min(y, y + b * _), m, _, h), e.fillStyle = u(f, g);
|
|
801
801
|
let x = y + b * _;
|
|
802
802
|
e.fillRect(Math.min(x, x + b * v), m, v, h);
|
|
803
803
|
}
|
|
804
|
-
let p = Math.round(w(r.scale,
|
|
804
|
+
let p = Math.round(w(r.scale, o.low + (o.poc + .5) * o.step)) + .5;
|
|
805
805
|
e.strokeStyle = X(n.pocColor ?? ft, .9), e.lineWidth = 1, e.beginPath(), e.moveTo(0, p), e.lineTo(F, p), e.stroke(), e.restore();
|
|
806
806
|
}, ni = (e, t, n) => {
|
|
807
|
-
let r =
|
|
807
|
+
let r = u(R.grid), i = k.grid !== !1;
|
|
808
808
|
if (e.lineWidth = 1, i) {
|
|
809
809
|
e.strokeStyle = r, e.beginPath();
|
|
810
810
|
for (let t of n) {
|
|
@@ -819,13 +819,13 @@ var ot = 28, st = 60, ct = 60, lt = 48, T = "price", ut = "var(--success-color,
|
|
|
819
819
|
}
|
|
820
820
|
if (k.watermark) {
|
|
821
821
|
let t = L[0];
|
|
822
|
-
e.save(), e.font = Q(Math.min(56, Math.max(22, F / 14)), 700), e.fillStyle =
|
|
822
|
+
e.save(), e.font = Q(Math.min(56, Math.max(22, F / 14)), 700), e.fillStyle = u(R.text, .07), e.textAlign = "center", e.textBaseline = "middle", e.fillText(k.watermark, F / 2, t.top + t.height / 2), e.restore();
|
|
823
823
|
}
|
|
824
824
|
for (let t of L) {
|
|
825
825
|
let n = t.study;
|
|
826
826
|
if (n?.bands && sr(n)) {
|
|
827
827
|
let r = tr(_r(n.outputs[0]?.color ?? pt)), i = n.bands.map((e) => Math.round(w(t.scale, e)) + .5);
|
|
828
|
-
n.bandFill && i.length === 2 && (e.fillStyle =
|
|
828
|
+
n.bandFill && i.length === 2 && (e.fillStyle = u(r, .07), e.fillRect(0, Math.min(i[0], i[1]), F, Math.abs(i[1] - i[0]))), e.save(), e.setLineDash([4, 4]), e.strokeStyle = u(R.textMuted, .45), e.beginPath();
|
|
829
829
|
for (let n of i) n < t.top || n > t.top + t.height || (e.moveTo(0, n), e.lineTo(F, n));
|
|
830
830
|
e.stroke(), e.restore();
|
|
831
831
|
}
|
|
@@ -840,11 +840,11 @@ var ot = 28, st = 60, ct = 60, lt = 48, T = "price", ut = "var(--success-color,
|
|
|
840
840
|
let n = L[0];
|
|
841
841
|
if (n && n.scale.mode === "percent" && Ht.length) {
|
|
842
842
|
let t = Math.round(Ve(n.scale, 0)) + .5;
|
|
843
|
-
t > n.top && t < n.top + n.height && (e.save(), e.strokeStyle =
|
|
843
|
+
t > n.top && t < n.top + n.height && (e.save(), e.strokeStyle = u(R.textMuted, .6), e.setLineDash([2, 3]), e.beginPath(), e.moveTo(0, t), e.lineTo(F, t), e.stroke(), e.restore());
|
|
844
844
|
}
|
|
845
845
|
ti(e, t);
|
|
846
846
|
}
|
|
847
|
-
e.strokeStyle =
|
|
847
|
+
e.strokeStyle = u(R.axis), e.beginPath();
|
|
848
848
|
for (let t of L.slice(1)) {
|
|
849
849
|
let n = Math.round(t.top) + .5;
|
|
850
850
|
e.moveTo(0, n), e.lineTo(Xt, n);
|
|
@@ -973,7 +973,7 @@ var ot = 28, st = 60, ct = 60, lt = 48, T = "price", ut = "var(--success-color,
|
|
|
973
973
|
let r = L[0];
|
|
974
974
|
if (!r) return;
|
|
975
975
|
In = [];
|
|
976
|
-
let i = Y(), a =
|
|
976
|
+
let i = Y(), a = u(R.text), o = u(R.textMuted), s = u(R.background), c = X($n()), l = X(er()), d = Xn(), f = i ? M.close[i - 1] : NaN, p = r.top + r.height, m = p - 32, h = [], g = (t, n, r, i = "left") => {
|
|
977
977
|
e.font = Q(R.fontSize, 500);
|
|
978
978
|
let a = e.measureText(t).width + 16, o = E(i === "center" ? n - a / 2 : n, 2, Math.max(2, F - a - 2));
|
|
979
979
|
return {
|
|
@@ -991,7 +991,7 @@ var ot = 28, st = 60, ct = 60, lt = 48, T = "price", ut = "var(--success-color,
|
|
|
991
991
|
let a = g(i, F - 56 - (e.measureText(i).width + 16), E(t - 11, r.top + 2, p - 24));
|
|
992
992
|
_ = {
|
|
993
993
|
y: t,
|
|
994
|
-
color: H.side === "buy" ?
|
|
994
|
+
color: H.side === "buy" ? c : l,
|
|
995
995
|
text: i,
|
|
996
996
|
type: n,
|
|
997
997
|
box: a
|
|
@@ -1007,17 +1007,17 @@ var ot = 28, st = 60, ct = 60, lt = 48, T = "price", ut = "var(--success-color,
|
|
|
1007
1007
|
for (let t of k.priceLines ?? []) {
|
|
1008
1008
|
let n = oi(t), i = w(r.scale, n), a = Math.round(i) + .5;
|
|
1009
1009
|
if (!D(a) || a < r.top || a > p) continue;
|
|
1010
|
-
let o = ai(t),
|
|
1010
|
+
let o = ai(t), u = t.kind ?? "line", m = vt[u], h = t.title ?? (m ? d[m] : ""), g = [];
|
|
1011
1011
|
if (h && g.push({
|
|
1012
1012
|
text: h,
|
|
1013
1013
|
fill: o,
|
|
1014
1014
|
color: yt(o)
|
|
1015
1015
|
}), t.quantity !== void 0 && t.quantity !== "" && g.push({
|
|
1016
1016
|
text: String(t.quantity),
|
|
1017
|
-
fill:
|
|
1017
|
+
fill: s,
|
|
1018
1018
|
color: o
|
|
1019
|
-
}),
|
|
1020
|
-
let e = (f - n) * t.quantity * (t.side === "sell" ? -1 : 1), r = e >= 0 ?
|
|
1019
|
+
}), u === "position" && typeof t.quantity == "number" && D(f)) {
|
|
1020
|
+
let e = (f - n) * t.quantity * (t.side === "sell" ? -1 : 1), r = e >= 0 ? c : l;
|
|
1021
1021
|
g.push({
|
|
1022
1022
|
text: `${e >= 0 ? "+" : "−"}${Z(Math.abs(e))}`,
|
|
1023
1023
|
fill: r,
|
|
@@ -1026,7 +1026,7 @@ var ot = 28, st = 60, ct = 60, lt = 48, T = "price", ut = "var(--success-color,
|
|
|
1026
1026
|
}
|
|
1027
1027
|
t.cancellable && g.push({
|
|
1028
1028
|
text: "×",
|
|
1029
|
-
fill:
|
|
1029
|
+
fill: s,
|
|
1030
1030
|
color: o,
|
|
1031
1031
|
cancel: !0
|
|
1032
1032
|
});
|
|
@@ -1060,26 +1060,26 @@ var ot = 28, st = 60, ct = 60, lt = 48, T = "price", ut = "var(--success-color,
|
|
|
1060
1060
|
bottom: n.top + 22
|
|
1061
1061
|
}));
|
|
1062
1062
|
}), e.save(), e.beginPath(), e.rect(0, r.top, F, r.height), e.clip(), t && k.highLowMarkers !== !1 && Zn() !== "line" && Zn() !== "area" && Zn() !== "baseline") {
|
|
1063
|
-
let n = -Infinity, i = Infinity, a = -1,
|
|
1064
|
-
for (let e = t.s0; e <= t.s1; e++) t.cols.high[e] > n && (n = t.cols.high[e], a = e), t.cols.low[e] < i && (i = t.cols.low[e],
|
|
1065
|
-
e.font = Q(R.fontSize), e.fillStyle =
|
|
1063
|
+
let n = -Infinity, i = Infinity, a = -1, s = -1;
|
|
1064
|
+
for (let e = t.s0; e <= t.s1; e++) t.cols.high[e] > n && (n = t.cols.high[e], a = e), t.cols.low[e] < i && (i = t.cols.low[e], s = e);
|
|
1065
|
+
e.font = Q(R.fontSize), e.fillStyle = o, e.strokeStyle = o, e.lineWidth = 1;
|
|
1066
1066
|
let c = bi.map((e) => ({
|
|
1067
1067
|
left: 0,
|
|
1068
1068
|
top: e.top,
|
|
1069
1069
|
right: e.right,
|
|
1070
1070
|
bottom: e.bottom
|
|
1071
1071
|
}));
|
|
1072
|
-
for (let [
|
|
1072
|
+
for (let [o, l, u] of [[
|
|
1073
1073
|
a,
|
|
1074
1074
|
n,
|
|
1075
1075
|
!1
|
|
1076
1076
|
], [
|
|
1077
|
-
|
|
1077
|
+
s,
|
|
1078
1078
|
i,
|
|
1079
1079
|
!0
|
|
1080
1080
|
]]) {
|
|
1081
|
-
if (
|
|
1082
|
-
let n = cr(Fr(t,
|
|
1081
|
+
if (o < 0 || !D(l)) continue;
|
|
1082
|
+
let n = cr(Fr(t, o)), i = Z(l), a = e.measureText(i).width, s = r.top + 8, d = p - 8, f = E(w(r.scale, l) + (u ? 9 : -9), s, d), m = F - 4 - (n + 17 + a), g = n - 17 - a - 4, _ = (m < 0 || n > F * .6) && g >= Math.min(0, m), v = [], y = u ? 1 : -1;
|
|
1083
1083
|
for (let e of [
|
|
1084
1084
|
0,
|
|
1085
1085
|
1,
|
|
@@ -1088,7 +1088,7 @@ var ot = 28, st = 60, ct = 60, lt = 48, T = "price", ut = "var(--success-color,
|
|
|
1088
1088
|
-1,
|
|
1089
1089
|
-2
|
|
1090
1090
|
]) {
|
|
1091
|
-
let t = E(f + e * y * 17,
|
|
1091
|
+
let t = E(f + e * y * 17, s, d);
|
|
1092
1092
|
if (!v.some((e) => e.y === t)) for (let e of [_, !_]) v.push({
|
|
1093
1093
|
y: t,
|
|
1094
1094
|
left: e,
|
|
@@ -1122,40 +1122,40 @@ var ot = 28, st = 60, ct = 60, lt = 48, T = "price", ut = "var(--success-color,
|
|
|
1122
1122
|
e.font = Q(R.fontSize, 600), e.textAlign = "center";
|
|
1123
1123
|
let a = k.markers.length > 400;
|
|
1124
1124
|
for (let o of k.markers) {
|
|
1125
|
-
let
|
|
1126
|
-
if (
|
|
1127
|
-
let d = Math.floor(
|
|
1125
|
+
let u = xr(o.time);
|
|
1126
|
+
if (u < 0 || u > i - 1) continue;
|
|
1127
|
+
let d = Math.floor(u / t.size);
|
|
1128
1128
|
if (d < t.g0 || d > t.g1) continue;
|
|
1129
|
-
let f = Math.round(cr(Fr(t, d))), p = o.side === "sell", m = o.color ? X(o.color) : p ?
|
|
1129
|
+
let f = Math.round(cr(Fr(t, d))), p = o.side === "sell", m = o.color ? X(o.color) : p ? l : c, h = `${d}:${p}`, g = n.get(h) ?? 0;
|
|
1130
1130
|
n.set(h, g + (o.text && !a ? 30 : 16));
|
|
1131
1131
|
let _ = w(r.scale, p ? t.cols.high[d] : t.cols.low[d]), v = p ? -1 : 1, y = _ + v * (6 + g);
|
|
1132
|
-
e.fillStyle = m, e.beginPath(), e.moveTo(f, y), e.lineTo(f - 5.5, y + v * 7), e.lineTo(f - 2, y + v * 7), e.lineTo(f - 2, y + v * 12), e.lineTo(f + 2, y + v * 12), e.lineTo(f + 2, y + v * 7), e.lineTo(f + 5.5, y + v * 7), e.closePath(), e.fill(), o.text && !a && (e.textBaseline = p ? "bottom" : "top", e.fillText(o.text, f, y + v * 14)), o.price !== void 0 && D(o.price) && (e.beginPath(), e.arc(f, w(r.scale, o.price), 3, 0, Math.PI * 2), e.fill(), e.lineWidth = 1.5, e.strokeStyle =
|
|
1132
|
+
e.fillStyle = m, e.beginPath(), e.moveTo(f, y), e.lineTo(f - 5.5, y + v * 7), e.lineTo(f - 2, y + v * 7), e.lineTo(f - 2, y + v * 12), e.lineTo(f + 2, y + v * 12), e.lineTo(f + 2, y + v * 7), e.lineTo(f + 5.5, y + v * 7), e.closePath(), e.fill(), o.text && !a && (e.textBaseline = p ? "bottom" : "top", e.fillText(o.text, f, y + v * 14)), o.price !== void 0 && D(o.price) && (e.beginPath(), e.arc(f, w(r.scale, o.price), 3, 0, Math.PI * 2), e.fill(), e.lineWidth = 1.5, e.strokeStyle = s, e.stroke());
|
|
1133
1133
|
}
|
|
1134
1134
|
}
|
|
1135
1135
|
e.restore(), _i(e, {
|
|
1136
1136
|
text: a,
|
|
1137
|
-
background:
|
|
1138
|
-
up:
|
|
1139
|
-
down:
|
|
1137
|
+
background: s,
|
|
1138
|
+
up: c,
|
|
1139
|
+
down: l
|
|
1140
1140
|
}), e.save(), e.beginPath(), e.rect(0, r.top, F, r.height), e.clip();
|
|
1141
1141
|
for (let t of b) {
|
|
1142
1142
|
let { line: n, y: r, color: i } = t, a = n.kind ?? "line", o = n.lineStyle ?? (a === "position" || a === "line" ? "solid" : "dashed");
|
|
1143
1143
|
if (e.save(), e.strokeStyle = i, e.lineWidth = Fn === n.id || U?.kind === "order" && U.line.id === n.id || H?.kind === "move" && H.id === n.id ? 1.5 : 1, te(e, o, 1), e.beginPath(), e.moveTo(0, r), e.lineTo(F, r), e.stroke(), e.restore(), !t.total) continue;
|
|
1144
|
-
let { parts:
|
|
1145
|
-
if (e.font = Q(R.fontSize, 600), p + d < F - 56 && (e.save(), e.strokeStyle = i, e.lineWidth = 1, e.setLineDash([]), e.beginPath(), e.moveTo(p + d, r), e.lineTo(Math.min(p + d + 6, F - 56), r), e.stroke(), e.restore()), H?.kind === "move" && H.id === n.id && (Zr(e, p - 3.5, f - 3.5, d + 7, 25, 5), e.strokeStyle = X(pt), e.lineWidth = 2, e.setLineDash([]), e.stroke()), Zr(e, p - .5, f - .5, d + 1, 19, 3), e.fillStyle =
|
|
1144
|
+
let { parts: c, widths: l, grip: u, total: d, top: f } = t, p = t.left;
|
|
1145
|
+
if (e.font = Q(R.fontSize, 600), p + d < F - 56 && (e.save(), e.strokeStyle = i, e.lineWidth = 1, e.setLineDash([]), e.beginPath(), e.moveTo(p + d, r), e.lineTo(Math.min(p + d + 6, F - 56), r), e.stroke(), e.restore()), H?.kind === "move" && H.id === n.id && (Zr(e, p - 3.5, f - 3.5, d + 7, 25, 5), e.strokeStyle = X(pt), e.lineWidth = 2, e.setLineDash([]), e.stroke()), Zr(e, p - .5, f - .5, d + 1, 19, 3), e.fillStyle = s, e.fill(), e.strokeStyle = i, e.lineWidth = 1, e.setLineDash([]), e.stroke(), u) {
|
|
1146
1146
|
e.fillStyle = i;
|
|
1147
1147
|
for (let t = 0; t < 3; t++) e.fillRect(p + 4, f + 5 + t * 3.5, 6, 1.5);
|
|
1148
1148
|
p += u;
|
|
1149
1149
|
}
|
|
1150
|
-
e.textBaseline = "middle", e.textAlign = "center",
|
|
1150
|
+
e.textBaseline = "middle", e.textAlign = "center", c.forEach((t, r) => {
|
|
1151
1151
|
let a = l[r] ?? 0, o = t.fill;
|
|
1152
1152
|
t.cancel && (gi(p, f, a, 18, () => q("orderCancel", {
|
|
1153
1153
|
id: n.id,
|
|
1154
1154
|
line: n
|
|
1155
|
-
})) && (o = i), e.fillStyle = i, e.fillRect(p, f + 3, 1, 12)), o !==
|
|
1155
|
+
})) && (o = i), e.fillStyle = i, e.fillRect(p, f + 3, 1, 12)), o !== s && (e.fillStyle = o, e.fillRect(p, f, a, 18)), e.fillStyle = t.cancel && o !== s ? yt(i) : t.color, t.cancel && (e.font = Q(R.fontSize + 3, 500)), e.fillText(t.text, p + a / 2, f + (t.cancel ? 9 : 9.5)), e.font = Q(R.fontSize, 600), p += a;
|
|
1156
1156
|
});
|
|
1157
1157
|
}
|
|
1158
|
-
let S = k.lastPriceLine !== !1 && i > 0, ee = i > 0 && M.close[i - 1] >= M.open[i - 1], ne = Zn() === "line" || Zn() === "area" ? X(pt) : ee ?
|
|
1158
|
+
let S = k.lastPriceLine !== !1 && i > 0, ee = i > 0 && M.close[i - 1] >= M.open[i - 1], ne = Zn() === "line" || Zn() === "area" ? X(pt) : ee ? c : l;
|
|
1159
1159
|
if (S) {
|
|
1160
1160
|
let t = Math.round(w(r.scale, f)) + .5;
|
|
1161
1161
|
e.save(), e.strokeStyle = ne, e.setLineDash([1, 2]), e.beginPath(), e.moveTo(0, t), e.lineTo(F, t), e.stroke(), e.restore();
|
|
@@ -1241,7 +1241,7 @@ var ot = 28, st = 60, ct = 60, lt = 48, T = "price", ut = "var(--success-color,
|
|
|
1241
1241
|
})), e.top, Math.min(e.top + e.height, I), 1);
|
|
1242
1242
|
t.forEach((e, t) => e.top = n[t] ?? null);
|
|
1243
1243
|
}
|
|
1244
|
-
e.font = Q(R.fontSize), e.textAlign = "left", e.textBaseline = "middle", e.fillStyle =
|
|
1244
|
+
e.font = Q(R.fontSize), e.textAlign = "left", e.textBaseline = "middle", e.fillStyle = o;
|
|
1245
1245
|
for (let t of L) {
|
|
1246
1246
|
let n = ie.filter((e) => e.pane === t && e.top != null);
|
|
1247
1247
|
for (let r of t.ticks) {
|
|
@@ -1250,37 +1250,37 @@ var ot = 28, st = 60, ct = 60, lt = 48, T = "price", ut = "var(--success-color,
|
|
|
1250
1250
|
}
|
|
1251
1251
|
}
|
|
1252
1252
|
e.textAlign = "center";
|
|
1253
|
-
for (let t of n) e.font = Q(R.fontSize, t.bold ? 600 : 400), e.fillStyle = t.bold ? a :
|
|
1253
|
+
for (let t of n) e.font = Q(R.fontSize, t.bold ? 600 : 400), e.fillStyle = t.bold ? a : o, e.fillText(t.text, t.x, I + ot / 2);
|
|
1254
1254
|
for (let t of [...ie].sort((e, t) => e.priority - t.priority)) t.top != null && ri(e, t.y, t.text, t.fill, yt(t.fill), t.second, t.top);
|
|
1255
1255
|
if (Wn) {
|
|
1256
1256
|
let t = B && B.x <= F ? B.x : NaN;
|
|
1257
|
-
D(t) && (e.fillStyle =
|
|
1257
|
+
D(t) && (e.fillStyle = u(R.background, .62), e.fillRect(t, 0, F - t, I), e.strokeStyle = X(pt), e.lineWidth = 1.5, e.beginPath(), e.moveTo(Math.round(t) + .5, 0), e.lineTo(Math.round(t) + .5, I), e.stroke());
|
|
1258
1258
|
}
|
|
1259
|
-
v && hi(e, v, F / 2, m, X(pt)), _ && (e.save(), e.strokeStyle = _.color, e.lineWidth = 1.5, e.setLineDash(_.type === "stop" ? [2, 3] : [6, 4]), e.beginPath(), e.moveTo(0, _.y), e.lineTo(F, _.y), e.stroke(), e.restore(), hi(e, _.text, _.box.left, _.box.top, _.color, "left")), y && hi(e, d.orderHint, 8, m,
|
|
1259
|
+
v && hi(e, v, F / 2, m, X(pt)), _ && (e.save(), e.strokeStyle = _.color, e.lineWidth = 1.5, e.setLineDash(_.type === "stop" ? [2, 3] : [6, 4]), e.beginPath(), e.moveTo(0, _.y), e.lineTo(F, _.y), e.stroke(), e.restore(), hi(e, _.text, _.box.left, _.box.top, _.color, "left")), y && hi(e, d.orderHint, 8, m, u(R.text, .86), "left");
|
|
1260
1260
|
let C = si();
|
|
1261
1261
|
if (C && t && !Wn) {
|
|
1262
1262
|
let t = Math.round(cr(C.index)) + .5;
|
|
1263
|
-
e.save(), e.strokeStyle =
|
|
1263
|
+
e.save(), e.strokeStyle = u(R.textMuted, .75), e.lineWidth = 1, e.setLineDash([4, 3]), e.beginPath(), t >= 0 && t <= F && (e.moveTo(t, 0), e.lineTo(t, I));
|
|
1264
1264
|
let n = Math.round(C.y) + .5;
|
|
1265
1265
|
D(n) && n >= C.pane.top && n <= C.pane.top + C.pane.height && (e.moveTo(0, n), e.lineTo(F, n)), e.stroke(), e.restore();
|
|
1266
|
-
let a =
|
|
1266
|
+
let a = u(R.text);
|
|
1267
1267
|
if (D(C.y) && C.y >= C.pane.top && C.y <= C.pane.top + C.pane.height) {
|
|
1268
1268
|
let t = Re(C.pane.scale, C.y), n = C.pane.id === T ? ii(Fe(C.pane.scale, t)) : Gr(C.pane, t);
|
|
1269
|
-
ri(e, C.y, n, a,
|
|
1269
|
+
ri(e, C.y, n, a, s);
|
|
1270
1270
|
}
|
|
1271
1271
|
if (t >= 0 && t <= F && i) {
|
|
1272
1272
|
let n = se(gr(ur(C.index)), or(), J);
|
|
1273
1273
|
e.font = Q(R.fontSize, 500);
|
|
1274
1274
|
let r = e.measureText(n).width + 16, i = E(t - r / 2, 0, Xt - r);
|
|
1275
|
-
Zr(e, i, I + 3, r, 21, 3), e.fillStyle = a, e.fill(), e.fillStyle =
|
|
1275
|
+
Zr(e, i, I + 3, r, 21, 3), e.fillStyle = a, e.fill(), e.fillStyle = s, e.textAlign = "center", e.textBaseline = "middle", e.fillText(n, i + r / 2, I + 14);
|
|
1276
1276
|
}
|
|
1277
1277
|
if (k.orderEntry && B && C.pane.id === T && D(C.y) && wn === "cursor" && !U && i) {
|
|
1278
|
-
let t = F - 18 - 4, n = E(Math.round(C.y - 9), r.top + 1, r.top + r.height - 18 - 1), i = fi(C.price), o = fi(f),
|
|
1278
|
+
let t = F - 18 - 4, n = E(Math.round(C.y - 9), r.top + 1, r.top + r.height - 18 - 1), i = fi(C.price), o = fi(f), u = i < o ? "buy" : "sell", d = pn ? u === "buy" ? "sell" : "buy" : u, p = xt(d, i, o), m = gi(t, n, 18, 18, () => q("orderCreate", {
|
|
1279
1279
|
price: i,
|
|
1280
1280
|
side: d,
|
|
1281
1281
|
orderType: p
|
|
1282
1282
|
}));
|
|
1283
|
-
Zr(e, t, n, 18, 18, 4), e.fillStyle = m ? X(pt) : a, e.fill(), e.strokeStyle = m ? yt(X(pt)) :
|
|
1283
|
+
Zr(e, t, n, 18, 18, 4), e.fillStyle = m ? X(pt) : a, e.fill(), e.strokeStyle = m ? yt(X(pt)) : s, e.lineWidth = 1.5, e.beginPath(), e.moveTo(t + 5, n + 9), e.lineTo(t + 18 - 5, n + 9), e.moveTo(t + 9, n + 5), e.lineTo(t + 9, n + 18 - 5), e.stroke(), m && hi(e, mi(d, p, i), t - 6, n - 2, d === "buy" ? c : l, "right");
|
|
1284
1284
|
}
|
|
1285
1285
|
}
|
|
1286
1286
|
}, yi = "", bi = [], xi = /* @__PURE__ */ new Map(), Si = /* @__PURE__ */ new Map(), Ci = (e) => {
|
|
@@ -2111,7 +2111,7 @@ var ot = 28, st = 60, ct = 60, lt = 48, T = "price", ut = "var(--success-color,
|
|
|
2111
2111
|
close: Z(t.close[e])
|
|
2112
2112
|
});
|
|
2113
2113
|
}, Aa = (...e) => {
|
|
2114
|
-
let t = ["zh", "ja"].includes(
|
|
2114
|
+
let t = ["zh", "ja"].includes(n(J));
|
|
2115
2115
|
Mt.textContent = e.filter(Boolean).map((e) => e.replace(/[.。]$/, "")).join(t ? "。" : ". ");
|
|
2116
2116
|
}, ja = () => (k.priceLines ?? []).filter((e) => e.draggable || e.cancellable), Ma = (e) => {
|
|
2117
2117
|
let t = vt[e.kind ?? "line"];
|
|
@@ -2265,7 +2265,7 @@ var ot = 28, st = 60, ct = 60, lt = 48, T = "price", ut = "var(--success-color,
|
|
|
2265
2265
|
try {
|
|
2266
2266
|
e = A.matches(":focus-visible");
|
|
2267
2267
|
} catch {}
|
|
2268
|
-
e && (A.style.boxShadow = `inset 0 0 0 2px ${
|
|
2268
|
+
e && (A.style.boxShadow = `inset 0 0 0 2px ${u(R.primary, .6)}`);
|
|
2269
2269
|
}), A.addEventListener("blur", () => {
|
|
2270
2270
|
A.style.boxShadow = "", H && (Na(!0), $()), V !== null && (V = null, $());
|
|
2271
2271
|
}), jt.addEventListener("pointerdown", (e) => e.stopPropagation()), jt.addEventListener("click", () => Ja.scrollToRealtime(!0));
|
|
@@ -2291,7 +2291,7 @@ var ot = 28, st = 60, ct = 60, lt = 48, T = "price", ut = "var(--success-color,
|
|
|
2291
2291
|
t.width = Math.max(1, Math.round(Xt * e)), t.height = Math.max(1, Math.round(Zt * e));
|
|
2292
2292
|
let n = t.getContext("2d");
|
|
2293
2293
|
if (!n) return null;
|
|
2294
|
-
n.fillStyle =
|
|
2294
|
+
n.fillStyle = u(R.background), n.fillRect(0, 0, t.width, t.height);
|
|
2295
2295
|
try {
|
|
2296
2296
|
n.drawImage(Ot, 0, 0), z && n.drawImage(z.canvas, 0, 0, Math.round(F * e), Math.round(I * e)), n.drawImage(kt, 0, 0);
|
|
2297
2297
|
} catch {}
|
|
@@ -2300,12 +2300,12 @@ var ot = 28, st = 60, ct = 60, lt = 48, T = "price", ut = "var(--success-color,
|
|
|
2300
2300
|
return At.querySelectorAll("span, button").forEach((e) => {
|
|
2301
2301
|
let t = e.textContent ?? "";
|
|
2302
2302
|
if (e.children.length || !t.trim() || !i) return;
|
|
2303
|
-
let a = e.getBoundingClientRect(),
|
|
2304
|
-
n.font = `${
|
|
2303
|
+
let a = e.getBoundingClientRect(), o = i.getComputedStyle(e);
|
|
2304
|
+
n.font = `${o.fontWeight} ${o.fontSize} ${o.fontFamily}`, n.fillStyle = o.color || u(R.text), n.textAlign = "left", n.textBaseline = "middle", n.fillText(t, a.left - r.left, a.top - r.top + a.height / 2);
|
|
2305
2305
|
}), t;
|
|
2306
2306
|
}, Ha = !1, Ua = () => {
|
|
2307
2307
|
let e = O.fullscreenElement === A;
|
|
2308
|
-
e !== Ha && (Ha = e, A.style.background = e ?
|
|
2308
|
+
e !== Ha && (Ha = e, A.style.background = e ? u(R.background) : "", q("fullscreenChange", e), $());
|
|
2309
2309
|
};
|
|
2310
2310
|
O.addEventListener("fullscreenchange", Ua);
|
|
2311
2311
|
let Wa = async (t = /* @__PURE__ */ new Set()) => {
|