@363045841yyt/klinechart 0.7.3-alpha.4 → 0.7.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,20 +1,20 @@
1
- import { Fragment as e, Teleport as t, Transition as n, computed as r, createBlock as i, createCommentVNode as a, createElementBlock as o, createElementVNode as s, createTextVNode as c, createVNode as l, defineComponent as u, effectScope as d, h as f, inject as p, markRaw as m, nextTick as h, normalizeClass as g, normalizeStyle as _, onBeforeUnmount as v, onMounted as y, onScopeDispose as b, onUnmounted as x, openBlock as S, ref as C, renderList as w, resolveDynamicComponent as T, shallowRef as E, toDisplayString as D, unref as O, vModelCheckbox as k, vModelSelect as A, watch as j, withCtx as M, withDirectives as N, withModifiers as P } from "vue";
2
- import { findIndicator as ee, isSubIndicatorId as F, mainIndicators as I, subIndicators as L } from "@363045841yyt/klinechart-core/engine/renderers/Indicator/indicatorData";
3
- import { SemanticChartController as R, __setDataFetcher as te } from "@363045841yyt/klinechart-core/semantic";
4
- import { Chart as ne } from "@363045841yyt/klinechart-core/engine/chart";
5
- import { createChartStore as z } from "@363045841yyt/klinechart-core/engine/chart-store";
6
- import { kGapFromKWidth as re, zoomLevelToKWidth as B } from "@363045841yyt/klinechart-core/engine/utils/zoom";
7
- import { getPhysicalKLineConfig as ie } from "@363045841yyt/klinechart-core/engine/utils/klineConfig";
8
- import { SUB_PANE_INDICATORS as V, SUB_PANE_INDICATOR_CONFIGS as ae } from "@363045841yyt/klinechart-core/engine/renderers/Indicator/subPaneConfig";
1
+ import { Fragment as e, Teleport as t, Transition as n, computed as r, createBlock as i, createCommentVNode as a, createElementBlock as o, createElementVNode as s, createTextVNode as c, createVNode as l, defineComponent as u, effectScope as d, h as f, inject as p, markRaw as m, nextTick as h, normalizeClass as g, normalizeStyle as _, onBeforeUnmount as v, onMounted as y, onScopeDispose as b, onUnmounted as x, openBlock as S, ref as C, renderList as w, resolveDynamicComponent as T, shallowRef as E, toDisplayString as D, unref as O, vModelCheckbox as k, vModelSelect as A, vModelText as j, watch as M, withCtx as N, withDirectives as P, withModifiers as F } from "vue";
2
+ import { findIndicator as ee, isSubIndicatorId as I, mainIndicators as L, subIndicators as te } from "@363045841yyt/klinechart-core/engine/renderers/Indicator/indicatorData";
3
+ import { SemanticChartController as R, __setDataFetcher as ne } from "@363045841yyt/klinechart-core/semantic";
4
+ import { Chart as z } from "@363045841yyt/klinechart-core/engine/chart";
5
+ import { createChartStore as re } from "@363045841yyt/klinechart-core/engine/chart-store";
6
+ import { kGapFromKWidth as ie, zoomLevelToKWidth as B } from "@363045841yyt/klinechart-core/engine/utils/zoom";
7
+ import { getPhysicalKLineConfig as V } from "@363045841yyt/klinechart-core/engine/utils/klineConfig";
8
+ import { SUB_PANE_INDICATORS as ae, SUB_PANE_INDICATOR_CONFIGS as H } from "@363045841yyt/klinechart-core/engine/renderers/Indicator/subPaneConfig";
9
9
  import { createPaneTitleRendererPlugin as oe } from "@363045841yyt/klinechart-core/engine/renderers/paneTitle";
10
- import { DEFAULT_SETTINGS as H, SETTINGS_STORAGE_KEY as U } from "@363045841yyt/klinechart-core/config";
11
- import { DrawingInteractionController as se } from "@363045841yyt/klinechart-core/engine/drawing";
12
- import { VERSION as ce, createChartController as W } from "@363045841yyt/klinechart-core";
10
+ import { DEFAULT_SETTINGS as U, SETTINGS_STORAGE_KEY as se } from "@363045841yyt/klinechart-core/config";
11
+ import { DrawingInteractionController as ce } from "@363045841yyt/klinechart-core/engine/drawing";
12
+ import { VERSION as le, createChartController as ue } from "@363045841yyt/klinechart-core";
13
13
  //#region src/components/DrawingStyleToolbar.vue?vue&type=script&setup=true&lang.ts
14
- var le = {
14
+ var de = {
15
15
  class: "toolbar-item color-item",
16
16
  title: "颜色"
17
- }, ue = ["value"], de = ["value"], fe = ["value"], G = /* @__PURE__ */ u({
17
+ }, fe = ["value"], W = ["value"], G = ["value"], K = /* @__PURE__ */ u({
18
18
  __name: "DrawingStyleToolbar",
19
19
  props: { drawing: {} },
20
20
  emits: ["updateStyle", "delete"],
@@ -35,11 +35,11 @@ var le = {
35
35
  }
36
36
  return (t, n) => (S(), o("div", {
37
37
  class: "drawing-style-toolbar",
38
- onPointerdown: n[4] ||= P(() => {}, ["stop"]),
39
- onPointermove: n[5] ||= P(() => {}, ["stop"]),
40
- onPointerup: n[6] ||= P(() => {}, ["stop"])
38
+ onPointerdown: n[4] ||= F(() => {}, ["stop"]),
39
+ onPointermove: n[5] ||= F(() => {}, ["stop"]),
40
+ onPointerup: n[6] ||= F(() => {}, ["stop"])
41
41
  }, [
42
- s("div", le, [s("span", {
42
+ s("div", de, [s("span", {
43
43
  class: "color-swatch",
44
44
  style: _({ background: e.drawing.style.stroke ?? "#2962ff" })
45
45
  }, null, 4), s("input", {
@@ -47,7 +47,7 @@ var le = {
47
47
  class: "color-input",
48
48
  value: e.drawing.style.stroke ?? "#2962ff",
49
49
  onInput: n[0] ||= (e) => i(e.target.value)
50
- }, null, 40, ue)]),
50
+ }, null, 40, fe)]),
51
51
  s("select", {
52
52
  class: "toolbar-select",
53
53
  value: e.drawing.style.strokeWidth ?? 1,
@@ -58,7 +58,7 @@ var le = {
58
58
  s("option", { value: 2 }, "2px", -1),
59
59
  s("option", { value: 3 }, "3px", -1),
60
60
  s("option", { value: 4 }, "4px", -1)
61
- ]], 40, de),
61
+ ]], 40, W),
62
62
  s("select", {
63
63
  class: "toolbar-select",
64
64
  value: e.drawing.style.strokeStyle ?? "solid",
@@ -68,7 +68,7 @@ var le = {
68
68
  s("option", { value: "solid" }, "实线", -1),
69
69
  s("option", { value: "dashed" }, "虚线", -1),
70
70
  s("option", { value: "dotted" }, "点线", -1)
71
- ]], 40, fe),
71
+ ]], 40, G),
72
72
  s("button", {
73
73
  type: "button",
74
74
  class: "toolbar-btn delete-btn",
@@ -90,11 +90,11 @@ var le = {
90
90
  ], -1)]])
91
91
  ], 32));
92
92
  }
