st-comp 0.0.69 → 0.0.70
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/lib/ChartLayout.cjs.js +1 -0
- package/lib/ChartLayout.es.js +72 -0
- package/lib/Dialog.cjs.js +1 -0
- package/lib/Dialog.es.js +90 -0
- package/lib/HeatMap.cjs.js +1 -0
- package/lib/HeatMap.es.js +118 -0
- package/lib/Kline.cjs.js +1 -0
- package/lib/Kline.es.js +2631 -0
- package/lib/KlineNew.cjs.js +1 -0
- package/lib/KlineNew.es.js +614 -0
- package/lib/LinearLegend.cjs.js +1 -0
- package/lib/LinearLegend.es.js +63 -0
- package/lib/Map.cjs.js +1 -0
- package/lib/{bundle.js → Map.es.js} +43 -41503
- package/lib/Pagination.cjs.js +1 -0
- package/lib/Pagination.es.js +625 -0
- package/lib/Pie.cjs.js +2 -0
- package/lib/Pie.es.js +160 -0
- package/lib/Table.cjs.js +20 -0
- package/lib/Table.es.js +4007 -0
- package/lib/TreeMap.cjs.js +2 -0
- package/lib/TreeMap.es.js +163 -0
- package/lib/VarietySearch.cjs.js +12 -0
- package/lib/VarietySearch.es.js +3336 -0
- package/lib/VirtualTable.cjs.js +13 -0
- package/lib/VirtualTable.es.js +2680 -0
- package/lib/_commonjsHelpers-10dfc225.js +8 -0
- package/lib/_commonjsHelpers-87b0abe8.cjs +1 -0
- package/lib/_plugin-vue_export-helper-dad06003.js +9 -0
- package/lib/_plugin-vue_export-helper-f246444f.cjs +1 -0
- package/lib/base-4865d432.cjs +9 -0
- package/lib/base-a240bf62.js +762 -0
- package/lib/bundle.cjs.js +1 -0
- package/lib/bundle.es.js +46 -0
- package/lib/bundle.umd-4967d574.js +16091 -0
- package/lib/bundle.umd-c5698c50.cjs +71 -0
- package/lib/castArray-3341cbb4.cjs +1 -0
- package/lib/castArray-a723a736.js +10 -0
- package/lib/config-provider-3db4dac6.js +148 -0
- package/lib/config-provider-cf4edc1e.cjs +1 -0
- package/lib/el-button-c24606d0.cjs +1 -0
- package/lib/el-button-fa6a5742.js +231 -0
- package/lib/el-empty-282e5e93.js +204 -0
- package/lib/el-empty-608948d9.cjs +1 -0
- package/lib/el-icon-7718f55e.cjs +1 -0
- package/lib/el-icon-d9ef9ccc.js +592 -0
- package/lib/el-overlay-7fceb816.cjs +5 -0
- package/lib/el-overlay-9b7bdd18.js +678 -0
- package/lib/el-scrollbar-7dc53299.js +248 -0
- package/lib/el-scrollbar-bc381e35.cjs +1 -0
- package/lib/el-select-85ed2643.js +1894 -0
- package/lib/el-select-a50741c1.cjs +9 -0
- package/lib/el-tag-308f715a.js +2416 -0
- package/lib/el-tag-87fd3960.cjs +1 -0
- package/lib/el-tooltip-0ea8fbf8.cjs +1 -0
- package/lib/el-tooltip-4ed993c7.js +1 -0
- package/lib/focus-trap-2a734f35.cjs +3 -0
- package/lib/focus-trap-6922b96b.js +376 -0
- package/lib/index-1508a06b.js +556 -0
- package/lib/index-48a9f60d.cjs +1 -0
- package/lib/index-657047bb.js +513 -0
- package/lib/index-eea0bcb3.cjs +1 -0
- package/lib/index.esm-8d9a2abe.js +2432 -0
- package/lib/index.esm-94a95a2a.cjs +3 -0
- package/lib/raf-5e5c53db.cjs +1 -0
- package/lib/raf-fc8a56cf.js +6 -0
- package/lib/scroll-bb8039ba.cjs +1 -0
- package/lib/scroll-cfdae01b.js +35 -0
- package/lib/style.css +1 -1
- package/lib/typescript-7ae59c4c.js +4 -0
- package/lib/typescript-b63f8e83.cjs +1 -0
- package/lib/vnode-a9714179.js +14 -0
- package/lib/vnode-abafec9e.cjs +1 -0
- package/lib/zh-cn-92978806.js +134 -0
- package/lib/zh-cn-d4df7172.cjs +1 -0
- package/package.json +3 -3
- package/packages/Kline/componentsNew/KlineUtils/index.vue +2 -3
- package/lib/bundle.umd.cjs +0 -139
package/lib/Kline.es.js
ADDED
|
@@ -0,0 +1,2631 @@
|
|
|
1
|
+
import { u as q, _ as me, a as de, r as ve, h as Mt, b as Se, t as pe, i as ae, c as Ve, d as Oe, e as ct, w as dt, f as _e } from "./base-a240bf62.js";
|
|
2
|
+
import "./el-tooltip-4ed993c7.js";
|
|
3
|
+
import { E as Xe } from "./el-tag-308f715a.js";
|
|
4
|
+
import { defineComponent as G, openBlock as _, createBlock as ue, Transition as qe, mergeProps as Ke, unref as Nt, toHandlers as yt, withCtx as ee, renderSlot as X, computed as O, getCurrentInstance as Fe, inject as fe, ref as S, reactive as Qe, watch as H, provide as ke, onMounted as le, onBeforeUnmount as et, h as U, Fragment as ne, withDirectives as zt, vShow as jt, watchEffect as gt, nextTick as Be, toRef as pt, resolveComponent as ft, createElementBlock as R, normalizeClass as re, createElementVNode as te, createTextVNode as tt, toDisplayString as ie, renderList as De, normalizeStyle as Pe, createCommentVNode as nt, onUnmounted as Re, createVNode as K } from "vue";
|
|
5
|
+
import * as Te from "echarts";
|
|
6
|
+
import { _ as oe } from "./_plugin-vue_export-helper-dad06003.js";
|
|
7
|
+
import { b as Le } from "./bundle.umd-4967d574.js";
|
|
8
|
+
import { i as Tt, t as It } from "./index.esm-8d9a2abe.js";
|
|
9
|
+
import { u as mt } from "./el-scrollbar-7dc53299.js";
|
|
10
|
+
import { a as Dt, b as Lt, E as ot, m as vt } from "./index-1508a06b.js";
|
|
11
|
+
import { E as J, u as ht, i as Ne, a as We } from "./focus-trap-6922b96b.js";
|
|
12
|
+
import { T as xt } from "./index-657047bb.js";
|
|
13
|
+
import { m as At } from "./typescript-7ae59c4c.js";
|
|
14
|
+
import { f as Yt } from "./vnode-a9714179.js";
|
|
15
|
+
import { E as Ct, a as bt } from "./el-select-85ed2643.js";
|
|
16
|
+
import "./_commonjsHelpers-10dfc225.js";
|
|
17
|
+
import "./scroll-cfdae01b.js";
|
|
18
|
+
const je = function(e, n, ...a) {
|
|
19
|
+
let o;
|
|
20
|
+
n.includes("mouse") || n.includes("click") ? o = "MouseEvents" : n.includes("key") ? o = "KeyboardEvent" : o = "HTMLEvents";
|
|
21
|
+
const t = document.createEvent(o);
|
|
22
|
+
return t.initEvent(n, ...a), e.dispatchEvent(t), e;
|
|
23
|
+
}, wt = G({
|
|
24
|
+
name: "ElCollapseTransition"
|
|
25
|
+
}), Ot = /* @__PURE__ */ G({
|
|
26
|
+
...wt,
|
|
27
|
+
setup(e) {
|
|
28
|
+
const n = q("collapse-transition"), a = (t) => {
|
|
29
|
+
t.style.maxHeight = "", t.style.overflow = t.dataset.oldOverflow, t.style.paddingTop = t.dataset.oldPaddingTop, t.style.paddingBottom = t.dataset.oldPaddingBottom;
|
|
30
|
+
}, o = {
|
|
31
|
+
beforeEnter(t) {
|
|
32
|
+
t.dataset || (t.dataset = {}), t.dataset.oldPaddingTop = t.style.paddingTop, t.dataset.oldPaddingBottom = t.style.paddingBottom, t.style.maxHeight = 0, t.style.paddingTop = 0, t.style.paddingBottom = 0;
|
|
33
|
+
},
|
|
34
|
+
enter(t) {
|
|
35
|
+
t.dataset.oldOverflow = t.style.overflow, t.scrollHeight !== 0 ? t.style.maxHeight = `${t.scrollHeight}px` : t.style.maxHeight = 0, t.style.paddingTop = t.dataset.oldPaddingTop, t.style.paddingBottom = t.dataset.oldPaddingBottom, t.style.overflow = "hidden";
|
|
36
|
+
},
|
|
37
|
+
afterEnter(t) {
|
|
38
|
+
t.style.maxHeight = "", t.style.overflow = t.dataset.oldOverflow;
|
|
39
|
+
},
|
|
40
|
+
enterCancelled(t) {
|
|
41
|
+
a(t);
|
|
42
|
+
},
|
|
43
|
+
beforeLeave(t) {
|
|
44
|
+
t.dataset || (t.dataset = {}), t.dataset.oldPaddingTop = t.style.paddingTop, t.dataset.oldPaddingBottom = t.style.paddingBottom, t.dataset.oldOverflow = t.style.overflow, t.style.maxHeight = `${t.scrollHeight}px`, t.style.overflow = "hidden";
|
|
45
|
+
},
|
|
46
|
+
leave(t) {
|
|
47
|
+
t.scrollHeight !== 0 && (t.style.maxHeight = 0, t.style.paddingTop = 0, t.style.paddingBottom = 0);
|
|
48
|
+
},
|
|
49
|
+
afterLeave(t) {
|
|
50
|
+
a(t);
|
|
51
|
+
},
|
|
52
|
+
leaveCancelled(t) {
|
|
53
|
+
a(t);
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
return (t, l) => (_(), ue(qe, Ke({
|
|
57
|
+
name: Nt(n).b()
|
|
58
|
+
}, yt(o)), {
|
|
59
|
+
default: ee(() => [
|
|
60
|
+
X(t.$slots, "default")
|
|
61
|
+
]),
|
|
62
|
+
_: 3
|
|
63
|
+
}, 16, ["name"]));
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
var ge = /* @__PURE__ */ me(Ot, [["__file", "/home/runner/work/element-plus/element-plus/packages/components/collapse-transition/src/collapse-transition.vue"]]);
|
|
67
|
+
ge.install = (e) => {
|
|
68
|
+
e.component(ge.name, ge);
|
|
69
|
+
};
|
|
70
|
+
const kt = ge;
|
|
71
|
+
let Et = class {
|
|
72
|
+
constructor(n, a) {
|
|
73
|
+
this.parent = n, this.domNode = a, this.subIndex = 0, this.subIndex = 0, this.init();
|
|
74
|
+
}
|
|
75
|
+
init() {
|
|
76
|
+
this.subMenuItems = this.domNode.querySelectorAll("li"), this.addListeners();
|
|
77
|
+
}
|
|
78
|
+
gotoSubIndex(n) {
|
|
79
|
+
n === this.subMenuItems.length ? n = 0 : n < 0 && (n = this.subMenuItems.length - 1), this.subMenuItems[n].focus(), this.subIndex = n;
|
|
80
|
+
}
|
|
81
|
+
addListeners() {
|
|
82
|
+
const n = this.parent.domNode;
|
|
83
|
+
Array.prototype.forEach.call(this.subMenuItems, (a) => {
|
|
84
|
+
a.addEventListener("keydown", (o) => {
|
|
85
|
+
let t = !1;
|
|
86
|
+
switch (o.code) {
|
|
87
|
+
case J.down: {
|
|
88
|
+
this.gotoSubIndex(this.subIndex + 1), t = !0;
|
|
89
|
+
break;
|
|
90
|
+
}
|
|
91
|
+
case J.up: {
|
|
92
|
+
this.gotoSubIndex(this.subIndex - 1), t = !0;
|
|
93
|
+
break;
|
|
94
|
+
}
|
|
95
|
+
case J.tab: {
|
|
96
|
+
je(n, "mouseleave");
|
|
97
|
+
break;
|
|
98
|
+
}
|
|
99
|
+
case J.enter:
|
|
100
|
+
case J.space: {
|
|
101
|
+
t = !0, o.currentTarget.click();
|
|
102
|
+
break;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
return t && (o.preventDefault(), o.stopPropagation()), !1;
|
|
106
|
+
});
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
}, St = class {
|
|
110
|
+
constructor(n, a) {
|
|
111
|
+
this.domNode = n, this.submenu = null, this.submenu = null, this.init(a);
|
|
112
|
+
}
|
|
113
|
+
init(n) {
|
|
114
|
+
this.domNode.setAttribute("tabindex", "0");
|
|
115
|
+
const a = this.domNode.querySelector(`.${n}-menu`);
|
|
116
|
+
a && (this.submenu = new Et(this, a)), this.addListeners();
|
|
117
|
+
}
|
|
118
|
+
addListeners() {
|
|
119
|
+
this.domNode.addEventListener("keydown", (n) => {
|
|
120
|
+
let a = !1;
|
|
121
|
+
switch (n.code) {
|
|
122
|
+
case J.down: {
|
|
123
|
+
je(n.currentTarget, "mouseenter"), this.submenu && this.submenu.gotoSubIndex(0), a = !0;
|
|
124
|
+
break;
|
|
125
|
+
}
|
|
126
|
+
case J.up: {
|
|
127
|
+
je(n.currentTarget, "mouseenter"), this.submenu && this.submenu.gotoSubIndex(this.submenu.subMenuItems.length - 1), a = !0;
|
|
128
|
+
break;
|
|
129
|
+
}
|
|
130
|
+
case J.tab: {
|
|
131
|
+
je(n.currentTarget, "mouseleave");
|
|
132
|
+
break;
|
|
133
|
+
}
|
|
134
|
+
case J.enter:
|
|
135
|
+
case J.space: {
|
|
136
|
+
a = !0, n.currentTarget.click();
|
|
137
|
+
break;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
a && n.preventDefault();
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
}, _t = class {
|
|
144
|
+
constructor(n, a) {
|
|
145
|
+
this.domNode = n, this.init(a);
|
|
146
|
+
}
|
|
147
|
+
init(n) {
|
|
148
|
+
const a = this.domNode.childNodes;
|
|
149
|
+
Array.from(a).forEach((o) => {
|
|
150
|
+
o.nodeType === 1 && new St(o, n);
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
};
|
|
154
|
+
const Ft = G({
|
|
155
|
+
name: "ElMenuCollapseTransition",
|
|
156
|
+
setup() {
|
|
157
|
+
const e = q("menu");
|
|
158
|
+
return {
|
|
159
|
+
listeners: {
|
|
160
|
+
onBeforeEnter: (a) => a.style.opacity = "0.2",
|
|
161
|
+
onEnter(a, o) {
|
|
162
|
+
de(a, `${e.namespace.value}-opacity-transition`), a.style.opacity = "1", o();
|
|
163
|
+
},
|
|
164
|
+
onAfterEnter(a) {
|
|
165
|
+
ve(a, `${e.namespace.value}-opacity-transition`), a.style.opacity = "";
|
|
166
|
+
},
|
|
167
|
+
onBeforeLeave(a) {
|
|
168
|
+
a.dataset || (a.dataset = {}), Mt(a, e.m("collapse")) ? (ve(a, e.m("collapse")), a.dataset.oldOverflow = a.style.overflow, a.dataset.scrollWidth = a.clientWidth.toString(), de(a, e.m("collapse"))) : (de(a, e.m("collapse")), a.dataset.oldOverflow = a.style.overflow, a.dataset.scrollWidth = a.clientWidth.toString(), ve(a, e.m("collapse"))), a.style.width = `${a.scrollWidth}px`, a.style.overflow = "hidden";
|
|
169
|
+
},
|
|
170
|
+
onLeave(a) {
|
|
171
|
+
de(a, "horizontal-collapse-transition"), a.style.width = `${a.dataset.scrollWidth}px`;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
});
|
|
177
|
+
function Qt(e, n, a, o, t, l) {
|
|
178
|
+
return _(), ue(qe, Ke({ mode: "out-in" }, e.listeners), {
|
|
179
|
+
default: ee(() => [
|
|
180
|
+
X(e.$slots, "default")
|
|
181
|
+
]),
|
|
182
|
+
_: 3
|
|
183
|
+
}, 16);
|
|
184
|
+
}
|
|
185
|
+
var Bt = /* @__PURE__ */ me(Ft, [["render", Qt], ["__file", "/home/runner/work/element-plus/element-plus/packages/components/menu/src/menu-collapse-transition.vue"]]);
|
|
186
|
+
function at(e, n) {
|
|
187
|
+
const a = O(() => {
|
|
188
|
+
let t = e.parent;
|
|
189
|
+
const l = [n.value];
|
|
190
|
+
for (; t.type.name !== "ElMenu"; )
|
|
191
|
+
t.props.index && l.unshift(t.props.index), t = t.parent;
|
|
192
|
+
return l;
|
|
193
|
+
});
|
|
194
|
+
return {
|
|
195
|
+
parentMenu: O(() => {
|
|
196
|
+
let t = e.parent;
|
|
197
|
+
for (; t && !["ElMenu", "ElSubMenu"].includes(t.type.name); )
|
|
198
|
+
t = t.parent;
|
|
199
|
+
return t;
|
|
200
|
+
}),
|
|
201
|
+
indexPath: a
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
function Pt(e) {
|
|
205
|
+
return O(() => {
|
|
206
|
+
const a = e.backgroundColor;
|
|
207
|
+
return a ? new xt(a).shade(20).toString() : "";
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
const it = (e, n) => {
|
|
211
|
+
const a = q("menu");
|
|
212
|
+
return O(() => a.cssVarBlock({
|
|
213
|
+
"text-color": e.textColor || "",
|
|
214
|
+
"hover-text-color": e.textColor || "",
|
|
215
|
+
"bg-color": e.backgroundColor || "",
|
|
216
|
+
"hover-bg-color": Pt(e).value || "",
|
|
217
|
+
"active-color": e.activeTextColor || "",
|
|
218
|
+
level: `${n}`
|
|
219
|
+
}));
|
|
220
|
+
}, Rt = Se({
|
|
221
|
+
index: {
|
|
222
|
+
type: String,
|
|
223
|
+
required: !0
|
|
224
|
+
},
|
|
225
|
+
showTimeout: {
|
|
226
|
+
type: Number,
|
|
227
|
+
default: 300
|
|
228
|
+
},
|
|
229
|
+
hideTimeout: {
|
|
230
|
+
type: Number,
|
|
231
|
+
default: 300
|
|
232
|
+
},
|
|
233
|
+
popperClass: String,
|
|
234
|
+
disabled: Boolean,
|
|
235
|
+
popperAppendToBody: {
|
|
236
|
+
type: Boolean,
|
|
237
|
+
default: void 0
|
|
238
|
+
},
|
|
239
|
+
teleported: {
|
|
240
|
+
type: Boolean,
|
|
241
|
+
default: void 0
|
|
242
|
+
},
|
|
243
|
+
popperOffset: {
|
|
244
|
+
type: Number,
|
|
245
|
+
default: 6
|
|
246
|
+
},
|
|
247
|
+
expandCloseIcon: {
|
|
248
|
+
type: Ne
|
|
249
|
+
},
|
|
250
|
+
expandOpenIcon: {
|
|
251
|
+
type: Ne
|
|
252
|
+
},
|
|
253
|
+
collapseCloseIcon: {
|
|
254
|
+
type: Ne
|
|
255
|
+
},
|
|
256
|
+
collapseOpenIcon: {
|
|
257
|
+
type: Ne
|
|
258
|
+
}
|
|
259
|
+
}), ye = "ElSubMenu";
|
|
260
|
+
var Ue = G({
|
|
261
|
+
name: ye,
|
|
262
|
+
props: Rt,
|
|
263
|
+
setup(e, { slots: n, expose: a }) {
|
|
264
|
+
ht({
|
|
265
|
+
from: "popper-append-to-body",
|
|
266
|
+
replacement: "teleported",
|
|
267
|
+
scope: ye,
|
|
268
|
+
version: "2.3.0",
|
|
269
|
+
ref: "https://element-plus.org/en-US/component/menu.html#submenu-attributes"
|
|
270
|
+
}, O(() => e.popperAppendToBody !== void 0));
|
|
271
|
+
const o = Fe(), { indexPath: t, parentMenu: l } = at(o, O(() => e.index)), r = q("menu"), u = q("sub-menu"), i = fe("rootMenu");
|
|
272
|
+
i || pe(ye, "can not inject root menu");
|
|
273
|
+
const s = fe(`subMenu:${l.value.uid}`);
|
|
274
|
+
s || pe(ye, "can not inject sub menu");
|
|
275
|
+
const d = S({}), g = S({});
|
|
276
|
+
let M;
|
|
277
|
+
const N = S(!1), I = S(), c = S(null), v = O(() => T.value === "horizontal" && k.value ? "bottom-start" : "right-start"), b = O(() => T.value === "horizontal" && k.value || T.value === "vertical" && !i.props.collapse ? e.expandCloseIcon && e.expandOpenIcon ? f.value ? e.expandOpenIcon : e.expandCloseIcon : Dt : e.collapseCloseIcon && e.collapseOpenIcon ? f.value ? e.collapseOpenIcon : e.collapseCloseIcon : Lt), k = O(() => s.level === 0), B = O(() => {
|
|
278
|
+
var Y;
|
|
279
|
+
const w = (Y = e.teleported) != null ? Y : e.popperAppendToBody;
|
|
280
|
+
return w === void 0 ? k.value : w;
|
|
281
|
+
}), z = O(() => i.props.collapse ? `${r.namespace.value}-zoom-in-left` : `${r.namespace.value}-zoom-in-top`), p = O(() => T.value === "horizontal" && k.value ? [
|
|
282
|
+
"bottom-start",
|
|
283
|
+
"bottom-end",
|
|
284
|
+
"top-start",
|
|
285
|
+
"top-end",
|
|
286
|
+
"right-start",
|
|
287
|
+
"left-start"
|
|
288
|
+
] : [
|
|
289
|
+
"right-start",
|
|
290
|
+
"right",
|
|
291
|
+
"right-end",
|
|
292
|
+
"left-start",
|
|
293
|
+
"bottom-start",
|
|
294
|
+
"bottom-end",
|
|
295
|
+
"top-start",
|
|
296
|
+
"top-end"
|
|
297
|
+
]), f = O(() => i.openedMenus.includes(e.index)), A = O(() => {
|
|
298
|
+
let Y = !1;
|
|
299
|
+
return Object.values(d.value).forEach((w) => {
|
|
300
|
+
w.active && (Y = !0);
|
|
301
|
+
}), Object.values(g.value).forEach((w) => {
|
|
302
|
+
w.active && (Y = !0);
|
|
303
|
+
}), Y;
|
|
304
|
+
}), C = O(() => i.props.backgroundColor || ""), Q = O(() => i.props.activeTextColor || ""), P = O(() => i.props.textColor || ""), T = O(() => i.props.mode), D = Qe({
|
|
305
|
+
index: e.index,
|
|
306
|
+
indexPath: t,
|
|
307
|
+
active: A
|
|
308
|
+
}), h = it(i.props, s.level + 1), y = O(() => T.value !== "horizontal" ? {
|
|
309
|
+
color: P.value
|
|
310
|
+
} : {
|
|
311
|
+
borderBottomColor: A.value ? i.props.activeTextColor ? Q.value : "" : "transparent",
|
|
312
|
+
color: A.value ? Q.value : P.value
|
|
313
|
+
}), L = () => {
|
|
314
|
+
var Y, w, F;
|
|
315
|
+
return (F = (w = (Y = c.value) == null ? void 0 : Y.popperRef) == null ? void 0 : w.popperInstanceRef) == null ? void 0 : F.destroy();
|
|
316
|
+
}, m = (Y) => {
|
|
317
|
+
Y || L();
|
|
318
|
+
}, j = () => {
|
|
319
|
+
i.props.menuTrigger === "hover" && i.props.mode === "horizontal" || i.props.collapse && i.props.mode === "vertical" || e.disabled || i.handleSubMenuClick({
|
|
320
|
+
index: e.index,
|
|
321
|
+
indexPath: t.value,
|
|
322
|
+
active: A.value
|
|
323
|
+
});
|
|
324
|
+
}, x = (Y, w = e.showTimeout) => {
|
|
325
|
+
var F;
|
|
326
|
+
Y.type !== "focus" && (i.props.menuTrigger === "click" && i.props.mode === "horizontal" || !i.props.collapse && i.props.mode === "vertical" || e.disabled || (s.mouseInChild.value = !0, M == null || M(), { stop: M } = Ve(() => {
|
|
327
|
+
i.openMenu(e.index, t.value);
|
|
328
|
+
}, w), B.value && ((F = l.value.vnode.el) == null || F.dispatchEvent(new MouseEvent("mouseenter")))));
|
|
329
|
+
}, E = (Y = !1) => {
|
|
330
|
+
var w, F;
|
|
331
|
+
i.props.menuTrigger === "click" && i.props.mode === "horizontal" || !i.props.collapse && i.props.mode === "vertical" || (M == null || M(), s.mouseInChild.value = !1, { stop: M } = Ve(() => !N.value && i.closeMenu(e.index, t.value), e.hideTimeout), B.value && Y && ((w = o.parent) == null ? void 0 : w.type.name) === "ElSubMenu" && ((F = s.handleMouseleave) == null || F.call(s, !0)));
|
|
332
|
+
};
|
|
333
|
+
H(() => i.props.collapse, (Y) => m(!!Y));
|
|
334
|
+
{
|
|
335
|
+
const Y = (F) => {
|
|
336
|
+
g.value[F.index] = F;
|
|
337
|
+
}, w = (F) => {
|
|
338
|
+
delete g.value[F.index];
|
|
339
|
+
};
|
|
340
|
+
ke(`subMenu:${o.uid}`, {
|
|
341
|
+
addSubMenu: Y,
|
|
342
|
+
removeSubMenu: w,
|
|
343
|
+
handleMouseleave: E,
|
|
344
|
+
mouseInChild: N,
|
|
345
|
+
level: s.level + 1
|
|
346
|
+
});
|
|
347
|
+
}
|
|
348
|
+
return a({
|
|
349
|
+
opened: f
|
|
350
|
+
}), le(() => {
|
|
351
|
+
i.addSubMenu(D), s.addSubMenu(D);
|
|
352
|
+
}), et(() => {
|
|
353
|
+
s.removeSubMenu(D), i.removeSubMenu(D);
|
|
354
|
+
}), () => {
|
|
355
|
+
var Y;
|
|
356
|
+
const w = [
|
|
357
|
+
(Y = n.title) == null ? void 0 : Y.call(n),
|
|
358
|
+
U(ot, {
|
|
359
|
+
class: u.e("icon-arrow"),
|
|
360
|
+
style: {
|
|
361
|
+
transform: f.value ? e.expandCloseIcon && e.expandOpenIcon || e.collapseCloseIcon && e.collapseOpenIcon && i.props.collapse ? "none" : "rotateZ(180deg)" : "none"
|
|
362
|
+
}
|
|
363
|
+
}, {
|
|
364
|
+
default: () => ae(b.value) ? U(o.appContext.components[b.value]) : U(b.value)
|
|
365
|
+
})
|
|
366
|
+
], F = i.isMenuPopup ? U(Xe, {
|
|
367
|
+
ref: c,
|
|
368
|
+
visible: f.value,
|
|
369
|
+
effect: "light",
|
|
370
|
+
pure: !0,
|
|
371
|
+
offset: e.popperOffset,
|
|
372
|
+
showArrow: !1,
|
|
373
|
+
persistent: !0,
|
|
374
|
+
popperClass: e.popperClass,
|
|
375
|
+
placement: v.value,
|
|
376
|
+
teleported: B.value,
|
|
377
|
+
fallbackPlacements: p.value,
|
|
378
|
+
transition: z.value,
|
|
379
|
+
gpuAcceleration: !1
|
|
380
|
+
}, {
|
|
381
|
+
content: () => {
|
|
382
|
+
var V;
|
|
383
|
+
return U("div", {
|
|
384
|
+
class: [
|
|
385
|
+
r.m(T.value),
|
|
386
|
+
r.m("popup-container"),
|
|
387
|
+
e.popperClass
|
|
388
|
+
],
|
|
389
|
+
onMouseenter: (W) => x(W, 100),
|
|
390
|
+
onMouseleave: () => E(!0),
|
|
391
|
+
onFocus: (W) => x(W, 100)
|
|
392
|
+
}, [
|
|
393
|
+
U("ul", {
|
|
394
|
+
class: [
|
|
395
|
+
r.b(),
|
|
396
|
+
r.m("popup"),
|
|
397
|
+
r.m(`popup-${v.value}`)
|
|
398
|
+
],
|
|
399
|
+
style: h.value
|
|
400
|
+
}, [(V = n.default) == null ? void 0 : V.call(n)])
|
|
401
|
+
]);
|
|
402
|
+
},
|
|
403
|
+
default: () => U("div", {
|
|
404
|
+
class: u.e("title"),
|
|
405
|
+
style: [
|
|
406
|
+
y.value,
|
|
407
|
+
{ backgroundColor: C.value }
|
|
408
|
+
],
|
|
409
|
+
onClick: j
|
|
410
|
+
}, w)
|
|
411
|
+
}) : U(ne, {}, [
|
|
412
|
+
U("div", {
|
|
413
|
+
class: u.e("title"),
|
|
414
|
+
style: [
|
|
415
|
+
y.value,
|
|
416
|
+
{ backgroundColor: C.value }
|
|
417
|
+
],
|
|
418
|
+
ref: I,
|
|
419
|
+
onClick: j
|
|
420
|
+
}, w),
|
|
421
|
+
U(kt, {}, {
|
|
422
|
+
default: () => {
|
|
423
|
+
var V;
|
|
424
|
+
return zt(U("ul", {
|
|
425
|
+
role: "menu",
|
|
426
|
+
class: [r.b(), r.m("inline")],
|
|
427
|
+
style: h.value
|
|
428
|
+
}, [(V = n.default) == null ? void 0 : V.call(n)]), [[jt, f.value]]);
|
|
429
|
+
}
|
|
430
|
+
})
|
|
431
|
+
]);
|
|
432
|
+
return U("li", {
|
|
433
|
+
class: [
|
|
434
|
+
u.b(),
|
|
435
|
+
u.is("active", A.value),
|
|
436
|
+
u.is("opened", f.value),
|
|
437
|
+
u.is("disabled", e.disabled)
|
|
438
|
+
],
|
|
439
|
+
role: "menuitem",
|
|
440
|
+
ariaHaspopup: !0,
|
|
441
|
+
ariaExpanded: f.value,
|
|
442
|
+
onMouseenter: x,
|
|
443
|
+
onMouseleave: () => E(!0),
|
|
444
|
+
onFocus: x
|
|
445
|
+
}, [F]);
|
|
446
|
+
};
|
|
447
|
+
}
|
|
448
|
+
});
|
|
449
|
+
const Ut = Se({
|
|
450
|
+
mode: {
|
|
451
|
+
type: String,
|
|
452
|
+
values: ["horizontal", "vertical"],
|
|
453
|
+
default: "vertical"
|
|
454
|
+
},
|
|
455
|
+
defaultActive: {
|
|
456
|
+
type: String,
|
|
457
|
+
default: ""
|
|
458
|
+
},
|
|
459
|
+
defaultOpeneds: {
|
|
460
|
+
type: Oe(Array),
|
|
461
|
+
default: () => At([])
|
|
462
|
+
},
|
|
463
|
+
uniqueOpened: Boolean,
|
|
464
|
+
router: Boolean,
|
|
465
|
+
menuTrigger: {
|
|
466
|
+
type: String,
|
|
467
|
+
values: ["hover", "click"],
|
|
468
|
+
default: "hover"
|
|
469
|
+
},
|
|
470
|
+
collapse: Boolean,
|
|
471
|
+
backgroundColor: String,
|
|
472
|
+
textColor: String,
|
|
473
|
+
activeTextColor: String,
|
|
474
|
+
collapseTransition: {
|
|
475
|
+
type: Boolean,
|
|
476
|
+
default: !0
|
|
477
|
+
},
|
|
478
|
+
ellipsis: {
|
|
479
|
+
type: Boolean,
|
|
480
|
+
default: !0
|
|
481
|
+
},
|
|
482
|
+
popperEffect: {
|
|
483
|
+
type: String,
|
|
484
|
+
values: ["dark", "light"],
|
|
485
|
+
default: "dark"
|
|
486
|
+
}
|
|
487
|
+
}), he = (e) => Array.isArray(e) && e.every((n) => ae(n)), $t = {
|
|
488
|
+
close: (e, n) => ae(e) && he(n),
|
|
489
|
+
open: (e, n) => ae(e) && he(n),
|
|
490
|
+
select: (e, n, a, o) => ae(e) && he(n) && ct(a) && (o === void 0 || o instanceof Promise)
|
|
491
|
+
};
|
|
492
|
+
var Vt = G({
|
|
493
|
+
name: "ElMenu",
|
|
494
|
+
props: Ut,
|
|
495
|
+
emits: $t,
|
|
496
|
+
setup(e, { emit: n, slots: a, expose: o }) {
|
|
497
|
+
const t = Fe(), l = t.appContext.config.globalProperties.$router, r = S(), u = q("menu"), i = q("sub-menu"), s = S(-1), d = S(e.defaultOpeneds && !e.collapse ? e.defaultOpeneds.slice(0) : []), g = S(e.defaultActive), M = S({}), N = S({}), I = O(() => e.mode === "horizontal" || e.mode === "vertical" && e.collapse), c = () => {
|
|
498
|
+
const T = g.value && M.value[g.value];
|
|
499
|
+
if (!T || e.mode === "horizontal" || e.collapse)
|
|
500
|
+
return;
|
|
501
|
+
T.indexPath.forEach((h) => {
|
|
502
|
+
const y = N.value[h];
|
|
503
|
+
y && v(h, y.indexPath);
|
|
504
|
+
});
|
|
505
|
+
}, v = (T, D) => {
|
|
506
|
+
d.value.includes(T) || (e.uniqueOpened && (d.value = d.value.filter((h) => D.includes(h))), d.value.push(T), n("open", T, D));
|
|
507
|
+
}, b = (T) => {
|
|
508
|
+
const D = d.value.indexOf(T);
|
|
509
|
+
D !== -1 && d.value.splice(D, 1);
|
|
510
|
+
}, k = (T, D) => {
|
|
511
|
+
b(T), n("close", T, D);
|
|
512
|
+
}, B = ({
|
|
513
|
+
index: T,
|
|
514
|
+
indexPath: D
|
|
515
|
+
}) => {
|
|
516
|
+
d.value.includes(T) ? k(T, D) : v(T, D);
|
|
517
|
+
}, z = (T) => {
|
|
518
|
+
(e.mode === "horizontal" || e.collapse) && (d.value = []);
|
|
519
|
+
const { index: D, indexPath: h } = T;
|
|
520
|
+
if (!(We(D) || We(h)))
|
|
521
|
+
if (e.router && l) {
|
|
522
|
+
const y = T.route || D, L = l.push(y).then((m) => (m || (g.value = D), m));
|
|
523
|
+
n("select", D, h, { index: D, indexPath: h, route: y }, L);
|
|
524
|
+
} else
|
|
525
|
+
g.value = D, n("select", D, h, { index: D, indexPath: h });
|
|
526
|
+
}, p = (T) => {
|
|
527
|
+
const D = M.value, h = D[T] || g.value && D[g.value] || D[e.defaultActive];
|
|
528
|
+
h ? g.value = h.index : g.value = T;
|
|
529
|
+
}, f = () => {
|
|
530
|
+
var T, D;
|
|
531
|
+
if (!r.value)
|
|
532
|
+
return -1;
|
|
533
|
+
const h = Array.from((D = (T = r.value) == null ? void 0 : T.childNodes) != null ? D : []).filter((Y) => Y.nodeName !== "#comment" && (Y.nodeName !== "#text" || Y.nodeValue)), y = 64, L = Number.parseInt(getComputedStyle(r.value).paddingLeft, 10), m = Number.parseInt(getComputedStyle(r.value).paddingRight, 10), j = r.value.clientWidth - L - m;
|
|
534
|
+
let x = 0, E = 0;
|
|
535
|
+
return h.forEach((Y, w) => {
|
|
536
|
+
x += Y.offsetWidth || 0, x <= j - y && (E = w + 1);
|
|
537
|
+
}), E === h.length ? -1 : E;
|
|
538
|
+
}, A = (T, D = 33.34) => {
|
|
539
|
+
let h;
|
|
540
|
+
return () => {
|
|
541
|
+
h && clearTimeout(h), h = setTimeout(() => {
|
|
542
|
+
T();
|
|
543
|
+
}, D);
|
|
544
|
+
};
|
|
545
|
+
};
|
|
546
|
+
let C = !0;
|
|
547
|
+
const Q = () => {
|
|
548
|
+
const T = () => {
|
|
549
|
+
s.value = -1, Be(() => {
|
|
550
|
+
s.value = f();
|
|
551
|
+
});
|
|
552
|
+
};
|
|
553
|
+
C ? T() : A(T)(), C = !1;
|
|
554
|
+
};
|
|
555
|
+
H(() => e.defaultActive, (T) => {
|
|
556
|
+
M.value[T] || (g.value = ""), p(T);
|
|
557
|
+
}), H(() => e.collapse, (T) => {
|
|
558
|
+
T && (d.value = []);
|
|
559
|
+
}), H(M.value, c);
|
|
560
|
+
let P;
|
|
561
|
+
gt(() => {
|
|
562
|
+
e.mode === "horizontal" && e.ellipsis ? P = mt(r, Q).stop : P == null || P();
|
|
563
|
+
});
|
|
564
|
+
{
|
|
565
|
+
const T = (L) => {
|
|
566
|
+
N.value[L.index] = L;
|
|
567
|
+
}, D = (L) => {
|
|
568
|
+
delete N.value[L.index];
|
|
569
|
+
};
|
|
570
|
+
ke("rootMenu", Qe({
|
|
571
|
+
props: e,
|
|
572
|
+
openedMenus: d,
|
|
573
|
+
items: M,
|
|
574
|
+
subMenus: N,
|
|
575
|
+
activeIndex: g,
|
|
576
|
+
isMenuPopup: I,
|
|
577
|
+
addMenuItem: (L) => {
|
|
578
|
+
M.value[L.index] = L;
|
|
579
|
+
},
|
|
580
|
+
removeMenuItem: (L) => {
|
|
581
|
+
delete M.value[L.index];
|
|
582
|
+
},
|
|
583
|
+
addSubMenu: T,
|
|
584
|
+
removeSubMenu: D,
|
|
585
|
+
openMenu: v,
|
|
586
|
+
closeMenu: k,
|
|
587
|
+
handleMenuItemClick: z,
|
|
588
|
+
handleSubMenuClick: B
|
|
589
|
+
})), ke(`subMenu:${t.uid}`, {
|
|
590
|
+
addSubMenu: T,
|
|
591
|
+
removeSubMenu: D,
|
|
592
|
+
mouseInChild: S(!1),
|
|
593
|
+
level: 0
|
|
594
|
+
});
|
|
595
|
+
}
|
|
596
|
+
return le(() => {
|
|
597
|
+
e.mode === "horizontal" && new _t(t.vnode.el, u.namespace.value);
|
|
598
|
+
}), o({
|
|
599
|
+
open: (D) => {
|
|
600
|
+
const { indexPath: h } = N.value[D];
|
|
601
|
+
h.forEach((y) => v(y, h));
|
|
602
|
+
},
|
|
603
|
+
close: b,
|
|
604
|
+
handleResize: Q
|
|
605
|
+
}), () => {
|
|
606
|
+
var T, D;
|
|
607
|
+
let h = (D = (T = a.default) == null ? void 0 : T.call(a)) != null ? D : [];
|
|
608
|
+
const y = [];
|
|
609
|
+
if (e.mode === "horizontal" && r.value) {
|
|
610
|
+
const j = Yt(h), x = s.value === -1 ? j : j.slice(0, s.value), E = s.value === -1 ? [] : j.slice(s.value);
|
|
611
|
+
E != null && E.length && e.ellipsis && (h = x, y.push(U(Ue, {
|
|
612
|
+
index: "sub-menu-more",
|
|
613
|
+
class: i.e("hide-arrow")
|
|
614
|
+
}, {
|
|
615
|
+
title: () => U(ot, {
|
|
616
|
+
class: i.e("icon-more")
|
|
617
|
+
}, { default: () => U(vt) }),
|
|
618
|
+
default: () => E
|
|
619
|
+
})));
|
|
620
|
+
}
|
|
621
|
+
const L = it(e, 0), m = U("ul", {
|
|
622
|
+
key: String(e.collapse),
|
|
623
|
+
role: "menubar",
|
|
624
|
+
ref: r,
|
|
625
|
+
style: L.value,
|
|
626
|
+
class: {
|
|
627
|
+
[u.b()]: !0,
|
|
628
|
+
[u.m(e.mode)]: !0,
|
|
629
|
+
[u.m("collapse")]: e.collapse
|
|
630
|
+
}
|
|
631
|
+
}, [...h, ...y]);
|
|
632
|
+
return e.collapseTransition && e.mode === "vertical" ? U(Bt, () => m) : m;
|
|
633
|
+
};
|
|
634
|
+
}
|
|
635
|
+
});
|
|
636
|
+
const Wt = Se({
|
|
637
|
+
index: {
|
|
638
|
+
type: Oe([String, null]),
|
|
639
|
+
default: null
|
|
640
|
+
},
|
|
641
|
+
route: {
|
|
642
|
+
type: Oe([String, Object])
|
|
643
|
+
},
|
|
644
|
+
disabled: Boolean
|
|
645
|
+
}), Zt = {
|
|
646
|
+
click: (e) => ae(e.index) && Array.isArray(e.indexPath)
|
|
647
|
+
}, xe = "ElMenuItem", Gt = G({
|
|
648
|
+
name: xe,
|
|
649
|
+
components: {
|
|
650
|
+
ElTooltip: Xe
|
|
651
|
+
},
|
|
652
|
+
props: Wt,
|
|
653
|
+
emits: Zt,
|
|
654
|
+
setup(e, { emit: n }) {
|
|
655
|
+
const a = Fe(), o = fe("rootMenu"), t = q("menu"), l = q("menu-item");
|
|
656
|
+
o || pe(xe, "can not inject root menu");
|
|
657
|
+
const { parentMenu: r, indexPath: u } = at(a, pt(e, "index")), i = fe(`subMenu:${r.value.uid}`);
|
|
658
|
+
i || pe(xe, "can not inject sub menu");
|
|
659
|
+
const s = O(() => e.index === o.activeIndex), d = Qe({
|
|
660
|
+
index: e.index,
|
|
661
|
+
indexPath: u,
|
|
662
|
+
active: s
|
|
663
|
+
}), g = () => {
|
|
664
|
+
e.disabled || (o.handleMenuItemClick({
|
|
665
|
+
index: e.index,
|
|
666
|
+
indexPath: u.value,
|
|
667
|
+
route: e.route
|
|
668
|
+
}), n("click", d));
|
|
669
|
+
};
|
|
670
|
+
return le(() => {
|
|
671
|
+
i.addSubMenu(d), o.addMenuItem(d);
|
|
672
|
+
}), et(() => {
|
|
673
|
+
i.removeSubMenu(d), o.removeMenuItem(d);
|
|
674
|
+
}), {
|
|
675
|
+
parentMenu: r,
|
|
676
|
+
rootMenu: o,
|
|
677
|
+
active: s,
|
|
678
|
+
nsMenu: t,
|
|
679
|
+
nsMenuItem: l,
|
|
680
|
+
handleClick: g
|
|
681
|
+
};
|
|
682
|
+
}
|
|
683
|
+
});
|
|
684
|
+
function Ht(e, n, a, o, t, l) {
|
|
685
|
+
const r = ft("el-tooltip");
|
|
686
|
+
return _(), R("li", {
|
|
687
|
+
class: re([
|
|
688
|
+
e.nsMenuItem.b(),
|
|
689
|
+
e.nsMenuItem.is("active", e.active),
|
|
690
|
+
e.nsMenuItem.is("disabled", e.disabled)
|
|
691
|
+
]),
|
|
692
|
+
role: "menuitem",
|
|
693
|
+
tabindex: "-1",
|
|
694
|
+
onClick: n[0] || (n[0] = (...u) => e.handleClick && e.handleClick(...u))
|
|
695
|
+
}, [
|
|
696
|
+
e.parentMenu.type.name === "ElMenu" && e.rootMenu.props.collapse && e.$slots.title ? (_(), ue(r, {
|
|
697
|
+
key: 0,
|
|
698
|
+
effect: e.rootMenu.props.popperEffect,
|
|
699
|
+
placement: "right",
|
|
700
|
+
"fallback-placements": ["left"],
|
|
701
|
+
persistent: ""
|
|
702
|
+
}, {
|
|
703
|
+
content: ee(() => [
|
|
704
|
+
X(e.$slots, "title")
|
|
705
|
+
]),
|
|
706
|
+
default: ee(() => [
|
|
707
|
+
te("div", {
|
|
708
|
+
class: re(e.nsMenu.be("tooltip", "trigger"))
|
|
709
|
+
}, [
|
|
710
|
+
X(e.$slots, "default")
|
|
711
|
+
], 2)
|
|
712
|
+
]),
|
|
713
|
+
_: 3
|
|
714
|
+
}, 8, ["effect"])) : (_(), R(ne, { key: 1 }, [
|
|
715
|
+
X(e.$slots, "default"),
|
|
716
|
+
X(e.$slots, "title")
|
|
717
|
+
], 64))
|
|
718
|
+
], 2);
|
|
719
|
+
}
|
|
720
|
+
var lt = /* @__PURE__ */ me(Gt, [["render", Ht], ["__file", "/home/runner/work/element-plus/element-plus/packages/components/menu/src/menu-item.vue"]]);
|
|
721
|
+
const Jt = {
|
|
722
|
+
title: String
|
|
723
|
+
}, Xt = "ElMenuItemGroup", qt = G({
|
|
724
|
+
name: Xt,
|
|
725
|
+
props: Jt,
|
|
726
|
+
setup() {
|
|
727
|
+
return {
|
|
728
|
+
ns: q("menu-item-group")
|
|
729
|
+
};
|
|
730
|
+
}
|
|
731
|
+
});
|
|
732
|
+
function Kt(e, n, a, o, t, l) {
|
|
733
|
+
return _(), R("li", {
|
|
734
|
+
class: re(e.ns.b())
|
|
735
|
+
}, [
|
|
736
|
+
te("div", {
|
|
737
|
+
class: re(e.ns.e("title"))
|
|
738
|
+
}, [
|
|
739
|
+
e.$slots.title ? X(e.$slots, "title", { key: 1 }) : (_(), R(ne, { key: 0 }, [
|
|
740
|
+
tt(ie(e.title), 1)
|
|
741
|
+
], 64))
|
|
742
|
+
], 2),
|
|
743
|
+
te("ul", null, [
|
|
744
|
+
X(e.$slots, "default")
|
|
745
|
+
])
|
|
746
|
+
], 2);
|
|
747
|
+
}
|
|
748
|
+
var st = /* @__PURE__ */ me(qt, [["render", Kt], ["__file", "/home/runner/work/element-plus/element-plus/packages/components/menu/src/menu-item-group.vue"]]);
|
|
749
|
+
const en = dt(Vt, {
|
|
750
|
+
MenuItem: lt,
|
|
751
|
+
MenuItemGroup: st,
|
|
752
|
+
SubMenu: Ue
|
|
753
|
+
}), tn = _e(lt);
|
|
754
|
+
_e(st);
|
|
755
|
+
_e(Ue);
|
|
756
|
+
const nn = { class: "st-kline-tips" }, on = { class: "st-kline-tips-row" }, an = /* @__PURE__ */ G({
|
|
757
|
+
__name: "index",
|
|
758
|
+
props: {
|
|
759
|
+
// 提示数据
|
|
760
|
+
data: {
|
|
761
|
+
type: Array,
|
|
762
|
+
default: () => []
|
|
763
|
+
}
|
|
764
|
+
},
|
|
765
|
+
setup(e) {
|
|
766
|
+
return (n, a) => (_(), R("div", nn, [
|
|
767
|
+
te("div", on, [
|
|
768
|
+
(_(!0), R(ne, null, De(e.data, (o) => (_(), R("div", {
|
|
769
|
+
class: "st-kline-tips-row-item",
|
|
770
|
+
style: Pe({ color: o.color })
|
|
771
|
+
}, ie(o.label) + " " + ie(o.value), 5))), 256))
|
|
772
|
+
])
|
|
773
|
+
]));
|
|
774
|
+
}
|
|
775
|
+
});
|
|
776
|
+
const Ae = /* @__PURE__ */ oe(an, [["__scopeId", "data-v-78aed210"]]), ln = /* @__PURE__ */ G({
|
|
777
|
+
__name: "index",
|
|
778
|
+
emits: ["closeContextMenuCallBack"],
|
|
779
|
+
setup(e, { emit: n }) {
|
|
780
|
+
const a = n, o = S(), t = S(), l = S({
|
|
781
|
+
display: "none",
|
|
782
|
+
top: "0px",
|
|
783
|
+
left: "0px"
|
|
784
|
+
}), r = () => {
|
|
785
|
+
l.value.display = "none", a("closeContextMenuCallBack"), document.removeEventListener("click", r);
|
|
786
|
+
}, u = (i) => {
|
|
787
|
+
if (i.preventDefault(), i.stopPropagation(), l.value.display === "block") {
|
|
788
|
+
const { offsetX: s, offsetY: d } = i, { offsetWidth: g, offsetHeight: M } = t.value;
|
|
789
|
+
if (s <= g && d <= M)
|
|
790
|
+
return;
|
|
791
|
+
}
|
|
792
|
+
o.value.click(), l.value = {
|
|
793
|
+
display: "block",
|
|
794
|
+
top: `${i.offsetY}px`,
|
|
795
|
+
left: `${i.offsetX}px`
|
|
796
|
+
}, Be(() => {
|
|
797
|
+
const { bottom: s, height: d, right: g, width: M } = t.value.getBoundingClientRect();
|
|
798
|
+
s > window.innerHeight ? l.value = {
|
|
799
|
+
display: "block",
|
|
800
|
+
top: `${i.offsetY - d}px`,
|
|
801
|
+
left: `${i.offsetX}px`
|
|
802
|
+
} : g > window.innerWidth && (l.value = {
|
|
803
|
+
display: "block",
|
|
804
|
+
top: `${i.offsetY}px`,
|
|
805
|
+
left: `${i.offsetX - M}px`
|
|
806
|
+
});
|
|
807
|
+
}), document.addEventListener("click", r);
|
|
808
|
+
};
|
|
809
|
+
return (i, s) => (_(), R("div", {
|
|
810
|
+
ref_key: "contextmenuRef",
|
|
811
|
+
ref: o,
|
|
812
|
+
class: "contextmenu",
|
|
813
|
+
onContextmenu: u,
|
|
814
|
+
onMouseleave: r
|
|
815
|
+
}, [
|
|
816
|
+
X(i.$slots, "default", {}, void 0, !0),
|
|
817
|
+
l.value.display !== "none" ? (_(), R("div", {
|
|
818
|
+
key: 0,
|
|
819
|
+
ref_key: "contextmenuContentRef",
|
|
820
|
+
ref: t,
|
|
821
|
+
class: "contextmenu-popover",
|
|
822
|
+
style: Pe(l.value)
|
|
823
|
+
}, [
|
|
824
|
+
X(i.$slots, "popover", {}, void 0, !0)
|
|
825
|
+
], 4)) : nt("", !0)
|
|
826
|
+
], 544));
|
|
827
|
+
}
|
|
828
|
+
});
|
|
829
|
+
const sn = /* @__PURE__ */ oe(ln, [["__scopeId", "data-v-249fd104"]]);
|
|
830
|
+
let Ze = !1, Ge = !0, He = [];
|
|
831
|
+
const Je = (e) => {
|
|
832
|
+
const n = [], a = [], o = [], t = [], l = [], r = [];
|
|
833
|
+
return e.forEach((u, i) => {
|
|
834
|
+
n.push(u[0]), a.push(u[1]), o.push(u[4]), t.push(u[2]), l.push(u[3]), r.push([u[1], u[4], u[3], u[2], Number(u[6]), i === 0 ? u[4] : e[i - 1][4]]);
|
|
835
|
+
}), { time: n, open: a, close: o, high: t, low: l, kLineData: r };
|
|
836
|
+
}, rn = async () => {
|
|
837
|
+
if (!Ze)
|
|
838
|
+
Ze = !0, await Tt("./talib.wasm"), Ge = !1, He.forEach((e) => {
|
|
839
|
+
e();
|
|
840
|
+
});
|
|
841
|
+
else if (Ge)
|
|
842
|
+
return new Promise((e) => {
|
|
843
|
+
He.push(e);
|
|
844
|
+
});
|
|
845
|
+
}, ze = (e, n) => e.length > n ? e.slice(e.length - n) : e, un = (e, n, a) => e.calculationFn ? e.calculationFn(It, n, a) : new Array(n.time.length).fill(null), Mn = async (e, n, a) => {
|
|
846
|
+
const o = Je(e);
|
|
847
|
+
let t = [];
|
|
848
|
+
return t = Je(t), await rn(), {
|
|
849
|
+
originData: ze(e, a),
|
|
850
|
+
kLine: ze(o.kLineData, a),
|
|
851
|
+
time: ze(o.time, a),
|
|
852
|
+
indicator: n.config.reduce((l, r) => (l.push({
|
|
853
|
+
key: r.key,
|
|
854
|
+
color: r.color,
|
|
855
|
+
data: ze(un(r, o, t), a)
|
|
856
|
+
}), l), [])
|
|
857
|
+
};
|
|
858
|
+
}, Ye = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNjgzNzAzMjM4NzI1IiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjI2MjUiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+PHBhdGggZD0iTTE5OC4wMTYgMTA5LjczODY2N0E3Ny44NjY2NjcgNzcuODY2NjY3IDAgMCAwIDE3MC42NjY2NjcgMTY3LjY4bDAuNTEyIDQxOC45NDRjMCAyMi44NjkzMzMgNi40IDQ4IDE5LjAyOTMzMyA3NS4zMDY2NjcgMTIuNjcyIDI3LjIyMTMzMyAyNy45ODkzMzMgNDguOTM4NjY3IDQ1Ljk1MiA2NC45Mzg2NjZsMjExLjE1NzMzMyAxODguMjAyNjY3YzE3LjA2NjY2NyAxNS40ODggNDAuNTc2IDIzLjk3ODY2NyA2NC45Mzg2NjcgMjMuNTk0NjY3IDI1LjY4NTMzMy0wLjA4NTMzMyA0Ny4zNi03LjkzNiA2NC45ODEzMzMtMjMuNTk0NjY3bDIxMS4yLTE4OC4yMDI2NjdjMTcuOTItMTYgMzMuMTk0NjY3LTM3LjYzMiA0NS44NjY2NjctNjQuOTM4NjY2IDEyLjY3Mi0yNy4zMDY2NjcgMTguNzczMzMzLTUyLjIyNCAxOC41MTczMzMtNzQuOTIyNjY3TDg1My4zMzMzMzMgMTY3LjI1MzMzM2MwLTIyLjI3Mi04Ljk2LTQxLjQ3Mi0yNi44MzczMzMtNTcuNDcyLTE3LjU3ODY2Ny0xNS42MTYtMzkuMzM4NjY3LTIzLjg5MzMzMy02NC45Mzg2NjctMjQuNDA1MzMzbC00OTkuMDI5MzMzIDAuNDY5MzMzYTkzLjMxMiA5My4zMTIgMCAwIDAtNjQuNTEyIDIzLjg5MzMzNHoiIGZpbGw9IiNGRjAwMDAiIHAtaWQ9IjI2MjYiPjwvcGF0aD48cGF0aCBkPSJNMTcwLjcwOTMzMyAxNjcuNzIyNjY3YzAuMTI4LTIxLjc2IDkuOTg0LTQyLjY2NjY2NyAyNy4zOTItNTcuOTQxMzM0YTkzLjMxMiA5My4zMTIgMCAwIDEgNjQuNDY5MzM0LTIzLjg5MzMzM0w3NjEuNiA4NS4zMzMzMzNjMjUuNiAwLjU1NDY2NyA0Ny4zNiA4Ljc4OTMzMyA2NC45Mzg2NjcgMjQuNDA1MzM0IDE3LjkyIDE2IDI2Ljg4IDM1LjIgMjYuODggNTcuNDcybC0wLjU1NDY2NyA0MTkuODRjMC4yOTg2NjcgMjIuNjk4NjY3LTUuODQ1MzMzIDQ3LjYxNi0xOC41MTczMzMgNzQuOTIyNjY2LTEyLjYyOTMzMyAyNy4zMDY2NjctMjcuOTQ2NjY3IDQ4Ljg5Ni00NS44MjQgNjQuODk2bC0yMTEuMjQyNjY3IDE4OC4yMDI2NjdjLTE3LjU3ODY2NyAxNS43MDEzMzMtMzkuMjUzMzMzIDIzLjUwOTMzMy02NC45Mzg2NjcgMjMuNTk0NjY3YTk0LjcyIDk0LjcyIDAgMCAxLTY0Ljk4MTMzMy0yMy41OTQ2NjdsLTIxMS4xNTczMzMtMTg4LjE2Yy0xNy45Mi0xNi4wNDI2NjctMzMuMjgtMzcuNzE3MzMzLTQ1LjkwOTMzNC02NC45ODEzMzMtMTIuNjcyLTI3LjMwNjY2Ny0xOS4wMjkzMzMtNTIuMzk0NjY3LTE5LjAyOTMzMy03NS4zMDY2NjdMMTcwLjY2NjY2NyAxNjcuNzIyNjY3eiBtNDIuNjY2NjY3IDAuMjU2bDAuNTU0NjY3IDQxOC42ODhjMCAxNi4yMTMzMzMgNC44MjEzMzMgMzUuMzI4IDE1LjAxODY2NiA1Ny4zNDQgMTAuMzY4IDIyLjI3MiAyMi4zNTczMzMgMzkuMjEwNjY3IDM1LjYyNjY2NyA1MS4wNzJsMjExLjQxMzMzMyAxODguNDE2YzguOTYgOC4xMDY2NjcgMjEuODg4IDEyLjggMzYuMjI0IDEyLjU0NCAxNS41MzA2NjctMC4wNDI2NjcgMjcuMDkzMzMzLTQuMjY2NjY3IDM2LjY5MzMzNC0xMi44bDIxMS4xNTczMzMtMTg4LjExNzMzNGMxMy4zMTItMTEuOTQ2NjY3IDI1LjMwMTMzMy0yOC44NDI2NjcgMzUuNTg0LTUxLjA3MiAxMC4xMTItMjEuODQ1MzMzIDE0Ljc2MjY2Ny00MC41NzYgMTQuNTA2NjY3LTU3LjA0NTMzM2wwLjU1NDY2Ni00MTkuNzU0NjY3YzAtOS44OTg2NjctMy41ODQtMTcuNjIxMzMzLTEyLjQ1ODY2Ni0yNS42YTU0LjY5ODY2NyA1NC42OTg2NjcgMCAwIDAtMzYuNjA4LTEzLjYxMDY2NmwtNDk5LjYyNjY2NyAwLjQ2OTMzM2E1MS4zMjggNTEuMzI4IDAgMCAwLTM1Ljc1NDY2NyAxMy4zMTIgMzYuNTY1MzMzIDM2LjU2NTMzMyAwIDAgMC0xMi41MDEzMzMgMjEuNDYxMzMzbC0wLjQyNjY2NyA0LjY5MzMzNHoiIGZpbGw9IiNBRTAwMDAiIHAtaWQ9IjI2MjciPjwvcGF0aD48cGF0aCBkPSJNMzg0IDY1NC4xMjI2NjdoMTUzLjUxNDY2N2M5Ni43NjggMCAxNDIuNzYyNjY3LTQ4Ljk4MTMzMyAxNDIuNzYyNjY2LTExNy4wNzczMzQgMC01OS43MzMzMzMtMzMuNDUwNjY3LTg4LjQwNTMzMy04NC44MjEzMzMtOTcuOTYyNjY2di0xLjc5MmM0OC45ODEzMzMtMTUuNTMwNjY3IDY2LjkwMTMzMy00Ni41OTIgNjYuOTAxMzMzLTg5LjYgMC02NS4xMDkzMzMtNDAuNjE4NjY3LTEwMy4zMzg2NjctMTM0Ljk5NzMzMy0xMDMuMzM4NjY3SDM4NHY0MDkuNzcwNjY3eiBtNzIuODc0NjY3LTU0Ljk1NDY2N3YtMTMxLjQxMzMzM2g2Ni4zMDRjNTEuOTY4IDAgODAuMDQyNjY3IDE3LjkyIDgwLjA0MjY2NiA2NS4xMDkzMzMgMCA0NC44LTI2LjI4MjY2NyA2Ni4zMDQtNzUuODYxMzMzIDY2LjMwNGgtNzAuNDg1MzMzeiBtMC0xODAuMzk0NjY3VjI5OC43MDkzMzNoNjAuMzMwNjY2YzQ3LjE4OTMzMyAwIDcyLjI3NzMzMyAxNC45MzMzMzMgNzIuMjc3MzM0IDU5LjEzNiAwIDQ2LjU5Mi0zMi4yNTYgNjAuOTI4LTc1LjI2NCA2MC45MjhoLTU3LjM0NHoiIGZpbGw9IiNGRkZGRkYiIHAtaWQ9IjI2MjgiPjwvcGF0aD48L3N2Zz4=", Ce = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNjgzNzAzMjQxNjY0IiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjI3NzciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+PHBhdGggZD0iTTE5OC4wMTYgMTA5LjczODY2N0E3Ny44NjY2NjcgNzcuODY2NjY3IDAgMCAwIDE3MC42NjY2NjcgMTY3LjY4bDAuNTEyIDQxOC45NDRjMCAyMi44NjkzMzMgNi40IDQ4IDE5LjAyOTMzMyA3NS4zMDY2NjcgMTIuNjcyIDI3LjIyMTMzMyAyNy45ODkzMzMgNDguOTM4NjY3IDQ1Ljk1MiA2NC45Mzg2NjZsMjExLjE1NzMzMyAxODguMjAyNjY3YzE3LjA2NjY2NyAxNS40ODggNDAuNTc2IDIzLjk3ODY2NyA2NC45Mzg2NjcgMjMuNTk0NjY3IDI1LjY4NTMzMy0wLjA4NTMzMyA0Ny4zNi03LjkzNiA2NC45ODEzMzMtMjMuNTk0NjY3bDIxMS4yLTE4OC4yMDI2NjdjMTcuOTItMTYgMzMuMTk0NjY3LTM3LjYzMiA0NS44NjY2NjctNjQuOTM4NjY2IDEyLjY3Mi0yNy4zMDY2NjcgMTguNzczMzMzLTUyLjIyNCAxOC41MTczMzMtNzQuOTIyNjY3TDg1My4zMzMzMzMgMTY3LjI1MzMzM2MwLTIyLjI3Mi04Ljk2LTQxLjQ3Mi0yNi44MzczMzMtNTcuNDcyLTE3LjU3ODY2Ny0xNS42MTYtMzkuMzM4NjY3LTIzLjg5MzMzMy02NC45Mzg2NjctMjQuNDA1MzMzbC00OTkuMDI5MzMzIDAuNDY5MzMzYTkzLjMxMiA5My4zMTIgMCAwIDAtNjQuNTEyIDIzLjg5MzMzNHoiIGZpbGw9IiM1NEFCMzAiIHAtaWQ9IjI3NzgiPjwvcGF0aD48cGF0aCBkPSJNMTcwLjY2NjY2NyAxNjcuNjhjMC4xMjgtMjEuNzYgOS45NDEzMzMtNDIuNjY2NjY3IDI3LjM0OTMzMy01Ny45NDEzMzNhOTMuMzEyIDkzLjMxMiAwIDAgMSA2NC41MTItMjMuODkzMzM0TDc2MS41NTczMzMgODUuMzMzMzMzYzI1LjYgMC41NTQ2NjcgNDcuMzYgOC43ODkzMzMgNjQuOTM4NjY3IDI0LjQwNTMzNCAxNy45MiAxNiAyNi44MzczMzMgMzUuMiAyNi44MzczMzMgNTcuNDcybC0wLjUxMiA0MTkuODRjMC4yOTg2NjcgMjIuNjU2LTUuODQ1MzMzIDQ3LjYxNi0xOC41MTczMzMgNzQuODgtMTIuNjcyIDI3LjMwNjY2Ny0yNy45NDY2NjcgNDguOTM4NjY3LTQ1Ljg2NjY2NyA2NC45Mzg2NjZsLTIxMS4yIDE4OC4yMDI2NjdjLTE3LjYyMTMzMyAxNS42NTg2NjctMzkuMjUzMzMzIDIzLjUwOTMzMy02NC45ODEzMzMgMjMuNTk0NjY3YTk0LjcyIDk0LjcyIDAgMCAxLTY0LjkzODY2Ny0yMy41OTQ2NjdsLTIxMS4yLTE4OC4yMDI2NjdjLTE3LjkyLTE2LTMzLjIzNzMzMy0zNy43MTczMzMtNDUuOTA5MzMzLTY0LjkzODY2Ni0xMi42MjkzMzMtMjcuMzA2NjY3LTE5LjAyOTMzMy01Mi40MzczMzMtMTkuMDI5MzMzLTc1LjMwNjY2N0wxNzAuNjY2NjY3IDE2Ny42OHogbTQyLjYyNCAwLjI1NmwwLjU1NDY2NiA0MTguNjg4YzAgMTYuMTcwNjY3IDQuODY0IDM1LjMyOCAxNS4wNjEzMzQgNTcuMzQ0IDEwLjM2OCAyMi4yNzIgMjIuMzE0NjY3IDM5LjE2OCAzNS42MjY2NjYgNTEuMDI5MzMzbDIxMS40MTMzMzQgMTg4LjQxNmM4Ljk2IDguMTA2NjY3IDIxLjg4OCAxMi44IDM2LjIyNCAxMi41ODY2NjcgMTUuNTMwNjY3LTAuMDQyNjY3IDI3LjA5MzMzMy00LjI2NjY2NyAzNi42OTMzMzMtMTIuOGwyMTEuMTE0NjY3LTE4OC4xNmMxMy4zNTQ2NjctMTEuOTQ2NjY3IDI1LjMwMTMzMy0yOC44NDI2NjcgMzUuNjI2NjY2LTUxLjA3MiAxMC4xMTItMjEuNzYgMTQuNzYyNjY3LTQwLjUzMzMzMyAxNC41MDY2NjctNTcuMDAyNjY3TDgxMC42NjY2NjcgMTY3LjIxMDY2N2MwLTkuODk4NjY3LTMuNTg0LTE3LjYyMTMzMy0xMi41MDEzMzQtMjUuNkE1NC42OTg2NjcgNTQuNjk4NjY3IDAgMCAwIDc2MS42IDEyOGwtNDk5LjYyNjY2NyAwLjQ2OTMzM2E1MS4zMjggNTEuMzI4IDAgMCAwLTM1Ljc1NDY2NiAxMy4yNjkzMzQgMzYuNTY1MzMzIDM2LjU2NTMzMyAwIDAgMC0xMi41MDEzMzQgMjEuNTA0bC0wLjQyNjY2NiA0LjY5MzMzM3oiIGZpbGw9IiMzODhEMTQiIHAtaWQ9IjI3NzkiPjwvcGF0aD48cGF0aCBkPSJNNTA2LjQ1MzMzMyA2NzQuNzMwNjY3Yzk5LjE1NzMzMyAwIDE0Ni4zNDY2NjctNDguMzg0IDE0Ni4zNDY2NjctMTI2LjAzNzMzNCAwLTcyLjg3NDY2Ny0zOC44MjY2NjctOTkuNzU0NjY3LTEwMy4zMzg2NjctMTE4LjI3MmwtMzguMjI5MzMzLTExLjk0NjY2NmMtNDAuNjE4NjY3LTExLjM0OTMzMy01Mi41NjUzMzMtMjUuMDg4LTUyLjU2NTMzMy01Ny4zNDQgMC0zMi44NTMzMzMgMjMuODkzMzMzLTUwLjc3MzMzMyA2Ni45MDEzMzMtNTAuNzczMzM0IDQ1LjM5NzMzMyAwIDc4Ljg0OCA5LjU1NzMzMyAxMDQuNTMzMzMzIDIwLjMwOTMzNFYyNzMuMzIyNjY3Yy0yMi42OTg2NjctMTEuOTQ2NjY3LTUxLjk2OC0yMi4xMDEzMzMtMTA1LjcyOC0yMi4xMDEzMzQtOTIuNTg2NjY3IDAtMTM3LjM4NjY2NyA0Ny4xODkzMzMtMTM3LjM4NjY2NiAxMTYuNDggMCA2OS4yOTA2NjcgMzUuMjQyNjY3IDEwMC4zNTIgOTMuMTg0IDExNi40OGwzOC44MjY2NjYgMTAuNzUyYzQ0LjggMTMuNzM4NjY3IDU5LjczMzMzMyAyNi44OCA1OS43MzMzMzQgNjAuOTI4IDAgMzcuMDM0NjY3LTIzLjI5NiA1OS43MzMzMzMtNzguMjUwNjY3IDU5LjczMzMzNC00NC44IDAtODMuNjI2NjY3LTEwLjc1Mi0xMTYuNDgtMjUuMDg4djU3Ljk0MTMzM2MyOC4wNzQ2NjcgMTQuOTMzMzMzIDY4LjY5MzMzMyAyNi4yODI2NjcgMTIyLjQ1MzMzMyAyNi4yODI2Njd6IiBmaWxsPSIjRkZGRkZGIiBwLWlkPSIyNzgwIj48L3BhdGg+PC9zdmc+", be = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNjgzNzAzMjI4MjAyIiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjMwNzgiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+PHBhdGggZD0iTTE5OC4wMTYgMTA5LjczODY2N0E3Ny44NjY2NjcgNzcuODY2NjY3IDAgMCAwIDE3MC42NjY2NjcgMTY3LjY4bDAuNTEyIDQxOC45NDRjMCAyMi44NjkzMzMgNi40IDQ4IDE5LjAyOTMzMyA3NS4zMDY2NjcgMTIuNjcyIDI3LjIyMTMzMyAyNy45ODkzMzMgNDguOTM4NjY3IDQ1Ljk1MiA2NC45Mzg2NjZsMjExLjE1NzMzMyAxODguMjAyNjY3YzE3LjA2NjY2NyAxNS40ODggNDAuNTc2IDIzLjk3ODY2NyA2NC45Mzg2NjcgMjMuNTk0NjY3IDI1LjY4NTMzMy0wLjA4NTMzMyA0Ny4zNi03LjkzNiA2NC45ODEzMzMtMjMuNTk0NjY3bDIxMS4yLTE4OC4yMDI2NjdjMTcuOTItMTYgMzMuMTk0NjY3LTM3LjYzMiA0NS44NjY2NjctNjQuOTM4NjY2IDEyLjY3Mi0yNy4zMDY2NjcgMTguNzczMzMzLTUyLjIyNCAxOC41MTczMzMtNzQuOTIyNjY3TDg1My4zMzMzMzMgMTY3LjI1MzMzM2MwLTIyLjI3Mi04Ljk2LTQxLjQ3Mi0yNi44MzczMzMtNTcuNDcyLTE3LjU3ODY2Ny0xNS42MTYtMzkuMzM4NjY3LTIzLjg5MzMzMy02NC45Mzg2NjctMjQuNDA1MzMzbC00OTkuMDI5MzMzIDAuNDY5MzMzYTkzLjMxMiA5My4zMTIgMCAwIDAtNjQuNTEyIDIzLjg5MzMzNHoiIGZpbGw9IiNDODgwRkYiIHAtaWQ9IjMwNzkiPjwvcGF0aD48cGF0aCBkPSJNMTcwLjY2NjY2NyAxNjcuNjhjMC4xMjgtMjEuNzYgOS45NDEzMzMtNDIuNjY2NjY3IDI3LjM0OTMzMy01Ny45NDEzMzNhOTMuMzEyIDkzLjMxMiAwIDAgMSA2NC41MTItMjMuODkzMzM0TDc2MS41NTczMzMgODUuMzMzMzMzYzI1LjYgMC41NTQ2NjcgNDcuMzYgOC43ODkzMzMgNjQuOTM4NjY3IDI0LjQwNTMzNCAxNy45MiAxNiAyNi44MzczMzMgMzUuMiAyNi44MzczMzMgNTcuNDcybC0wLjUxMiA0MTkuODRjMC4yOTg2NjcgMjIuNjU2LTUuODQ1MzMzIDQ3LjYxNi0xOC41MTczMzMgNzQuODgtMTIuNjcyIDI3LjMwNjY2Ny0yNy45NDY2NjcgNDguOTM4NjY3LTQ1Ljg2NjY2NyA2NC45Mzg2NjZsLTIxMS4yIDE4OC4yMDI2NjdjLTE3LjYyMTMzMyAxNS42NTg2NjctMzkuMjUzMzMzIDIzLjUwOTMzMy02NC45ODEzMzMgMjMuNTk0NjY3YTk0LjcyIDk0LjcyIDAgMCAxLTY0LjkzODY2Ny0yMy41OTQ2NjdsLTIxMS4yLTE4OC4yMDI2NjdjLTE3LjkyLTE2LTMzLjIzNzMzMy0zNy43MTczMzMtNDUuOTA5MzMzLTY0LjkzODY2Ni0xMi42MjkzMzMtMjcuMzA2NjY3LTE5LjAyOTMzMy01Mi40MzczMzMtMTkuMDI5MzMzLTc1LjMwNjY2N0wxNzAuNjY2NjY3IDE2Ny42OHogbTQyLjYyNCAwLjI1NmwwLjU1NDY2NiA0MTguNjg4YzAgMTYuMTcwNjY3IDQuODY0IDM1LjMyOCAxNS4wNjEzMzQgNTcuMzQ0IDEwLjM2OCAyMi4yNzIgMjIuMzE0NjY3IDM5LjE2OCAzNS42MjY2NjYgNTEuMDI5MzMzbDIxMS40MTMzMzQgMTg4LjQxNmM4Ljk2IDguMTA2NjY3IDIxLjg4OCAxMi44IDM2LjIyNCAxMi41ODY2NjcgMTUuNTMwNjY3LTAuMDQyNjY3IDI3LjA5MzMzMy00LjI2NjY2NyAzNi42OTMzMzMtMTIuOGwyMTEuMTE0NjY3LTE4OC4xNmMxMy4zNTQ2NjctMTEuOTQ2NjY3IDI1LjMwMTMzMy0yOC44NDI2NjcgMzUuNjI2NjY2LTUxLjA3MiAxMC4xMTItMjEuNzYgMTQuNzYyNjY3LTQwLjUzMzMzMyAxNC41MDY2NjctNTcuMDAyNjY3TDgxMC42NjY2NjcgMTY3LjIxMDY2N2MwLTkuODk4NjY3LTMuNTg0LTE3LjYyMTMzMy0xMi41MDEzMzQtMjUuNkE1NC42OTg2NjcgNTQuNjk4NjY3IDAgMCAwIDc2MS42IDEyOGwtNDk5LjYyNjY2NyAwLjQ2OTMzM2E1MS4zMjggNTEuMzI4IDAgMCAwLTM1Ljc1NDY2NiAxMy4yNjkzMzQgMzYuNTY1MzMzIDM2LjU2NTMzMyAwIDAgMC0xMi41MDEzMzQgMjEuNTA0bC0wLjQyNjY2NiA0LjY5MzMzM3oiIGZpbGw9IiNBRTQ0RkYiIHAtaWQ9IjMwODAiPjwvcGF0aD48cGF0aCBkPSJNNDc1LjMwNjY2NyA2NTguMjE4NjY3aDczLjQ3MlYzMDYuMzg5MzMzaDExNi40OFYyNDguNDQ4aC0zMDcuNjI2NjY3djU3Ljk0MTMzM2gxMTcuNjc0NjY3eiIgZmlsbD0iI0ZGRkZGRiIgcC1pZD0iMzA4MSI+PC9wYXRoPjwvc3ZnPg==", se = (e, n) => {
|
|
859
|
+
const { type: a = "log", color: o = "black" } = n ?? {};
|
|
860
|
+
localStorage.getItem("st-kline-console-show") === "true" && console[a](`%c${e}`, `color:${o}`);
|
|
861
|
+
}, $ = (e) => e || e === 0 ? Math.round(e * 1e3) / 1e3 : null, cn = (e) => e >= 1e12 ? `${(e / 1e12).toFixed(2)}万亿` : e >= 1e8 ? `${(e / 1e8).toFixed(2)}亿` : e >= 1e4 ? `${(e / 1e4).toFixed(2)}万` : e.toFixed(2), dn = (e) => {
|
|
862
|
+
const { y: n, text: a, info: o, gridLeft: t, gridRight: l, echartsWidth: r, echartsInstance: u } = e, { config: i, event: s } = o;
|
|
863
|
+
let d = 0;
|
|
864
|
+
return {
|
|
865
|
+
type: "group",
|
|
866
|
+
draggable: i.draggable ? "vertical" : !1,
|
|
867
|
+
children: [
|
|
868
|
+
{
|
|
869
|
+
type: "line",
|
|
870
|
+
info: o,
|
|
871
|
+
shape: {
|
|
872
|
+
x1: t,
|
|
873
|
+
y1: n,
|
|
874
|
+
x2: r - l,
|
|
875
|
+
y2: n
|
|
876
|
+
},
|
|
877
|
+
style: {
|
|
878
|
+
stroke: i.lineColor,
|
|
879
|
+
lineWidth: 1,
|
|
880
|
+
lineDash: [8, 4]
|
|
881
|
+
},
|
|
882
|
+
z: 10
|
|
883
|
+
},
|
|
884
|
+
{
|
|
885
|
+
type: "group",
|
|
886
|
+
x: r,
|
|
887
|
+
y: n - 5,
|
|
888
|
+
children: [
|
|
889
|
+
{
|
|
890
|
+
type: "text",
|
|
891
|
+
left: -1 * l,
|
|
892
|
+
info: o,
|
|
893
|
+
style: {
|
|
894
|
+
fill: i.textColor,
|
|
895
|
+
text: a,
|
|
896
|
+
stroke: "#000",
|
|
897
|
+
lineWidth: 1,
|
|
898
|
+
opacity: 1
|
|
899
|
+
},
|
|
900
|
+
z: 10
|
|
901
|
+
}
|
|
902
|
+
]
|
|
903
|
+
}
|
|
904
|
+
],
|
|
905
|
+
// 事件:鼠标滑入
|
|
906
|
+
onmouseover: (g) => {
|
|
907
|
+
s.onmouseover instanceof Function && s.onmouseover(g, o);
|
|
908
|
+
},
|
|
909
|
+
// 事件:鼠标滑出
|
|
910
|
+
onmouseout: (g) => {
|
|
911
|
+
s.onmouseout instanceof Function && s.onmouseout(g, o);
|
|
912
|
+
},
|
|
913
|
+
// 事件:开始拖拽
|
|
914
|
+
ondragstart: (g) => {
|
|
915
|
+
s.ondragstart instanceof Function && i.draggable && (d = g.offsetY, s.ondragstart(g, o));
|
|
916
|
+
},
|
|
917
|
+
// 事件:结束拖拽
|
|
918
|
+
ondragend: (g) => {
|
|
919
|
+
if (s.ondragend instanceof Function && i.draggable) {
|
|
920
|
+
const N = g.offsetY - d;
|
|
921
|
+
if (N === 0)
|
|
922
|
+
return;
|
|
923
|
+
const I = u.convertFromPixel({ yAxisIndex: 0 }, n + N);
|
|
924
|
+
s.ondragend(g, o, I);
|
|
925
|
+
}
|
|
926
|
+
}
|
|
927
|
+
};
|
|
928
|
+
}, Nn = (e) => {
|
|
929
|
+
const { y: n, text: a, info: o, gridLeft: t, gridRight: l, echartsWidth: r, echartsInstance: u } = e, { config: i, event: s } = o;
|
|
930
|
+
let d = 0;
|
|
931
|
+
const g = (N) => {
|
|
932
|
+
let I = null;
|
|
933
|
+
N.target.type === "line" ? I = N.target.parent : N.target.type === "tspan" && (I = N.target.parent.parent.parent), I.children()[1].children()[0].animate("style", !1).when(200, { opacity: 1 }).start();
|
|
934
|
+
}, M = (N) => {
|
|
935
|
+
let I = null;
|
|
936
|
+
N.target.type === "line" ? I = N.target.parent : N.target.type === "tspan" && (I = N.target.parent.parent.parent), I.children()[1].children()[0].animate("style", !1).when(200, { opacity: 0 }).start();
|
|
937
|
+
};
|
|
938
|
+
return {
|
|
939
|
+
type: "group",
|
|
940
|
+
draggable: i.draggable ? "vertical" : !1,
|
|
941
|
+
// 是否支持拖拽
|
|
942
|
+
children: [
|
|
943
|
+
{
|
|
944
|
+
type: "line",
|
|
945
|
+
info: o,
|
|
946
|
+
shape: {
|
|
947
|
+
x1: t,
|
|
948
|
+
y1: n,
|
|
949
|
+
x2: r - l,
|
|
950
|
+
y2: n
|
|
951
|
+
},
|
|
952
|
+
style: {
|
|
953
|
+
stroke: i.lineColor,
|
|
954
|
+
lineWidth: 1
|
|
955
|
+
},
|
|
956
|
+
z: 10
|
|
957
|
+
},
|
|
958
|
+
{
|
|
959
|
+
type: "group",
|
|
960
|
+
x: r / 2,
|
|
961
|
+
y: n - 5,
|
|
962
|
+
children: [
|
|
963
|
+
{
|
|
964
|
+
type: "text",
|
|
965
|
+
left: "center",
|
|
966
|
+
info: o,
|
|
967
|
+
style: {
|
|
968
|
+
fill: i.textColor,
|
|
969
|
+
text: a,
|
|
970
|
+
stroke: "#000",
|
|
971
|
+
lineWidth: 1,
|
|
972
|
+
opacity: 0
|
|
973
|
+
//隐藏文本
|
|
974
|
+
},
|
|
975
|
+
z: 10
|
|
976
|
+
}
|
|
977
|
+
]
|
|
978
|
+
}
|
|
979
|
+
],
|
|
980
|
+
// 事件:鼠标滑入
|
|
981
|
+
onmouseover: (N) => {
|
|
982
|
+
s.onmouseover instanceof Function ? s.onmouseover(N, o) : g(N);
|
|
983
|
+
},
|
|
984
|
+
// 事件:鼠标滑出
|
|
985
|
+
onmouseout: (N) => {
|
|
986
|
+
s.onmouseout instanceof Function ? s.onmouseout(N, o) : M(N);
|
|
987
|
+
},
|
|
988
|
+
// 事件:开始拖拽
|
|
989
|
+
ondragstart: (N) => {
|
|
990
|
+
s.ondragstart instanceof Function && i.draggable && (d = N.offsetY, s.ondragstart(N, o));
|
|
991
|
+
},
|
|
992
|
+
// 事件:结束拖拽
|
|
993
|
+
ondragend: (N) => {
|
|
994
|
+
if (s.ondragend instanceof Function && i.draggable) {
|
|
995
|
+
const c = N.offsetY - d;
|
|
996
|
+
if (c === 0)
|
|
997
|
+
return;
|
|
998
|
+
const v = u.convertFromPixel({ yAxisIndex: 0 }, n + c);
|
|
999
|
+
s.ondragend(N, o, v);
|
|
1000
|
+
}
|
|
1001
|
+
}
|
|
1002
|
+
};
|
|
1003
|
+
}, yn = (e) => {
|
|
1004
|
+
const { y: n, text: a, profitY: o, profitText: t, lossY: l, lossText: r, info: u, gridLeft: i, gridRight: s, echartsWidth: d, echartsInstance: g } = e, { config: M, event: N } = u;
|
|
1005
|
+
let I = 0, c = null, v = null;
|
|
1006
|
+
const b = (z, p) => {
|
|
1007
|
+
var f, A, C, Q;
|
|
1008
|
+
(f = z.children()[2]) == null || f.animate("style", !1).when(200, { opacity: ~~p }).start(), (A = z.children()[3].children()[0]) == null || A.animate("style", !1).when(200, { opacity: ~~p }).start(), (C = z.children()[4]) == null || C.animate("style", !1).when(200, { opacity: ~~p }).start(), (Q = z.children()[5].children()[0]) == null || Q.animate("style", !1).when(200, { opacity: ~~p }).start();
|
|
1009
|
+
}, k = (z) => {
|
|
1010
|
+
let p = null;
|
|
1011
|
+
z.target.type === "line" ? p = z.target.parent : z.target.type === "tspan" && (p = z.target.parent.parent.parent), c = (f) => {
|
|
1012
|
+
f.preventDefault(), (f.code === "AltLeft" || f.code === "AltRight") && b(p, !0);
|
|
1013
|
+
}, v = (f) => {
|
|
1014
|
+
(f.code === "AltLeft" || f.code === "AltRight") && b(p, !1);
|
|
1015
|
+
}, window.addEventListener("keydown", c), window.addEventListener("keyup", v);
|
|
1016
|
+
}, B = (z) => {
|
|
1017
|
+
let p = null;
|
|
1018
|
+
z.target.type === "line" ? p = z.target.parent : z.target.type === "tspan" && (p = z.target.parent.parent.parent), b(p, !1), window.removeEventListener("keydown", c), window.removeEventListener("keyup", v);
|
|
1019
|
+
};
|
|
1020
|
+
return {
|
|
1021
|
+
type: "group",
|
|
1022
|
+
draggable: M.draggable ? "vertical" : !1,
|
|
1023
|
+
// 是否支持拖拽
|
|
1024
|
+
children: [
|
|
1025
|
+
// 条件单-主线
|
|
1026
|
+
{
|
|
1027
|
+
type: "line",
|
|
1028
|
+
info: u,
|
|
1029
|
+
shape: {
|
|
1030
|
+
x1: i,
|
|
1031
|
+
y1: n,
|
|
1032
|
+
x2: d - s,
|
|
1033
|
+
y2: n
|
|
1034
|
+
},
|
|
1035
|
+
style: {
|
|
1036
|
+
stroke: M.lineColor,
|
|
1037
|
+
lineWidth: 1
|
|
1038
|
+
},
|
|
1039
|
+
z: 10
|
|
1040
|
+
},
|
|
1041
|
+
// 条件单-文本内容
|
|
1042
|
+
{
|
|
1043
|
+
type: "group",
|
|
1044
|
+
x: d / 2,
|
|
1045
|
+
y: n - 5,
|
|
1046
|
+
children: [
|
|
1047
|
+
{
|
|
1048
|
+
type: "text",
|
|
1049
|
+
left: "center",
|
|
1050
|
+
info: u,
|
|
1051
|
+
style: {
|
|
1052
|
+
fill: M.textColor,
|
|
1053
|
+
// 填充色
|
|
1054
|
+
text: a,
|
|
1055
|
+
stroke: "#000",
|
|
1056
|
+
// 线条颜色
|
|
1057
|
+
lineWidth: 1,
|
|
1058
|
+
opacity: 1
|
|
1059
|
+
//直接展示文本
|
|
1060
|
+
},
|
|
1061
|
+
z: 10
|
|
1062
|
+
}
|
|
1063
|
+
]
|
|
1064
|
+
},
|
|
1065
|
+
// 条件单-止盈线
|
|
1066
|
+
{
|
|
1067
|
+
type: "line",
|
|
1068
|
+
info: u,
|
|
1069
|
+
shape: {
|
|
1070
|
+
x1: i,
|
|
1071
|
+
y1: o,
|
|
1072
|
+
x2: d - s,
|
|
1073
|
+
y2: o
|
|
1074
|
+
},
|
|
1075
|
+
style: {
|
|
1076
|
+
stroke: M.profitLineColor,
|
|
1077
|
+
lineWidth: 1,
|
|
1078
|
+
lineDash: [8, 4],
|
|
1079
|
+
opacity: 0
|
|
1080
|
+
},
|
|
1081
|
+
z: 10
|
|
1082
|
+
},
|
|
1083
|
+
// 条件单-止盈线文本内容
|
|
1084
|
+
{
|
|
1085
|
+
type: "group",
|
|
1086
|
+
x: d / 2,
|
|
1087
|
+
y: o - 5,
|
|
1088
|
+
children: [
|
|
1089
|
+
{
|
|
1090
|
+
type: "text",
|
|
1091
|
+
left: "center",
|
|
1092
|
+
info: u,
|
|
1093
|
+
style: {
|
|
1094
|
+
fill: M.profitTextColor,
|
|
1095
|
+
text: t,
|
|
1096
|
+
stroke: "#000",
|
|
1097
|
+
lineWidth: 1,
|
|
1098
|
+
opacity: 0
|
|
1099
|
+
},
|
|
1100
|
+
z: 10
|
|
1101
|
+
}
|
|
1102
|
+
]
|
|
1103
|
+
},
|
|
1104
|
+
// 条件单-止损线
|
|
1105
|
+
{
|
|
1106
|
+
type: "line",
|
|
1107
|
+
info: u,
|
|
1108
|
+
shape: {
|
|
1109
|
+
x1: i,
|
|
1110
|
+
y1: l,
|
|
1111
|
+
x2: d - s,
|
|
1112
|
+
y2: l
|
|
1113
|
+
},
|
|
1114
|
+
style: {
|
|
1115
|
+
stroke: M.lossLineColor,
|
|
1116
|
+
lineWidth: 1,
|
|
1117
|
+
lineDash: [8, 4],
|
|
1118
|
+
opacity: 0
|
|
1119
|
+
},
|
|
1120
|
+
z: 10
|
|
1121
|
+
},
|
|
1122
|
+
// 条件单-止损线文本内容
|
|
1123
|
+
{
|
|
1124
|
+
type: "group",
|
|
1125
|
+
x: d / 2,
|
|
1126
|
+
y: l - 5,
|
|
1127
|
+
children: [
|
|
1128
|
+
{
|
|
1129
|
+
type: "text",
|
|
1130
|
+
left: "center",
|
|
1131
|
+
info: u,
|
|
1132
|
+
style: {
|
|
1133
|
+
fill: M.lossTextColor,
|
|
1134
|
+
text: r,
|
|
1135
|
+
stroke: "#000",
|
|
1136
|
+
lineWidth: 1,
|
|
1137
|
+
opacity: 0
|
|
1138
|
+
},
|
|
1139
|
+
z: 10
|
|
1140
|
+
}
|
|
1141
|
+
]
|
|
1142
|
+
}
|
|
1143
|
+
],
|
|
1144
|
+
// 事件:鼠标滑入
|
|
1145
|
+
onmouseover: (z) => {
|
|
1146
|
+
N.onmouseover instanceof Function ? N.onmouseover(z, u) : k(z);
|
|
1147
|
+
},
|
|
1148
|
+
// 事件:鼠标滑出
|
|
1149
|
+
onmouseout: (z) => {
|
|
1150
|
+
N.onmouseout instanceof Function ? N.onmouseout(z, u) : B(z);
|
|
1151
|
+
},
|
|
1152
|
+
// 事件:开始拖拽
|
|
1153
|
+
ondragstart: (z) => {
|
|
1154
|
+
N.ondragstart instanceof Function && M.draggable && (I = z.offsetY, N.ondragstart(z, u));
|
|
1155
|
+
},
|
|
1156
|
+
// 事件:结束拖拽
|
|
1157
|
+
ondragend: (z) => {
|
|
1158
|
+
if (N.ondragend instanceof Function && M.draggable) {
|
|
1159
|
+
const f = z.offsetY - I;
|
|
1160
|
+
if (f === 0)
|
|
1161
|
+
return;
|
|
1162
|
+
const A = g.convertFromPixel({ yAxisIndex: 0 }, n + f);
|
|
1163
|
+
N.ondragend(z, u, A);
|
|
1164
|
+
}
|
|
1165
|
+
}
|
|
1166
|
+
};
|
|
1167
|
+
}, Ie = (e, n) => {
|
|
1168
|
+
const { direction: a = "", tradeAction: o = "", tradeType: t = "" } = e;
|
|
1169
|
+
if (n === "sellBuy") {
|
|
1170
|
+
const l = t ?? a + o;
|
|
1171
|
+
return (/* @__PURE__ */ new Map([
|
|
1172
|
+
["开多", "买"],
|
|
1173
|
+
["平多", "卖"],
|
|
1174
|
+
["开空", "卖"],
|
|
1175
|
+
["平空", "买"]
|
|
1176
|
+
])).get(l);
|
|
1177
|
+
} else if (n === "openClose")
|
|
1178
|
+
return t ?? a + o;
|
|
1179
|
+
}, zn = (e, n) => e.reduce((a, o) => {
|
|
1180
|
+
var d;
|
|
1181
|
+
const t = Ie(o, "sellBuy"), l = e.filter((g) => g.time === o.time);
|
|
1182
|
+
let r = "image://" + new URL((/* @__PURE__ */ Object.assign({ "./images/buy.svg": Ye, "./images/sell.svg": Ce, "./images/t.svg": be }))[`./images/${t === "买" ? "buy" : "sell"}.svg`], self.location).href;
|
|
1183
|
+
l.length > 1 ? [...new Set(l.map((M) => Ie(M, "sellBuy")))].length > 1 ? r = "image://" + new URL("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNjgzNzAzMjI4MjAyIiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjMwNzgiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+PHBhdGggZD0iTTE5OC4wMTYgMTA5LjczODY2N0E3Ny44NjY2NjcgNzcuODY2NjY3IDAgMCAwIDE3MC42NjY2NjcgMTY3LjY4bDAuNTEyIDQxOC45NDRjMCAyMi44NjkzMzMgNi40IDQ4IDE5LjAyOTMzMyA3NS4zMDY2NjcgMTIuNjcyIDI3LjIyMTMzMyAyNy45ODkzMzMgNDguOTM4NjY3IDQ1Ljk1MiA2NC45Mzg2NjZsMjExLjE1NzMzMyAxODguMjAyNjY3YzE3LjA2NjY2NyAxNS40ODggNDAuNTc2IDIzLjk3ODY2NyA2NC45Mzg2NjcgMjMuNTk0NjY3IDI1LjY4NTMzMy0wLjA4NTMzMyA0Ny4zNi03LjkzNiA2NC45ODEzMzMtMjMuNTk0NjY3bDIxMS4yLTE4OC4yMDI2NjdjMTcuOTItMTYgMzMuMTk0NjY3LTM3LjYzMiA0NS44NjY2NjctNjQuOTM4NjY2IDEyLjY3Mi0yNy4zMDY2NjcgMTguNzczMzMzLTUyLjIyNCAxOC41MTczMzMtNzQuOTIyNjY3TDg1My4zMzMzMzMgMTY3LjI1MzMzM2MwLTIyLjI3Mi04Ljk2LTQxLjQ3Mi0yNi44MzczMzMtNTcuNDcyLTE3LjU3ODY2Ny0xNS42MTYtMzkuMzM4NjY3LTIzLjg5MzMzMy02NC45Mzg2NjctMjQuNDA1MzMzbC00OTkuMDI5MzMzIDAuNDY5MzMzYTkzLjMxMiA5My4zMTIgMCAwIDAtNjQuNTEyIDIzLjg5MzMzNHoiIGZpbGw9IiNDODgwRkYiIHAtaWQ9IjMwNzkiPjwvcGF0aD48cGF0aCBkPSJNMTcwLjY2NjY2NyAxNjcuNjhjMC4xMjgtMjEuNzYgOS45NDEzMzMtNDIuNjY2NjY3IDI3LjM0OTMzMy01Ny45NDEzMzNhOTMuMzEyIDkzLjMxMiAwIDAgMSA2NC41MTItMjMuODkzMzM0TDc2MS41NTczMzMgODUuMzMzMzMzYzI1LjYgMC41NTQ2NjcgNDcuMzYgOC43ODkzMzMgNjQuOTM4NjY3IDI0LjQwNTMzNCAxNy45MiAxNiAyNi44MzczMzMgMzUuMiAyNi44MzczMzMgNTcuNDcybC0wLjUxMiA0MTkuODRjMC4yOTg2NjcgMjIuNjU2LTUuODQ1MzMzIDQ3LjYxNi0xOC41MTczMzMgNzQuODgtMTIuNjcyIDI3LjMwNjY2Ny0yNy45NDY2NjcgNDguOTM4NjY3LTQ1Ljg2NjY2NyA2NC45Mzg2NjZsLTIxMS4yIDE4OC4yMDI2NjdjLTE3LjYyMTMzMyAxNS42NTg2NjctMzkuMjUzMzMzIDIzLjUwOTMzMy02NC45ODEzMzMgMjMuNTk0NjY3YTk0LjcyIDk0LjcyIDAgMCAxLTY0LjkzODY2Ny0yMy41OTQ2NjdsLTIxMS4yLTE4OC4yMDI2NjdjLTE3LjkyLTE2LTMzLjIzNzMzMy0zNy43MTczMzMtNDUuOTA5MzMzLTY0LjkzODY2Ni0xMi42MjkzMzMtMjcuMzA2NjY3LTE5LjAyOTMzMy01Mi40MzczMzMtMTkuMDI5MzMzLTc1LjMwNjY2N0wxNzAuNjY2NjY3IDE2Ny42OHogbTQyLjYyNCAwLjI1NmwwLjU1NDY2NiA0MTguNjg4YzAgMTYuMTcwNjY3IDQuODY0IDM1LjMyOCAxNS4wNjEzMzQgNTcuMzQ0IDEwLjM2OCAyMi4yNzIgMjIuMzE0NjY3IDM5LjE2OCAzNS42MjY2NjYgNTEuMDI5MzMzbDIxMS40MTMzMzQgMTg4LjQxNmM4Ljk2IDguMTA2NjY3IDIxLjg4OCAxMi44IDM2LjIyNCAxMi41ODY2NjcgMTUuNTMwNjY3LTAuMDQyNjY3IDI3LjA5MzMzMy00LjI2NjY2NyAzNi42OTMzMzMtMTIuOGwyMTEuMTE0NjY3LTE4OC4xNmMxMy4zNTQ2NjctMTEuOTQ2NjY3IDI1LjMwMTMzMy0yOC44NDI2NjcgMzUuNjI2NjY2LTUxLjA3MiAxMC4xMTItMjEuNzYgMTQuNzYyNjY3LTQwLjUzMzMzMyAxNC41MDY2NjctNTcuMDAyNjY3TDgxMC42NjY2NjcgMTY3LjIxMDY2N2MwLTkuODk4NjY3LTMuNTg0LTE3LjYyMTMzMy0xMi41MDEzMzQtMjUuNkE1NC42OTg2NjcgNTQuNjk4NjY3IDAgMCAwIDc2MS42IDEyOGwtNDk5LjYyNjY2NyAwLjQ2OTMzM2E1MS4zMjggNTEuMzI4IDAgMCAwLTM1Ljc1NDY2NiAxMy4yNjkzMzQgMzYuNTY1MzMzIDM2LjU2NTMzMyAwIDAgMC0xMi41MDEzMzQgMjEuNTA0bC0wLjQyNjY2NiA0LjY5MzMzM3oiIGZpbGw9IiNBRTQ0RkYiIHAtaWQ9IjMwODAiPjwvcGF0aD48cGF0aCBkPSJNNDc1LjMwNjY2NyA2NTguMjE4NjY3aDczLjQ3MlYzMDYuMzg5MzMzaDExNi40OFYyNDguNDQ4aC0zMDcuNjI2NjY3djU3Ljk0MTMzM2gxMTcuNjc0NjY3eiIgZmlsbD0iI0ZGRkZGRiIgcC1pZD0iMzA4MSI+PC9wYXRoPjwvc3ZnPg==", self.location).href : r = "image://" + new URL((/* @__PURE__ */ Object.assign({ "./images/buy.svg": Ye, "./images/sell.svg": Ce, "./images/t.svg": be }))[`./images/${t === "买" ? "buy" : "sell"}.svg`], self.location).href : r = "image://" + new URL((/* @__PURE__ */ Object.assign({ "./images/buy.svg": Ye, "./images/sell.svg": Ce, "./images/t.svg": be }))[`./images/${t === "买" ? "buy" : "sell"}.svg`], self.location).href;
|
|
1184
|
+
const i = (n.find((g) => g[0] === o.time) ?? [])[2], s = ((d = o == null ? void 0 : o.markLineTarget) == null ? void 0 : d.map((g) => {
|
|
1185
|
+
const M = o.time, N = i + "", I = g.time, c = n.find((b) => b[0] === g.time), v = c ? c[3] : null;
|
|
1186
|
+
return [
|
|
1187
|
+
{
|
|
1188
|
+
coord: [M, N],
|
|
1189
|
+
lineStyle: g.lineStyle
|
|
1190
|
+
},
|
|
1191
|
+
{
|
|
1192
|
+
coord: [I, v]
|
|
1193
|
+
}
|
|
1194
|
+
];
|
|
1195
|
+
})) ?? null;
|
|
1196
|
+
return a.push({
|
|
1197
|
+
symbol: r,
|
|
1198
|
+
// 图标
|
|
1199
|
+
symbolSize: 25,
|
|
1200
|
+
// 图标大小
|
|
1201
|
+
animation: !1,
|
|
1202
|
+
// 是否展示动画
|
|
1203
|
+
coord: [o.time + "", i],
|
|
1204
|
+
// X轴[时间],Y轴[最高价]
|
|
1205
|
+
symbolRotate: 0,
|
|
1206
|
+
// 旋转角度
|
|
1207
|
+
symbolOffset: [0, "-7"],
|
|
1208
|
+
// 偏移距离
|
|
1209
|
+
markLineTarget: s
|
|
1210
|
+
}), a;
|
|
1211
|
+
}, []), jn = (e, n) => e.reduce((a, o, t) => {
|
|
1212
|
+
var g;
|
|
1213
|
+
const l = Ie(o, "openClose"), r = l === "开多" || l === "开空" ? "top" : "bottom", u = n.find((M) => M[0] === o.time) ?? [], i = r === "top" ? u[2] : u[3];
|
|
1214
|
+
let s = 7;
|
|
1215
|
+
s += e.slice(0, t).filter((M) => {
|
|
1216
|
+
const N = Ie(M, "openClose");
|
|
1217
|
+
return (N === "开多" || N === "开空" ? "top" : "bottom") === r && M.time === o.time;
|
|
1218
|
+
}).length * 7;
|
|
1219
|
+
const d = ((g = o == null ? void 0 : o.markLineTarget) == null ? void 0 : g.map((M) => {
|
|
1220
|
+
const N = o.time, I = i + "", c = M.time, v = n.find((b) => b[0] === M.time)[3];
|
|
1221
|
+
return [
|
|
1222
|
+
{
|
|
1223
|
+
coord: [N, I],
|
|
1224
|
+
lineStyle: M.lineStyle
|
|
1225
|
+
},
|
|
1226
|
+
{
|
|
1227
|
+
coord: [c, v]
|
|
1228
|
+
}
|
|
1229
|
+
];
|
|
1230
|
+
})) ?? null;
|
|
1231
|
+
return a.push({
|
|
1232
|
+
symbol: "triangle",
|
|
1233
|
+
// 图标
|
|
1234
|
+
symbolSize: [10, 12],
|
|
1235
|
+
// 图标大小
|
|
1236
|
+
animation: !1,
|
|
1237
|
+
// 是否展示动画
|
|
1238
|
+
coord: [o.time + "", i],
|
|
1239
|
+
// X轴[时间],Y轴[最高价||最低价]
|
|
1240
|
+
symbolRotate: r === "top" ? 180 : 0,
|
|
1241
|
+
//标注旋转角度
|
|
1242
|
+
symbolOffset: [0, `${r === "top" ? s * -1 : s}`],
|
|
1243
|
+
//标注偏移距离
|
|
1244
|
+
itemStyle: { color: r === "top" ? "#FF0000" : "#389e0d" },
|
|
1245
|
+
// 图标颜色
|
|
1246
|
+
// 文本
|
|
1247
|
+
label: {
|
|
1248
|
+
show: !0,
|
|
1249
|
+
// 是否展示
|
|
1250
|
+
position: r,
|
|
1251
|
+
color: "#fff",
|
|
1252
|
+
formatter: `${l} ${r === "top" ? "+" : "-"} ${o.amount}手 ${o.part ? `(${o.part}份)` : ""}`
|
|
1253
|
+
},
|
|
1254
|
+
markLineTarget: d
|
|
1255
|
+
}), a;
|
|
1256
|
+
}, []), gn = (e, n) => e.reduce((a, o) => {
|
|
1257
|
+
const { key: t, data: l } = o;
|
|
1258
|
+
if (l === null || l.length === 0)
|
|
1259
|
+
return a;
|
|
1260
|
+
const u = (/* @__PURE__ */ new Map([
|
|
1261
|
+
// 买卖点
|
|
1262
|
+
[
|
|
1263
|
+
"sellBuy",
|
|
1264
|
+
() => zn(l, n)
|
|
1265
|
+
],
|
|
1266
|
+
// 开平点
|
|
1267
|
+
[
|
|
1268
|
+
"openClose",
|
|
1269
|
+
() => jn(l, n)
|
|
1270
|
+
],
|
|
1271
|
+
// 信号点
|
|
1272
|
+
["signal", () => {
|
|
1273
|
+
}]
|
|
1274
|
+
])).get(t);
|
|
1275
|
+
return u instanceof Function && a.push(...u()), a;
|
|
1276
|
+
}, []), we = async (e, n, a, o, t, l) => {
|
|
1277
|
+
const { totalBarCount: r, defaultShowBarCount: u, maxValueSpan: i, gridLeft: s, gridTop: d, gridRight: g, gridBottom: M, zoomLock: N } = o, { time: I, kLine: c, originData: v, indicator: b } = await Mn(e, a, r), k = b.map((p) => {
|
|
1278
|
+
const { key: f, data: A, color: C } = p;
|
|
1279
|
+
return {
|
|
1280
|
+
name: f,
|
|
1281
|
+
type: "line",
|
|
1282
|
+
silent: !0,
|
|
1283
|
+
symbol: "none",
|
|
1284
|
+
data: A,
|
|
1285
|
+
lineStyle: {
|
|
1286
|
+
width: 1
|
|
1287
|
+
},
|
|
1288
|
+
itemStyle: {
|
|
1289
|
+
color: C
|
|
1290
|
+
}
|
|
1291
|
+
};
|
|
1292
|
+
}), B = gn(n, v);
|
|
1293
|
+
let z = [];
|
|
1294
|
+
return B.forEach((p) => {
|
|
1295
|
+
p.markLineTarget && (z = [...z, ...p.markLineTarget]);
|
|
1296
|
+
}), {
|
|
1297
|
+
animation: !1,
|
|
1298
|
+
dataset: {
|
|
1299
|
+
id: "data",
|
|
1300
|
+
source: {
|
|
1301
|
+
klineData: c,
|
|
1302
|
+
indicatorData: b
|
|
1303
|
+
}
|
|
1304
|
+
},
|
|
1305
|
+
grid: {
|
|
1306
|
+
left: `${s}px`,
|
|
1307
|
+
top: `${d}px`,
|
|
1308
|
+
right: `${g}px`,
|
|
1309
|
+
bottom: `${M}px`
|
|
1310
|
+
},
|
|
1311
|
+
tooltip: {
|
|
1312
|
+
trigger: "axis",
|
|
1313
|
+
axisPointer: {
|
|
1314
|
+
type: "cross",
|
|
1315
|
+
label: {
|
|
1316
|
+
formatter: (p) => {
|
|
1317
|
+
const { axisDimension: f, value: A } = p;
|
|
1318
|
+
return f === "x" ? A : String($(A));
|
|
1319
|
+
}
|
|
1320
|
+
}
|
|
1321
|
+
},
|
|
1322
|
+
formatter: (p) => {
|
|
1323
|
+
let f = null, A = "";
|
|
1324
|
+
return p.forEach((C) => {
|
|
1325
|
+
C.seriesName === "资产持仓净值" && C.data !== null && (A += `<div>资产持仓净值: ${C.data}</div>`), C.componentSubType === "candlestick" && n.forEach((Q) => {
|
|
1326
|
+
const { key: P, data: T } = Q;
|
|
1327
|
+
if (P === "sellBuy") {
|
|
1328
|
+
const D = T.filter((L) => L.time === C.axisValue);
|
|
1329
|
+
let h = 0, y = 0;
|
|
1330
|
+
D.forEach((L) => {
|
|
1331
|
+
L.tradeType === "开多" || L.tradeType === "平空" ? h += L.amount : y += L.amount;
|
|
1332
|
+
}), h && (A += `<div>买: ${h}</div>`), y && (A += `<div>卖: ${y}</div>`);
|
|
1333
|
+
}
|
|
1334
|
+
P === "openClose" && T.forEach((D) => {
|
|
1335
|
+
D.time === C.axisValue && (A += D.tooltip);
|
|
1336
|
+
});
|
|
1337
|
+
}), A && (f = `<div><span style="font-weight: bold;">${C.axisValue}</span>${A}</div>`);
|
|
1338
|
+
}), f;
|
|
1339
|
+
}
|
|
1340
|
+
},
|
|
1341
|
+
xAxis: {
|
|
1342
|
+
type: "category",
|
|
1343
|
+
data: I,
|
|
1344
|
+
axisLine: {
|
|
1345
|
+
show: !0
|
|
1346
|
+
},
|
|
1347
|
+
splitLine: {
|
|
1348
|
+
show: !0,
|
|
1349
|
+
lineStyle: {
|
|
1350
|
+
type: "dotted",
|
|
1351
|
+
color: "#333"
|
|
1352
|
+
}
|
|
1353
|
+
},
|
|
1354
|
+
axisLabel: {
|
|
1355
|
+
show: !0,
|
|
1356
|
+
formatter: (p) => p
|
|
1357
|
+
}
|
|
1358
|
+
},
|
|
1359
|
+
yAxis: [
|
|
1360
|
+
{
|
|
1361
|
+
index: 0,
|
|
1362
|
+
splitLine: {
|
|
1363
|
+
show: !0,
|
|
1364
|
+
lineStyle: {
|
|
1365
|
+
type: "dotted",
|
|
1366
|
+
color: "#333"
|
|
1367
|
+
}
|
|
1368
|
+
},
|
|
1369
|
+
min: (p) => {
|
|
1370
|
+
const { min: f, max: A } = p, C = Math.abs((A - f) / 10);
|
|
1371
|
+
return f - C;
|
|
1372
|
+
},
|
|
1373
|
+
max: (p) => {
|
|
1374
|
+
const { min: f, max: A } = p, C = Math.abs((A - f) / 10);
|
|
1375
|
+
return A + C;
|
|
1376
|
+
},
|
|
1377
|
+
axisLine: {
|
|
1378
|
+
show: !0
|
|
1379
|
+
},
|
|
1380
|
+
axisLabel: {
|
|
1381
|
+
formatter: (p) => $(p),
|
|
1382
|
+
showMaxLabel: !1
|
|
1383
|
+
}
|
|
1384
|
+
},
|
|
1385
|
+
{
|
|
1386
|
+
show: !1,
|
|
1387
|
+
min: "dataMin"
|
|
1388
|
+
}
|
|
1389
|
+
],
|
|
1390
|
+
dataZoom: [
|
|
1391
|
+
{
|
|
1392
|
+
type: "inside",
|
|
1393
|
+
xAxisIndex: [0, 0],
|
|
1394
|
+
zoomLock: N,
|
|
1395
|
+
maxValueSpan: i,
|
|
1396
|
+
start: c.length >= u ? (c.length - u) / c.length * 100 : 0,
|
|
1397
|
+
end: 99.99
|
|
1398
|
+
// startValue: kLine.length >= defaultShowBarCount ? kLine.length - defaultShowBarCount : 0,
|
|
1399
|
+
// endValue: kLine.length - 1,
|
|
1400
|
+
}
|
|
1401
|
+
],
|
|
1402
|
+
series: [
|
|
1403
|
+
{
|
|
1404
|
+
name: "k线",
|
|
1405
|
+
type: "candlestick",
|
|
1406
|
+
data: c,
|
|
1407
|
+
markPoint: {
|
|
1408
|
+
data: B
|
|
1409
|
+
},
|
|
1410
|
+
markLine: {
|
|
1411
|
+
position: "middle",
|
|
1412
|
+
textStyle: { color: "blue", fontSize: 15 },
|
|
1413
|
+
animation: !1,
|
|
1414
|
+
data: z,
|
|
1415
|
+
lineStyle: {
|
|
1416
|
+
width: 3,
|
|
1417
|
+
type: "solid"
|
|
1418
|
+
},
|
|
1419
|
+
symbol: ["none", "none"]
|
|
1420
|
+
},
|
|
1421
|
+
itemStyle: {
|
|
1422
|
+
color: "transparent",
|
|
1423
|
+
color0: "#00FFFF",
|
|
1424
|
+
borderColor: "#FF0000",
|
|
1425
|
+
borderColor0: "#00FFFF",
|
|
1426
|
+
borderWidth: 1
|
|
1427
|
+
},
|
|
1428
|
+
z: 1
|
|
1429
|
+
},
|
|
1430
|
+
...k,
|
|
1431
|
+
{
|
|
1432
|
+
name: "资产持仓净值",
|
|
1433
|
+
type: "line",
|
|
1434
|
+
data: t ?? [],
|
|
1435
|
+
symbol: "none",
|
|
1436
|
+
yAxisIndex: 1,
|
|
1437
|
+
connectNulls: !0,
|
|
1438
|
+
itemStyle: {
|
|
1439
|
+
color: "#666"
|
|
1440
|
+
}
|
|
1441
|
+
},
|
|
1442
|
+
{
|
|
1443
|
+
name: "二腿相关度",
|
|
1444
|
+
type: "line",
|
|
1445
|
+
data: l ?? [],
|
|
1446
|
+
symbol: "none",
|
|
1447
|
+
yAxisIndex: 1,
|
|
1448
|
+
connectNulls: !0,
|
|
1449
|
+
itemStyle: {
|
|
1450
|
+
color: "#FFF"
|
|
1451
|
+
},
|
|
1452
|
+
lineStyle: {
|
|
1453
|
+
// type: "dashed", // 虚线
|
|
1454
|
+
width: 2
|
|
1455
|
+
},
|
|
1456
|
+
label: {
|
|
1457
|
+
show: !0,
|
|
1458
|
+
// 显示文字
|
|
1459
|
+
position: "top",
|
|
1460
|
+
// 文字位置
|
|
1461
|
+
formatter: (p) => `相关度: ${p.data[1]}`,
|
|
1462
|
+
textStyle: {
|
|
1463
|
+
color: "#FFF",
|
|
1464
|
+
// 文字颜色
|
|
1465
|
+
fontSize: 14
|
|
1466
|
+
// 文字字体大小
|
|
1467
|
+
}
|
|
1468
|
+
}
|
|
1469
|
+
}
|
|
1470
|
+
],
|
|
1471
|
+
toolbox: {
|
|
1472
|
+
show: !1
|
|
1473
|
+
},
|
|
1474
|
+
brush: {
|
|
1475
|
+
xAxisIndex: "all",
|
|
1476
|
+
brushLink: "all",
|
|
1477
|
+
transformable: !1,
|
|
1478
|
+
outOfBrush: {
|
|
1479
|
+
colorAlpha: 1
|
|
1480
|
+
},
|
|
1481
|
+
brushStyle: {
|
|
1482
|
+
color: "rgba(120,140,180,0)",
|
|
1483
|
+
borderColor: "rgba(255,255,255,0.4)"
|
|
1484
|
+
}
|
|
1485
|
+
}
|
|
1486
|
+
};
|
|
1487
|
+
}, pn = (e, n, a) => {
|
|
1488
|
+
var g;
|
|
1489
|
+
const { gridLeft: o, gridRight: t, gridBottom: l, warningConfig: r, positionConfig: u, conditionConfig: i, isOpenDS: s } = n;
|
|
1490
|
+
let d = [];
|
|
1491
|
+
if ((g = a == null ? void 0 : a.getModel()) != null && g.getComponent) {
|
|
1492
|
+
const [M, N] = a.getModel().getComponent("yAxis").axis.scale._extent;
|
|
1493
|
+
let I = [], c = {}, v = [], b = {}, k = [], B = {};
|
|
1494
|
+
if (e.forEach(({ key: z, data: p, ...f }) => {
|
|
1495
|
+
z === "warning" ? (I = p, c = f) : z === "position" ? (v = p, b = f) : z === "condition" && (k = p, B = f);
|
|
1496
|
+
}), I.length > 0 && (d = I.reduce((z, p) => {
|
|
1497
|
+
const { value: f, text: A, info: C, config: Q } = p;
|
|
1498
|
+
if (f > N || f < M)
|
|
1499
|
+
return z;
|
|
1500
|
+
const P = {
|
|
1501
|
+
y: a.convertToPixel({ yAxisIndex: 0 }, f),
|
|
1502
|
+
text: A,
|
|
1503
|
+
info: { info: C, config: { ...r, ...Q }, event: { ...c } },
|
|
1504
|
+
gridLeft: o,
|
|
1505
|
+
gridRight: t,
|
|
1506
|
+
echartsWidth: a.getWidth(),
|
|
1507
|
+
echartsInstance: a
|
|
1508
|
+
};
|
|
1509
|
+
return [...z, dn(P)];
|
|
1510
|
+
}, d)), v.length > 0 && (d = v.reduce((z, p) => {
|
|
1511
|
+
const { value: f, text: A, info: C, config: Q } = p;
|
|
1512
|
+
if (f > N || f < M)
|
|
1513
|
+
return z;
|
|
1514
|
+
const P = {
|
|
1515
|
+
y: a.convertToPixel({ yAxisIndex: 0 }, f),
|
|
1516
|
+
text: A,
|
|
1517
|
+
info: { info: C, config: { ...u, ...Q }, event: { ...b } },
|
|
1518
|
+
gridLeft: o,
|
|
1519
|
+
gridRight: t,
|
|
1520
|
+
echartsWidth: a.getWidth(),
|
|
1521
|
+
echartsInstance: a
|
|
1522
|
+
};
|
|
1523
|
+
return [...z, Nn(P)];
|
|
1524
|
+
}, d)), k.length > 0 && (d = k.reduce((z, p) => {
|
|
1525
|
+
const { value: f, text: A, profitValue: C, profitText: Q, lossValue: P, lossText: T, info: D, config: h } = p;
|
|
1526
|
+
if (f > N || f < M)
|
|
1527
|
+
return z;
|
|
1528
|
+
const y = {
|
|
1529
|
+
y: a.convertToPixel({ yAxisIndex: 0 }, f),
|
|
1530
|
+
text: A,
|
|
1531
|
+
profitY: a.convertToPixel({ yAxisIndex: 0 }, C),
|
|
1532
|
+
profitText: Q,
|
|
1533
|
+
lossY: a.convertToPixel({ yAxisIndex: 0 }, P),
|
|
1534
|
+
lossText: T,
|
|
1535
|
+
info: { info: D, config: { ...i, ...h }, event: { ...B } },
|
|
1536
|
+
gridLeft: o,
|
|
1537
|
+
gridRight: t,
|
|
1538
|
+
echartsWidth: a.getWidth(),
|
|
1539
|
+
echartsInstance: a
|
|
1540
|
+
};
|
|
1541
|
+
return [...z, yn(y)];
|
|
1542
|
+
}, d)), s) {
|
|
1543
|
+
const z = a.getOption(), p = z.dataset[0].source.klineData.slice(
|
|
1544
|
+
z.dataZoom[0].startValue,
|
|
1545
|
+
z.dataZoom[0].endValue + 1
|
|
1546
|
+
), f = {};
|
|
1547
|
+
p.forEach((y) => {
|
|
1548
|
+
f[y[1]] ? f[y[1]] += 1 : f[y[1]] = 1;
|
|
1549
|
+
});
|
|
1550
|
+
const A = p[p.length - 1][1], C = p.reduce((y, L) => y + L[1], 0) / p.length, Q = A - C, P = Tn(p, 1, 50), T = In(p), D = T ? Q / T : 0, h = fn(p, 1, A);
|
|
1551
|
+
d = [
|
|
1552
|
+
...d,
|
|
1553
|
+
{
|
|
1554
|
+
type: "group",
|
|
1555
|
+
draggable: !1,
|
|
1556
|
+
children: Object.keys(f).map((y) => ({
|
|
1557
|
+
type: "line",
|
|
1558
|
+
shape: {
|
|
1559
|
+
x1: a.getWidth() - t - 100 * f[y],
|
|
1560
|
+
y1: a.convertToPixel({ yAxisIndex: 0 }, y),
|
|
1561
|
+
x2: a.getWidth() - t,
|
|
1562
|
+
y2: a.convertToPixel({ yAxisIndex: 0 }, y)
|
|
1563
|
+
},
|
|
1564
|
+
style: {
|
|
1565
|
+
stroke: "rgb(124,124,124)",
|
|
1566
|
+
lineWidth: 1
|
|
1567
|
+
},
|
|
1568
|
+
z: 10
|
|
1569
|
+
}))
|
|
1570
|
+
},
|
|
1571
|
+
{
|
|
1572
|
+
type: "text",
|
|
1573
|
+
x: o + 6,
|
|
1574
|
+
y: a.getHeight() - l - 20,
|
|
1575
|
+
style: {
|
|
1576
|
+
fill: "#FFF",
|
|
1577
|
+
text: `均值: ${$(C)} 距均值: ${$(
|
|
1578
|
+
Q
|
|
1579
|
+
)} 中值: ${$(P)} 标准差: ${$(
|
|
1580
|
+
T
|
|
1581
|
+
)} 距均值/标准差: ${$(D)} 百分位: ${$(
|
|
1582
|
+
h
|
|
1583
|
+
)}%`,
|
|
1584
|
+
lineWidth: 1,
|
|
1585
|
+
opacity: 1
|
|
1586
|
+
},
|
|
1587
|
+
z: 10
|
|
1588
|
+
}
|
|
1589
|
+
];
|
|
1590
|
+
}
|
|
1591
|
+
}
|
|
1592
|
+
return { elements: d };
|
|
1593
|
+
}, fn = (e, n, a) => {
|
|
1594
|
+
const { round: o, add: t, subtract: l, multiply: r, divide: u } = Le.stMath, i = e.map((d) => d[n]).sort((d, g) => d - g);
|
|
1595
|
+
let s = 0;
|
|
1596
|
+
for (let d = 0; d < i.length; d++)
|
|
1597
|
+
if (i[d] === a) {
|
|
1598
|
+
s = d;
|
|
1599
|
+
break;
|
|
1600
|
+
} else if (i[d] >= a) {
|
|
1601
|
+
s = t(d, u(l(i[d + 1], i[d]), i[d]));
|
|
1602
|
+
break;
|
|
1603
|
+
}
|
|
1604
|
+
return o(u(r(s, 100), e.length + 1));
|
|
1605
|
+
}, Tn = (e, n, a) => {
|
|
1606
|
+
const { round: o, add: t, subtract: l, multiply: r, divide: u } = Le.stMath, i = e.map((M) => M[n]).sort((M, N) => M - N), s = r(e.length + 1, u(a, 100)), d = Math.floor(s), g = l(s, d);
|
|
1607
|
+
return o(g === 0 ? i[s] : t(
|
|
1608
|
+
i[d],
|
|
1609
|
+
r(
|
|
1610
|
+
l(
|
|
1611
|
+
i[d >= e.length - 1 ? d : d + 1],
|
|
1612
|
+
i[d]
|
|
1613
|
+
),
|
|
1614
|
+
g
|
|
1615
|
+
)
|
|
1616
|
+
));
|
|
1617
|
+
};
|
|
1618
|
+
function In(e) {
|
|
1619
|
+
const n = e.map((r) => r[1]), a = n.length;
|
|
1620
|
+
let o = 0, t = 0;
|
|
1621
|
+
for (const r of n)
|
|
1622
|
+
o += r;
|
|
1623
|
+
const l = o / a;
|
|
1624
|
+
for (const r of n)
|
|
1625
|
+
t += Math.pow(r - l, 2);
|
|
1626
|
+
return Math.sqrt(t / a);
|
|
1627
|
+
}
|
|
1628
|
+
const mn = { class: "st-kline" }, Dn = { class: "st-kline-header" }, Ln = 300, vn = /* @__PURE__ */ G({
|
|
1629
|
+
__name: "index",
|
|
1630
|
+
props: {
|
|
1631
|
+
indicator: {
|
|
1632
|
+
type: Object,
|
|
1633
|
+
default: () => ({})
|
|
1634
|
+
},
|
|
1635
|
+
klineData: {
|
|
1636
|
+
type: Array,
|
|
1637
|
+
default: () => []
|
|
1638
|
+
},
|
|
1639
|
+
markData: {
|
|
1640
|
+
type: Array,
|
|
1641
|
+
default: () => []
|
|
1642
|
+
},
|
|
1643
|
+
lineData: {
|
|
1644
|
+
type: Array,
|
|
1645
|
+
default: () => []
|
|
1646
|
+
},
|
|
1647
|
+
netPositionData: {
|
|
1648
|
+
type: Array,
|
|
1649
|
+
default: () => []
|
|
1650
|
+
},
|
|
1651
|
+
relevanceData: {
|
|
1652
|
+
type: Array,
|
|
1653
|
+
default: () => []
|
|
1654
|
+
},
|
|
1655
|
+
priceTrendData: {
|
|
1656
|
+
type: Array,
|
|
1657
|
+
default: () => []
|
|
1658
|
+
},
|
|
1659
|
+
priceTrendPercentData: {
|
|
1660
|
+
type: Array,
|
|
1661
|
+
default: () => []
|
|
1662
|
+
},
|
|
1663
|
+
brushRange: {
|
|
1664
|
+
type: Array,
|
|
1665
|
+
default: () => []
|
|
1666
|
+
},
|
|
1667
|
+
defaultMenuData: {
|
|
1668
|
+
type: Array,
|
|
1669
|
+
default: () => []
|
|
1670
|
+
},
|
|
1671
|
+
isSelect: {
|
|
1672
|
+
type: Boolean,
|
|
1673
|
+
default: () => !1
|
|
1674
|
+
},
|
|
1675
|
+
config: {
|
|
1676
|
+
type: Object,
|
|
1677
|
+
default: () => ({})
|
|
1678
|
+
}
|
|
1679
|
+
},
|
|
1680
|
+
setup(e) {
|
|
1681
|
+
const n = e, a = {
|
|
1682
|
+
totalBarCount: 2e3,
|
|
1683
|
+
defaultShowBarCount: 200,
|
|
1684
|
+
preBarCount: 800,
|
|
1685
|
+
maxValueSpan: 1e4,
|
|
1686
|
+
gridLeft: 60,
|
|
1687
|
+
gridTop: 0,
|
|
1688
|
+
gridRight: 60,
|
|
1689
|
+
gridBottom: 30,
|
|
1690
|
+
// 预警线配置
|
|
1691
|
+
warningConfig: {
|
|
1692
|
+
draggable: !1,
|
|
1693
|
+
lineColor: "#fff",
|
|
1694
|
+
textColor: "#fff"
|
|
1695
|
+
},
|
|
1696
|
+
// 持仓线配置
|
|
1697
|
+
positionConfig: {
|
|
1698
|
+
draggable: !1,
|
|
1699
|
+
lineColor: "#e45d07",
|
|
1700
|
+
textColor: "#fff"
|
|
1701
|
+
},
|
|
1702
|
+
// 条件单配置
|
|
1703
|
+
conditionConfig: {
|
|
1704
|
+
draggable: !1,
|
|
1705
|
+
lineColor: "#fff",
|
|
1706
|
+
textColor: "#fff",
|
|
1707
|
+
profitLineColor: "#b71e44",
|
|
1708
|
+
profitTextColor: "#fff",
|
|
1709
|
+
lossLineColor: "#749b66",
|
|
1710
|
+
lossTextColor: "#fff"
|
|
1711
|
+
},
|
|
1712
|
+
// Tips配置
|
|
1713
|
+
tipsConfig: {
|
|
1714
|
+
open: !0,
|
|
1715
|
+
heigh: !0,
|
|
1716
|
+
low: !0,
|
|
1717
|
+
close: !0,
|
|
1718
|
+
business: !0,
|
|
1719
|
+
riseAndFall: !0
|
|
1720
|
+
},
|
|
1721
|
+
// 动态加载配置
|
|
1722
|
+
dynamicLoadConfig: {
|
|
1723
|
+
historyVisible: !1,
|
|
1724
|
+
historyLoadCallBack: () => {
|
|
1725
|
+
},
|
|
1726
|
+
futureVisible: !1,
|
|
1727
|
+
futureLoadCallBack: () => {
|
|
1728
|
+
}
|
|
1729
|
+
},
|
|
1730
|
+
// 是否禁用鼠标滚轮缩放K线,在开启动态后续数据加载时,建议开启,否则会引起datazoom内部缩放拖拽触发后续加载冲突
|
|
1731
|
+
zoomLock: !1,
|
|
1732
|
+
// 是否启用计算收盘价分布统计功能
|
|
1733
|
+
isOpenDS: !1
|
|
1734
|
+
}, o = O(() => ({ ...a, ...n.config })), t = S(null), l = S(-1), r = O(() => {
|
|
1735
|
+
var y, L;
|
|
1736
|
+
if (t.value && ((L = (y = t.value.dataset[0]) == null ? void 0 : y.source) != null && L.klineData[l.value])) {
|
|
1737
|
+
const m = t.value.dataset[0].source.klineData[l.value], j = [], { open: x, heigh: E, low: Y, close: w, business: F, riseAndFall: V } = o.value.tipsConfig;
|
|
1738
|
+
if (x && j.push({ label: "开", value: $(m[0]), color: "rgb(153, 153, 153)" }), E && j.push({ label: "高", value: $(m[3]), color: "rgb(153, 153, 153)" }), Y && j.push({ label: "低", value: $(m[2]), color: "rgb(153, 153, 153)" }), w && j.push({ label: "收", value: $(m[1]), color: "rgb(153, 153, 153)" }), F && j.push({ label: "额", value: cn(m[4]), color: "rgb(153, 153, 153)" }), V) {
|
|
1739
|
+
let W = ((m[1] - m[5]) / m[1] * 100).toFixed(2), Z = +W == 0 ? "white" : +W > 0 ? "red" : "#00ff00";
|
|
1740
|
+
j.push({ label: "涨跌", value: `${W}%`, color: Z });
|
|
1741
|
+
}
|
|
1742
|
+
return j;
|
|
1743
|
+
}
|
|
1744
|
+
return [];
|
|
1745
|
+
}), u = O(() => {
|
|
1746
|
+
var y, L;
|
|
1747
|
+
return t.value && ((L = (y = t.value.dataset[0]) == null ? void 0 : y.source) != null && L.indicatorData) ? t.value.dataset[0].source.indicatorData.reduce((m, j) => (j.data[l.value] && m.push({
|
|
1748
|
+
label: j.key,
|
|
1749
|
+
value: $(j.data[l.value]),
|
|
1750
|
+
color: j.color
|
|
1751
|
+
}), m), []) : [];
|
|
1752
|
+
}), i = O(() => {
|
|
1753
|
+
const y = [
|
|
1754
|
+
"#FFFFFF",
|
|
1755
|
+
"#FFDD00",
|
|
1756
|
+
"#FF00FF",
|
|
1757
|
+
"#00FF00",
|
|
1758
|
+
"#FF6000",
|
|
1759
|
+
"#1677FF",
|
|
1760
|
+
"#7C3CC9",
|
|
1761
|
+
"#FF0000",
|
|
1762
|
+
"#FB9A0E",
|
|
1763
|
+
"#00B7FF"
|
|
1764
|
+
];
|
|
1765
|
+
if (n.priceTrendData.length > 0) {
|
|
1766
|
+
const L = [];
|
|
1767
|
+
return n.priceTrendData.forEach((m, j) => {
|
|
1768
|
+
var E;
|
|
1769
|
+
(m.data[l.value] ? $(m.data[l.value][1]) : null) !== null && L.push({
|
|
1770
|
+
label: m.name,
|
|
1771
|
+
value: $((E = m.data[l.value]) == null ? void 0 : E[1]),
|
|
1772
|
+
color: y[j]
|
|
1773
|
+
});
|
|
1774
|
+
}), L;
|
|
1775
|
+
}
|
|
1776
|
+
if (n.priceTrendPercentData.length > 0) {
|
|
1777
|
+
const L = [];
|
|
1778
|
+
return c.getOption().series.filter((j) => j.name.includes("二腿价格走势百分比图")).forEach((j, x) => {
|
|
1779
|
+
var Y;
|
|
1780
|
+
(j.data[l.value] ? $(j.data[l.value][1]) : null) !== null && L.push({
|
|
1781
|
+
label: j.name.split("-")[1],
|
|
1782
|
+
value: `${$((Y = j.data[l.value]) == null ? void 0 : Y[1])}%`,
|
|
1783
|
+
color: y[x]
|
|
1784
|
+
});
|
|
1785
|
+
}), L;
|
|
1786
|
+
}
|
|
1787
|
+
return [];
|
|
1788
|
+
});
|
|
1789
|
+
H(
|
|
1790
|
+
() => [n.klineData, n.indicator, n.markData, n.netPositionData, n.relevanceData],
|
|
1791
|
+
() => {
|
|
1792
|
+
s();
|
|
1793
|
+
},
|
|
1794
|
+
{
|
|
1795
|
+
deep: !0
|
|
1796
|
+
}
|
|
1797
|
+
), H(
|
|
1798
|
+
() => n.lineData,
|
|
1799
|
+
async () => {
|
|
1800
|
+
se("st-kline组件消息:props.lineData监控,额外画线数据发生改变,重绘->line", {
|
|
1801
|
+
color: "red"
|
|
1802
|
+
}), s("line");
|
|
1803
|
+
},
|
|
1804
|
+
{
|
|
1805
|
+
deep: !0
|
|
1806
|
+
}
|
|
1807
|
+
), H(
|
|
1808
|
+
() => n.brushRange,
|
|
1809
|
+
async () => {
|
|
1810
|
+
se("st-kline组件消息:props.brushRange监控,区域刷选数据发生改变,重绘->brush", {
|
|
1811
|
+
color: "red"
|
|
1812
|
+
}), s("brush");
|
|
1813
|
+
},
|
|
1814
|
+
{
|
|
1815
|
+
deep: !0
|
|
1816
|
+
}
|
|
1817
|
+
), H(
|
|
1818
|
+
() => n.priceTrendData,
|
|
1819
|
+
async () => {
|
|
1820
|
+
s("priceTrend");
|
|
1821
|
+
},
|
|
1822
|
+
{
|
|
1823
|
+
deep: !0
|
|
1824
|
+
}
|
|
1825
|
+
), H(
|
|
1826
|
+
() => n.priceTrendPercentData,
|
|
1827
|
+
async () => {
|
|
1828
|
+
s("priceTrendPercent");
|
|
1829
|
+
},
|
|
1830
|
+
{
|
|
1831
|
+
deep: !0
|
|
1832
|
+
}
|
|
1833
|
+
);
|
|
1834
|
+
const s = async (y) => {
|
|
1835
|
+
const m = (/* @__PURE__ */ new Map([
|
|
1836
|
+
// kline-K线绘制
|
|
1837
|
+
[
|
|
1838
|
+
"kline",
|
|
1839
|
+
async () => {
|
|
1840
|
+
const j = await we(
|
|
1841
|
+
n.klineData,
|
|
1842
|
+
n.markData,
|
|
1843
|
+
n.indicator,
|
|
1844
|
+
o.value,
|
|
1845
|
+
n.netPositionData,
|
|
1846
|
+
n.relevanceData
|
|
1847
|
+
), { graphic: x } = c.getOption() ?? { graphic: [] };
|
|
1848
|
+
t.value = { ...j, graphic: x }, c.setOption(t.value, !0), se("st-kline组件消息:K线绘制完毕-draw", { color: "green" });
|
|
1849
|
+
}
|
|
1850
|
+
],
|
|
1851
|
+
// line-额外线条绘制
|
|
1852
|
+
[
|
|
1853
|
+
"line",
|
|
1854
|
+
() => {
|
|
1855
|
+
const j = c.getOption(), x = pn(n.lineData, o.value, c);
|
|
1856
|
+
t.value = { ...j, graphic: x }, c.setOption(t.value, {
|
|
1857
|
+
replaceMerge: ["graphic"]
|
|
1858
|
+
}), se("st-kline组件消息:额外画线绘制完毕-draw", { color: "green" });
|
|
1859
|
+
}
|
|
1860
|
+
],
|
|
1861
|
+
// brush-区域刷选
|
|
1862
|
+
[
|
|
1863
|
+
"brush",
|
|
1864
|
+
() => {
|
|
1865
|
+
const { brushRange: j } = n;
|
|
1866
|
+
j instanceof Array && j.length > 0 && (c.dispatchAction({
|
|
1867
|
+
type: "brush",
|
|
1868
|
+
areas: [
|
|
1869
|
+
{
|
|
1870
|
+
brushType: "lineX",
|
|
1871
|
+
coordRange: [j[0] + "", j[1] + ""],
|
|
1872
|
+
xAxisIndex: 0
|
|
1873
|
+
}
|
|
1874
|
+
]
|
|
1875
|
+
}), se("st-kline组件消息:区域刷选绘制完毕-draw", { color: "green" }));
|
|
1876
|
+
}
|
|
1877
|
+
],
|
|
1878
|
+
// 全部绘制
|
|
1879
|
+
[
|
|
1880
|
+
void 0,
|
|
1881
|
+
async () => {
|
|
1882
|
+
await s("kline"), await s("line"), await s("priceTrend"), await s("priceTrendPercent"), await s("brush");
|
|
1883
|
+
}
|
|
1884
|
+
],
|
|
1885
|
+
// history-K线历史数据绘制
|
|
1886
|
+
[
|
|
1887
|
+
"history",
|
|
1888
|
+
async () => {
|
|
1889
|
+
const j = c.getOption(), x = await we(
|
|
1890
|
+
n.klineData,
|
|
1891
|
+
n.markData,
|
|
1892
|
+
n.indicator,
|
|
1893
|
+
o.value,
|
|
1894
|
+
n.netPositionData,
|
|
1895
|
+
n.relevanceData
|
|
1896
|
+
), E = x.dataset.source.klineData.length - j.dataset[0].source.klineData.length;
|
|
1897
|
+
c.setOption(
|
|
1898
|
+
{
|
|
1899
|
+
...x,
|
|
1900
|
+
dataZoom: [
|
|
1901
|
+
{
|
|
1902
|
+
type: "inside",
|
|
1903
|
+
xAxisIndex: [0, 0],
|
|
1904
|
+
zoomLock: o.value.zoomLock,
|
|
1905
|
+
maxValueSpan: o.value.maxValueSpan,
|
|
1906
|
+
startValue: j.dataZoom[0].startValue + E,
|
|
1907
|
+
endValue: j.dataZoom[0].endValue + E
|
|
1908
|
+
}
|
|
1909
|
+
]
|
|
1910
|
+
},
|
|
1911
|
+
!0
|
|
1912
|
+
), await s("priceTrend");
|
|
1913
|
+
}
|
|
1914
|
+
],
|
|
1915
|
+
// future-K线后续数据绘制
|
|
1916
|
+
[
|
|
1917
|
+
"future",
|
|
1918
|
+
async () => {
|
|
1919
|
+
const j = c.getOption(), x = await we(
|
|
1920
|
+
n.klineData,
|
|
1921
|
+
n.markData,
|
|
1922
|
+
n.indicator,
|
|
1923
|
+
o.value,
|
|
1924
|
+
n.netPositionData,
|
|
1925
|
+
n.relevanceData
|
|
1926
|
+
);
|
|
1927
|
+
x.dataZoom[0].start = (n.klineData.length - j.dataZoom[0].endValue + j.dataZoom[0].startValue) / n.klineData.length * 100, c.setOption(x, !0), await s("priceTrend");
|
|
1928
|
+
}
|
|
1929
|
+
],
|
|
1930
|
+
// priceTrend-二腿价格趋势绘制
|
|
1931
|
+
[
|
|
1932
|
+
"priceTrend",
|
|
1933
|
+
() => {
|
|
1934
|
+
if (n.priceTrendData.length === 0)
|
|
1935
|
+
return;
|
|
1936
|
+
const j = c.getOption(), x = [
|
|
1937
|
+
"#FFFFFF",
|
|
1938
|
+
"#FFDD00",
|
|
1939
|
+
"#FF00FF",
|
|
1940
|
+
"#00FF00",
|
|
1941
|
+
"#FF6000",
|
|
1942
|
+
"#1677FF",
|
|
1943
|
+
"#7C3CC9",
|
|
1944
|
+
"#FF0000",
|
|
1945
|
+
"#FB9A0E",
|
|
1946
|
+
"#00B7FF"
|
|
1947
|
+
], E = n.priceTrendData.reduce((Y, w, F) => {
|
|
1948
|
+
const { name: V, data: W } = w, Z = {
|
|
1949
|
+
name: `二腿价格走势图-${V}`,
|
|
1950
|
+
type: "line",
|
|
1951
|
+
data: W,
|
|
1952
|
+
symbol: "none",
|
|
1953
|
+
yAxisIndex: 1,
|
|
1954
|
+
connectNulls: !0,
|
|
1955
|
+
itemStyle: {
|
|
1956
|
+
color: x[F]
|
|
1957
|
+
},
|
|
1958
|
+
lineStyle: {
|
|
1959
|
+
type: "dashed",
|
|
1960
|
+
// 虚线
|
|
1961
|
+
width: 1
|
|
1962
|
+
}
|
|
1963
|
+
};
|
|
1964
|
+
return Y.push(Z), Y;
|
|
1965
|
+
}, []);
|
|
1966
|
+
t.value = { ...j, series: [...j.series, ...E] }, c.setOption(t.value, {
|
|
1967
|
+
replaceMerge: ["series"]
|
|
1968
|
+
});
|
|
1969
|
+
}
|
|
1970
|
+
],
|
|
1971
|
+
// priceTrendPercent-二腿价格趋势百分比绘制-初始绘制
|
|
1972
|
+
[
|
|
1973
|
+
"priceTrendPercent",
|
|
1974
|
+
async () => {
|
|
1975
|
+
if (n.priceTrendPercentData.length === 0)
|
|
1976
|
+
return;
|
|
1977
|
+
const j = c.getOption(), x = [
|
|
1978
|
+
"#FFFFFF",
|
|
1979
|
+
"#FFDD00",
|
|
1980
|
+
"#FF00FF",
|
|
1981
|
+
"#00FF00",
|
|
1982
|
+
"#FF6000",
|
|
1983
|
+
"#1677FF",
|
|
1984
|
+
"#7C3CC9",
|
|
1985
|
+
"#FF0000",
|
|
1986
|
+
"#FB9A0E",
|
|
1987
|
+
"#00B7FF"
|
|
1988
|
+
], E = j.dataZoom[0].startValue, Y = n.priceTrendPercentData.reduce((w, F, V) => {
|
|
1989
|
+
const { name: W, data: Z } = F, Me = Z.length > o.value.totalBarCount ? Z.slice(Z.length - o.value.totalBarCount) : Z, ce = Me[E][1], rt = Me.map(($e) => [$e[0], ($e[1] - ce) / ce * 100]), ut = {
|
|
1990
|
+
name: `二腿价格走势百分比图-${W}`,
|
|
1991
|
+
type: "line",
|
|
1992
|
+
data: rt,
|
|
1993
|
+
symbol: "none",
|
|
1994
|
+
yAxisIndex: 1,
|
|
1995
|
+
connectNulls: !0,
|
|
1996
|
+
itemStyle: {
|
|
1997
|
+
color: x[V]
|
|
1998
|
+
},
|
|
1999
|
+
lineStyle: {
|
|
2000
|
+
type: "dashed",
|
|
2001
|
+
// 虚线
|
|
2002
|
+
width: 1
|
|
2003
|
+
}
|
|
2004
|
+
};
|
|
2005
|
+
return w.push(ut), w;
|
|
2006
|
+
}, []);
|
|
2007
|
+
j.series = [...j.series.filter((w) => !w.name.includes("二腿价格走势百分比图")), ...Y], c.setOption(j, !0);
|
|
2008
|
+
}
|
|
2009
|
+
]
|
|
2010
|
+
])).get(y);
|
|
2011
|
+
m instanceof Function && await m();
|
|
2012
|
+
}, d = S(!1), g = S([]), M = (y) => {
|
|
2013
|
+
const { callBack: L } = y;
|
|
2014
|
+
L instanceof Function && L(c, d);
|
|
2015
|
+
}, N = () => {
|
|
2016
|
+
g.value = n.defaultMenuData;
|
|
2017
|
+
}, I = S();
|
|
2018
|
+
let c, v;
|
|
2019
|
+
const b = (y, L) => {
|
|
2020
|
+
var m, j;
|
|
2021
|
+
if (y)
|
|
2022
|
+
l.value = typeof ((m = y == null ? void 0 : y.batch[0]) == null ? void 0 : m.dataIndex) == "number" ? (j = y == null ? void 0 : y.batch[0]) == null ? void 0 : j.dataIndex : -1;
|
|
2023
|
+
else {
|
|
2024
|
+
const x = L.getOption();
|
|
2025
|
+
x.dataZoom instanceof Array && (l.value = x.dataZoom[0].endValue);
|
|
2026
|
+
}
|
|
2027
|
+
};
|
|
2028
|
+
let k = null, B = !1, z = S(!1), p = !1, f = S(!1);
|
|
2029
|
+
const A = async (y) => {
|
|
2030
|
+
const L = y.batch ? y.batch[0].start * o.value.totalBarCount : y.startValue;
|
|
2031
|
+
o.value.dynamicLoadConfig.historyVisible && L <= 100 && !B && !z.value && (B = !0, await o.value.dynamicLoadConfig.historyLoadCallBack(z), await s("history"), B = !1);
|
|
2032
|
+
const m = y.batch ? y.batch[0].end === 100 : y.endValue >= n.klineData.length - o.value.preBarCount - 1, j = y.actionIsWheel;
|
|
2033
|
+
o.value.dynamicLoadConfig.futureVisible && m && !p && !f.value && !j && (p = !0, await o.value.dynamicLoadConfig.futureLoadCallBack(f), await s("future"), p = !1), clearTimeout(k), k = setTimeout(() => {
|
|
2034
|
+
s("line"), s("priceTrendPercent"), clearTimeout(k), k = null;
|
|
2035
|
+
}, Ln);
|
|
2036
|
+
};
|
|
2037
|
+
let C = null;
|
|
2038
|
+
const Q = (y) => {
|
|
2039
|
+
C = setTimeout(() => {
|
|
2040
|
+
var L;
|
|
2041
|
+
if (y.componentType === "graphic") {
|
|
2042
|
+
const { oncontextmenu: m } = ((L = y.info) == null ? void 0 : L.event) ?? {};
|
|
2043
|
+
m instanceof Function && m(y, y.info, g);
|
|
2044
|
+
}
|
|
2045
|
+
clearTimeout(C), C = null;
|
|
2046
|
+
});
|
|
2047
|
+
}, P = () => {
|
|
2048
|
+
c.on("highlight", (y) => {
|
|
2049
|
+
b(y, c);
|
|
2050
|
+
}), c.on("globalout", () => {
|
|
2051
|
+
b(null, c);
|
|
2052
|
+
}), c.on("contextmenu", (y) => {
|
|
2053
|
+
Q(y);
|
|
2054
|
+
}), c.on("datazoom", (y) => {
|
|
2055
|
+
A(y);
|
|
2056
|
+
});
|
|
2057
|
+
}, T = () => {
|
|
2058
|
+
c.off("highlight"), c.off("globalout"), c.off("contextmenu"), c.off("datazoom");
|
|
2059
|
+
}, D = (y) => {
|
|
2060
|
+
if (!c || !(y.ctrlKey || n.isSelect))
|
|
2061
|
+
return;
|
|
2062
|
+
const L = c.getOption();
|
|
2063
|
+
let { startValue: m, endValue: j, start: x, end: E } = L.dataZoom[0];
|
|
2064
|
+
const Y = () => {
|
|
2065
|
+
m !== 0 && (m = m - 1, j = j - 1, c.dispatchAction({
|
|
2066
|
+
type: "dataZoom",
|
|
2067
|
+
startValue: m,
|
|
2068
|
+
endValue: j,
|
|
2069
|
+
maxValueSpan: o.value.maxValueSpan
|
|
2070
|
+
}));
|
|
2071
|
+
}, w = () => {
|
|
2072
|
+
if (o.value.dynamicLoadConfig.futureVisible && !p && !f.value)
|
|
2073
|
+
m = m + 1, j = j + 1, c.dispatchAction({
|
|
2074
|
+
type: "dataZoom",
|
|
2075
|
+
startValue: m,
|
|
2076
|
+
endValue: j,
|
|
2077
|
+
maxValueSpan: o.value.maxValueSpan
|
|
2078
|
+
});
|
|
2079
|
+
else {
|
|
2080
|
+
if (j === L.xAxis[0].data.length - 1)
|
|
2081
|
+
return;
|
|
2082
|
+
m = m + 1, j = j + 1, c.dispatchAction({
|
|
2083
|
+
type: "dataZoom",
|
|
2084
|
+
startValue: m,
|
|
2085
|
+
endValue: j,
|
|
2086
|
+
maxValueSpan: o.value.maxValueSpan
|
|
2087
|
+
});
|
|
2088
|
+
}
|
|
2089
|
+
}, F = () => {
|
|
2090
|
+
if (j - m < 5)
|
|
2091
|
+
return;
|
|
2092
|
+
const Me = Math.floor((l.value - m) / 2) + 1, ce = Math.floor((j - l.value) / 2) + 1;
|
|
2093
|
+
m = m + Me, j = j - ce, c.dispatchAction({
|
|
2094
|
+
type: "dataZoom",
|
|
2095
|
+
startValue: m,
|
|
2096
|
+
endValue: j,
|
|
2097
|
+
actionIsWheel: !0,
|
|
2098
|
+
// 标记为缩放
|
|
2099
|
+
maxValueSpan: o.value.maxValueSpan
|
|
2100
|
+
});
|
|
2101
|
+
}, V = () => {
|
|
2102
|
+
x = x - (E - x) / 4, c.dispatchAction({
|
|
2103
|
+
type: "dataZoom",
|
|
2104
|
+
start: x,
|
|
2105
|
+
end: E,
|
|
2106
|
+
actionIsWheel: !0,
|
|
2107
|
+
// 标记为缩放
|
|
2108
|
+
maxValueSpan: o.value.maxValueSpan
|
|
2109
|
+
});
|
|
2110
|
+
}, Z = (/* @__PURE__ */ new Map([
|
|
2111
|
+
["ArrowLeft", Y],
|
|
2112
|
+
["ArrowRight", w],
|
|
2113
|
+
["ArrowUp", F],
|
|
2114
|
+
["ArrowDown", V]
|
|
2115
|
+
])).get(y.code);
|
|
2116
|
+
Z instanceof Function && Z();
|
|
2117
|
+
}, h = async () => {
|
|
2118
|
+
let y = !0;
|
|
2119
|
+
c = Te.init(I.value), await s(), g.value = n.defaultMenuData, l.value = c.getOption().dataZoom[0].endValue ?? -1, P(), v = new ResizeObserver(() => {
|
|
2120
|
+
if (y) {
|
|
2121
|
+
y = null;
|
|
2122
|
+
return;
|
|
2123
|
+
}
|
|
2124
|
+
c.resize(), s("line");
|
|
2125
|
+
}), v.observe(I.value), window.addEventListener("keydown", D);
|
|
2126
|
+
};
|
|
2127
|
+
return le(() => {
|
|
2128
|
+
h();
|
|
2129
|
+
}), Re(() => {
|
|
2130
|
+
T(), window.removeEventListener("keydown", D), c.dispose(), v.disconnect(), v = null;
|
|
2131
|
+
}), (y, L) => {
|
|
2132
|
+
const m = tn, j = en;
|
|
2133
|
+
return _(), R("div", mn, [
|
|
2134
|
+
te("div", Dn, [
|
|
2135
|
+
K(Ae, { data: r.value }, null, 8, ["data"]),
|
|
2136
|
+
K(Ae, { data: u.value }, null, 8, ["data"]),
|
|
2137
|
+
K(Ae, { data: i.value }, null, 8, ["data"])
|
|
2138
|
+
]),
|
|
2139
|
+
K(sn, {
|
|
2140
|
+
class: "st-kline-body",
|
|
2141
|
+
onCloseContextMenuCallBack: N
|
|
2142
|
+
}, {
|
|
2143
|
+
popover: ee(() => [
|
|
2144
|
+
K(j, { class: "menu" }, {
|
|
2145
|
+
default: ee(() => [
|
|
2146
|
+
(_(!0), R(ne, null, De(g.value, (x) => (_(), ue(m, {
|
|
2147
|
+
key: x.label,
|
|
2148
|
+
index: x.label,
|
|
2149
|
+
class: "menuItem",
|
|
2150
|
+
onClick: (E) => M(x)
|
|
2151
|
+
}, {
|
|
2152
|
+
default: ee(() => [
|
|
2153
|
+
tt(ie(x.label), 1)
|
|
2154
|
+
]),
|
|
2155
|
+
_: 2
|
|
2156
|
+
}, 1032, ["index", "onClick"]))), 128))
|
|
2157
|
+
]),
|
|
2158
|
+
_: 1
|
|
2159
|
+
})
|
|
2160
|
+
]),
|
|
2161
|
+
default: ee(() => [
|
|
2162
|
+
te("div", {
|
|
2163
|
+
ref_key: "echartsRef",
|
|
2164
|
+
ref: I,
|
|
2165
|
+
class: re(d.value ? "st-kline-chart cursorPen" : "st-kline-chart")
|
|
2166
|
+
}, null, 2)
|
|
2167
|
+
]),
|
|
2168
|
+
_: 1
|
|
2169
|
+
})
|
|
2170
|
+
]);
|
|
2171
|
+
};
|
|
2172
|
+
}
|
|
2173
|
+
});
|
|
2174
|
+
const hn = /* @__PURE__ */ oe(vn, [["__scopeId", "data-v-7f014d0e"]]), xn = { class: "kline-tips" }, An = /* @__PURE__ */ G({
|
|
2175
|
+
__name: "index",
|
|
2176
|
+
props: {
|
|
2177
|
+
// 提示数据
|
|
2178
|
+
data: {
|
|
2179
|
+
type: Array,
|
|
2180
|
+
require: !0
|
|
2181
|
+
}
|
|
2182
|
+
},
|
|
2183
|
+
setup(e) {
|
|
2184
|
+
return (n, a) => (_(), R("div", xn, [
|
|
2185
|
+
(_(!0), R(ne, null, De(e.data, (o, t) => (_(), R("div", {
|
|
2186
|
+
key: t,
|
|
2187
|
+
class: "kline-tips-item",
|
|
2188
|
+
style: Pe({ color: o.color })
|
|
2189
|
+
}, ie(o.label) + " " + ie(o.value), 5))), 128))
|
|
2190
|
+
]));
|
|
2191
|
+
}
|
|
2192
|
+
});
|
|
2193
|
+
const Ee = /* @__PURE__ */ oe(An, [["__scopeId", "data-v-dc7d381b"]]);
|
|
2194
|
+
const Yn = { class: "klineSub" }, Cn = { class: "klineSub-tips" }, bn = {
|
|
2195
|
+
key: 0,
|
|
2196
|
+
class: "klineSub-tips-select"
|
|
2197
|
+
}, wn = {
|
|
2198
|
+
__name: "index",
|
|
2199
|
+
props: {
|
|
2200
|
+
data: { type: Object, require: !0 },
|
|
2201
|
+
activeIndex: { type: [Number, String], require: !0 },
|
|
2202
|
+
modelValue: { type: String, required: !0 },
|
|
2203
|
+
// 副图指标
|
|
2204
|
+
subIndicatorList: { type: Array, required: !0 }
|
|
2205
|
+
// 副图指标列表
|
|
2206
|
+
},
|
|
2207
|
+
emits: ["update:modelValue"],
|
|
2208
|
+
setup(e, { expose: n, emit: a }) {
|
|
2209
|
+
const { round: o } = Le.stMath;
|
|
2210
|
+
let t, l;
|
|
2211
|
+
const r = a, u = e, i = S(), s = O({
|
|
2212
|
+
get() {
|
|
2213
|
+
return u.modelValue;
|
|
2214
|
+
},
|
|
2215
|
+
set(M) {
|
|
2216
|
+
r("update:modelValue", M);
|
|
2217
|
+
}
|
|
2218
|
+
}), d = O(() => {
|
|
2219
|
+
var I;
|
|
2220
|
+
const { data: M, activeIndex: N } = u;
|
|
2221
|
+
return ((I = M == null ? void 0 : M.subIndicator) == null ? void 0 : I.map((c) => ({ label: c.key, color: c.color, value: c.data[N] || "-" }))) || [];
|
|
2222
|
+
});
|
|
2223
|
+
le(() => {
|
|
2224
|
+
t = Te.init(i.value);
|
|
2225
|
+
let M = !0;
|
|
2226
|
+
l = new ResizeObserver(() => {
|
|
2227
|
+
if (M) {
|
|
2228
|
+
M = null;
|
|
2229
|
+
return;
|
|
2230
|
+
}
|
|
2231
|
+
t.resize();
|
|
2232
|
+
}), l.observe(i.value);
|
|
2233
|
+
}), Re(() => {
|
|
2234
|
+
t.dispose(), l.disconnect(), l = null;
|
|
2235
|
+
});
|
|
2236
|
+
const g = (M, N) => {
|
|
2237
|
+
const I = M[N], c = N === 0 ? M[N] : M[N - 1];
|
|
2238
|
+
return I[0] === I[1] ? I[0] >= c[1] ? {
|
|
2239
|
+
color: "transparent",
|
|
2240
|
+
borderColor: "#FF0000"
|
|
2241
|
+
} : {
|
|
2242
|
+
color: "#00FFFF"
|
|
2243
|
+
} : I[1] > I[0] ? {
|
|
2244
|
+
color: "transparent",
|
|
2245
|
+
borderColor: "#FF0000"
|
|
2246
|
+
} : {
|
|
2247
|
+
color: "#00FFFF"
|
|
2248
|
+
};
|
|
2249
|
+
};
|
|
2250
|
+
return n({
|
|
2251
|
+
connect: (M) => {
|
|
2252
|
+
Te.connect([M, t]);
|
|
2253
|
+
},
|
|
2254
|
+
// 联动
|
|
2255
|
+
draw: (M, N) => {
|
|
2256
|
+
Be(() => {
|
|
2257
|
+
const { startValue: I, endValue: c, maxValueSpan: v } = M, { leftYAxisRange: b, rightYAxisRange: k } = u.data.subIndicator[0], B = u.data.subIndicator.map((z) => {
|
|
2258
|
+
if (z.series === "bar")
|
|
2259
|
+
return {
|
|
2260
|
+
name: "subMain",
|
|
2261
|
+
xAxisIndex: 0,
|
|
2262
|
+
yAxisIndex: 1,
|
|
2263
|
+
type: "bar",
|
|
2264
|
+
silent: !0,
|
|
2265
|
+
symbol: "none",
|
|
2266
|
+
data: z.data.map((p, f) => z.seriesColor === "kline" ? {
|
|
2267
|
+
value: p,
|
|
2268
|
+
itemStyle: g(u.data.data, f)
|
|
2269
|
+
} : z.seriesColor === "value" ? {
|
|
2270
|
+
value: p,
|
|
2271
|
+
itemStyle: {
|
|
2272
|
+
color: p >= 0 ? "#FF0000" : "#00FFFF"
|
|
2273
|
+
}
|
|
2274
|
+
} : {
|
|
2275
|
+
value: p,
|
|
2276
|
+
itemStyle: {
|
|
2277
|
+
color: z.seriesColor
|
|
2278
|
+
}
|
|
2279
|
+
})
|
|
2280
|
+
};
|
|
2281
|
+
if (z.series === "line")
|
|
2282
|
+
return {
|
|
2283
|
+
xAxisIndex: 0,
|
|
2284
|
+
yAxisIndex: z.yAxis === "right" ? 2 : 1,
|
|
2285
|
+
name: z.key,
|
|
2286
|
+
type: "line",
|
|
2287
|
+
silent: !0,
|
|
2288
|
+
symbol: "none",
|
|
2289
|
+
data: z.data,
|
|
2290
|
+
lineStyle: {
|
|
2291
|
+
width: 1
|
|
2292
|
+
},
|
|
2293
|
+
itemStyle: {
|
|
2294
|
+
color: z.color
|
|
2295
|
+
}
|
|
2296
|
+
};
|
|
2297
|
+
});
|
|
2298
|
+
t.setOption({
|
|
2299
|
+
animation: !1,
|
|
2300
|
+
grid: {
|
|
2301
|
+
left: `${N.gridLeft}px`,
|
|
2302
|
+
top: "10px",
|
|
2303
|
+
right: `${N.gridRight}px`,
|
|
2304
|
+
bottom: "20px"
|
|
2305
|
+
},
|
|
2306
|
+
dataZoom: [
|
|
2307
|
+
{
|
|
2308
|
+
type: "inside",
|
|
2309
|
+
startValue: I,
|
|
2310
|
+
endValue: c,
|
|
2311
|
+
maxValueSpan: v
|
|
2312
|
+
}
|
|
2313
|
+
],
|
|
2314
|
+
tooltip: {
|
|
2315
|
+
trigger: "axis",
|
|
2316
|
+
appendToBody: !0,
|
|
2317
|
+
confine: !0,
|
|
2318
|
+
axisPointer: {
|
|
2319
|
+
type: "cross",
|
|
2320
|
+
label: {
|
|
2321
|
+
rich: {},
|
|
2322
|
+
formatter: (z) => {
|
|
2323
|
+
const { axisDimension: p, value: f } = z;
|
|
2324
|
+
if (p === "x")
|
|
2325
|
+
return f;
|
|
2326
|
+
if (z.axisIndex === 1)
|
|
2327
|
+
return String(o(f));
|
|
2328
|
+
}
|
|
2329
|
+
}
|
|
2330
|
+
},
|
|
2331
|
+
formatter: () => ""
|
|
2332
|
+
},
|
|
2333
|
+
xAxis: {
|
|
2334
|
+
type: "category",
|
|
2335
|
+
data: u.data.time,
|
|
2336
|
+
axisLine: {
|
|
2337
|
+
show: !0
|
|
2338
|
+
},
|
|
2339
|
+
splitLine: {
|
|
2340
|
+
show: !1
|
|
2341
|
+
},
|
|
2342
|
+
axisLabel: {
|
|
2343
|
+
show: !0,
|
|
2344
|
+
formatter: (z) => z
|
|
2345
|
+
}
|
|
2346
|
+
},
|
|
2347
|
+
yAxis: [
|
|
2348
|
+
{
|
|
2349
|
+
position: "right"
|
|
2350
|
+
},
|
|
2351
|
+
{
|
|
2352
|
+
position: "left",
|
|
2353
|
+
min: b === "cover" ? (z) => z.min : null,
|
|
2354
|
+
max: b === "cover" ? (z) => z.max : null,
|
|
2355
|
+
splitNumber: 1,
|
|
2356
|
+
axisLine: {
|
|
2357
|
+
show: !0
|
|
2358
|
+
},
|
|
2359
|
+
splitLine: {
|
|
2360
|
+
show: !0,
|
|
2361
|
+
lineStyle: {
|
|
2362
|
+
type: "dotted",
|
|
2363
|
+
color: "#333"
|
|
2364
|
+
}
|
|
2365
|
+
}
|
|
2366
|
+
},
|
|
2367
|
+
{
|
|
2368
|
+
position: "right",
|
|
2369
|
+
min: k === "cover" ? (z) => z.min : null,
|
|
2370
|
+
max: k === "cover" ? (z) => z.max : null,
|
|
2371
|
+
splitNumber: 1,
|
|
2372
|
+
axisLine: {
|
|
2373
|
+
show: !1
|
|
2374
|
+
},
|
|
2375
|
+
splitLine: {
|
|
2376
|
+
show: !1
|
|
2377
|
+
},
|
|
2378
|
+
axisLabel: {
|
|
2379
|
+
show: !1
|
|
2380
|
+
}
|
|
2381
|
+
}
|
|
2382
|
+
],
|
|
2383
|
+
series: B
|
|
2384
|
+
}, !0);
|
|
2385
|
+
});
|
|
2386
|
+
}
|
|
2387
|
+
// 重置
|
|
2388
|
+
}), (M, N) => {
|
|
2389
|
+
const I = Ct, c = bt;
|
|
2390
|
+
return _(), R("div", Yn, [
|
|
2391
|
+
te("div", Cn, [
|
|
2392
|
+
d.value.length ? (_(), R("div", bn, [
|
|
2393
|
+
K(c, {
|
|
2394
|
+
modelValue: s.value,
|
|
2395
|
+
"onUpdate:modelValue": N[0] || (N[0] = (v) => s.value = v),
|
|
2396
|
+
size: "small",
|
|
2397
|
+
"popper-class": "element-dark",
|
|
2398
|
+
class: "element-dark subIndicator"
|
|
2399
|
+
}, {
|
|
2400
|
+
default: ee(() => [
|
|
2401
|
+
(_(!0), R(ne, null, De(e.subIndicatorList, (v) => (_(), ue(I, {
|
|
2402
|
+
key: v.value,
|
|
2403
|
+
label: v.label,
|
|
2404
|
+
value: v.value
|
|
2405
|
+
}, null, 8, ["label", "value"]))), 128))
|
|
2406
|
+
]),
|
|
2407
|
+
_: 1
|
|
2408
|
+
}, 8, ["modelValue"])
|
|
2409
|
+
])) : nt("", !0),
|
|
2410
|
+
K(Ee, { data: d.value }, null, 8, ["data"])
|
|
2411
|
+
]),
|
|
2412
|
+
te("div", {
|
|
2413
|
+
class: "klineSub-chart",
|
|
2414
|
+
ref_key: "subChartRef",
|
|
2415
|
+
ref: i
|
|
2416
|
+
}, null, 512)
|
|
2417
|
+
]);
|
|
2418
|
+
};
|
|
2419
|
+
}
|
|
2420
|
+
}, On = /* @__PURE__ */ oe(wn, [["__scopeId", "data-v-4264b76c"]]);
|
|
2421
|
+
const kn = { class: "kline-tips" }, En = {
|
|
2422
|
+
__name: "index",
|
|
2423
|
+
props: {
|
|
2424
|
+
// 提示数据
|
|
2425
|
+
data: {
|
|
2426
|
+
type: Object,
|
|
2427
|
+
require: !0
|
|
2428
|
+
},
|
|
2429
|
+
activeIndex: {
|
|
2430
|
+
type: [Number, String],
|
|
2431
|
+
require: !0
|
|
2432
|
+
}
|
|
2433
|
+
},
|
|
2434
|
+
setup(e) {
|
|
2435
|
+
const { round: n, formatValue: a } = Le.stMath, o = e, t = O(() => {
|
|
2436
|
+
const { data: r, activeIndex: u } = o;
|
|
2437
|
+
if (r.data && r.data[u]) {
|
|
2438
|
+
const i = r.data[u], s = [
|
|
2439
|
+
{ label: "开", value: n(i[0]) },
|
|
2440
|
+
{ label: "高", value: n(i[3]) },
|
|
2441
|
+
{ label: "低", value: n(i[2]) },
|
|
2442
|
+
{ label: "收", value: n(i[1]) }
|
|
2443
|
+
];
|
|
2444
|
+
i[4] !== null && s.push({ label: "额", value: a(i[4]) });
|
|
2445
|
+
let d;
|
|
2446
|
+
return i[6] > 0 ? d = "red" : i[6] < 0 && (d = "green"), s.push({ label: "涨跌", value: `${n(i[6])}%`, color: d }), s;
|
|
2447
|
+
}
|
|
2448
|
+
return [];
|
|
2449
|
+
}), l = O(() => {
|
|
2450
|
+
var i;
|
|
2451
|
+
const { data: r, activeIndex: u } = o;
|
|
2452
|
+
return ((i = r == null ? void 0 : r.mainIndicator) == null ? void 0 : i.map((s) => ({ label: s.key, value: n(s.data[u]), color: s.color }))) || [];
|
|
2453
|
+
});
|
|
2454
|
+
return (r, u) => (_(), R("div", kn, [
|
|
2455
|
+
K(Ee, { data: t.value }, null, 8, ["data"]),
|
|
2456
|
+
K(Ee, { data: l.value }, null, 8, ["data"])
|
|
2457
|
+
]));
|
|
2458
|
+
}
|
|
2459
|
+
}, Sn = /* @__PURE__ */ oe(En, [["__scopeId", "data-v-a12855fe"]]), _n = {
|
|
2460
|
+
__name: "index",
|
|
2461
|
+
setup(e, { expose: n }) {
|
|
2462
|
+
return n({
|
|
2463
|
+
// 键盘事件处理
|
|
2464
|
+
handleKeyDown: (a, o) => {
|
|
2465
|
+
let { startValue: t, endValue: l, maxIndex: r } = o;
|
|
2466
|
+
if (a.code === "ArrowLeft") {
|
|
2467
|
+
if (t === 0)
|
|
2468
|
+
return;
|
|
2469
|
+
t = t - 1, l = l - 1;
|
|
2470
|
+
} else if (a.code === "ArrowRight") {
|
|
2471
|
+
if (l === r)
|
|
2472
|
+
return;
|
|
2473
|
+
t = t + 1, l = l + 1;
|
|
2474
|
+
} else if (a.code === "ArrowUp") {
|
|
2475
|
+
if (l - t < 5)
|
|
2476
|
+
return;
|
|
2477
|
+
const u = Math.floor((l - t) / 2) + 1;
|
|
2478
|
+
t = t + u, l - t < 5 && (t = l - 4);
|
|
2479
|
+
} else if (a.code === "ArrowDown") {
|
|
2480
|
+
const u = Math.min(500, l - t);
|
|
2481
|
+
t = t - u - 1;
|
|
2482
|
+
}
|
|
2483
|
+
return {
|
|
2484
|
+
startValue: t,
|
|
2485
|
+
endValue: l
|
|
2486
|
+
};
|
|
2487
|
+
},
|
|
2488
|
+
// 合并数据
|
|
2489
|
+
mergeData: (a, o) => ({
|
|
2490
|
+
time: [...a.time, ...o.time.slice(1)],
|
|
2491
|
+
data: [...a.data, ...o.data.slice(1)],
|
|
2492
|
+
mainIndicator: a.mainIndicator.map((t, l) => ({
|
|
2493
|
+
...t,
|
|
2494
|
+
data: [...t.data, ...o.mainIndicator[l].data.slice(1)]
|
|
2495
|
+
})),
|
|
2496
|
+
subIndicator: a.subIndicator.map((t, l) => ({
|
|
2497
|
+
...t,
|
|
2498
|
+
data: [...t.data, ...o.subIndicator[l].data.slice(1)]
|
|
2499
|
+
}))
|
|
2500
|
+
}),
|
|
2501
|
+
// 根据时间解析dataZoom
|
|
2502
|
+
getDataZoomInfoByTime: (a) => {
|
|
2503
|
+
const { showStartTime: o, showEndTime: t, maxShowDays: l } = a;
|
|
2504
|
+
let r = -1, u = -1, i = {};
|
|
2505
|
+
return a.time.forEach((s, d) => {
|
|
2506
|
+
const g = s.split(" ")[0];
|
|
2507
|
+
i[g] = i[g] || 0, i[g] += 1, new Date(s) >= new Date(o) && r === -1 && (r = d), new Date(s) <= new Date(t) && (u = d);
|
|
2508
|
+
}), {
|
|
2509
|
+
startValue: r,
|
|
2510
|
+
endValue: u,
|
|
2511
|
+
maxValueSpan: Math.max(...Object.values(i)) * l
|
|
2512
|
+
};
|
|
2513
|
+
}
|
|
2514
|
+
}), (a, o) => null;
|
|
2515
|
+
}
|
|
2516
|
+
};
|
|
2517
|
+
const Fn = {
|
|
2518
|
+
__name: "index",
|
|
2519
|
+
props: {
|
|
2520
|
+
data: { type: Array, default: () => [] }
|
|
2521
|
+
// 时间数据
|
|
2522
|
+
},
|
|
2523
|
+
emits: ["change"],
|
|
2524
|
+
setup(e, { expose: n, emit: a }) {
|
|
2525
|
+
let o, t, l = null;
|
|
2526
|
+
const r = a, u = e, i = S();
|
|
2527
|
+
H(
|
|
2528
|
+
() => u.data,
|
|
2529
|
+
() => {
|
|
2530
|
+
g();
|
|
2531
|
+
},
|
|
2532
|
+
{ deep: !0 }
|
|
2533
|
+
), le(() => {
|
|
2534
|
+
o = Te.init(i.value), s(), g();
|
|
2535
|
+
let M = !0;
|
|
2536
|
+
t = new ResizeObserver(() => {
|
|
2537
|
+
if (M) {
|
|
2538
|
+
M = null;
|
|
2539
|
+
return;
|
|
2540
|
+
}
|
|
2541
|
+
o.resize();
|
|
2542
|
+
}), t.observe(i.value);
|
|
2543
|
+
}), Re(() => {
|
|
2544
|
+
o.off("datazoom"), o.dispose(), t.disconnect(), t = null;
|
|
2545
|
+
});
|
|
2546
|
+
const s = () => {
|
|
2547
|
+
o.on("datazoom", (M) => {
|
|
2548
|
+
M.dataZoomId && (clearTimeout(l), l = setTimeout(() => {
|
|
2549
|
+
const { data: N } = u, { start: I, end: c } = M, v = Math.floor(I * N.length / 100), b = c === 100 ? N.length - 1 : Math.floor(c * N.length / 100);
|
|
2550
|
+
d(v, b), clearTimeout(l);
|
|
2551
|
+
}, 100));
|
|
2552
|
+
});
|
|
2553
|
+
}, d = (M, N) => {
|
|
2554
|
+
const I = u.data;
|
|
2555
|
+
if (I.length === 0)
|
|
2556
|
+
return;
|
|
2557
|
+
const c = I[M][0].split(" ")[0], v = I[N][0].split(" ")[0];
|
|
2558
|
+
r("change", {
|
|
2559
|
+
startTime: `${c} 00:00:00`,
|
|
2560
|
+
endTime: `${v} 24:00:00`
|
|
2561
|
+
});
|
|
2562
|
+
}, g = () => {
|
|
2563
|
+
const { data: M } = u;
|
|
2564
|
+
if (M.length === 0)
|
|
2565
|
+
return;
|
|
2566
|
+
const N = M.map((c) => c[0].split(" ")[0]), I = M.map((c) => c[1]);
|
|
2567
|
+
o.setOption({
|
|
2568
|
+
grid: {
|
|
2569
|
+
height: 0,
|
|
2570
|
+
left: "80px",
|
|
2571
|
+
right: "80px"
|
|
2572
|
+
},
|
|
2573
|
+
xAxis: {
|
|
2574
|
+
type: "category",
|
|
2575
|
+
data: N,
|
|
2576
|
+
show: !1
|
|
2577
|
+
},
|
|
2578
|
+
yAxis: {
|
|
2579
|
+
type: "value"
|
|
2580
|
+
},
|
|
2581
|
+
series: [
|
|
2582
|
+
{
|
|
2583
|
+
data: I,
|
|
2584
|
+
type: "line"
|
|
2585
|
+
}
|
|
2586
|
+
]
|
|
2587
|
+
}, !0);
|
|
2588
|
+
};
|
|
2589
|
+
return n({
|
|
2590
|
+
resetSlide: (M, N, I) => {
|
|
2591
|
+
let c = -1, v = -1;
|
|
2592
|
+
u.data.forEach((b, k) => {
|
|
2593
|
+
c === -1 && b[0] === M ? c = k : c === -1 && new Date(b[0]) > new Date(M) && (c = k - 1), (v === -1 && b[0] === N || v === -1 && new Date(b[0]) > new Date(N)) && (v = k);
|
|
2594
|
+
}), v = v === -1 ? u.data.length - 1 : v, o.setOption({
|
|
2595
|
+
dataZoom: [
|
|
2596
|
+
{
|
|
2597
|
+
show: !0,
|
|
2598
|
+
startValue: c,
|
|
2599
|
+
endValue: v,
|
|
2600
|
+
maxValueSpan: I,
|
|
2601
|
+
textStyle: {
|
|
2602
|
+
color: "#ccc"
|
|
2603
|
+
}
|
|
2604
|
+
},
|
|
2605
|
+
{
|
|
2606
|
+
type: "inside",
|
|
2607
|
+
startValue: c,
|
|
2608
|
+
endValue: v,
|
|
2609
|
+
maxValueSpan: I
|
|
2610
|
+
}
|
|
2611
|
+
]
|
|
2612
|
+
});
|
|
2613
|
+
},
|
|
2614
|
+
// 重置
|
|
2615
|
+
resize: () => {
|
|
2616
|
+
o == null || o.resize();
|
|
2617
|
+
}
|
|
2618
|
+
}), (M, N) => (_(), R("div", {
|
|
2619
|
+
class: "klineSlide",
|
|
2620
|
+
ref_key: "slideChartRef",
|
|
2621
|
+
ref: i
|
|
2622
|
+
}, null, 512));
|
|
2623
|
+
}
|
|
2624
|
+
}, Qn = /* @__PURE__ */ oe(Fn, [["__scopeId", "data-v-7a2f3dd0"]]), io = {
|
|
2625
|
+
install(e) {
|
|
2626
|
+
e.component("st-kline", hn), e.component("st-kline-sub-new", On), e.component("st-kline-tips-new", Sn), e.component("st-kline-slide-new", Qn), e.component("st-kline-utils-new", _n);
|
|
2627
|
+
}
|
|
2628
|
+
};
|
|
2629
|
+
export {
|
|
2630
|
+
io as default
|
|
2631
|
+
};
|