93
- }), K = (e, t) => {
93
+ }), q = (e, t) => {
94
94
  let n = e.__vccOpts || e;
95
95
  for (let [e, r] of t) n[e] = r;
96
96
  return n;
97
- }, pe = /* @__PURE__ */ K(G, [["__scopeId", "data-v-87e91714"]]), me = { class: "params-header" }, he = { class: "header-left" }, q = { class: "params-title" }, J = { class: "header-right" }, ge = {
97
+ }, pe = /* @__PURE__ */ q(K, [["__scopeId", "data-v-87e91714"]]), me = { class: "params-header" }, J = { class: "header-left" }, Y = { class: "params-title" }, he = { class: "header-right" }, ge = {
98
98
  key: 0,
99
99
  class: "indicator-description"
100
100
  }, _e = { class: "params-body" }, ve = { class: "param-header" }, ye = { class: "param-label" }, be = { class: "param-label-text" }, xe = {
@@ -109,7 +109,7 @@ var le = {
109
109
  ], Te = ["disabled", "onClick"], Ee = {
110
110
  key: 0,
111
111
  class: "param-description"
112
- }, De = { class: "params-footer" }, Oe = { class: "footer-right" }, ke = /* @__PURE__ */ K(/* @__PURE__ */ u({
112
+ }, De = { class: "params-footer" }, Oe = { class: "footer-right" }, ke = /* @__PURE__ */ q(/* @__PURE__ */ u({
113
113
  __name: "IndicatorParams",
114
114
  props: {
115
115
  visible: { type: Boolean },
@@ -122,12 +122,12 @@ var le = {
122
122
  emits: ["close", "confirm"],
123
123
  setup(u, { emit: d }) {
124
124
  let f = u, p = d, m = C({ ...f.values }), h = C(!0), _ = r(() => "body");
125
- j(() => f.values, (e) => {
125
+ M(() => f.values, (e) => {
126
126
  m.value = { ...e };
127
127
  }, {
128
128
  deep: !0,
129
129
  immediate: !0
130
- }), j(() => f.visible, (e) => {
130
+ }), M(() => f.visible, (e) => {
131
131
  e && (m.value = { ...f.values });
132
132
  });
133
133
  function v(e, t) {
@@ -148,16 +148,16 @@ var le = {
148
148
  p("confirm", { ...m.value });
149
149
  }
150
150
  return (r, d) => (S(), i(t, { to: _.value }, [l(n, { name: "overlay" }, {
151
- default: M(() => [u.visible ? (S(), o("div", {
151
+ default: N(() => [u.visible ? (S(), o("div", {
152
152
  key: 0,
153
153
  class: "params-overlay",
154
154
  onClick: d[4] ||= (e) => r.$emit("close")
155
155
  }, [l(n, { name: "modal" }, {
156
- default: M(() => [s("div", {
156
+ default: N(() => [s("div", {
157
157
  class: "indicator-params",
158
- onClick: d[3] ||= P(() => {}, ["stop"])
158
+ onClick: d[3] ||= F(() => {}, ["stop"])
159
159
  }, [
160
- s("div", me, [s("div", he, [s("span", q, D(u.indicatorName), 1), d[5] ||= s("span", { class: "params-subtitle" }, "参数设置", -1)]), s("div", J, [s("button", {
160
+ s("div", me, [s("div", J, [s("span", Y, D(u.indicatorName), 1), d[5] ||= s("span", { class: "params-subtitle" }, "参数设置", -1)]), s("div", he, [s("button", {
161
161
  class: g(["toggle-desc-btn", { active: h.value }]),
162
162
  onClick: d[0] ||= (e) => h.value = !h.value,
163
163
  title: "显示/隐藏说明"
@@ -174,7 +174,7 @@ var le = {
174
174
  "stroke-width": "2"
175
175
  }, [s("path", { d: "M18 6L6 18M6 6l12 12" })], -1)]])])]),
176
176
  l(n, { name: "slide" }, {
177
- default: M(() => [h.value && u.indicatorDescription ? (S(), o("div", ge, [s("p", null, D(u.indicatorDescription), 1)])) : a("", !0)]),
177
+ default: N(() => [h.value && u.indicatorDescription ? (S(), o("div", ge, [s("p", null, D(u.indicatorDescription), 1)])) : a("", !0)]),
178
178
  _: 1
179
179
  }),
180
180
  s("div", _e, [(S(!0), o(e, null, w(u.params, (e) => (S(), o("div", {
@@ -202,7 +202,7 @@ var le = {
202
202
  onClick: (t) => y(e, 1)
203
203
  }, " + ", 8, Te)
204
204
  ])]), l(n, { name: "slide" }, {
205
- default: M(() => [h.value && e.description ? (S(), o("div", Ee, D(e.description), 1)) : a("", !0)]),
205
+ default: N(() => [h.value && e.description ? (S(), o("div", Ee, D(e.description), 1)) : a("", !0)]),
206
206
  _: 2
207
207
  }, 1024)], 2))), 128))]),
208
208
  s("div", De, [s("button", {
@@ -268,7 +268,19 @@ var Me = { class: "indicator-selector" }, Ne = { class: "indicator-scroll-contai
268
268
  width: "16",
269
269
  height: "16",
270
270
  fill: "currentColor"
271
- }, Ze = { class: "modal-body" }, Y = { class: "indicator-section" }, Qe = { class: "section-header" }, $e = { class: "section-count" }, X = ["onClick"], Z = { class: "card-label" }, et = { class: "card-tooltip" }, tt = { class: "card-header" }, nt = { class: "card-label" }, rt = { class: "card-header-actions" }, it = ["onClick"], at = { class: "card-name" }, ot = { class: "indicator-section" }, st = { class: "section-header" }, ct = { class: "section-count" }, lt = ["onClick"], ut = { class: "card-label" }, dt = { class: "card-tooltip" }, ft = { class: "card-header" }, pt = { class: "card-label" }, mt = { class: "card-header-actions" }, ht = ["onClick"], gt = { class: "card-name" }, _t = { class: "modal-footer" }, vt = { class: "footer-info" }, yt = { class: "info-text" }, bt = /* @__PURE__ */ K(/* @__PURE__ */ u({
271
+ }, X = { class: "modal-body" }, Ze = { class: "search-box" }, Qe = {
272
+ key: 0,
273
+ class: "indicator-section"
274
+ }, Z = { class: "section-header" }, Q = { class: "section-count" }, $e = ["onClick"], et = { class: "card-label" }, tt = { class: "card-tooltip" }, nt = { class: "card-header" }, rt = { class: "card-label" }, it = { class: "card-header-actions" }, at = ["onClick"], ot = { class: "card-name" }, st = {
275
+ key: 1,
276
+ class: "section-divider"
277
+ }, ct = {
278
+ key: 2,
279
+ class: "no-results"
280
+ }, lt = {
281
+ key: 3,
282
+ class: "indicator-section"
283
+ }, ut = { class: "section-header" }, dt = { class: "section-count" }, ft = ["onClick"], pt = { class: "card-label" }, mt = { class: "card-tooltip" }, ht = { class: "card-header" }, gt = { class: "card-label" }, _t = { class: "card-header-actions" }, vt = ["onClick"], yt = { class: "card-name" }, bt = { class: "modal-footer" }, xt = { class: "footer-info" }, St = { class: "info-text" }, Ct = /* @__PURE__ */ q(/* @__PURE__ */ u({
272
284
  __name: "IndicatorSelector",
273
285
  props: {
274
286
  activeIndicators: {},
@@ -280,25 +292,33 @@ var Me = { class: "indicator-selector" }, Ne = { class: "indicator-scroll-contai
280
292
  "reorderSubIndicators"
281
293
  ],
282
294
  setup(u, { emit: d }) {
283
- let f = u, p = d, m = C(null), h = C(!1), _ = C(null), v = C(null), b = C(!1), T = C(null), E = C(null), k = C(!1), A = je(), j = r(() => f.activeIndicators?.length ? f.activeIndicators.map((e) => ee(e)).filter((e) => e !== void 0).sort((e, t) => e.pane === t.pane ? 0 : e.pane === "main" ? -1 : 1) : []), N = r(() => j.value.some((e) => e.pane === "main") ? j.value.find((e) => e.pane === "sub")?.id ?? null : null), R = r(() => _.value ? ee(_.value) : null), te = r(() => I.length + L.length), ne = r(() => f.activeIndicators?.length ?? 0);
284
- function z(e) {
295
+ let f = u, p = d, m = C(null), h = C(!1), _ = C(null), v = C(null), b = C(!1), T = C(null), E = C(null), k = C(!1), A = C(""), M = je(), R = r(() => f.activeIndicators?.length ? f.activeIndicators.map((e) => ee(e)).filter((e) => e !== void 0).sort((e, t) => e.pane === t.pane ? 0 : e.pane === "main" ? -1 : 1) : []), ne = r(() => R.value.some((e) => e.pane === "main") ? R.value.find((e) => e.pane === "sub")?.id ?? null : null), z = r(() => _.value ? ee(_.value) : null), re = r(() => L.length + te.length), ie = r(() => f.activeIndicators?.length ?? 0), B = r(() => {
296
+ if (!A.value.trim()) return L;
297
+ let e = A.value.toLowerCase().trim();
298
+ return L.filter((t) => t.label.toLowerCase().includes(e) || t.name.toLowerCase().includes(e) || t.id.toLowerCase().includes(e));
299
+ }), V = r(() => {
300
+ if (!A.value.trim()) return te;
301
+ let e = A.value.toLowerCase().trim();
302
+ return te.filter((t) => t.label.toLowerCase().includes(e) || t.name.toLowerCase().includes(e) || t.id.toLowerCase().includes(e));
303
+ }), ae = r(() => B.value.length > 0 || V.value.length > 0);
304
+ function H(e) {
285
305
  return f.activeIndicators?.includes(e) ?? !1;
286
306
  }
287
- function re(e) {
288
- if (z(e)) return;
307
+ function oe(e) {
308
+ if (H(e)) return;
289
309
  let t = ee(e);
290
- t && (t.pane === "main" && I.filter((t) => t.id !== e && z(t.id)).forEach((e) => p("toggle", e.id, !1)), p("toggle", e, !0));
310
+ t && (t.pane === "main" && L.filter((t) => t.id !== e && H(t.id)).forEach((e) => p("toggle", e.id, !1)), p("toggle", e, !0));
291
311
  }
292
- function B(e) {
312
+ function U(e) {
293
313
  p("toggle", e, !1);
294
314
  }
295
- function ie(e) {
315
+ function se(e) {
296
316
  _.value = e, h.value = !0;
297
317
  }
298
- function V() {
318
+ function ce() {
299
319
  b.value = !1;
300
320
  }
301
- function ae(e) {
321
+ function le(e) {
302
322
  let t = ee(e);
303
323
  if (!t?.params) return {};
304
324
  let n = {};
@@ -307,70 +327,70 @@ var Me = { class: "indicator-selector" }, Ne = { class: "indicator-scroll-contai
307
327
  for (let [e, t] of Object.entries(r)) typeof t == "number" && (i[e] = t);
308
328
  return i;
309
329
  }
310
- function oe(e) {
311
- let t = ae(e.id);
330
+ function ue(e) {
331
+ let t = le(e.id);
312
332
  return e.params ? e.params.map((e) => t[e.key] ?? "").join(",") : "";
313
333
  }
314
- function H(e) {
334
+ function de(e) {
315
335
  _.value && p("updateParams", _.value, e), h.value = !1;
316
336
  }
317
- function U(e, t) {
318
- if (!F(t)) {
337
+ function fe(e, t) {
338
+ if (!I(t)) {
319
339
  e.preventDefault();
320
340
  return;
321
341
  }
322
342
  E.value = t, T.value = null, e.dataTransfer?.setData("text/plain", t), e.dataTransfer && (e.dataTransfer.effectAllowed = "move");
323
343
  }
324
- function se(e, t) {
325
- !E.value || !F(t) || E.value === t || (T.value = t, e.dataTransfer && (e.dataTransfer.dropEffect = "move"));
344
+ function W(e, t) {
345
+ !E.value || !I(t) || E.value === t || (T.value = t, e.dataTransfer && (e.dataTransfer.dropEffect = "move"));
326
346
  }
327
- function ce(e, t) {
347
+ function G(e, t) {
328
348
  let n = E.value || e.dataTransfer?.getData("text/plain") || "";
329
349
  if (!n || n === t) {
330
- W();
350
+ K();
331
351
  return;
332
352
  }
333
- if (!F(n) || !F(t)) {
334
- W();
353
+ if (!I(n) || !I(t)) {
354
+ K();
335
355
  return;
336
356
  }
337
- let r = j.value.findIndex((e) => e.id === n), i = j.value.findIndex((e) => e.id === t);
357
+ let r = R.value.findIndex((e) => e.id === n), i = R.value.findIndex((e) => e.id === t);
338
358
  if (r < 0 || i < 0) {
339
- W();
359
+ K();
340
360
  return;
341
361
  }
342
- let a = [...j.value.map((e) => e.id)], [o] = a.splice(r, 1);
362
+ let a = [...R.value.map((e) => e.id)], [o] = a.splice(r, 1);
343
363
  if (!o) {
344
- W();
364
+ K();
345
365
  return;
346
366
  }
347
- a.splice(i, 0, o), p("reorderSubIndicators", a.filter((e) => F(e))), W();
367
+ a.splice(i, 0, o), p("reorderSubIndicators", a.filter((e) => I(e))), K();
348
368
  }
349
- function W() {
369
+ function K() {
350
370
  T.value = null, E.value = null;
351
371
  }
352
- function le() {
372
+ function q() {
353
373
  b.value = !b.value;
354
374
  }
355
- function ue(e) {
375
+ function pe(e) {
356
376
  e.key === "Escape" && b.value && (b.value = !1);
357
377
  }
358
378
  return y(() => {
359
- document.addEventListener("keydown", ue);
379
+ document.addEventListener("keydown", pe);
360
380
  }), x(() => {
361
- document.removeEventListener("keydown", ue);
381
+ document.removeEventListener("keydown", pe);
362
382
  }), (r, u) => (S(), o("div", Me, [
363
- s("div", Ne, [s("div", Pe, [(S(!0), o(e, null, w(j.value, (t) => (S(), o(e, { key: t.id }, [t.id === N.value ? (S(), o("div", Fe)) : a("", !0), s("div", {
383
+ s("div", Ne, [s("div", Pe, [(S(!0), o(e, null, w(R.value, (t) => (S(), o(e, { key: t.id }, [t.id === ne.value ? (S(), o("div", Fe)) : a("", !0), s("div", {
364
384
  class: g(["indicator-item", {
365
- draggable: O(F)(t.id),
385
+ draggable: O(I)(t.id),
366
386
  "drag-over": T.value === t.id,
367
387
  "is-dragging": E.value === t.id
368
388
  }]),
369
- draggable: O(F)(t.id),
370
- onDragstart: (e) => U(e, t.id),
371
- onDragover: P((e) => se(e, t.id), ["prevent"]),
372
- onDrop: P((e) => ce(e, t.id), ["prevent"]),
373
- onDragend: W
389
+ draggable: O(I)(t.id),
390
+ onDragstart: (e) => fe(e, t.id),
391
+ onDragover: F((e) => W(e, t.id), ["prevent"]),
392
+ onDrop: F((e) => G(e, t.id), ["prevent"]),
393
+ onDragend: K
374
394
  }, [s("div", {
375
395
  class: "indicator-btn-wrapper",
376
396
  onMouseenter: (e) => v.value = t.id,
@@ -378,14 +398,14 @@ var Me = { class: "indicator-selector" }, Ne = { class: "indicator-scroll-contai
378
398
  }, [s("button", { class: g(["indicator-btn", {
379
399
  active: !0,
380
400
  hovering: v.value === t.id
381
- }]) }, [s("span", Re, [c(D(t.label) + " ", 1), t.params?.length ? (S(), o("span", ze, " (" + D(oe(t)) + ") ", 1)) : a("", !0)]), l(n, { name: "fade" }, {
382
- default: M(() => [v.value === t.id ? (S(), o("div", Be, [
401
+ }]) }, [s("span", Re, [c(D(t.label) + " ", 1), t.params?.length ? (S(), o("span", ze, " (" + D(ue(t)) + ") ", 1)) : a("", !0)]), l(n, { name: "fade" }, {
402
+ default: N(() => [v.value === t.id ? (S(), o("div", Be, [
383
403
  t.params?.length ? (S(), o("button", {
384
404
  key: 0,
385
405
  class: "action-btn settings-btn",
386
- onClick: P((e) => ie(t.id), ["stop"]),
406
+ onClick: F((e) => se(t.id), ["stop"]),
387
407
  title: "编辑参数"
388
- }, [...u[4] ||= [s("svg", {
408
+ }, [...u[5] ||= [s("svg", {
389
409
  viewBox: "0 0 24 24",
390
410
  width: "14",
391
411
  height: "14",
@@ -394,9 +414,9 @@ var Me = { class: "indicator-selector" }, Ne = { class: "indicator-scroll-contai
394
414
  t.params?.length ? (S(), o("span", He)) : a("", !0),
395
415
  s("button", {
396
416
  class: "action-btn remove-btn",
397
- onClick: P((e) => B(t.id), ["stop"]),
417
+ onClick: F((e) => U(t.id), ["stop"]),
398
418
  title: "移除指标"
399
- }, [...u[5] ||= [s("svg", {
419
+ }, [...u[6] ||= [s("svg", {
400
420
  viewBox: "0 0 24 24",
401
421
  width: "14",
402
422
  height: "14",
@@ -408,97 +428,119 @@ var Me = { class: "indicator-selector" }, Ne = { class: "indicator-scroll-contai
408
428
  ref_key: "addBtnRef",
409
429
  ref: m,
410
430
  class: "add-btn",
411
- onClick: le,
431
+ onClick: q,
412
432
  title: "添加指标"
413
- }, [...u[6] ||= [s("svg", {
433
+ }, [...u[7] ||= [s("svg", {
414
434
  viewBox: "0 0 24 24",
415
435
  width: "16",
416
436
  height: "16",
417
437
  fill: "currentColor"
418
438
  }, [s("path", { d: "M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z" })], -1)]], 512)])])]),
419
- (S(), i(t, { to: O(A) }, [l(n, { name: "overlay" }, {
420
- default: M(() => [b.value ? (S(), o("div", {
439
+ (S(), i(t, { to: O(M) }, [l(n, { name: "overlay" }, {
440
+ default: N(() => [b.value ? (S(), o("div", {
421
441
  key: 0,
422
442
  class: "selector-overlay",
423
- onClick: V
443
+ onClick: ce
424
444
  }, [l(n, { name: "modal" }, {
425
- default: M(() => [b.value ? (S(), o("div", {
445
+ default: N(() => [b.value ? (S(), o("div", {
426
446
  key: 0,
427
447
  class: "selector-modal",
428
- onClick: u[2] ||= P(() => {}, ["stop"])
448
+ onClick: u[3] ||= F(() => {}, ["stop"])
429
449
  }, [
430
- s("div", Ge, [s("div", Ke, [u[7] ||= s("span", { class: "title-text" }, "添加指标", -1), s("span", qe, D(te.value) + " 个可用指标", 1)]), s("div", Je, [s("button", {
450
+ s("div", Ge, [s("div", Ke, [u[8] ||= s("span", { class: "title-text" }, "添加指标", -1), s("span", qe, D(re.value) + " 个可用指标", 1)]), s("div", Je, [s("button", {
431
451
  class: g(["view-toggle-btn", { active: k.value }]),
432
452
  onClick: u[1] ||= (e) => k.value = !k.value,
433
453
  title: "简洁模式"
434
- }, [k.value ? (S(), o("svg", Xe, [...u[9] ||= [s("path", { d: "M3 3h18v18H3V3zm16 16V5H5v14h14zM7 7h4v4H7V7zm0 6h4v4H7v-4zm6-6h4v4h-4V7zm0 6h4v4h-4v-4z" }, null, -1)]])) : (S(), o("svg", Ye, [...u[8] ||= [s("path", { d: "M4 6h16v2H4zm0 5h16v2H4zm0 5h16v2H4z" }, null, -1)]]))], 2), s("button", {
454
+ }, [k.value ? (S(), o("svg", Xe, [...u[10] ||= [s("path", { d: "M3 3h18v18H3V3zm16 16V5H5v14h14zM7 7h4v4H7V7zm0 6h4v4H7v-4zm6-6h4v4h-4V7zm0 6h4v4h-4v-4z" }, null, -1)]])) : (S(), o("svg", Ye, [...u[9] ||= [s("path", { d: "M4 6h16v2H4zm0 5h16v2H4zm0 5h16v2H4z" }, null, -1)]]))], 2), s("button", {
435
455
  class: "modal-close",
436
- onClick: V,
437
- title: "??"
438
- }, [...u[10] ||= [s("svg", {
456
+ onClick: ce,
457
+ title: "关闭"
458
+ }, [...u[11] ||= [s("svg", {
439
459
  viewBox: "0 0 24 24",
440
460
  width: "14",
441
461
  height: "14",
442
462
  fill: "currentColor"
443
463
  }, [s("path", { d: "M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z" })], -1)]])])]),
444
- s("div", Ze, [
445
- s("div", Y, [s("div", Qe, [u[11] ||= s("span", { class: "section-title" }, "主图指标", -1), s("span", $e, D(O(I).length), 1)]), s("div", { class: g(["indicator-grid", { compact: k.value }]) }, [(S(!0), o(e, null, w(O(I), (t) => (S(), o("button", {
464
+ s("div", X, [
465
+ s("div", Ze, [u[12] ||= s("svg", {
466
+ class: "search-icon",
467
+ viewBox: "0 0 24 24",
468
+ width: "16",
469
+ height: "16",
470
+ fill: "currentColor"
471
+ }, [s("path", { d: "M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z" })], -1), P(s("input", {
472
+ "onUpdate:modelValue": u[2] ||= (e) => A.value = e,
473
+ type: "text",
474
+ class: "search-input",
475
+ placeholder: "搜索指标名称..."
476
+ }, null, 512), [[j, A.value]])]),
477
+ B.value.length > 0 ? (S(), o("div", Qe, [s("div", Z, [u[13] ||= s("span", { class: "section-title" }, "主图指标", -1), s("span", Q, D(B.value.length), 1)]), s("div", { class: g(["indicator-grid", { compact: k.value }]) }, [(S(!0), o(e, null, w(B.value, (t) => (S(), o("button", {
446
478
  key: t.id,
447
479
  class: g(["indicator-card", {
448
- active: z(t.id),
480
+ active: H(t.id),
449
481
  compact: k.value
450
482
  }]),
451
- onClick: (e) => z(t.id) ? B(t.id) : re(t.id)
452
- }, [k.value ? (S(), o(e, { key: 0 }, [s("span", Z, D(t.label), 1), s("span", et, D(t.name), 1)], 64)) : (S(), o(e, { key: 1 }, [s("div", tt, [s("span", nt, D(t.label), 1), s("div", rt, [t.params?.length ? (S(), o("button", {
483
+ onClick: (e) => H(t.id) ? U(t.id) : oe(t.id)
484
+ }, [k.value ? (S(), o(e, { key: 0 }, [s("span", et, D(t.label), 1), s("span", tt, D(t.name), 1)], 64)) : (S(), o(e, { key: 1 }, [s("div", nt, [s("span", rt, D(t.label), 1), s("div", it, [t.params?.length ? (S(), o("button", {
453
485
  key: 0,
454
486
  class: "card-settings-btn",
455
- onClick: P((e) => ie(t.id), ["stop"]),
487
+ onClick: F((e) => se(t.id), ["stop"]),
456
488
  title: "编辑参数"
457
- }, [...u[12] ||= [s("svg", {
489
+ }, [...u[14] ||= [s("svg", {
458
490
  viewBox: "0 0 24 24",
459
491
  width: "14",
460
492
  height: "14",
461
493
  fill: "currentColor"
462
- }, [s("path", { d: "M19.14 12.94c.04-.31.06-.63.06-.94 0-.31-.02-.63-.06-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.74 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.04.31-.06.63-.06.94s.02.63.06.94l-2.03 1.58c-.18.14-.23.41-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .44-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.47-.12-.61l-2.01-1.58zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6z" })], -1)]], 8, it)) : a("", !0)])]), s("div", at, D(t.name), 1)], 64))], 10, X))), 128))], 2)]),
463
- u[15] ||= s("div", { class: "section-divider" }, null, -1),
464
- s("div", ot, [s("div", st, [u[13] ||= s("span", { class: "section-title" }, "副图指标", -1), s("span", ct, D(O(L).length), 1)]), s("div", { class: g(["indicator-grid", { compact: k.value }]) }, [(S(!0), o(e, null, w(O(L), (t) => (S(), o("button", {
494
+ }, [s("path", { d: "M19.14 12.94c.04-.31.06-.63.06-.94 0-.31-.02-.63-.06-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.74 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.04.31-.06.63-.06.94s.02.63.06.94l-2.03 1.58c-.18.14-.23.41-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .44-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.47-.12-.61l-2.01-1.58zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6z" })], -1)]], 8, at)) : a("", !0)])]), s("div", ot, D(t.name), 1)], 64))], 10, $e))), 128))], 2)])) : a("", !0),
495
+ B.value.length > 0 && V.value.length > 0 ? (S(), o("div", st)) : a("", !0),
496
+ !ae.value && A.value.trim() ? (S(), o("div", ct, [...u[15] ||= [
497
+ s("svg", {
498
+ viewBox: "0 0 24 24",
499
+ width: "48",
500
+ height: "48",
501
+ fill: "currentColor"
502
+ }, [s("path", { d: "M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z" })], -1),
503
+ s("p", null, "未找到匹配的指标", -1),
504
+ s("span", { class: "no-results-hint" }, "请尝试其他关键词", -1)
505
+ ]])) : a("", !0),
506
+ V.value.length > 0 ? (S(), o("div", lt, [s("div", ut, [u[16] ||= s("span", { class: "section-title" }, "副图指标", -1), s("span", dt, D(V.value.length), 1)]), s("div", { class: g(["indicator-grid", { compact: k.value }]) }, [(S(!0), o(e, null, w(V.value, (t) => (S(), o("button", {
465
507
  key: t.id,
466
508
  class: g(["indicator-card", {
467
- active: z(t.id),
509
+ active: H(t.id),
468
510
  compact: k.value
469
511
  }]),
470
- onClick: (e) => z(t.id) ? B(t.id) : re(t.id)
471
- }, [k.value ? (S(), o(e, { key: 0 }, [s("span", ut, D(t.label), 1), s("span", dt, D(t.name), 1)], 64)) : (S(), o(e, { key: 1 }, [s("div", ft, [s("span", pt, D(t.label), 1), s("div", mt, [t.params?.length ? (S(), o("button", {
512
+ onClick: (e) => H(t.id) ? U(t.id) : oe(t.id)
513
+ }, [k.value ? (S(), o(e, { key: 0 }, [s("span", pt, D(t.label), 1), s("span", mt, D(t.name), 1)], 64)) : (S(), o(e, { key: 1 }, [s("div", ht, [s("span", gt, D(t.label), 1), s("div", _t, [t.params?.length ? (S(), o("button", {
472
514
  key: 0,
473
515
  class: "card-settings-btn",
474
- onClick: P((e) => ie(t.id), ["stop"]),
516
+ onClick: F((e) => se(t.id), ["stop"]),
475
517
  title: "编辑参数"
476
- }, [...u[14] ||= [s("svg", {
518
+ }, [...u[17] ||= [s("svg", {
477
519
  viewBox: "0 0 24 24",
478
520
  width: "14",
479
521
  height: "14",
480
522
  fill: "currentColor"
481
- }, [s("path", { d: "M19.14 12.94c.04-.31.06-.63.06-.94 0-.31-.02-.63-.06-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.74 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.04.31-.06.63-.06.94s.02.63.06.94l-2.03 1.58c-.18.14-.23.41-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .44-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.47-.12-.61l-2.01-1.58zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6z" })], -1)]], 8, ht)) : a("", !0)])]), s("div", gt, D(t.name), 1)], 64))], 10, lt))), 128))], 2)])
523
+ }, [s("path", { d: "M19.14 12.94c.04-.31.06-.63.06-.94 0-.31-.02-.63-.06-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.74 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.04.31-.06.63-.06.94s.02.63.06.94l-2.03 1.58c-.18.14-.23.41-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .44-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.47-.12-.61l-2.01-1.58zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6z" })], -1)]], 8, vt)) : a("", !0)])]), s("div", yt, D(t.name), 1)], 64))], 10, ft))), 128))], 2)])) : a("", !0)
482
524
  ]),
483
- s("div", _t, [s("div", vt, [s("span", yt, "已激活 " + D(ne.value) + " 个指标", 1)]), s("button", {
525
+ s("div", bt, [s("div", xt, [s("span", St, "已激活 " + D(ie.value) + " 个指标", 1)]), s("button", {
484
526
  class: "btn btn-confirm",
485
- onClick: V
486
- }, "??")])
527
+ onClick: ce
528
+ }, "确认")])
487
529
  ])) : a("", !0)]),
488
530
  _: 1
489
531
  })])) : a("", !0)]),
490
532
  _: 1
491
533
  })], 8, ["to"])),
492
- R.value ? (S(), i(ke, {
534
+ z.value ? (S(), i(ke, {
493
535
  key: 0,
494
536
  visible: h.value,
495
- "indicator-id": R.value.id,
496
- "indicator-name": R.value.name,
497
- "indicator-description": R.value.description,
498
- params: R.value.params || [],
499
- values: ae(R.value.id),
500
- onClose: u[3] ||= (e) => h.value = !1,
501
- onConfirm: H
537
+ "indicator-id": z.value.id,
538
+ "indicator-name": z.value.name,
539
+ "indicator-description": z.value.description,
540
+ params: z.value.params || [],
541
+ values: le(z.value.id),
542
+ onClose: u[4] ||= (e) => h.value = !1,
543
+ onConfirm: de
502
544
  }, null, 8, [
503
545
  "visible",
504
546
  "indicator-id",
@@ -509,25 +551,25 @@ var Me = { class: "indicator-selector" }, Ne = { class: "indicator-scroll-contai
509
551
  ])) : a("", !0)
510
552
  ]));
511
553
  }
512
- }), [["__scopeId", "data-v-4dc6bc90"]]), xt = { class: "kline-tooltip__title" }, St = { key: 0 }, Ct = { class: "kline-tooltip__grid" }, wt = { class: "row" }, Tt = { class: "row" }, Et = { class: "row" }, Dt = { class: "row" }, Ot = {
554
+ }), [["__scopeId", "data-v-22a0d967"]]), wt = { class: "kline-tooltip__title" }, Tt = { key: 0 }, Et = { class: "kline-tooltip__grid" }, Dt = { class: "row" }, Ot = { class: "row" }, kt = { class: "row" }, At = { class: "row" }, jt = {
513
555
  key: 0,
514
556
  class: "row"
515
- }, kt = {
557
+ }, Mt = {
516
558
  key: 1,
517
559
  class: "row"
518
- }, At = {
560
+ }, Nt = {
519
561
  key: 2,
520
562
  class: "row"
521
- }, jt = {
563
+ }, Pt = {
522
564
  key: 3,
523
565
  class: "row"
524
- }, Mt = {
566
+ }, Ft = {
525
567
  key: 4,
526
568
  class: "row"
527
- }, Nt = {
569
+ }, It = {
528
570
  key: 5,
529
571
  class: "row"
530
- }, Pt = "#ef4444", Ft = "#22c55e", It = "#6b7280", Lt = /* @__PURE__ */ K(/* @__PURE__ */ u({
572
+ }, Lt = "#ef4444", Rt = "#22c55e", zt = "#6b7280", Bt = /* @__PURE__ */ q(/* @__PURE__ */ u({
531
573
  __name: "KLineTooltip",
532
574
  props: {
533
575
  k: {},
@@ -560,19 +602,19 @@ var Me = { class: "indicator-selector" }, Ne = { class: "indicator-scroll-contai
560
602
  }
561
603
  let p = r(() => {
562
604
  let e = t.k;
563
- if (!e) return It;
605
+ if (!e) return zt;
564
606
  let n = f(e, t.data, t.index);
565
- return n > 0 ? Pt : n < 0 ? Ft : It;
607
+ return n > 0 ? Lt : n < 0 ? Rt : zt;
566
608
  }), m = r(() => {
567
609
  let e = t.k;
568
- if (!e) return It;
610
+ if (!e) return zt;
569
611
  let n = e.close - e.open;
570
- return n > 0 ? Pt : n < 0 ? Ft : It;
612
+ return n > 0 ? Lt : n < 0 ? Rt : zt;
571
613
  }), h = r(() => {
572
614
  let e = t.k;
573
- if (!e) return It;
615
+ if (!e) return zt;
574
616
  let n = e.changePercent ?? (e.close - e.open) / e.open * 100;
575
- return n > 0 ? Pt : n < 0 ? Ft : It;
617
+ return n > 0 ? Lt : n < 0 ? Rt : zt;
576
618
  });
577
619
  return (t, r) => e.k ? (S(), o("div", {
578
620
  key: 0,
@@ -582,23 +624,23 @@ var Me = { class: "indicator-selector" }, Ne = { class: "indicator-scroll-contai
582
624
  left: `${e.pos.x}px`,
583
625
  top: `${e.pos.y}px`
584
626
  })
585
- }, [s("div", xt, [e.k.stockCode ? (S(), o("span", St, D(e.k.stockCode), 1)) : a("", !0), s("span", null, D(l(e.k.timestamp)), 1)]), s("div", Ct, [
586
- s("div", wt, [r[0] ||= s("span", null, "开", -1), s("span", { style: _({ color: p.value }) }, D(e.k.open.toFixed(2)), 5)]),
587
- s("div", Tt, [r[1] ||= s("span", null, "高", -1), s("span", null, D(e.k.high.toFixed(2)), 1)]),
588
- s("div", Et, [r[2] ||= s("span", null, "低", -1), s("span", null, D(e.k.low.toFixed(2)), 1)]),
589
- s("div", Dt, [r[3] ||= s("span", null, "收", -1), s("span", { style: _({ color: m.value }) }, D(e.k.close.toFixed(2)), 5)]),
590
- typeof e.k.volume == "number" ? (S(), o("div", Ot, [r[4] ||= s("span", null, "成交量", -1), s("span", null, D(u(e.k.volume)), 1)])) : a("", !0),
591
- typeof e.k.turnover == "number" ? (S(), o("div", kt, [r[5] ||= s("span", null, "成交额", -1), s("span", null, D(u(e.k.turnover)), 1)])) : a("", !0),
592
- typeof e.k.amplitude == "number" ? (S(), o("div", At, [r[6] ||= s("span", null, "振幅", -1), s("span", null, D(e.k.amplitude) + "%", 1)])) : a("", !0),
593
- typeof e.k.changePercent == "number" ? (S(), o("div", jt, [r[7] ||= s("span", null, "涨跌幅", -1), s("span", { style: _({ color: h.value }) }, D(d(e.k.changePercent, "%")), 5)])) : a("", !0),
594
- typeof e.k.changeAmount == "number" ? (S(), o("div", Mt, [r[8] ||= s("span", null, "涨跌额", -1), s("span", { style: _({ color: h.value }) }, D(d(e.k.changeAmount, "")), 5)])) : a("", !0),
595
- typeof e.k.turnoverRate == "number" ? (S(), o("div", Nt, [r[9] ||= s("span", null, "换手率", -1), s("span", null, D(e.k.turnoverRate.toFixed(2)) + "%", 1)])) : a("", !0)
627
+ }, [s("div", wt, [e.k.stockCode ? (S(), o("span", Tt, D(e.k.stockCode), 1)) : a("", !0), s("span", null, D(l(e.k.timestamp)), 1)]), s("div", Et, [
628
+ s("div", Dt, [r[0] ||= s("span", null, "开", -1), s("span", { style: _({ color: p.value }) }, D(e.k.open.toFixed(2)), 5)]),
629
+ s("div", Ot, [r[1] ||= s("span", null, "高", -1), s("span", null, D(e.k.high.toFixed(2)), 1)]),
630
+ s("div", kt, [r[2] ||= s("span", null, "低", -1), s("span", null, D(e.k.low.toFixed(2)), 1)]),
631
+ s("div", At, [r[3] ||= s("span", null, "收", -1), s("span", { style: _({ color: m.value }) }, D(e.k.close.toFixed(2)), 5)]),
632
+ typeof e.k.volume == "number" ? (S(), o("div", jt, [r[4] ||= s("span", null, "成交量", -1), s("span", null, D(u(e.k.volume)), 1)])) : a("", !0),
633
+ typeof e.k.turnover == "number" ? (S(), o("div", Mt, [r[5] ||= s("span", null, "成交额", -1), s("span", null, D(u(e.k.turnover)), 1)])) : a("", !0),
634
+ typeof e.k.amplitude == "number" ? (S(), o("div", Nt, [r[6] ||= s("span", null, "振幅", -1), s("span", null, D(e.k.amplitude) + "%", 1)])) : a("", !0),
635
+ typeof e.k.changePercent == "number" ? (S(), o("div", Pt, [r[7] ||= s("span", null, "涨跌幅", -1), s("span", { style: _({ color: h.value }) }, D(d(e.k.changePercent, "%")), 5)])) : a("", !0),
636
+ typeof e.k.changeAmount == "number" ? (S(), o("div", Ft, [r[8] ||= s("span", null, "涨跌额", -1), s("span", { style: _({ color: h.value }) }, D(d(e.k.changeAmount, "")), 5)])) : a("", !0),
637
+ typeof e.k.turnoverRate == "number" ? (S(), o("div", It, [r[9] ||= s("span", null, "换手率", -1), s("span", null, D(e.k.turnoverRate.toFixed(2)) + "%", 1)])) : a("", !0)
596
638
  ])], 6)) : a("", !0);
597
639
  }
598
- }), [["__scopeId", "data-v-90b1aa6d"]]), Rt = { class: "marker-tooltip__title" }, zt = {
640
+ }), [["__scopeId", "data-v-90b1aa6d"]]), Vt = { class: "marker-tooltip__title" }, Ht = {
599
641
  key: 0,
600
642
  class: "marker-tooltip__content"
601
- }, Bt = /* @__PURE__ */ K(/* @__PURE__ */ u({
643
+ }, Ut = /* @__PURE__ */ q(/* @__PURE__ */ u({
602
644
  __name: "MarkerTooltip",
603
645
  props: {
604
646
  marker: {},
@@ -647,30 +689,12 @@ var Me = { class: "indicator-selector" }, Ne = { class: "indicator-scroll-contai
647
689
  left: `${t.pos.x + 12}px`,
648
690
  top: `${t.pos.y + 12}px`
649
691
  })
650
- }, [s("div", Rt, D(f.value), 1), m.value ? (S(), o("div", zt, [(S(!0), o(e, null, w(p.value, (e, t) => (S(), o("div", {
692
+ }, [s("div", Vt, D(f.value), 1), m.value ? (S(), o("div", Ht, [(S(!0), o(e, null, w(p.value, (e, t) => (S(), o("div", {
651
693
  key: t,
652
694
  class: "row"
653
695
  }, [s("span", null, D(t), 1), s("span", null, D(h(e)), 1)]))), 128))])) : a("", !0)], 6)) : a("", !0);
654
696
  }
655
- }), [["__scopeId", "data-v-057b55c9"]]), Vt = {
656
- viewBox: "0 0 24 24",
657
- width: "1.2em",
658
- height: "1.2em"
659
- };
660
- function Ht(e, t) {
661
- return S(), o("svg", Vt, [...t[0] ||= [s("path", {
662
- fill: "none",
663
- stroke: "currentColor",
664
- "stroke-linecap": "round",
665
- "stroke-linejoin": "round",
666
- "stroke-width": "2",
667
- d: "M7.904 17.563a1.2 1.2 0 0 0 2.228.308l2.09-3.093l4.907 4.907a1.067 1.067 0 0 0 1.509 0l1.047-1.047a1.067 1.067 0 0 0 0-1.509l-4.907-4.907l3.113-2.09a1.2 1.2 0 0 0-.309-2.228L4 4z"
668
- }, null, -1)]]);
669
- }
670
- var Ut = m({
671
- name: "tabler-pointer",
672
- render: Ht
673
- }), Wt = {
697
+ }), [["__scopeId", "data-v-057b55c9"]]), Wt = {
674
698
  viewBox: "0 0 24 24",
675
699
  width: "1.2em",
676
700
  height: "1.2em"
@@ -682,11 +706,11 @@ function Gt(e, t) {
682
706
  "stroke-linecap": "round",
683
707
  "stroke-linejoin": "round",
684
708
  "stroke-width": "2",
685
- d: "M4 19h16M4 15l4-6l4 2l4-5l4 4"
709
+ d: "M7.904 17.563a1.2 1.2 0 0 0 2.228.308l2.09-3.093l4.907 4.907a1.067 1.067 0 0 0 1.509 0l1.047-1.047a1.067 1.067 0 0 0 0-1.509l-4.907-4.907l3.113-2.09a1.2 1.2 0 0 0-.309-2.228L4 4z"
686
710
  }, null, -1)]]);
687
711
  }
688
712
  var Kt = m({
689
- name: "tabler-chart-line",
713
+ name: "tabler-pointer",
690
714
  render: Gt
691
715
  }), qt = {
692
716
  viewBox: "0 0 24 24",
@@ -700,11 +724,11 @@ function Jt(e, t) {
700
724
  "stroke-linecap": "round",
701
725
  "stroke-linejoin": "round",
702
726
  "stroke-width": "2",
703
- d: "M17 7L7 17M8 7h9v9"
727
+ d: "M4 19h16M4 15l4-6l4 2l4-5l4 4"
704
728
  }, null, -1)]]);
705
729
  }
706
730
  var Yt = m({
707
- name: "tabler-arrow-up-right",
731
+ name: "tabler-chart-line",
708
732
  render: Jt
709
733
  }), Xt = {
710
734
  viewBox: "0 0 24 24",
@@ -718,11 +742,11 @@ function Zt(e, t) {
718
742
  "stroke-linecap": "round",
719
743
  "stroke-linejoin": "round",
720
744
  "stroke-width": "2",
721
- d: "M5 12h14m-6 6l6-6m-6-6l6 6"
745
+ d: "M17 7L7 17M8 7h9v9"
722
746
  }, null, -1)]]);
723
747
  }
724
748
  var Qt = m({
725
- name: "tabler-arrow-right",
749
+ name: "tabler-arrow-up-right",
726
750
  render: Zt
727
751
  }), $t = {
728
752
  viewBox: "0 0 24 24",
@@ -736,11 +760,11 @@ function en(e, t) {
736
760
  "stroke-linecap": "round",
737
761
  "stroke-linejoin": "round",
738
762
  "stroke-width": "2",
739
- d: "M5 12h14"
763
+ d: "M5 12h14m-6 6l6-6m-6-6l6 6"
740
764
  }, null, -1)]]);
741
765
  }
742
766
  var tn = m({
743
- name: "tabler-minus",
767
+ name: "tabler-arrow-right",
744
768
  render: en
745
769
  }), nn = {
746
770
  viewBox: "0 0 24 24",
@@ -754,11 +778,11 @@ function rn(e, t) {
754
778
  "stroke-linecap": "round",
755
779
  "stroke-linejoin": "round",
756
780
  "stroke-width": "2",
757
- d: "M3 12v.01M7 12h10m4 0v.01"
781
+ d: "M5 12h14"
758
782
  }, null, -1)]]);
759
783
  }
760
784
  var an = m({
761
- name: "tabler-separator",
785
+ name: "tabler-minus",
762
786
  render: rn
763
787
  }), on = {
764
788
  viewBox: "0 0 24 24",
@@ -772,11 +796,11 @@ function sn(e, t) {
772
796
  "stroke-linecap": "round",
773
797
  "stroke-linejoin": "round",
774
798
  "stroke-width": "2",
775
- d: "M4 8V6a2 2 0 0 1 2-2h2M4 16v2a2 2 0 0 0 2 2h2m8-16h2a2 2 0 0 1 2 2v2m-4 12h2a2 2 0 0 0 2-2v-2M9 12h6m-3-3v6"
799
+ d: "M3 12v.01M7 12h10m4 0v.01"
776
800
  }, null, -1)]]);
777
801
  }
778
802
  var cn = m({
779
- name: "tabler-crosshair",
803
+ name: "tabler-separator",
780
804
  render: sn
781
805
  }), ln = {
782
806
  viewBox: "0 0 24 24",
@@ -784,16 +808,17 @@ var cn = m({
784
808
  height: "1.2em"
785
809
  };
786
810
  function un(e, t) {
787
- return S(), o("svg", ln, [...t[0] ||= [s("g", {
811
+ return S(), o("svg", ln, [...t[0] ||= [s("path", {
788
812
  fill: "none",
789
813
  stroke: "currentColor",
790
814
  "stroke-linecap": "round",
791
815
  "stroke-linejoin": "round",
792
- "stroke-width": "2"
793
- }, [s("path", { d: "M3 12a9 9 0 1 0 18 0a9 9 0 0 0-18 0m9-3h.01" }), s("path", { d: "M11 12h1v4h1" })], -1)]]);
816
+ "stroke-width": "2",
817
+ d: "M4 8V6a2 2 0 0 1 2-2h2M4 16v2a2 2 0 0 0 2 2h2m8-16h2a2 2 0 0 1 2 2v2m-4 12h2a2 2 0 0 0 2-2v-2M9 12h6m-3-3v6"
818
+ }, null, -1)]]);
794
819
  }
795
820
  var dn = m({
796
- name: "tabler-info-circle",
821
+ name: "tabler-crosshair",
797
822
  render: un
798
823
  }), fn = {
799
824
  viewBox: "0 0 24 24",
@@ -801,17 +826,16 @@ var dn = m({
801
826
  height: "1.2em"
802
827
  };
803
828
  function pn(e, t) {
804
- return S(), o("svg", fn, [...t[0] ||= [s("path", {
829
+ return S(), o("svg", fn, [...t[0] ||= [s("g", {
805
830
  fill: "none",
806
831
  stroke: "currentColor",
807
832
  "stroke-linecap": "round",
808
833
  "stroke-linejoin": "round",
809
- "stroke-width": "2",
810
- d: "M3 10a7 7 0 1 0 14 0a7 7 0 1 0-14 0m4 0h6m-3-3v6m11 8l-6-6"
811
- }, null, -1)]]);
834
+ "stroke-width": "2"
835
+ }, [s("path", { d: "M3 12a9 9 0 1 0 18 0a9 9 0 0 0-18 0m9-3h.01" }), s("path", { d: "M11 12h1v4h1" })], -1)]]);
812
836
  }
813
837
  var mn = m({
814
- name: "tabler-zoom-in",
838
+ name: "tabler-info-circle",
815
839
  render: pn
816
840
  }), hn = {
817
841
  viewBox: "0 0 24 24",
@@ -825,11 +849,11 @@ function gn(e, t) {
825
849
  "stroke-linecap": "round",
826
850
  "stroke-linejoin": "round",
827
851
  "stroke-width": "2",
828
- d: "M3 10a7 7 0 1 0 14 0a7 7 0 1 0-14 0m4 0h6m8 11l-6-6"
852
+ d: "M3 10a7 7 0 1 0 14 0a7 7 0 1 0-14 0m4 0h6m-3-3v6m11 8l-6-6"
829
853
  }, null, -1)]]);
830
854
  }
831
855
  var _n = m({
832
- name: "tabler-zoom-out",
856
+ name: "tabler-zoom-in",
833
857
  render: gn
834
858
  }), vn = {
835
859
  viewBox: "0 0 24 24",
@@ -843,11 +867,11 @@ function yn(e, t) {
843
867
  "stroke-linecap": "round",
844
868
  "stroke-linejoin": "round",
845
869
  "stroke-width": "2",
846
- d: "M4 8V6a2 2 0 0 1 2-2h2M4 16v2a2 2 0 0 0 2 2h2m8-16h2a2 2 0 0 1 2 2v2m-4 12h2a2 2 0 0 0 2-2v-2"
870
+ d: "M3 10a7 7 0 1 0 14 0a7 7 0 1 0-14 0m4 0h6m8 11l-6-6"
847
871
  }, null, -1)]]);
848
872
  }
849
873
  var bn = m({
850
- name: "tabler-maximize",
874
+ name: "tabler-zoom-out",
851
875
  render: yn
852
876
  }), xn = {
853
877
  viewBox: "0 0 24 24",
@@ -861,11 +885,11 @@ function Sn(e, t) {
861
885
  "stroke-linecap": "round",
862
886
  "stroke-linejoin": "round",
863
887
  "stroke-width": "2",
864
- d: "M15 19v-2a2 2 0 0 1 2-2h2M15 5v2a2 2 0 0 0 2 2h2M5 15h2a2 2 0 0 1 2 2v2M5 9h2a2 2 0 0 0 2-2V5"
888
+ d: "M4 8V6a2 2 0 0 1 2-2h2M4 16v2a2 2 0 0 0 2 2h2m8-16h2a2 2 0 0 1 2 2v2m-4 12h2a2 2 0 0 0 2-2v-2"
865
889
  }, null, -1)]]);
866
890
  }
867
891
  var Cn = m({
868
- name: "tabler-minimize",
892
+ name: "tabler-maximize",
869
893
  render: Sn
870
894
  }), wn = {
871
895
  viewBox: "0 0 24 24",
@@ -873,16 +897,17 @@ var Cn = m({
873
897
  height: "1.2em"
874
898
  };
875
899
  function Tn(e, t) {
876
- return S(), o("svg", wn, [...t[0] ||= [s("g", {
900
+ return S(), o("svg", wn, [...t[0] ||= [s("path", {
877
901
  fill: "none",
878
902
  stroke: "currentColor",
879
903
  "stroke-linecap": "round",
880
904
  "stroke-linejoin": "round",
881
- "stroke-width": "2"
882
- }, [s("path", { d: "M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 0 0 2.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 0 0 1.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 0 0-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 0 0-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 0 0-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 0 0-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 0 0 1.066-2.573c-.94-1.543.826-3.31 2.37-2.37c1 .608 2.296.07 2.572-1.065" }), s("path", { d: "M9 12a3 3 0 1 0 6 0a3 3 0 0 0-6 0" })], -1)]]);
905
+ "stroke-width": "2",
906
+ d: "M15 19v-2a2 2 0 0 1 2-2h2M15 5v2a2 2 0 0 0 2 2h2M5 15h2a2 2 0 0 1 2 2v2M5 9h2a2 2 0 0 0 2-2V5"
907
+ }, null, -1)]]);
883
908
  }
884
909
  var En = m({
885
- name: "tabler-settings",
910
+ name: "tabler-minimize",
886
911
  render: Tn
887
912
  }), Dn = {
888
913
  viewBox: "0 0 24 24",
@@ -890,17 +915,16 @@ var En = m({
890
915
  height: "1.2em"
891
916
  };
892
917
  function On(e, t) {
893
- return S(), o("svg", Dn, [...t[0] ||= [s("path", {
918
+ return S(), o("svg", Dn, [...t[0] ||= [s("g", {
894
919
  fill: "none",
895
920
  stroke: "currentColor",
896
921
  "stroke-linecap": "round",
897
922
  "stroke-linejoin": "round",
898
- "stroke-width": "2",
899
- d: "M3 5a2 2 0 1 0 4 0a2 2 0 1 0-4 0m14 0a2 2 0 1 0 4 0a2 2 0 1 0-4 0M3 19a2 2 0 1 0 4 0a2 2 0 1 0-4 0m14 0a2 2 0 1 0 4 0a2 2 0 1 0-4 0M5 7v10M7 5h10M7 19h10m2-12v10"
900
- }, null, -1)]]);
923
+ "stroke-width": "2"
924
+ }, [s("path", { d: "M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 0 0 2.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 0 0 1.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 0 0-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 0 0-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 0 0-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 0 0-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 0 0 1.066-2.573c-.94-1.543.826-3.31 2.37-2.37c1 .608 2.296.07 2.572-1.065" }), s("path", { d: "M9 12a3 3 0 1 0 6 0a3 3 0 0 0-6 0" })], -1)]]);
901
925
  }
902
926
  var kn = m({
903
- name: "tabler-shape",
927
+ name: "tabler-settings",
904
928
  render: On
905
929
  }), An = {
906
930
  viewBox: "0 0 24 24",
@@ -914,11 +938,11 @@ function jn(e, t) {
914
938
  "stroke-linecap": "round",
915
939
  "stroke-linejoin": "round",
916
940
  "stroke-width": "2",
917
- d: "M3 7a2 2 0 1 0 4 0a2 2 0 1 0-4 0m11 8a2 2 0 1 0 4 0a2 2 0 1 0-4 0m1-9a3 3 0 1 0 6 0a3 3 0 1 0-6 0M3 18a3 3 0 1 0 6 0a3 3 0 1 0-6 0m6-1l5-1.5m-7.5-7l7.81 5.37M7 7l8-1"
941
+ d: "M3 5a2 2 0 1 0 4 0a2 2 0 1 0-4 0m14 0a2 2 0 1 0 4 0a2 2 0 1 0-4 0M3 19a2 2 0 1 0 4 0a2 2 0 1 0-4 0m14 0a2 2 0 1 0 4 0a2 2 0 1 0-4 0M5 7v10M7 5h10M7 19h10m2-12v10"
918
942
  }, null, -1)]]);
919
943
  }
920
944
  var Mn = m({
921
- name: "tabler-chart-dots-3",
945
+ name: "tabler-shape",
922
946
  render: jn
923
947
  }), Nn = {
924
948
  viewBox: "0 0 24 24",
@@ -932,11 +956,11 @@ function Pn(e, t) {
932
956
  "stroke-linecap": "round",
933
957
  "stroke-linejoin": "round",
934
958
  "stroke-width": "2",
935
- d: "m18 10l-6-6l-6 6zm0 4l-6 6l-6-6z"
959
+ d: "M3 7a2 2 0 1 0 4 0a2 2 0 1 0-4 0m11 8a2 2 0 1 0 4 0a2 2 0 1 0-4 0m1-9a3 3 0 1 0 6 0a3 3 0 1 0-6 0M3 18a3 3 0 1 0 6 0a3 3 0 1 0-6 0m6-1l5-1.5m-7.5-7l7.81 5.37M7 7l8-1"
936
960
  }, null, -1)]]);
937
961
  }
938
962
  var Fn = m({
939
- name: "tabler-caret-up-down",
963
+ name: "tabler-chart-dots-3",
940
964
  render: Pn
941
965
  }), In = {
942
966
  viewBox: "0 0 24 24",
@@ -950,37 +974,55 @@ function Ln(e, t) {
950
974
  "stroke-linecap": "round",
951
975
  "stroke-linejoin": "round",
952
976
  "stroke-width": "2",
953
- d: "M8 4H5v16h3m8-16h3v16h-3"
977
+ d: "m18 10l-6-6l-6 6zm0 4l-6 6l-6-6z"
954
978
  }, null, -1)]]);
955
979
  }
956
980
  var Rn = m({
957
- name: "tabler-brackets",
981
+ name: "tabler-caret-up-down",
958
982
  render: Ln
983
+ }), zn = {
984
+ viewBox: "0 0 24 24",
985
+ width: "1.2em",
986
+ height: "1.2em"
987
+ };
988
+ function Bn(e, t) {
989
+ return S(), o("svg", zn, [...t[0] ||= [s("path", {
990
+ fill: "none",
991
+ stroke: "currentColor",
992
+ "stroke-linecap": "round",
993
+ "stroke-linejoin": "round",
994
+ "stroke-width": "2",
995
+ d: "M8 4H5v16h3m8-16h3v16h-3"
996
+ }, null, -1)]]);
997
+ }
998
+ var Vn = m({
999
+ name: "tabler-brackets",
1000
+ render: Bn
959
1001
  });
960
1002
  //#endregion
961
1003
  //#region src/debug/canvasProfiler.ts
962
- function zn() {
1004
+ function Hn() {
963
1005
  return Object.create(null);
964
1006
  }
965
- function Bn() {
1007
+ function Un() {
966
1008
  return {
967
- ctxMethods: zn(),
968
- ctxProps: zn(),
969
- canvasProps: zn(),
1009
+ ctxMethods: Hn(),
1010
+ ctxProps: Hn(),
1011
+ canvasProps: Hn(),
970
1012
  ctxMethodSources: Object.create(null)
971
1013
  };
972
1014
  }
973
- function Vn(e, t, n) {
1015
+ function Wn(e, t, n) {
974
1016
  let r = e[t] ??= {
975
1017
  count: 0,
976
1018
  totalTime: 0
977
1019
  };
978
1020
  r.count += 1, r.totalTime += n;
979
1021
  }
980
- function Hn(e, t, n, r) {
981
- Vn(e.ctxMethodSources[t] ??= zn(), n, r);
1022
+ function Gn(e, t, n, r) {
1023
+ Wn(e.ctxMethodSources[t] ??= Hn(), n, r);
982
1024
  }
983
- function Un(e) {
1025
+ function Kn(e) {
984
1026
  return Object.entries(e).filter(([, e]) => e.count > 0).map(([e, t]) => ({
985
1027
  name: e,
986
1028
  count: t.count,
@@ -988,12 +1030,12 @@ function Un(e) {
988
1030
  averageTime: (t.totalTime / t.count).toFixed(4)
989
1031
  })).sort((e, t) => Number(t.totalTime) - Number(e.totalTime));
990
1032
  }
991
- var Wn = !1, Gn = /* @__PURE__ */ new Map(), Kn = /* @__PURE__ */ new Map();
992
- function qn(e) {
993
- Wn = e, e ? typeof window < "u" && !window.__KMAP_CANVAS_PROFILER_INSTALLED__ && Yn() : Xn();
1033
+ var qn = !1, Jn = /* @__PURE__ */ new Map(), Yn = /* @__PURE__ */ new Map();
1034
+ function Xn(e) {
1035
+ qn = e, e ? typeof window < "u" && !window.__KMAP_CANVAS_PROFILER_INSTALLED__ && $n() : er();
994
1036
  }
995
- function Jn() {
996
- if (!Wn) return "disabled";
1037
+ function Zn() {
1038
+ if (!qn) return "disabled";
997
1039
  let e = (/* @__PURE__ */ Error()).stack;
998
1040
  if (!e) return "unknown";
999
1041
  let t = e.split("\n").map((e) => e.trim()).filter(Boolean);
@@ -1006,82 +1048,82 @@ function Jn() {
1006
1048
  }
1007
1049
  return "unknown";
1008
1050
  }
1009
- function Q(e, t, n, r) {
1051
+ function $(e, t, n, r) {
1010
1052
  let i = `${e.constructor?.name ?? "proto"}:${t}`;
1011
- if (Gn.has(i)) return;
1053
+ if (Jn.has(i)) return;
1012
1054
  let a = Reflect.get(e, t);
1013
- typeof a == "function" && (Gn.set(i, a), Reflect.set(e, t, function(...e) {
1014
- if (!Wn) return a.apply(this, e);
1015
- let i = r?.captureSource ? Jn() : null, o = performance.now(), s = a.apply(this, e), c = performance.now() - o;
1016
- return Vn(n.ctxMethods, t, c), i && Hn(n, t, i, c), s;
1055
+ typeof a == "function" && (Jn.set(i, a), Reflect.set(e, t, function(...e) {
1056
+ if (!qn) return a.apply(this, e);
1057
+ let i = r?.captureSource ? Zn() : null, o = performance.now(), s = a.apply(this, e), c = performance.now() - o;
1058
+ return Wn(n.ctxMethods, t, c), i && Gn(n, t, i, c), s;
1017
1059
  }));
1018
1060
  }
1019
- function $(e, t, n) {
1061
+ function Qn(e, t, n) {
1020
1062
  let r = Object.getOwnPropertyDescriptor(e, t);
1021
1063
  if (!r?.set || !r.configurable) return;
1022
1064
  let i = `${e.constructor?.name ?? "proto"}:${t}`;
1023
- Kn.has(i) || (Kn.set(i, r), Object.defineProperty(e, t, {
1065
+ Yn.has(i) || (Yn.set(i, r), Object.defineProperty(e, t, {
1024
1066
  configurable: !0,
1025
1067
  enumerable: r.enumerable ?? !1,
1026
1068
  get: r.get,
1027
1069
  set(e) {
1028
- if (!Wn) {
1070
+ if (!qn) {
1029
1071
  r.set.call(this, e);
1030
1072
  return;
1031
1073
  }
1032
1074
  let i = performance.now();
1033
- r.set.call(this, e), Vn(n, t, performance.now() - i);
1075
+ r.set.call(this, e), Wn(n, t, performance.now() - i);
1034
1076
  }
1035
1077
  }));
1036
1078
  }
1037
- function Yn() {
1079
+ function $n() {
1038
1080
  if (typeof window > "u" || window.__KMAP_CANVAS_PROFILER_INSTALLED__) return;
1039
1081
  let e = CanvasRenderingContext2D?.prototype, t = HTMLCanvasElement?.prototype;
1040
1082
  if (!e || !t) return;
1041
- let n = Bn();
1042
- Q(e, "fillText", n, { captureSource: !0 }), Q(e, "measureText", n, { captureSource: !0 }), Q(e, "drawImage", n), Q(e, "save", n), Q(e, "restore", n), Q(e, "clip", n), Q(e, "setTransform", n), Q(e, "scale", n), $(e, "font", n.ctxProps), $(e, "filter", n.ctxProps), $(e, "shadowBlur", n.ctxProps), $(e, "lineWidth", n.ctxProps), $(t, "width", n.canvasProps), $(t, "height", n.canvasProps), window.__KMAP_CANVAS_PROFILER_METRICS__ = n, window.__KMAP_CANVAS_PROFILER_INSTALLED__ = !0, window.showCanvasReport = () => {
1083
+ let n = Un();
1084
+ $(e, "fillText", n, { captureSource: !0 }), $(e, "measureText", n, { captureSource: !0 }), $(e, "drawImage", n), $(e, "save", n), $(e, "restore", n), $(e, "clip", n), $(e, "setTransform", n), $(e, "scale", n), Qn(e, "font", n.ctxProps), Qn(e, "filter", n.ctxProps), Qn(e, "shadowBlur", n.ctxProps), Qn(e, "lineWidth", n.ctxProps), Qn(t, "width", n.canvasProps), Qn(t, "height", n.canvasProps), window.__KMAP_CANVAS_PROFILER_METRICS__ = n, window.__KMAP_CANVAS_PROFILER_INSTALLED__ = !0, window.showCanvasReport = () => {
1043
1085
  let e = window.__KMAP_CANVAS_PROFILER_METRICS__;
1044
1086
  if (e) {
1045
- console.group("[kmap] Canvas profiler report"), console.log("ctx methods"), console.table(Un(e.ctxMethods)), console.log("ctx props"), console.table(Un(e.ctxProps)), console.log("canvas props"), console.table(Un(e.canvasProps));
1087
+ console.group("[kmap] Canvas profiler report"), console.log("ctx methods"), console.table(Kn(e.ctxMethods)), console.log("ctx props"), console.table(Kn(e.ctxProps)), console.log("canvas props"), console.table(Kn(e.canvasProps));
1046
1088
  for (let t of ["fillText", "measureText"]) {
1047
1089
  let n = e.ctxMethodSources[t];
1048
- n && (console.log(`${t} sources`), console.table(Un(n).slice(0, 20)));
1090
+ n && (console.log(`${t} sources`), console.table(Kn(n).slice(0, 20)));
1049
1091
  }
1050
1092
  console.groupEnd();
1051
1093
  }
1052
1094
  }, window.resetCanvasReport = () => {
1053
- window.__KMAP_CANVAS_PROFILER_METRICS__ = Bn();
1095
+ window.__KMAP_CANVAS_PROFILER_METRICS__ = Un();
1054
1096
  }, console.info("[kmap] Canvas profiler enabled. Use window.showCanvasReport() and window.resetCanvasReport().");
1055
1097
  }
1056
- function Xn() {
1098
+ function er() {
1057
1099
  if (typeof window > "u" || !window.__KMAP_CANVAS_PROFILER_INSTALLED__) return;
1058
1100
  let e = CanvasRenderingContext2D?.prototype, t = HTMLCanvasElement?.prototype;
1059
- Gn.forEach((n, r) => {
1101
+ Jn.forEach((n, r) => {
1060
1102
  let i = r.match(/^(.+):(.+)$/);
1061
1103
  if (!i) return;
1062
1104
  let [, a, o] = i, s = null;
1063
1105
  a === "CanvasRenderingContext2D" ? s = e : a === "HTMLCanvasElement" && (s = t), s && Reflect.set(s, o, n);
1064
- }), Gn.clear(), Kn.forEach((n, r) => {
1106
+ }), Jn.clear(), Yn.forEach((n, r) => {
1065
1107
  let i = r.match(/^(.+):(.+)$/);
1066
1108
  if (!i) return;
1067
1109
  let [, a, o] = i, s = null;
1068
1110
  a === "CanvasRenderingContext2D" ? s = e : a === "HTMLCanvasElement" && (s = t), s && n.configurable && Object.defineProperty(s, o, n);
1069
- }), Kn.clear(), window.__KMAP_CANVAS_PROFILER_INSTALLED__ = !1, window.__KMAP_CANVAS_PROFILER_METRICS__ = void 0, window.showCanvasReport = void 0, window.resetCanvasReport = void 0, console.info("[kmap] Canvas profiler disabled.");
1111
+ }), Yn.clear(), window.__KMAP_CANVAS_PROFILER_INSTALLED__ = !1, window.__KMAP_CANVAS_PROFILER_METRICS__ = void 0, window.showCanvasReport = void 0, window.resetCanvasReport = void 0, console.info("[kmap] Canvas profiler disabled.");
1070
1112
  }
1071
1113
  //#endregion
1072
1114
  //#region src/components/LeftToolbar.vue?vue&type=script&setup=true&lang.ts
1073
- var Zn = {
1115
+ var tr = {
1074
1116
  class: "left-toolbar",
1075
1117
  "aria-label": "图表工具栏"
1076
- }, Qn = { class: "left-toolbar__group" }, $n = [
1118
+ }, nr = { class: "left-toolbar__group" }, rr = [
1077
1119
  "title",
1078
1120
  "aria-label",
1079
1121
  "onClick"
1080
- ], er = ["onClick"], tr = [
1122
+ ], ir = ["onClick"], ar = [
1081
1123
  "title",
1082
1124
  "aria-label",
1083
1125
  "onClick"
1084
- ], nr = { class: "left-toolbar__group" }, rr = { class: "left-toolbar__group" }, ir = ["title", "aria-label"], ar = { class: "left-toolbar__group" }, or = { class: "settings-body" }, sr = { class: "settings-label" }, cr = ["onUpdate:modelValue"], lr = ["onUpdate:modelValue"], ur = ["value"], dr = { class: "settings-label" }, fr = ["onUpdate:modelValue"], pr = ["onUpdate:modelValue"], mr = ["value"], hr = /* @__PURE__ */ K(/* @__PURE__ */ u({
1126
+ ], or = { class: "left-toolbar__group" }, sr = { class: "left-toolbar__group" }, cr = ["title", "aria-label"], lr = { class: "left-toolbar__group" }, ur = { class: "settings-body" }, dr = { class: "settings-label" }, fr = ["onUpdate:modelValue"], pr = ["onUpdate:modelValue"], mr = ["value"], hr = { class: "settings-label" }, gr = ["onUpdate:modelValue"], _r = ["onUpdate:modelValue"], vr = ["value"], yr = /* @__PURE__ */ q(/* @__PURE__ */ u({
1085
1127
  __name: "LeftToolbar",
1086
1128
  props: { isFullscreen: { type: Boolean } },
1087
1129
  emits: [
@@ -1096,103 +1138,103 @@ var Zn = {
1096
1138
  {
1097
1139
  id: "cursor",
1098
1140
  title: "光标",
1099
- icon: Ut
1141
+ icon: Kt
1100
1142
  },
1101
1143
  {
1102
1144
  id: "lines",
1103
1145
  title: "线条",
1104
- icon: Kt,
1146
+ icon: Yt,
1105
1147
  children: [
1106
1148
  {
1107
1149
  id: "trend-line",
1108
1150
  title: "线段",
1109
- icon: Kt
1151
+ icon: Yt
1110
1152
  },
1111
1153
  {
1112
1154
  id: "ray",
1113
1155
  title: "射线",
1114
- icon: Yt
1156
+ icon: Qt
1115
1157
  },
1116
1158
  {
1117
1159
  id: "h-line",
1118
1160
  title: "水平线",
1119
- icon: tn
1161
+ icon: an
1120
1162
  },
1121
1163
  {
1122
1164
  id: "h-ray",
1123
1165
  title: "水平射线",
1124
- icon: Qt
1166
+ icon: tn
1125
1167
  },
1126
1168
  {
1127
1169
  id: "v-line",
1128
1170
  title: "垂直线",
1129
- icon: an
1171
+ icon: cn
1130
1172
  },
1131
1173
  {
1132
1174
  id: "crosshair-line",
1133
1175
  title: "十字线",
1134
- icon: cn
1176
+ icon: dn
1135
1177
  },
1136
1178
  {
1137
1179
  id: "info-line",
1138
1180
  title: "信息线",
1139
- icon: dn
1181
+ icon: mn
1140
1182
  }
1141
1183
  ]
1142
1184
  },
1143
1185
  {
1144
1186
  id: "channels",
1145
1187
  title: "通道",
1146
- icon: kn,
1188
+ icon: Mn,
1147
1189
  children: [
1148
1190
  {
1149
1191
  id: "parallel-channel",
1150
1192
  title: "平行通道",
1151
- icon: kn
1193
+ icon: Mn
1152
1194
  },
1153
1195
  {
1154
1196
  id: "regression-channel",
1155
1197
  title: "回归趋势",
1156
- icon: Mn
1198
+ icon: Fn
1157
1199
  },
1158
1200
  {
1159
1201
  id: "flat-line",
1160
1202
  title: "平滑顶底",
1161
- icon: Fn
1203
+ icon: Rn
1162
1204
  },
1163
1205
  {
1164
1206
  id: "disjoint-channel",
1165
1207
  title: "不相交通道",
1166
- icon: Rn
1208
+ icon: Vn
1167
1209
  }
1168
1210
  ]
1169
1211
  }
1170
- ], m = f, h = C("cursor"), _ = C(null), v = C(!1), b = je(), E = r(() => H.filter((e) => e.group === "main")), j = r(() => H.filter((e) => e.group === "experimental"));
1171
- function ee() {
1212
+ ], m = f, h = C("cursor"), _ = C(null), v = C(!1), b = je(), E = r(() => U.filter((e) => e.group === "main")), j = r(() => U.filter((e) => e.group === "experimental"));
1213
+ function M() {
1172
1214
  try {
1173
- let e = localStorage.getItem(U);
1215
+ let e = localStorage.getItem(se);
1174
1216
  if (e) {
1175
1217
  let t = JSON.parse(e), n = {};
1176
- return H.forEach((e) => {
1218
+ return U.forEach((e) => {
1177
1219
  n[e.key] = t[e.key] ?? e.default;
1178
1220
  }), n;
1179
1221
  }
1180
1222
  } catch {}
1181
1223
  let e = {};
1182
- return H.forEach((t) => {
1224
+ return U.forEach((t) => {
1183
1225
  e[t.key] = t.default;
1184
1226
  }), e;
1185
1227
  }
1186
- function F(e) {
1228
+ function ee(e) {
1187
1229
  try {
1188
- localStorage.setItem(U, JSON.stringify(e));
1230
+ localStorage.setItem(se, JSON.stringify(e));
1189
1231
  } catch {}
1190
1232
  }
1191
- let I = C(ee()), L = C({ ...I.value });
1192
- function R(e) {
1233
+ let I = C(M()), L = C({ ...I.value });
1234
+ function te(e) {
1193
1235
  return h.value === e.id ? !0 : e.children ? e.children.some((e) => e.id === h.value) : !1;
1194
1236
  }
1195
- function te(e) {
1237
+ function R(e) {
1196
1238
  if (e.children?.length) {
1197
1239
  if (!e.children.some((e) => e.id === h.value)) {
1198
1240
  let t = e.children[0];
@@ -1212,57 +1254,57 @@ var Zn = {
1212
1254
  function re() {
1213
1255
  L.value = { ...I.value }, v.value = !0;
1214
1256
  }
1215
- function B() {
1257
+ function ie() {
1216
1258
  v.value = !1;
1217
1259
  }
1218
- function ie() {
1260
+ function B() {
1219
1261
  let e = {};
1220
- H.forEach((t) => {
1262
+ U.forEach((t) => {
1221
1263
  e[t.key] = t.default;
1222
1264
  }), L.value = e;
1223
1265
  }
1224
1266
  function V() {
1225
- I.value = { ...L.value }, F(I.value), qn(!!I.value.enableCanvasProfiler), m("settingsChange", { ...I.value }), B();
1267
+ I.value = { ...L.value }, ee(I.value), Xn(!!I.value.enableCanvasProfiler), m("settingsChange", { ...I.value }), ie();
1226
1268
  }
1227
1269
  function ae() {
1228
1270
  return { ...I.value };
1229
1271
  }
1230
1272
  d({ getSettings: ae });
1231
- function oe(e) {
1273
+ function H(e) {
1232
1274
  e.target.closest(".tool-item") || (_.value = null);
1233
1275
  }
1234
1276
  return y(() => {
1235
- document.addEventListener("click", oe, !0), m("settingsChange", { ...I.value }), qn(!!I.value.enableCanvasProfiler);
1277
+ document.addEventListener("click", H, !0), m("settingsChange", { ...I.value }), Xn(!!I.value.enableCanvasProfiler);
1236
1278
  }), x(() => {
1237
- document.removeEventListener("click", oe, !0);
1238
- }), (r, d) => (S(), o(e, null, [s("nav", Zn, [
1239
- s("div", Qn, [(S(), o(e, null, w(p, (t) => s("div", {
1279
+ document.removeEventListener("click", H, !0);
1280
+ }), (r, d) => (S(), o(e, null, [s("nav", tr, [
1281
+ s("div", nr, [(S(), o(e, null, w(p, (t) => s("div", {
1240
1282
  key: t.id,
1241
1283
  class: "tool-item"
1242
1284
  }, [s("button", {
1243
1285
  type: "button",
1244
- class: g(["left-toolbar__button", { active: R(t) }]),
1286
+ class: g(["left-toolbar__button", { active: te(t) }]),
1245
1287
  title: t.title,
1246
1288
  "aria-label": t.title,
1247
- onClick: (e) => te(t),
1248
- onPointerdown: d[0] ||= P(() => {}, ["stop"]),
1249
- onPointermove: d[1] ||= P(() => {}, ["stop"]),
1250
- onPointerup: d[2] ||= P(() => {}, ["stop"])
1289
+ onClick: (e) => R(t),
1290
+ onPointerdown: d[0] ||= F(() => {}, ["stop"]),
1291
+ onPointermove: d[1] ||= F(() => {}, ["stop"]),
1292
+ onPointerup: d[2] ||= F(() => {}, ["stop"])
1251
1293
  }, [(S(), i(T(t.icon), {
1252
1294
  class: "tool-icon",
1253
1295
  "aria-hidden": "true"
1254
1296
  })), t.children && t.children.length ? (S(), o("span", {
1255
1297
  key: 0,
1256
1298
  class: g(["corner-indicator", { open: _.value === t.id }]),
1257
- onClick: P((e) => z(t.id), ["stop"]),
1299
+ onClick: F((e) => z(t.id), ["stop"]),
1258
1300
  "aria-label": "展开子菜单"
1259
- }, null, 10, er)) : a("", !0)], 42, $n), l(n, { name: "dropdown" }, {
1260
- default: M(() => [_.value === t.id && t.children && t.children.length ? (S(), o("div", {
1301
+ }, null, 10, ir)) : a("", !0)], 42, rr), l(n, { name: "dropdown" }, {
1302
+ default: N(() => [_.value === t.id && t.children && t.children.length ? (S(), o("div", {
1261
1303
  key: 0,
1262
1304
  class: "tool-dropdown",
1263
- onPointerdown: d[3] ||= P(() => {}, ["stop"]),
1264
- onPointermove: d[4] ||= P(() => {}, ["stop"]),
1265
- onPointerup: d[5] ||= P(() => {}, ["stop"])
1305
+ onPointerdown: d[3] ||= F(() => {}, ["stop"]),
1306
+ onPointermove: d[4] ||= F(() => {}, ["stop"]),
1307
+ onPointerup: d[5] ||= F(() => {}, ["stop"])
1266
1308
  }, [(S(!0), o(e, null, w(t.children, (e) => (S(), o("button", {
1267
1309
  key: e.id,
1268
1310
  type: "button",
@@ -1273,20 +1315,20 @@ var Zn = {
1273
1315
  }, [(S(), i(T(e.icon), {
1274
1316
  class: "tool-icon",
1275
1317
  "aria-hidden": "true"
1276
- }))], 10, tr))), 128))], 32)) : a("", !0)]),
1318
+ }))], 10, ar))), 128))], 32)) : a("", !0)]),
1277
1319
  _: 2
1278
1320
  }, 1024)])), 64))]),
1279
1321
  d[22] ||= s("span", { class: "left-toolbar__divider" }, null, -1),
1280
- s("div", nr, [s("button", {
1322
+ s("div", or, [s("button", {
1281
1323
  type: "button",
1282
1324
  class: "left-toolbar__button",
1283
1325
  title: "放大",
1284
1326
  "aria-label": "放大",
1285
1327
  onClick: d[6] ||= (e) => r.$emit("zoomIn"),
1286
- onPointerdown: d[7] ||= P(() => {}, ["stop"]),
1287
- onPointermove: d[8] ||= P(() => {}, ["stop"]),
1288
- onPointerup: d[9] ||= P(() => {}, ["stop"])
1289
- }, [l(O(mn), {
1328
+ onPointerdown: d[7] ||= F(() => {}, ["stop"]),
1329
+ onPointermove: d[8] ||= F(() => {}, ["stop"]),
1330
+ onPointerup: d[9] ||= F(() => {}, ["stop"])
1331
+ }, [l(O(_n), {
1290
1332
  class: "tool-icon",
1291
1333
  "aria-hidden": "true"
1292
1334
  })], 32), s("button", {
@@ -1295,99 +1337,99 @@ var Zn = {
1295
1337
  title: "缩小",
1296
1338
  "aria-label": "缩小",
1297
1339
  onClick: d[10] ||= (e) => r.$emit("zoomOut"),
1298
- onPointerdown: d[11] ||= P(() => {}, ["stop"]),
1299
- onPointermove: d[12] ||= P(() => {}, ["stop"]),
1300
- onPointerup: d[13] ||= P(() => {}, ["stop"])
1301
- }, [l(O(_n), {
1340
+ onPointerdown: d[11] ||= F(() => {}, ["stop"]),
1341
+ onPointermove: d[12] ||= F(() => {}, ["stop"]),
1342
+ onPointerup: d[13] ||= F(() => {}, ["stop"])
1343
+ }, [l(O(bn), {
1302
1344
  class: "tool-icon",
1303
1345
  "aria-hidden": "true"
1304
1346
  })], 32)]),
1305
1347
  d[23] ||= s("span", { class: "left-toolbar__divider" }, null, -1),
1306
- s("div", rr, [s("button", {
1348
+ s("div", sr, [s("button", {
1307
1349
  type: "button",
1308
1350
  class: "left-toolbar__button",
1309
1351
  title: u.isFullscreen ? "退出全屏" : "全屏显示",
1310
1352
  "aria-label": u.isFullscreen ? "退出全屏" : "全屏显示",
1311
1353
  onClick: d[14] ||= (e) => r.$emit("toggleFullscreen"),
1312
- onPointerdown: d[15] ||= P(() => {}, ["stop"]),
1313
- onPointermove: d[16] ||= P(() => {}, ["stop"]),
1314
- onPointerup: d[17] ||= P(() => {}, ["stop"])
1315
- }, [u.isFullscreen ? (S(), i(O(Cn), {
1354
+ onPointerdown: d[15] ||= F(() => {}, ["stop"]),
1355
+ onPointermove: d[16] ||= F(() => {}, ["stop"]),
1356
+ onPointerup: d[17] ||= F(() => {}, ["stop"])
1357
+ }, [u.isFullscreen ? (S(), i(O(En), {
1316
1358
  key: 0,
1317
1359
  class: "tool-icon",
1318
1360
  "aria-hidden": "true"
1319
- })) : (S(), i(O(bn), {
1361
+ })) : (S(), i(O(Cn), {
1320
1362
  key: 1,
1321
1363
  class: "tool-icon",
1322
1364
  "aria-hidden": "true"
1323
- }))], 40, ir)]),
1365
+ }))], 40, cr)]),
1324
1366
  d[24] ||= s("span", { class: "left-toolbar__divider" }, null, -1),
1325
- s("div", ar, [s("button", {
1367
+ s("div", lr, [s("button", {
1326
1368
  type: "button",
1327
1369
  class: "left-toolbar__button",
1328
1370
  title: "设置",
1329
1371
  "aria-label": "设置",
1330
1372
  onClick: re,
1331
- onPointerdown: d[18] ||= P(() => {}, ["stop"]),
1332
- onPointermove: d[19] ||= P(() => {}, ["stop"]),
1333
- onPointerup: d[20] ||= P(() => {}, ["stop"])
1334
- }, [l(O(En), {
1373
+ onPointerdown: d[18] ||= F(() => {}, ["stop"]),
1374
+ onPointermove: d[19] ||= F(() => {}, ["stop"]),
1375
+ onPointerup: d[20] ||= F(() => {}, ["stop"])
1376
+ }, [l(O(kn), {
1335
1377
  class: "tool-icon",
1336
1378
  "aria-hidden": "true"
1337
1379
  })], 32)])
1338
1380
  ]), (S(), i(t, { to: O(b) }, [l(n, { name: "overlay" }, {
1339
- default: M(() => [v.value ? (S(), o("div", {
1381
+ default: N(() => [v.value ? (S(), o("div", {
1340
1382
  key: 0,
1341
1383
  class: "settings-overlay",
1342
- onClick: B
1384
+ onClick: ie
1343
1385
  }, [l(n, { name: "modal" }, {
1344
- default: M(() => [s("div", {
1386
+ default: N(() => [s("div", {
1345
1387
  class: "settings-modal",
1346
- onClick: d[21] ||= P(() => {}, ["stop"])
1388
+ onClick: d[21] ||= F(() => {}, ["stop"])
1347
1389
  }, [
1348
1390
  s("div", { class: "settings-header" }, [d[26] ||= s("div", { class: "header-left" }, [s("span", { class: "settings-title" }, "图表设置"), s("span", { class: "settings-subtitle" }, "个性化配置")], -1), s("div", { class: "header-right" }, [s("button", {
1349
1391
  class: "settings-close",
1350
- onClick: B
1392
+ onClick: ie
1351
1393
  }, [...d[25] ||= [s("svg", {
1352
1394
  viewBox: "0 0 24 24",
1353
1395
  fill: "none",
1354
1396
  stroke: "currentColor",
1355
1397
  "stroke-width": "2"
1356
1398
  }, [s("path", { d: "M18 6L6 18M6 6l12 12" })], -1)]])])]),
1357
- s("div", or, [E.value.length > 0 ? (S(), o(e, { key: 0 }, [d[27] ||= s("div", { class: "settings-section-divider" }, [s("span", { class: "settings-section-label" }, "主图设置")], -1), (S(!0), o(e, null, w(E.value, (t) => (S(), o("div", {
1399
+ s("div", ur, [E.value.length > 0 ? (S(), o(e, { key: 0 }, [d[27] ||= s("div", { class: "settings-section-divider" }, [s("span", { class: "settings-section-label" }, "主图设置")], -1), (S(!0), o(e, null, w(E.value, (t) => (S(), o("div", {
1358
1400
  key: t.key,
1359
1401
  class: "settings-item"
1360
- }, [s("label", sr, [s("span", null, D(t.label), 1), t.type === "boolean" ? N((S(), o("input", {
1402
+ }, [s("label", dr, [s("span", null, D(t.label), 1), t.type === "boolean" ? P((S(), o("input", {
1361
1403
  key: 0,
1362
1404
  type: "checkbox",
1363
1405
  class: "settings-checkbox",
1364
1406
  "onUpdate:modelValue": (e) => L.value[t.key] = e
1365
- }, null, 8, cr)), [[k, L.value[t.key]]]) : t.type === "select" && t.options ? N((S(), o("select", {
1407
+ }, null, 8, fr)), [[k, L.value[t.key]]]) : t.type === "select" && t.options ? P((S(), o("select", {
1366
1408
  key: 1,
1367
1409
  class: "settings-select",
1368
1410
  "onUpdate:modelValue": (e) => L.value[t.key] = e
1369
1411
  }, [(S(!0), o(e, null, w(t.options, (e) => (S(), o("option", {
1370
1412
  key: e.value,
1371
1413
  value: e.value
1372
- }, D(e.label), 9, ur))), 128))], 8, lr)), [[A, L.value[t.key]]]) : a("", !0)])]))), 128))], 64)) : a("", !0), j.value.length > 0 ? (S(), o(e, { key: 1 }, [d[28] ||= s("div", { class: "settings-section-divider" }, [s("span", { class: "settings-section-label" }, "实验性 / 调试设置")], -1), (S(!0), o(e, null, w(j.value, (t) => (S(), o("div", {
1414
+ }, D(e.label), 9, mr))), 128))], 8, pr)), [[A, L.value[t.key]]]) : a("", !0)])]))), 128))], 64)) : a("", !0), j.value.length > 0 ? (S(), o(e, { key: 1 }, [d[28] ||= s("div", { class: "settings-section-divider" }, [s("span", { class: "settings-section-label" }, "实验性 / 调试设置")], -1), (S(!0), o(e, null, w(j.value, (t) => (S(), o("div", {
1373
1415
  key: t.key,
1374
1416
  class: "settings-item experimental"
1375
- }, [s("label", dr, [s("span", null, D(t.label), 1), t.type === "boolean" ? N((S(), o("input", {
1417
+ }, [s("label", hr, [s("span", null, D(t.label), 1), t.type === "boolean" ? P((S(), o("input", {
1376
1418
  key: 0,
1377
1419
  type: "checkbox",
1378
1420
  class: "settings-checkbox",
1379
1421
  "onUpdate:modelValue": (e) => L.value[t.key] = e
1380
- }, null, 8, fr)), [[k, L.value[t.key]]]) : t.type === "select" && t.options ? N((S(), o("select", {
1422
+ }, null, 8, gr)), [[k, L.value[t.key]]]) : t.type === "select" && t.options ? P((S(), o("select", {
1381
1423
  key: 1,
1382
1424
  class: "settings-select",
1383
1425
  "onUpdate:modelValue": (e) => L.value[t.key] = e
1384
1426
  }, [(S(!0), o(e, null, w(t.options, (e) => (S(), o("option", {
1385
1427
  key: e.value,
1386
1428
  value: e.value
1387
- }, D(e.label), 9, mr))), 128))], 8, pr)), [[A, L.value[t.key]]]) : a("", !0)])]))), 128))], 64)) : a("", !0)]),
1429
+ }, D(e.label), 9, vr))), 128))], 8, _r)), [[A, L.value[t.key]]]) : a("", !0)])]))), 128))], 64)) : a("", !0)]),
1388
1430
  s("div", { class: "settings-footer" }, [s("button", {
1389
1431
  class: "settings-btn reset",
1390
- onClick: ie
1432
+ onClick: B
1391
1433
  }, [...d[29] ||= [s("svg", {
1392
1434
  viewBox: "0 0 24 24",
1393
1435
  fill: "none",
@@ -1395,7 +1437,7 @@ var Zn = {
1395
1437
  "stroke-width": "2"
1396
1438
  }, [s("path", { d: "M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8" }), s("path", { d: "M3 3v5h5" })], -1), c(" 重置 ", -1)]]), s("div", { class: "footer-right" }, [s("button", {
1397
1439
  class: "settings-btn cancel",
1398
- onClick: B
1440
+ onClick: ie
1399
1441
  }, "取消"), s("button", {
1400
1442
  class: "settings-btn confirm",
1401
1443
  onClick: V
@@ -1411,10 +1453,10 @@ var Zn = {
1411
1453
  _: 1
1412
1454
  })], 8, ["to"]))], 64));
1413
1455
  }
1414
- }), [["__scopeId", "data-v-35cfe78e"]]), gr = ["data-theme"], _r = {
1456
+ }), [["__scopeId", "data-v-35cfe78e"]]), br = ["data-theme"], xr = {
1415
1457
  class: "pane-separator-layer",
1416
1458
  "aria-hidden": "true"
1417
- }, vr = 4, yr = /* @__PURE__ */ K(/* @__PURE__ */ u({
1459
+ }, Sr = 4, Cr = /* @__PURE__ */ q(/* @__PURE__ */ u({
1418
1460
  __name: "KLineChart",
1419
1461
  props: {
1420
1462
  semanticConfig: {},
@@ -1434,7 +1476,7 @@ var Zn = {
1434
1476
  },
1435
1477
  emits: ["zoomLevelChange", "toggleFullscreen"],
1436
1478
  setup(n, { expose: c, emit: u }) {
1437
- let d = n, f = C(null), p = C(null), m = C(null), v = C(null), b = C(null), T = C(null), D = C(null), k = E(null), A = E(null), M = z({
1479
+ let d = n, f = C(null), p = C(null), m = C(null), v = C(null), b = C(null), T = C(null), D = C(null), k = E(null), A = E(null), j = re({
1438
1480
  initialZoomLevel: d.initialZoomLevel ?? 1,
1439
1481
  minKWidth: d.minKWidth,
1440
1482
  maxKWidth: d.maxKWidth,
@@ -1442,28 +1484,28 @@ var Zn = {
1442
1484
  rightAxisWidth: d.rightAxisWidth,
1443
1485
  priceLabelWidth: d.priceLabelWidth
1444
1486
  }), N = C("light");
1445
- M.actions.setZoomState(M.state.zoomLevel, B(M.state.zoomLevel, {
1487
+ j.actions.setZoomState(j.state.zoomLevel, B(j.state.zoomLevel, {
1446
1488
  minKWidth: d.minKWidth,
1447
1489
  maxKWidth: d.maxKWidth,
1448
1490
  zoomLevelCount: d.zoomLevels,
1449
- dpr: M.state.viewportDpr
1450
- }), re(B(M.state.zoomLevel, {
1491
+ dpr: j.state.viewportDpr
1492
+ }), ie(B(j.state.zoomLevel, {
1451
1493
  minKWidth: d.minKWidth,
1452
1494
  maxKWidth: d.maxKWidth,
1453
1495
  zoomLevelCount: d.zoomLevels,
1454
- dpr: M.state.viewportDpr
1455
- }), M.state.viewportDpr)), r(() => M.state.dataLength), r(() => M.state.viewportDpr);
1456
- let P = r(() => M.state.zoomLevel), ee = r(() => M.state.kWidth), F = r(() => M.state.kGap), I = r(() => M.state.paneRatios), L = r(() => M.state.selectedDrawingId), H = r(() => M.state.dataVersion);
1496
+ dpr: j.state.viewportDpr
1497
+ }), j.state.viewportDpr)), r(() => j.state.dataLength), r(() => j.state.viewportDpr);
1498
+ let P = r(() => j.state.zoomLevel), F = r(() => j.state.kWidth), ee = r(() => j.state.kGap), I = r(() => j.state.paneRatios), L = r(() => j.state.selectedDrawingId), te = r(() => j.state.dataVersion);
1457
1499
  function U() {
1458
1500
  k.value?.scheduleDraw();
1459
1501
  }
1460
- function ce(e) {
1502
+ function se(e) {
1461
1503
  if (k.value?.updateSettings(e), e.performanceTest10kKlines) {
1462
- let e = W();
1463
- console.time("updateData-10k"), k.value?.updateData(e), console.timeEnd("updateData-10k"), M.actions.setDataLength(e.length), M.actions.bumpDataVersion();
1504
+ let e = le();
1505
+ console.time("updateData-10k"), k.value?.updateData(e), console.timeEnd("updateData-10k"), j.actions.setDataLength(e.length), j.actions.bumpDataVersion();
1464
1506
  } else A.value && k.value?.getData()?.length === 1e4 && A.value.applyConfig(d.semanticConfig);
1465
1507
  }
1466
- function W() {
1508
+ function le() {
1467
1509
  let e = [], t = (/* @__PURE__ */ new Date("2020-01-01")).getTime(), n = 3e3;
1468
1510
  for (let r = 0; r < 1e4; r++) {
1469
1511
  let i = t + r * 864e5, a = (Math.random() - .5) * 2 * .02 + 1e-4, o = n, s = o * (1 + a), c = Math.max(o, s) * (1 + Math.random() * .01), l = Math.min(o, s) * (1 - Math.random() * .01), u = Math.floor(1e6 + Math.random() * 5e6);
@@ -1478,36 +1520,36 @@ var Zn = {
1478
1520
  }
1479
1521
  return e;
1480
1522
  }
1481
- function le(e, t, n) {
1523
+ function ue(e, t, n) {
1482
1524
  let r = e.getBoundingClientRect();
1483
1525
  return {
1484
1526
  width: Math.max(t, Math.round(r.width)),
1485
1527
  height: Math.max(n, Math.round(r.height))
1486
1528
  };
1487
1529
  }
1488
- function ue(e) {
1530
+ function de(e) {
1489
1531
  e && h(() => {
1490
1532
  if (!e.isConnected) return;
1491
- let t = le(e, 180, 80);
1533
+ let t = ue(e, 180, 80);
1492
1534
  k.value?.interaction.setTooltipSize(t);
1493
1535
  });
1494
1536
  }
1495
- function de(e) {
1537
+ function fe(e) {
1496
1538
  e && h(() => {
1497
- e.isConnected && (ve.value = le(e, 120, 60));
1539
+ e.isConnected && (_e.value = ue(e, 120, 60));
1498
1540
  });
1499
1541
  }
1500
- let fe = C({
1542
+ let W = C({
1501
1543
  x: 0,
1502
1544
  y: 0
1503
1545
  }), G = C(!1), K = null;
1504
- function me() {
1546
+ function q() {
1505
1547
  K = null;
1506
1548
  }
1507
- function he(e) {
1549
+ function me(e) {
1508
1550
  return K ||= e.getBoundingClientRect(), K;
1509
1551
  }
1510
- let q = E({
1552
+ let J = E({
1511
1553
  crosshairPos: null,
1512
1554
  crosshairIndex: null,
1513
1555
  crosshairPrice: null,
@@ -1525,13 +1567,13 @@ var Zn = {
1525
1567
  isHoveringPaneBoundary: !1,
1526
1568
  hoveredPaneBoundaryId: null,
1527
1569
  isHoveringRightAxis: !1
1528
- }), J = E(null), ge = r(() => {
1570
+ }), Y = E(null), he = r(() => {
1529
1571
  let e = L.value;
1530
- return e ? M.state.drawings.find((t) => t.id === e) ?? null : null;
1531
- }), _e = C([]), ve = C({
1572
+ return e ? j.state.drawings.find((t) => t.id === e) ?? null : null;
1573
+ }), ge = C([]), _e = C({
1532
1574
  width: 220,
1533
1575
  height: 120
1534
- }), ye = r(() => {
1576
+ }), ve = r(() => {
1535
1577
  let e = v.value, t = b.value;
1536
1578
  return !e || !t ? {
1537
1579
  x: 0,
@@ -1540,55 +1582,58 @@ var Zn = {
1540
1582
  x: e.offsetLeft,
1541
1583
  y: e.offsetTop
1542
1584
  };
1543
- }), be = r(() => q.value.hoveredMarkerData), xe = r(() => q.value.hoveredCustomMarker), Se = r(() => q.value.isDragging), Ce = r(() => q.value.isResizingPaneBoundary), we = r(() => q.value.isHoveringPaneBoundary), Te = r(() => q.value.hoveredPaneBoundaryId), Ee = r(() => q.value.isHoveringRightAxis), De = r(() => q.value.hoveredIndex), Oe = r(() => q.value.crosshairIndex), ke = r(() => Se.value ? "grabbing" : Ce.value || we.value ? "ns-resize" : De.value === null ? "crosshair" : "pointer"), Ae = r(() => {
1544
- let e = q.value.hoveredIndex;
1585
+ }), ye = r(() => J.value.hoveredMarkerData), be = r(() => J.value.hoveredCustomMarker), xe = r(() => J.value.isDragging), Se = r(() => J.value.isResizingPaneBoundary), Ce = r(() => J.value.isHoveringPaneBoundary), we = r(() => J.value.hoveredPaneBoundaryId), Te = r(() => J.value.isHoveringRightAxis), Ee = r(() => J.value.hoveredIndex), De = r(() => J.value.crosshairIndex), Oe = r(() => xe.value ? "grabbing" : Se.value || Ce.value ? "ns-resize" : Ee.value === null ? "crosshair" : "pointer"), ke = r(() => {
1586
+ let e = J.value.hoveredIndex;
1545
1587
  if (typeof e != "number") return null;
1546
- H.value;
1588
+ te.value;
1547
1589
  let t = k.value?.getData();
1548
1590
  return t && e >= 0 && e < t.length ? t[e] : null;
1549
- }), je = r(() => q.value.hoveredIndex), Me = r(() => q.value.tooltipPos), Ne = r(() => ({
1550
- x: Me.value.x + ye.value.x,
1551
- y: Me.value.y + ye.value.y
1591
+ }), Ae = r(() => J.value.hoveredIndex), je = r(() => J.value.tooltipPos), Me = r(() => ({
1592
+ x: je.value.x + ve.value.x,
1593
+ y: je.value.y + ve.value.y
1594
+ })), Ne = r(() => ({
1595
+ left: `${Me.value.x}px`,
1596
+ top: `${Me.value.y}px`
1552
1597
  })), Pe = r(() => ({
1553
- left: `${Ne.value.x}px`,
1554
- top: `${Ne.value.y}px`
1598
+ x: W.value.x + ve.value.x,
1599
+ y: W.value.y + ve.value.y
1555
1600
  })), Fe = r(() => ({
1556
- x: fe.value.x + ye.value.x,
1557
- y: fe.value.y + ye.value.y
1558
- })), Ie = r(() => ({
1559
- left: `${Fe.value.x}px`,
1560
- top: `${Fe.value.y}px`
1561
- })), Le = r(() => q.value.tooltipAnchorPlacement), Re = r(() => {
1601
+ left: `${Pe.value.x}px`,
1602
+ top: `${Pe.value.y}px`
1603
+ })), Ie = r(() => J.value.tooltipAnchorPlacement), Le = r(() => {
1562
1604
  let e = k.value?.getViewport(), t = v.value, n = e?.plotWidth ?? (t ? t.clientWidth : 0);
1563
- return fe.value.x + 12 + ve.value.width + 12 > n ? "left-bottom" : "right-bottom";
1564
- }), ze = r(() => (H.value, k.value?.getData() ?? []));
1605
+ return W.value.x + 12 + _e.value.width + 12 > n ? "left-bottom" : "right-bottom";
1606
+ }), Re = r(() => (te.value, k.value?.getData() ?? []));
1607
+ function ze(e) {
1608
+ Y.value?.setTool(e);
1609
+ }
1565
1610
  function Be(e) {
1566
- J.value?.setTool(e);
1611
+ let t = he.value;
1612
+ !t || !Y.value || (Y.value.updateDrawingStyle(t.id, e), j.actions.bumpDrawingVersion());
1567
1613
  }
1568
- function Ve(e) {
1569
- let t = ge.value;
1570
- !t || !J.value || (J.value.updateDrawingStyle(t.id, e), M.actions.bumpDrawingVersion());
1614
+ function Ve() {
1615
+ let e = he.value;
1616
+ !e || !Y.value || (Y.value.removeDrawing(e.id), j.actions.setSelectedDrawingId(null), j.actions.bumpDrawingVersion(), j.actions.setDrawings(Y.value.getDrawings()));
1571
1617
  }
1572
- function He() {
1573
- let e = ge.value;
1574
- !e || !J.value || (J.value.removeDrawing(e.id), M.actions.setSelectedDrawingId(null), M.actions.bumpDrawingVersion(), M.actions.setDrawings(J.value.getDrawings()));
1618
+ function He(e) {
1619
+ k.value?.handlePointerEvent(e, { onPointerDown: (e, t) => Y.value?.onPointerDown(e, t) ? (j.actions.setDrawings(Y.value.getDrawings()), j.actions.bumpDrawingVersion(), !0) : !1 });
1575
1620
  }
1576
1621
  function Ue(e) {
1577
- k.value?.handlePointerEvent(e, { onPointerDown: (e, t) => J.value?.onPointerDown(e, t) ? (M.actions.setDrawings(J.value.getDrawings()), M.actions.bumpDrawingVersion(), !0) : !1 });
1578
- }
1579
- function We(e) {
1580
1622
  let t = v.value;
1581
1623
  if (t) {
1582
- let n = he(t);
1583
- fe.value = {
1624
+ let n = me(t);
1625
+ W.value = {
1584
1626
  x: e.clientX - n.left,
1585
1627
  y: e.clientY - n.top
1586
1628
  };
1587
1629
  }
1588
- k.value?.handlePointerEvent(e, { onPointerMove: (e, t) => J.value?.onPointerMove(e, t) ? (M.actions.setDrawings(J.value.getDrawings()), !0) : !1 });
1630
+ k.value?.handlePointerEvent(e, { onPointerMove: (e, t) => Y.value?.onPointerMove(e, t) ? (j.actions.setDrawings(Y.value.getDrawings()), !0) : !1 });
1631
+ }
1632
+ function We(e) {
1633
+ k.value?.handlePointerEvent(e, { onPointerUp: (e, t) => Y.value?.onPointerUp(e, t) ? (j.actions.setDrawings(Y.value.getDrawings()), !0) : !1 });
1589
1634
  }
1590
1635
  function Ge(e) {
1591
- k.value?.handlePointerEvent(e, { onPointerUp: (e, t) => J.value?.onPointerUp(e, t) ? (M.actions.setDrawings(J.value.getDrawings()), !0) : !1 });
1636
+ k.value?.handlePointerEvent(e);
1592
1637
  }
1593
1638
  function Ke(e) {
1594
1639
  k.value?.handlePointerEvent(e);
@@ -1602,20 +1647,17 @@ var Zn = {
1602
1647
  function Ye(e) {
1603
1648
  k.value?.handlePointerEvent(e);
1604
1649
  }
1605
- function Xe(e) {
1606
- k.value?.handlePointerEvent(e);
1607
- }
1608
- function Ze() {
1650
+ function Xe() {
1609
1651
  k.value?.handleScrollEvent();
1610
1652
  }
1611
- let Y = C([]), Qe = r(() => {
1653
+ let X = C([]), Ze = r(() => {
1612
1654
  let e = [], t = /* @__PURE__ */ new Set();
1613
- for (let n of Z.value) t.has(n.indicatorId) || (t.add(n.indicatorId), e.push(n.indicatorId));
1655
+ for (let n of Q.value) t.has(n.indicatorId) || (t.add(n.indicatorId), e.push(n.indicatorId));
1614
1656
  return e;
1615
- }), $e = r(() => [...Y.value, ...Qe.value]), X = C({}), Z = C([]);
1616
- function et() {
1657
+ }), Qe = r(() => [...X.value, ...Ze.value]), Z = C({}), Q = C([]);
1658
+ function $e() {
1617
1659
  let e = I.value.main ?? 3;
1618
- return Z.value.length === 0 ? [{
1660
+ return Q.value.length === 0 ? [{
1619
1661
  id: "main",
1620
1662
  ratio: e,
1621
1663
  visible: !0,
@@ -1625,83 +1667,83 @@ var Zn = {
1625
1667
  ratio: e,
1626
1668
  visible: !0,
1627
1669
  role: "price"
1628
- }, ...Z.value.map((e) => ({
1670
+ }, ...Q.value.map((e) => ({
1629
1671
  id: e.id,
1630
1672
  ratio: I.value[e.id] ?? 1,
1631
1673
  visible: !0,
1632
1674
  role: "indicator"
1633
1675
  }))];
1634
1676
  }
1635
- function tt(e) {
1636
- return { ...ae[e].defaultParams };
1677
+ function et(e) {
1678
+ return { ...H[e].defaultParams };
1637
1679
  }
1638
- let nt = /* @__PURE__ */ new Map(), rt = /* @__PURE__ */ new Map();
1639
- function it(e, t) {
1680
+ let tt = /* @__PURE__ */ new Map(), nt = /* @__PURE__ */ new Map();
1681
+ function rt(e, t) {
1640
1682
  let n = oe({
1641
1683
  paneId: e,
1642
1684
  title: t,
1643
- getTitleInfo: () => pt(e)
1685
+ getTitleInfo: () => ft(e)
1644
1686
  });
1645
- k.value?.useRenderer(n), rt.set(e, n.name);
1687
+ k.value?.useRenderer(n), nt.set(e, n.name);
1646
1688
  }
1647
- function at(e) {
1648
- let t = rt.get(e);
1649
- t && (k.value?.removeRenderer(t), rt.delete(e));
1689
+ function it(e) {
1690
+ let t = nt.get(e);
1691
+ t && (k.value?.removeRenderer(t), nt.delete(e));
1650
1692
  }
1651
- function ot(e = "VOLUME", t) {
1652
- if (Z.value.length >= vr) return !1;
1653
- let n = t ?? tt(e), r = k.value?.addIndicator(e, "sub", n);
1654
- return r ? (it(r, e), Z.value.push({
1693
+ function at(e = "VOLUME", t) {
1694
+ if (Q.value.length >= Sr) return !1;
1695
+ let n = t ?? et(e), r = k.value?.addIndicator(e, "sub", n);
1696
+ return r ? (rt(r, e), Q.value.push({
1655
1697
  id: r,
1656
1698
  indicatorId: e,
1657
1699
  params: n
1658
1700
  }), U(), !0) : !1;
1659
1701
  }
1660
- function st(e) {
1661
- let t = Z.value.findIndex((t) => t.id === e);
1662
- t !== -1 && Z.value[t] && (at(e), k.value?.removeIndicator(e), Z.value.splice(t, 1));
1702
+ function ot(e) {
1703
+ let t = Q.value.findIndex((t) => t.id === e);
1704
+ t !== -1 && Q.value[t] && (it(e), k.value?.removeIndicator(e), Q.value.splice(t, 1));
1663
1705
  }
1664
- function ct() {
1665
- for (let e of Z.value) k.value?.removeIndicator(e.id), at(e.id);
1666
- Z.value = [], nt.clear(), rt.clear();
1706
+ function st() {
1707
+ for (let e of Q.value) k.value?.removeIndicator(e.id), it(e.id);
1708
+ Q.value = [], tt.clear(), nt.clear();
1667
1709
  }
1668
- function lt() {
1710
+ function ct() {
1669
1711
  let e = d.semanticConfig, t = k.value;
1670
1712
  if (!t) return;
1671
1713
  let n = e.indicators?.main;
1672
- if (n) for (let e of n) e.enabled && (Y.value.includes(e.type) || Y.value.push(e.type), e.params && (X.value[e.type] = e.params), t.enableMainIndicator(e.type, e.params));
1714
+ if (n) for (let e of n) e.enabled && (X.value.includes(e.type) || X.value.push(e.type), e.params && (Z.value[e.type] = e.params), t.enableMainIndicator(e.type, e.params));
1673
1715
  }
1674
- j([$e, X], ([e]) => {
1716
+ M([Qe, Z], ([e]) => {
1675
1717
  let t = k.value;
1676
1718
  t && (t.updateRendererConfig("mainIndicatorLegend", { indicators: {
1677
1719
  MA: {
1678
1720
  enabled: e.includes("MA"),
1679
- params: X.value.MA || {}
1721
+ params: Z.value.MA || {}
1680
1722
  },
1681
1723
  BOLL: {
1682
1724
  enabled: e.includes("BOLL"),
1683
- params: X.value.BOLL || {}
1725
+ params: Z.value.BOLL || {}
1684
1726
  },
1685
1727
  EXPMA: {
1686
1728
  enabled: e.includes("EXPMA"),
1687
- params: X.value.EXPMA || {}
1729
+ params: Z.value.EXPMA || {}
1688
1730
  },
1689
1731
  ENE: {
1690
1732
  enabled: e.includes("ENE"),
1691
- params: X.value.ENE || {}
1733
+ params: Z.value.ENE || {}
1692
1734
  }
1693
1735
  } }), U());
1694
1736
  }, { deep: !0 });
1695
- function ut() {
1737
+ function lt() {
1696
1738
  let e = k.value?.getSubPaneEntries() ?? [];
1697
- Z.value = [], rt.clear();
1739
+ Q.value = [], nt.clear();
1698
1740
  for (let t of e) {
1699
1741
  let { paneId: e, indicatorId: n, params: r } = t, i = e.match(/^(.+)_(\d+)$/);
1700
1742
  if (i) {
1701
1743
  let [, e, t] = i, n = parseInt(t, 10);
1702
- n >= (nt.get(e) ?? 0) && nt.set(e, n + 1);
1744
+ n >= (tt.get(e) ?? 0) && tt.set(e, n + 1);
1703
1745
  }
1704
- it(e, n), Z.value.push({
1746
+ rt(e, n), Q.value.push({
1705
1747
  id: e,
1706
1748
  indicatorId: n,
1707
1749
  params: { ...r }
@@ -1709,33 +1751,33 @@ var Zn = {
1709
1751
  }
1710
1752
  U();
1711
1753
  }
1712
- function dt(e, t) {
1713
- if (!Z.value.find((t) => t.id === e)) return;
1714
- let n = tt(t);
1715
- at(e), k.value?.replaceSubPaneIndicator(e, t, n), it(e, t);
1716
- let r = Z.value.findIndex((t) => t.id === e);
1717
- r !== -1 && (Z.value[r] = {
1754
+ function ut(e, t) {
1755
+ if (!Q.value.find((t) => t.id === e)) return;
1756
+ let n = et(t);
1757
+ it(e), k.value?.replaceSubPaneIndicator(e, t, n), rt(e, t);
1758
+ let r = Q.value.findIndex((t) => t.id === e);
1759
+ r !== -1 && (Q.value[r] = {
1718
1760
  id: e,
1719
1761
  indicatorId: t,
1720
1762
  params: n
1721
1763
  });
1722
1764
  }
1723
- let ft = /* @__PURE__ */ new Map();
1724
- function pt(e) {
1725
- let t = Z.value.find((t) => t.id === e);
1765
+ let dt = /* @__PURE__ */ new Map();
1766
+ function ft(e) {
1767
+ let t = Q.value.find((t) => t.id === e);
1726
1768
  if (!t) return null;
1727
1769
  let n = k.value?.getData();
1728
1770
  if (!n || n.length === 0) return null;
1729
- let r = Oe.value, i = n.length, a = ft.get(e);
1771
+ let r = De.value, i = n.length, a = dt.get(e);
1730
1772
  if (a && a.idx === r && a.dataLen === i) return a.result;
1731
- let o = ae[t.indicatorId], s = t.params, c = k.value?.plugin, l = c ? o.getTitleInfo(n, r, s, c, e) : null;
1732
- return ft.set(e, {
1773
+ let o = H[t.indicatorId], s = t.params, c = k.value?.plugin, l = c ? o.getTitleInfo(n, r, s, c, e) : null;
1774
+ return dt.set(e, {
1733
1775
  idx: r,
1734
1776
  dataLen: i,
1735
1777
  result: l
1736
1778
  }), l;
1737
1779
  }
1738
- function mt(e, t) {
1780
+ function pt(e, t) {
1739
1781
  let n = k.value;
1740
1782
  if (n) {
1741
1783
  if ([
@@ -1758,94 +1800,94 @@ var Zn = {
1758
1800
  "STRUCTURE",
1759
1801
  "ZONES"
1760
1802
  ].includes(e)) {
1761
- let r = Y.value.find((t) => t === e);
1762
- if (t && !r) n.addIndicator(e, "main", X.value[e]), Y.value.push(e);
1803
+ let r = X.value.find((t) => t === e);
1804
+ if (t && !r) n.addIndicator(e, "main", Z.value[e]), X.value.push(e);
1763
1805
  else if (!t && r) {
1764
1806
  let t = e.toUpperCase();
1765
- n.removeIndicator(t), Y.value = Y.value.filter((t) => t !== e);
1807
+ n.removeIndicator(t), X.value = X.value.filter((t) => t !== e);
1766
1808
  }
1767
1809
  return;
1768
1810
  }
1769
- if (V.includes(e)) {
1811
+ if (ae.includes(e)) {
1770
1812
  if (t) {
1771
- if (Z.value.find((t) => t.indicatorId === e) || Z.value.length >= vr) return;
1772
- let t = n.addIndicator(e, "sub", X.value[e]);
1773
- if (t) it(t, e), Z.value.push({
1813
+ if (Q.value.find((t) => t.indicatorId === e) || Q.value.length >= Sr) return;
1814
+ let t = n.addIndicator(e, "sub", Z.value[e]);
1815
+ if (t) rt(t, e), Q.value.push({
1774
1816
  id: t,
1775
1817
  indicatorId: e,
1776
- params: { ...X.value[e] }
1818
+ params: { ...Z.value[e] }
1777
1819
  });
1778
- else if (Z.value.length > 0) {
1779
- let t = Z.value[Z.value.length - 1];
1780
- dt(t.id, e);
1820
+ else if (Q.value.length > 0) {
1821
+ let t = Q.value[Q.value.length - 1];
1822
+ ut(t.id, e);
1781
1823
  }
1782
- } else Z.value.filter((t) => t.indicatorId === e).forEach((e) => {
1783
- n.removeIndicator(e.id), at(e.id);
1784
- }), Z.value = Z.value.filter((t) => t.indicatorId !== e);
1824
+ } else Q.value.filter((t) => t.indicatorId === e).forEach((e) => {
1825
+ n.removeIndicator(e.id), it(e.id);
1826
+ }), Q.value = Q.value.filter((t) => t.indicatorId !== e);
1785
1827
  U();
1786
1828
  }
1787
1829
  }
1788
1830
  }
1789
- function ht(e, t) {
1790
- if (X.value[e] = t, e === "MA" || e === "BOLL" || e === "EXPMA" || e === "ENE") {
1831
+ function mt(e, t) {
1832
+ if (Z.value[e] = t, e === "MA" || e === "BOLL" || e === "EXPMA" || e === "ENE") {
1791
1833
  k.value?.updateMainIndicatorParams(e, t), U();
1792
1834
  return;
1793
1835
  }
1794
- if (V.includes(e)) {
1795
- Z.value.filter((t) => t.indicatorId === e).forEach((e) => {
1836
+ if (ae.includes(e)) {
1837
+ Q.value.filter((t) => t.indicatorId === e).forEach((e) => {
1796
1838
  k.value?.updateSubPaneParams(e.id, t), e.params = { ...t };
1797
1839
  }), U();
1798
1840
  return;
1799
1841
  }
1800
1842
  U();
1801
1843
  }
1802
- function gt(e) {
1803
- if (!e.length || Z.value.length <= 1) return;
1804
- let t = e.filter((e) => V.includes(e));
1844
+ function ht(e) {
1845
+ if (!e.length || Q.value.length <= 1) return;
1846
+ let t = e.filter((e) => ae.includes(e));
1805
1847
  if (!t.length) return;
1806
- let n = new Map(Z.value.map((e) => [e.indicatorId, e])), r = [];
1848
+ let n = new Map(Q.value.map((e) => [e.indicatorId, e])), r = [];
1807
1849
  for (let e of t) {
1808
1850
  let t = n.get(e);
1809
1851
  t && (r.push(t), n.delete(e));
1810
1852
  }
1811
1853
  if (r.length === 0) return;
1812
- for (let e of Z.value) n.has(e.indicatorId) && (r.push(e), n.delete(e.indicatorId));
1813
- let i = Z.value.map((e) => e.id), a = r.map((e) => e.id);
1854
+ for (let e of Q.value) n.has(e.indicatorId) && (r.push(e), n.delete(e.indicatorId));
1855
+ let i = Q.value.map((e) => e.id), a = r.map((e) => e.id);
1814
1856
  if (i.join("|") === a.join("|")) return;
1815
- Z.value = r;
1857
+ Q.value = r;
1816
1858
  let o = k.value;
1817
- o && o.updatePaneLayout(et());
1859
+ o && o.updatePaneLayout($e());
1818
1860
  }
1819
- let _t = r(() => d.rightAxisWidth + d.priceLabelWidth), vt = M.computed.totalWidth;
1820
- function yt() {
1861
+ let gt = r(() => d.rightAxisWidth + d.priceLabelWidth), _t = j.computed.totalWidth;
1862
+ function vt() {
1821
1863
  let e = v.value, t = k.value;
1822
1864
  if (!e || !t) return;
1823
1865
  let n = t.getData()?.length ?? 0;
1824
1866
  if (n === 0) return;
1825
- let r = t.getCurrentDpr(), { unitPx: i, startXPx: a } = ie(ee.value, F.value, r), o = (a + n * i) / r, s = Math.max(0, e.scrollWidth - e.clientWidth), c = Math.min(s, Math.max(0, o - e.clientWidth));
1867
+ let r = t.getCurrentDpr(), { unitPx: i, startXPx: a } = V(F.value, ee.value, r), o = (a + n * i) / r, s = Math.max(0, e.scrollWidth - e.clientWidth), c = Math.min(s, Math.max(0, o - e.clientWidth));
1826
1868
  e.scrollLeft = Math.round(c * r) / r, U();
1827
1869
  }
1828
- function xt(e, t) {
1870
+ function yt(e, t) {
1829
1871
  let n = k.value;
1830
1872
  n && n.zoomToLevel(e, t);
1831
1873
  }
1832
1874
  c({
1833
1875
  scheduleRender: U,
1834
- scrollToRight: yt,
1835
- addSubPane: ot,
1836
- removeSubPane: st,
1837
- switchSubIndicator: dt,
1838
- clearAllSubPanes: ct,
1876
+ scrollToRight: vt,
1877
+ addSubPane: at,
1878
+ removeSubPane: ot,
1879
+ switchSubIndicator: ut,
1880
+ clearAllSubPanes: st,
1839
1881
  get plugin() {
1840
1882
  return k.value?.plugin;
1841
1883
  },
1842
- zoomToLevel: xt,
1843
- zoomIn: (e) => xt(P.value + 1, e),
1844
- zoomOut: (e) => xt(P.value - 1, e),
1884
+ zoomToLevel: yt,
1885
+ zoomIn: (e) => yt(P.value + 1, e),
1886
+ zoomOut: (e) => yt(P.value - 1, e),
1845
1887
  getZoomLevel: () => P.value,
1846
1888
  getZoomLevelCount: () => k.value?.getZoomLevelCount() ?? 10
1847
1889
  });
1848
- function St(e) {
1890
+ function bt(e) {
1849
1891
  let t = (e) => {
1850
1892
  e.preventDefault();
1851
1893
  let t = k.value;
@@ -1853,8 +1895,8 @@ var Zn = {
1853
1895
  };
1854
1896
  return e.addEventListener("wheel", t, { passive: !1 }), t;
1855
1897
  }
1856
- function Ct(e, t, n, r) {
1857
- return new ne({
1898
+ function xt(e, t, n, r) {
1899
+ return new z({
1858
1900
  container: e,
1859
1901
  canvasLayer: t,
1860
1902
  rightAxisLayer: n,
@@ -1875,11 +1917,11 @@ var Zn = {
1875
1917
  initialZoomLevel: d.initialZoomLevel
1876
1918
  });
1877
1919
  }
1878
- function wt(e) {
1920
+ function St(e) {
1879
1921
  e.setOnPaneLayoutChange(() => {
1880
- me();
1922
+ q();
1881
1923
  let t = e.getPaneRenderers(), n = v.value && parseInt(getComputedStyle(v.value).borderTopWidth) || 0;
1882
- _e.value = t.slice(0, -1).map((e) => {
1924
+ ge.value = t.slice(0, -1).map((e) => {
1883
1925
  let t = e.getPane();
1884
1926
  return {
1885
1927
  id: t.id,
@@ -1889,12 +1931,12 @@ var Zn = {
1889
1931
  });
1890
1932
  let t = e.paneRatios.subscribe(() => {
1891
1933
  let t = e.paneRatios.peek();
1892
- M.actions.setPaneRatios({ ...t });
1934
+ j.actions.setPaneRatios({ ...t });
1893
1935
  }), n = e.viewport.subscribe(() => {
1894
1936
  let t = e.viewport.peek();
1895
- M.state.viewportDpr !== t.dpr && M.actions.setViewportDpr(t.dpr), M.state.viewWidth !== t.plotWidth && M.actions.setViewWidth(t.plotWidth), (M.state.zoomLevel !== t.zoomLevel || M.state.kWidth !== t.kWidth || M.state.kGap !== t.kGap) && M.actions.setZoomState(t.zoomLevel, t.kWidth, t.kGap);
1937
+ j.state.viewportDpr !== t.dpr && j.actions.setViewportDpr(t.dpr), j.state.viewWidth !== t.plotWidth && j.actions.setViewWidth(t.plotWidth), (j.state.zoomLevel !== t.zoomLevel || j.state.kWidth !== t.kWidth || j.state.kGap !== t.kGap) && j.actions.setZoomState(t.zoomLevel, t.kWidth, t.kGap);
1896
1938
  let n = t.desiredScrollLeft;
1897
- n !== void 0 && n !== v.value?.scrollLeft && (me(), h(() => {
1939
+ n !== void 0 && n !== v.value?.scrollLeft && (q(), h(() => {
1898
1940
  let t = v.value;
1899
1941
  if (!t) return;
1900
1942
  let r = Math.max(0, t.scrollWidth - t.clientWidth), i = Math.min(Math.max(0, n), r), a = e.getCurrentDpr();
@@ -1902,7 +1944,7 @@ var Zn = {
1902
1944
  }));
1903
1945
  }), r = e.data.subscribe(() => {
1904
1946
  let t = e.data.peek();
1905
- M.actions.setDataLength(t.length), M.actions.bumpDataVersion();
1947
+ j.actions.setDataLength(t.length), j.actions.bumpDataVersion();
1906
1948
  }), i = e.theme.subscribe(() => {
1907
1949
  N.value = e.theme.peek();
1908
1950
  });
@@ -1910,40 +1952,40 @@ var Zn = {
1910
1952
  n(), r(), t(), i();
1911
1953
  });
1912
1954
  }
1913
- function Tt(e) {
1955
+ function wt(e) {
1914
1956
  let t = D.value?.getSettings() ?? { showVolumePriceMarkers: !0 };
1915
1957
  if (e.updateSettings(t), t.performanceTest10kKlines) {
1916
- let t = W();
1958
+ let t = le();
1917
1959
  console.time("updateData-10k"), e.updateData(t), console.timeEnd("updateData-10k");
1918
1960
  }
1919
1961
  }
1920
- function Et(e) {
1921
- J.value = new se(e), J.value.setCallbacks({
1962
+ function Tt(e) {
1963
+ Y.value = new ce(e), Y.value.setCallbacks({
1922
1964
  onDrawingCreated: (e) => {
1923
- M.actions.setDrawings([...M.state.drawings, e]), M.actions.setSelectedDrawingId(e.id);
1965
+ j.actions.setDrawings([...j.state.drawings, e]), j.actions.setSelectedDrawingId(e.id);
1924
1966
  },
1925
1967
  onToolChange: () => {},
1926
1968
  onDrawingSelected: (e) => {
1927
- M.actions.setSelectedDrawingId(e?.id ?? null);
1969
+ j.actions.setSelectedDrawingId(e?.id ?? null);
1928
1970
  }
1929
1971
  });
1930
1972
  }
1931
- function Dt(e) {
1973
+ function Et(e) {
1932
1974
  e.interaction.setTooltipAnchorPositioning(G.value), e.interaction.setOnInteractionChange((e) => {
1933
- q.value = e;
1975
+ J.value = e;
1934
1976
  }), e.interaction.setOnPinchZoom((t, n) => {
1935
1977
  if (!e) return;
1936
1978
  let r = v.value;
1937
1979
  if (!r) return;
1938
1980
  let i = n - r.getBoundingClientRect().left;
1939
1981
  e.handlePinchZoom(t, i);
1940
- }), q.value = e.interaction.getInteractionSnapshot(), M.actions.setViewportDpr(e.getCurrentDpr()), e.resize();
1982
+ }), J.value = e.interaction.getInteractionSnapshot(), j.actions.setViewportDpr(e.getCurrentDpr()), e.resize();
1941
1983
  }
1942
- function Ot(e) {
1943
- te(d.dataFetcher), A.value = new R(e), A.value.on("config:error", (e) => {
1984
+ function Dt(e) {
1985
+ ne(d.dataFetcher), A.value = new R(e), A.value.on("config:error", (e) => {
1944
1986
  console.error("Semantic config error:", e);
1945
1987
  }), A.value.on("config:ready", () => {
1946
- lt(), ut(), h(() => yt());
1988
+ ct(), lt(), h(() => vt());
1947
1989
  }), A.value.applyConfig(d.semanticConfig).then((e) => {
1948
1990
  e && !e.success && console.error("Semantic config apply failed:", e.errors);
1949
1991
  });
@@ -1952,18 +1994,18 @@ var Zn = {
1952
1994
  G.value = !1;
1953
1995
  let e = v.value, t = p.value, n = m.value, r = f.value;
1954
1996
  if (!e || !t || !n || !r) return;
1955
- let i = St(e), a = Ct(e, t, n, r);
1956
- k.value = a, wt(a), a.applyRenderState(M.state.kWidth, M.state.kGap, M.state.zoomLevel), Tt(a), Et(a), Dt(a), Ot(a), a.__onWheel = i;
1997
+ let i = bt(e), a = xt(e, t, n, r);
1998
+ k.value = a, St(a), a.applyRenderState(j.state.kWidth, j.state.kGap, j.state.zoomLevel), wt(a), Tt(a), Et(a), Dt(a), a.__onWheel = i;
1957
1999
  }), x(() => {
1958
2000
  let e = k.value;
1959
2001
  if (e) {
1960
2002
  let t = e.__onWheel, n = v.value;
1961
2003
  t && n && n.removeEventListener("wheel", t), e.destroy();
1962
2004
  }
1963
- k.value = null, J.value = null;
1964
- }), j(() => d.yPaddingPx, (e) => {
2005
+ k.value = null, Y.value = null;
2006
+ }), M(() => d.yPaddingPx, (e) => {
1965
2007
  k.value?.updateOptions({ yPaddingPx: e });
1966
- }), j(() => d.semanticConfig, async (e, t) => {
2008
+ }), M(() => d.semanticConfig, async (e, t) => {
1967
2009
  if (e && e !== t) {
1968
2010
  let t = await A.value?.applyConfig(e);
1969
2011
  t && !t.success && console.error("Semantic config apply failed:", t.errors);
@@ -1972,28 +2014,28 @@ var Zn = {
1972
2014
  class: "chart-wrapper",
1973
2015
  "data-theme": N.value
1974
2016
  }, [s("div", { class: g(["chart-stage", {
1975
- "is-dragging": Se.value,
1976
- "is-resizing-pane": Ce.value,
1977
- "is-hovering-pane-separator": we.value,
1978
- "is-hovering-right-axis": Ee.value,
1979
- "is-hovering-kline": De.value !== null
1980
- }]) }, [l(hr, {
2017
+ "is-dragging": xe.value,
2018
+ "is-resizing-pane": Se.value,
2019
+ "is-hovering-pane-separator": Ce.value,
2020
+ "is-hovering-right-axis": Te.value,
2021
+ "is-hovering-kline": Ee.value !== null
2022
+ }]) }, [l(yr, {
1981
2023
  ref_key: "toolbarRef",
1982
2024
  ref: D,
1983
2025
  "is-fullscreen": n.isFullscreen,
1984
- onSelectTool: Be,
2026
+ onSelectTool: ze,
1985
2027
  onToggleFullscreen: c[0] ||= (e) => r.$emit("toggleFullscreen"),
1986
- onZoomIn: c[1] ||= (e) => xt(P.value + 1),
1987
- onZoomOut: c[2] ||= (e) => xt(P.value - 1),
1988
- onSettingsChange: ce
2028
+ onZoomIn: c[1] ||= (e) => yt(P.value + 1),
2029
+ onZoomOut: c[2] ||= (e) => yt(P.value - 1),
2030
+ onSettingsChange: se
1989
2031
  }, null, 8, ["is-fullscreen"]), s("div", {
1990
2032
  class: "chart-main",
1991
2033
  ref_key: "chartMainRef",
1992
2034
  ref: b
1993
2035
  }, [
1994
- s("div", _r, [(S(!0), o(e, null, w(_e.value, (e) => (S(), o("div", {
2036
+ s("div", xr, [(S(!0), o(e, null, w(ge.value, (e) => (S(), o("div", {
1995
2037
  key: e.id,
1996
- class: g(["pane-separator-line", { "is-active": Te.value === e.id }]),
2038
+ class: g(["pane-separator-line", { "is-active": we.value === e.id }]),
1997
2039
  style: _({ top: `${e.top}px` })
1998
2040
  }, null, 6))), 128))]),
1999
2041
  s("div", {
@@ -2003,17 +2045,17 @@ var Zn = {
2003
2045
  }, null, 512),
2004
2046
  s("div", {
2005
2047
  class: "chart-container",
2006
- style: _({ cursor: ke.value }),
2048
+ style: _({ cursor: Oe.value }),
2007
2049
  ref_key: "containerRef",
2008
2050
  ref: v,
2009
- onScrollPassive: Ze,
2010
- onPointerdown: Ue,
2011
- onPointermove: We,
2012
- onPointerup: Ge,
2013
- onPointerleave: Ke
2051
+ onScrollPassive: Xe,
2052
+ onPointerdown: He,
2053
+ onPointermove: Ue,
2054
+ onPointerup: We,
2055
+ onPointerleave: Ge
2014
2056
  }, [s("div", {
2015
2057
  class: "scroll-content",
2016
- style: _({ width: O(vt) + "px" })
2058
+ style: _({ width: O(_t) + "px" })
2017
2059
  }, [s("div", {
2018
2060
  class: "canvas-layer",
2019
2061
  ref_key: "canvasLayerRef",
@@ -2022,35 +2064,35 @@ var Zn = {
2022
2064
  class: "x-axis-canvas",
2023
2065
  ref_key: "xAxisCanvasRef",
2024
2066
  ref: f
2025
- }, null, 512), ge.value ? (S(), i(pe, {
2067
+ }, null, 512), he.value ? (S(), i(pe, {
2026
2068
  key: 0,
2027
- drawing: ge.value,
2028
- onUpdateStyle: Ve,
2029
- onDelete: He
2069
+ drawing: he.value,
2070
+ onUpdateStyle: Be,
2071
+ onDelete: Ve
2030
2072
  }, null, 8, ["drawing"])) : a("", !0)], 512)], 4)], 36),
2031
2073
  T.value ? (S(), i(t, {
2032
2074
  key: 0,
2033
2075
  to: T.value
2034
2076
  }, [
2035
- Ae.value ? (S(), o("div", {
2077
+ ke.value ? (S(), o("div", {
2036
2078
  key: 0,
2037
2079
  class: g(["tooltip-anchor kline-tooltip-anchor", { "use-anchor": G.value }]),
2038
- style: _(Pe.value)
2080
+ style: _(Ne.value)
2039
2081
  }, null, 6)) : a("", !0),
2040
- be.value || xe.value ? (S(), o("div", {
2082
+ ye.value || be.value ? (S(), o("div", {
2041
2083
  key: 1,
2042
2084
  class: g(["tooltip-anchor marker-tooltip-anchor", { "use-anchor": G.value }]),
2043
- style: _(Ie.value)
2085
+ style: _(Fe.value)
2044
2086
  }, null, 6)) : a("", !0),
2045
- Ae.value ? (S(), i(Lt, {
2087
+ ke.value ? (S(), i(Bt, {
2046
2088
  key: 2,
2047
- k: Ae.value,
2048
- index: je.value,
2049
- data: ze.value,
2050
- pos: Ne.value,
2051
- "set-el": ue,
2089
+ k: ke.value,
2090
+ index: Ae.value,
2091
+ data: Re.value,
2092
+ pos: Me.value,
2093
+ "set-el": de,
2052
2094
  "use-anchor": G.value,
2053
- "anchor-placement": Le.value
2095
+ "anchor-placement": Ie.value
2054
2096
  }, null, 8, [
2055
2097
  "k",
2056
2098
  "index",
@@ -2059,13 +2101,13 @@ var Zn = {
2059
2101
  "use-anchor",
2060
2102
  "anchor-placement"
2061
2103
  ])) : a("", !0),
2062
- be.value || xe.value ? (S(), i(Bt, {
2104
+ ye.value || be.value ? (S(), i(Ut, {
2063
2105
  key: 3,
2064
- marker: be.value || xe.value,
2065
- pos: Fe.value,
2106
+ marker: ye.value || be.value,
2107
+ pos: Pe.value,
2066
2108
  "use-anchor": G.value,
2067
- "anchor-placement": Re.value,
2068
- "set-el": de
2109
+ "anchor-placement": Le.value,
2110
+ "set-el": fe
2069
2111
  }, null, 8, [
2070
2112
  "marker",
2071
2113
  "pos",
@@ -2077,23 +2119,23 @@ var Zn = {
2077
2119
  class: "right-axis-host",
2078
2120
  ref_key: "rightAxisLayerRef",
2079
2121
  ref: m,
2080
- style: _({ width: _t.value + "px" }),
2081
- onPointerdown: qe,
2082
- onPointermove: Je,
2083
- onPointerup: Ye,
2084
- onPointerleave: Xe
2122
+ style: _({ width: gt.value + "px" }),
2123
+ onPointerdown: Ke,
2124
+ onPointermove: qe,
2125
+ onPointerup: Je,
2126
+ onPointerleave: Ye
2085
2127
  }, null, 36)
2086
- ], 512)], 2), l(bt, {
2087
- "active-indicators": $e.value,
2088
- "indicator-params": X.value,
2089
- onToggle: mt,
2090
- onUpdateParams: ht,
2091
- onReorderSubIndicators: gt
2092
- }, null, 8, ["active-indicators", "indicator-params"])], 8, gr));
2128
+ ], 512)], 2), l(Ct, {
2129
+ "active-indicators": Qe.value,
2130
+ "indicator-params": Z.value,
2131
+ onToggle: pt,
2132
+ onUpdateParams: mt,
2133
+ onReorderSubIndicators: ht
2134
+ }, null, 8, ["active-indicators", "indicator-params"])], 8, br));
2093
2135
  }
2094
- }), [["__scopeId", "data-v-c50302da"]]), br = {
2136
+ }), [["__scopeId", "data-v-c50302da"]]), wr = {
2095
2137
  name: "@363045841yyt/klinechart",
2096
- version: "0.7.3-alpha.4",
2138
+ version: "0.7.4",
2097
2139
  description: "Vue 3 bindings for @363045841yyt/klinechart-core. Idiomatic composables, SFC components.",
2098
2140
  license: "MIT",
2099
2141
  type: "module",
@@ -2155,30 +2197,30 @@ var Zn = {
2155
2197
  vitest: "^4.1.5",
2156
2198
  vue: "^3.5.0"
2157
2199
  }
2158
- }.version, xr = null;
2159
- function Sr(e) {
2160
- xr = e;
2200
+ }.version, Tr = null;
2201
+ function Er(e) {
2202
+ Tr = e;
2161
2203
  }
2162
- function Cr(e) {
2204
+ function Dr(e) {
2163
2205
  if (e.container == null) throw Error("[@363045841yyt/klinechart] createChart: `container` is required and must be a non-null HTMLElement");
2164
- if (xr === null) throw Error("[@363045841yyt/klinechart] createChart: no ChartController factory registered. Call __setControllerFactory(...) before mounting (the core package wires this in production).");
2165
- return xr(e);
2206
+ if (Tr === null) throw Error("[@363045841yyt/klinechart] createChart: no ChartController factory registered. Call __setControllerFactory(...) before mounting (the core package wires this in production).");
2207
+ return Tr(e);
2166
2208
  }
2167
- function wr(e) {
2209
+ function Or(e) {
2168
2210
  let t = E(e.peek());
2169
2211
  return b(e.subscribe(() => {
2170
2212
  t.value = e.peek();
2171
2213
  })), t;
2172
2214
  }
2173
- function Tr(e, t) {
2215
+ function kr(e, t) {
2174
2216
  let n = E(null), r = (e) => {
2175
- e == null || n.value != null || (n.value = Cr({
2217
+ e == null || n.value != null || (n.value = Dr({
2176
2218
  ...t,
2177
2219
  container: e
2178
2220
  }));
2179
2221
  };
2180
2222
  r(e.value);
2181
- let i = j(e, (e) => {
2223
+ let i = M(e, (e) => {
2182
2224
  r(e);
2183
2225
  }, {
2184
2226
  immediate: !0,
@@ -2190,7 +2232,7 @@ function Tr(e, t) {
2190
2232
  };
2191
2233
  return b(a), v(a), { chart: n };
2192
2234
  }
2193
- function Er(e) {
2235
+ function Ar(e) {
2194
2236
  let t = E(e.indicators.peek());
2195
2237
  return b(e.indicators.subscribe(() => {
2196
2238
  t.value = e.indicators.peek();
@@ -2201,25 +2243,25 @@ function Er(e) {
2201
2243
  updateParams: e.updateIndicatorParams.bind(e)
2202
2244
  };
2203
2245
  }
2204
- function Dr(e) {
2246
+ function jr(e) {
2205
2247
  let t = E(e.interactionState.peek());
2206
2248
  return b(e.interactionState.subscribe(() => {
2207
2249
  t.value = e.interactionState.peek();
2208
2250
  })), t;
2209
2251
  }
2210
- function Or(e) {
2252
+ function Mr(e) {
2211
2253
  let t = E(e.paneRatios.peek());
2212
2254
  return b(e.paneRatios.subscribe(() => {
2213
2255
  t.value = e.paneRatios.peek();
2214
2256
  })), t;
2215
2257
  }
2216
- function kr(e) {
2258
+ function Nr(e) {
2217
2259
  let t = E(e.viewport.peek());
2218
2260
  return b(e.viewport.subscribe(() => {
2219
2261
  t.value = e.viewport.peek();
2220
2262
  })), t;
2221
2263
  }
2222
- var Ar = u({
2264
+ var Pr = u({
2223
2265
  name: "KLineChart",
2224
2266
  props: {
2225
2267
  data: {
@@ -2252,7 +2294,7 @@ var Ar = u({
2252
2294
  y(() => {
2253
2295
  let n = r.value;
2254
2296
  n != null && (i.run(() => {
2255
- if (a.value = Cr({
2297
+ if (a.value = Dr({
2256
2298
  container: n,
2257
2299
  data: e.data,
2258
2300
  initialZoomLevel: e.initialZoomLevel,
@@ -2266,9 +2308,9 @@ var Ar = u({
2266
2308
  };
2267
2309
  n(), b(e.viewport.subscribe(n));
2268
2310
  }
2269
- }), j(() => e.data, (e) => {
2311
+ }), M(() => e.data, (e) => {
2270
2312
  a.value?.setData(e);
2271
- }), j(() => e.theme, (e) => {
2313
+ }), M(() => e.theme, (e) => {
2272
2314
  a.value?.setTheme(e);
2273
2315
  }));
2274
2316
  }), x(() => {
@@ -2298,9 +2340,9 @@ var Ar = u({
2298
2340
  }
2299
2341
  });
2300
2342
  }
2301
- }), jr = { install(e) {
2302
- e.component("KLineChart", Ar);
2343
+ }), Fr = { install(e) {
2344
+ e.component("KLineChart", Pr);
2303
2345
  } };
2304
- Sr(W);
2346
+ Er(ue);
2305
2347
  //#endregion
2306
- export { ce as CORE_VERSION, pe as DrawingStyleToolbar, ke as IndicatorParams, bt as IndicatorSelector, Ar as KLineChart, yr as KLineChartVue, Lt as KLineTooltip, jr as KMapPlugin, hr as LeftToolbar, Bt as MarkerTooltip, br as VERSION, Sr as __setControllerFactory, wr as coreSignalToVueRef, Cr as createChart, Tr as useChart, Er as useIndicators, Dr as useInteractionState, Or as usePaneRatios, kr as useViewport };
2348
+ export { le as CORE_VERSION, pe as DrawingStyleToolbar, ke as IndicatorParams, Ct as IndicatorSelector, Pr as KLineChart, Cr as KLineChartVue, Bt as KLineTooltip, Fr as KMapPlugin, yr as LeftToolbar, Ut as MarkerTooltip, wr as VERSION, Er as __setControllerFactory, Or as coreSignalToVueRef, Dr as createChart, kr as useChart, Ar as useIndicators, jr as useInteractionState, Mr as usePaneRatios, Nr as useViewport };