@wick-charts/vue 0.6.3 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/README.md +6 -6
  2. package/dist/BandSeries.vue.js +52 -0
  3. package/dist/BandSeries.vue2.js +4 -0
  4. package/dist/BarSeries.vue.js +15 -13
  5. package/dist/CandlestickSeries.vue.js +31 -29
  6. package/dist/ChartContainer.vue.js +75 -68
  7. package/dist/LineSeries.vue.js +19 -17
  8. package/dist/composables.js +46 -36
  9. package/dist/core/dist/animation/config.js +92 -75
  10. package/dist/core/dist/animation/viewport-engine.js +155 -96
  11. package/dist/core/dist/axis/dom-labels.js +56 -51
  12. package/dist/core/dist/chart/badge-animator.js +30 -22
  13. package/dist/core/dist/chart/edge-indicators.js +22 -21
  14. package/dist/core/dist/chart/last-value.js +33 -26
  15. package/dist/core/dist/chart/scale-guards.js +23 -5
  16. package/dist/core/dist/chart/x-guards.js +37 -0
  17. package/dist/core/dist/chart.js +1286 -842
  18. package/dist/core/dist/data/decimation.js +58 -39
  19. package/dist/core/dist/data/sync.js +37 -31
  20. package/dist/core/dist/navigator/controller.js +41 -41
  21. package/dist/core/dist/perf/perf-hud.js +3 -3
  22. package/dist/core/dist/scales/tick-tracker.js +2 -2
  23. package/dist/core/dist/scales/x-scale.js +167 -53
  24. package/dist/core/dist/scales/y-scale.js +36 -34
  25. package/dist/core/dist/series/band.js +723 -0
  26. package/dist/core/dist/series/bar.js +297 -291
  27. package/dist/core/dist/series/base-multi-layer.js +283 -237
  28. package/dist/core/dist/series/candlestick.js +32 -31
  29. package/dist/core/dist/series/heatmap.js +5 -5
  30. package/dist/core/dist/series/line-intro.js +47 -37
  31. package/dist/core/dist/series/line.js +489 -448
  32. package/dist/core/dist/series/painters/builtins.js +4 -4
  33. package/dist/core/dist/series/painters/canvas-path.js +64 -52
  34. package/dist/core/dist/series/register-builtins.js +9 -8
  35. package/dist/core/dist/snapshots.js +59 -46
  36. package/dist/core/dist/utils/point.js +10 -0
  37. package/dist/index.d.ts +552 -129
  38. package/dist/index.js +195 -191
  39. package/dist/ui/Crosshair.vue.js +51 -27
  40. package/dist/ui/InfoBar.vue.js +98 -79
  41. package/dist/ui/Marker.vue.js +14 -11
  42. package/dist/ui/Navigator.vue.js +23 -23
  43. package/dist/ui/ReferenceLine.vue.js +19 -16
  44. package/dist/ui/Tooltip.vue.js +116 -84
  45. package/dist/ui/XAxis.vue.js +48 -0
  46. package/dist/ui/XAxis.vue2.js +4 -0
  47. package/dist/ui/YAxis.vue.js +44 -28
  48. package/dist/ui/YLabel.vue.js +82 -85
  49. package/package.json +2 -2
  50. package/src/BandSeries.vue +92 -0
  51. package/src/BarSeries.vue +13 -6
  52. package/src/CandlestickSeries.vue +9 -5
  53. package/src/ChartContainer.vue +20 -0
  54. package/src/LineSeries.vue +13 -6
  55. package/src/composables.ts +23 -4
  56. package/src/index.ts +16 -1
  57. package/src/ui/Crosshair.vue +41 -1
  58. package/src/ui/InfoBar.vue +22 -2
  59. package/src/ui/Marker.vue +5 -1
  60. package/src/ui/Navigator.vue +2 -1
  61. package/src/ui/ReferenceLine.vue +5 -1
  62. package/src/ui/Tooltip.vue +43 -6
  63. package/src/ui/{TimeAxis.vue → XAxis.vue} +18 -5
  64. package/src/ui/YAxis.vue +66 -12
  65. package/src/ui/YLabel.vue +37 -18
  66. package/dist/ui/TimeAxis.vue.js +0 -44
  67. package/dist/ui/TimeAxis.vue2.js +0 -4
@@ -1,57 +1,67 @@
1
- import { ref as u, onMounted as a, onUnmounted as l } from "vue";
2
- function x(e) {
3
- const o = u(e.getVisibleRange()), n = () => {
4
- o.value = e.getVisibleRange();
1
+ import { ref as l, onMounted as u, onUnmounted as a } from "vue";
2
+ function A(e) {
3
+ const n = l(e.getVisibleRange()), i = () => {
4
+ n.value = e.getVisibleRange();
5
5
  };
6
- return a(() => e.on("viewportChange", n)), l(() => e.off("viewportChange", n)), o;
6
+ return u(() => e.on("viewportChange", i)), a(() => e.off("viewportChange", i)), n;
7
7
  }
8
8
  function d(e) {
9
- const o = u(e.getYRange()), n = () => {
10
- o.value = e.getYRange();
9
+ const n = l(e.getYRange()), i = () => {
10
+ n.value = e.getYRange();
11
11
  };
12
- return a(() => e.on("viewportChange", n)), l(() => e.off("viewportChange", n)), o;
12
+ return u(() => e.on("viewportChange", i)), a(() => e.off("viewportChange", i)), n;
13
13
  }
14
14
  function r(e) {
15
- return { yAxisPosition: e.yAxisPosition, yAxisWidth: e.yAxisWidth, xAxisHeight: e.xAxisHeight };
15
+ return {
16
+ yAxisPosition: e.yAxisPosition,
17
+ yAxisWidth: e.yAxisWidth,
18
+ xAxisHeight: e.xAxisHeight,
19
+ leftAxisWidth: e.getAxisColumnWidth("left"),
20
+ rightAxisWidth: e.getAxisColumnWidth("right"),
21
+ leftAxisScale: e.getAxisColumnScale("left"),
22
+ rightAxisScale: e.getAxisColumnScale("right")
23
+ };
16
24
  }
17
- function p(e) {
18
- const o = u(r(e)), n = () => {
19
- const i = r(e), s = o.value;
20
- s.yAxisPosition === i.yAxisPosition && s.yAxisWidth === i.yAxisWidth && s.xAxisHeight === i.xAxisHeight || (o.value = i);
25
+ function h(e) {
26
+ const n = l(r(e)), i = () => {
27
+ const t = r(e), o = n.value;
28
+ o.yAxisPosition === t.yAxisPosition && o.yAxisWidth === t.yAxisWidth && o.xAxisHeight === t.xAxisHeight && o.leftAxisWidth === t.leftAxisWidth && o.rightAxisWidth === t.rightAxisWidth && o.leftAxisScale === t.leftAxisScale && o.rightAxisScale === t.rightAxisScale || (n.value = t);
21
29
  };
22
- return a(() => {
23
- n(), e.on("viewportChange", n);
24
- }), l(() => e.off("viewportChange", n)), o;
30
+ return u(() => {
31
+ i(), e.on("viewportChange", i);
32
+ }), a(() => e.off("viewportChange", i)), n;
25
33
  }
26
- function A(e, o) {
27
- let n = e.getLastValue(o), i = n ? e.yScale.valueToY(n.value) : null;
28
- const s = u(n), g = () => {
29
- const t = e.getLastValue(o), v = t ? e.yScale.valueToY(t.value) : null;
30
- n?.value === t?.value && n?.isLive === t?.isLive && i === v || (n = t, i = v, s.value = t);
34
+ function p(e, n) {
35
+ let i = e.getLastValue(n);
36
+ const t = () => e.getYScale(e.getSeriesScale(n));
37
+ let o = i ? t().valueToY(i.value) : null;
38
+ const x = l(i), g = () => {
39
+ const s = e.getLastValue(n), f = s ? t().valueToY(s.value) : null;
40
+ i?.value === s?.value && i?.isLive === s?.isLive && o === f || (i = s, o = f, x.value = s);
31
41
  };
32
- return a(() => {
42
+ return u(() => {
33
43
  e.on("dataUpdate", g), e.on("viewportChange", g);
34
- }), l(() => {
44
+ }), a(() => {
35
45
  e.off("dataUpdate", g), e.off("viewportChange", g);
36
- }), s;
46
+ }), x;
37
47
  }
38
- function C(e, o) {
39
- const n = u(e.getPreviousClose(o)), i = () => {
40
- n.value = e.getPreviousClose(o);
48
+ function C(e, n) {
49
+ const i = l(e.getPreviousClose(n)), t = () => {
50
+ i.value = e.getPreviousClose(n);
41
51
  };
42
- return a(() => e.on("dataUpdate", i)), l(() => e.off("dataUpdate", i)), n;
52
+ return u(() => e.on("dataUpdate", t)), a(() => e.off("dataUpdate", t)), i;
43
53
  }
44
- function y(e) {
45
- const o = u(e.getCrosshairPosition()), n = () => {
46
- o.value = e.getCrosshairPosition();
54
+ function c(e) {
55
+ const n = l(e.getCrosshairPosition()), i = () => {
56
+ n.value = e.getCrosshairPosition();
47
57
  };
48
- return a(() => e.on("crosshairMove", n)), l(() => e.off("crosshairMove", n)), o;
58
+ return u(() => e.on("crosshairMove", i)), a(() => e.off("crosshairMove", i)), n;
49
59
  }
50
60
  export {
51
- p as useAxisLayout,
52
- y as useCrosshairPosition,
53
- A as useLastYValue,
61
+ h as useAxisLayout,
62
+ c as useCrosshairPosition,
63
+ p as useLastYValue,
54
64
  C as usePreviousClose,
55
- x as useVisibleRange,
65
+ A as useVisibleRange,
56
66
  d as useYRange
57
67
  };
@@ -1,26 +1,27 @@
1
1
  import { spring as U } from "./spring.js";
2
2
  import { resolveAnimationTime as r } from "./time.js";
3
3
  import { hermite as S } from "./y-range-hermite.js";
4
- import { snap as u } from "./y-range-snap.js";
5
- const E = 250, p = 250, h = 500, ss = 400, k = E, g = p, I = h, N = 600, R = E, v = p, Y = h, O = E, C = p, b = h, x = 600, P = 250, H = 600, K = 300, G = 200, B = 150, X = 250, _ = 2500, m = 500, $ = 100, w = 250, j = 250, V = 400, f = {
4
+ import { snap as y } from "./y-range-snap.js";
5
+ const E = 250, _ = 250, T = 500, rs = 400, k = E, N = _, g = T, I = 600, R = E, b = _, v = T, O = E, Y = _, C = T, x = E, H = _, P = T, B = 600, K = 250, G = 600, X = 300, $ = 200, w = 150, j = 250, A = 2500, f = 500, V = 100, q = 250, z = 250, J = 400, L = {
6
6
  line: { entryMs: 0, smoothMs: 0, pulseMs: 0, introMs: 0 },
7
7
  candlestick: { entryMs: 0, smoothMs: 0, introMs: 0 },
8
8
  bar: { entryMs: 0, smoothMs: 0, introMs: 0 },
9
+ band: { entryMs: 0, smoothMs: 0, introMs: 0 },
9
10
  pie: { entryMs: 0, updateMs: 0 },
10
11
  heatmap: { entryMs: 0, updateMs: 0 }
11
12
  };
12
- function q(i) {
13
- if (i !== null && typeof i == "object")
13
+ function Q(o) {
14
+ if (o !== null && typeof o == "object")
14
15
  return {
15
- stickyMs: r(i.max, _),
16
- stickyFloorMs: r(i.min, m)
16
+ stickyMs: r(o.max, A),
17
+ stickyFloorMs: r(o.min, f)
17
18
  };
18
- if (i === void 0)
19
- return { stickyMs: _, stickyFloorMs: m };
20
- const e = r(i, _);
19
+ if (o === void 0)
20
+ return { stickyMs: A, stickyFloorMs: f };
21
+ const e = r(o, A);
21
22
  return { stickyMs: e, stickyFloorMs: e };
22
23
  }
23
- class y {
24
+ class p {
24
25
  axis;
25
26
  toggleMs;
26
27
  series;
@@ -35,37 +36,37 @@ class y {
35
36
  */
36
37
  static resolve(e) {
37
38
  if (e === !1)
38
- return new y(
39
+ return new p(
39
40
  {
40
- y: { curve: u(), settleMs: 0, stickyMs: 0, stickyFloorMs: 0, gestureMs: 0 },
41
- x: { curve: u(), settleMs: 0, gestureMs: 0 },
41
+ y: { curve: y(), settleMs: 0, stickyMs: 0, stickyFloorMs: 0, gestureMs: 0 },
42
+ x: { curve: y(), settleMs: 0, gestureMs: 0 },
42
43
  ticksMs: 0,
43
44
  gridMs: 0
44
45
  },
45
46
  0,
46
- f
47
+ L
47
48
  );
48
- const s = e === !0 || e === void 0 ? void 0 : e, t = s?.axis, M = t === !1 ? !1 : t?.y, o = t === !1 ? !1 : t?.x, n = t === !1 ? !1 : t?.ticks, a = t === !1 ? !1 : t?.grid, l = s?.toggle, c = s?.series, T = M === !1 ? {
49
- curve: u(),
49
+ const s = e === !0 || e === void 0 ? void 0 : e, t = s?.axis, M = t === !1 ? !1 : t?.y, i = t === !1 ? !1 : t?.x, n = t === !1 ? !1 : t?.ticks, a = t === !1 ? !1 : t?.grid, l = s?.toggle, u = s?.series, c = M === !1 ? {
50
+ curve: y(),
50
51
  settleMs: 0,
51
52
  stickyMs: 0,
52
53
  stickyFloorMs: 0,
53
54
  gestureMs: 0
54
55
  } : {
55
56
  curve: M?.curve ?? S(),
56
- settleMs: r(M?.settle, X),
57
- ...q(M?.sticky),
58
- gestureMs: r(M?.gesture, $)
59
- }, A = o === !1 ? {
60
- curve: u(),
57
+ settleMs: r(M?.settle, j),
58
+ ...Q(M?.sticky),
59
+ gestureMs: r(M?.gesture, V)
60
+ }, h = i === !1 ? {
61
+ curve: y(),
61
62
  settleMs: 0,
62
63
  gestureMs: 0
63
64
  } : {
64
- curve: o?.curve ?? U(),
65
- settleMs: r(o?.settle, G),
66
- gestureMs: r(o?.gesture, B)
67
- }, L = n === !1 ? 0 : r(n, j), d = a === !1 ? 0 : r(a, V), D = r(l, w), F = z(c);
68
- return new y({ y: T, x: A, ticksMs: L, gridMs: d }, D, F);
65
+ curve: i?.curve ?? U(),
66
+ settleMs: r(i?.settle, $),
67
+ gestureMs: r(i?.gesture, w)
68
+ }, m = n === !1 ? 0 : r(n, z), D = a === !1 ? 0 : r(a, J), d = r(l, q), F = W(u);
69
+ return new p({ y: c, x: h, ticksMs: m, gridMs: D }, d, F);
69
70
  }
70
71
  /**
71
72
  * Per-renderer-type chart-level option payload — merged BEFORE user
@@ -76,8 +77,8 @@ class y {
76
77
  */
77
78
  defaults(e) {
78
79
  if (e === "line") {
79
- const { entryMs: s, smoothMs: t, pulseMs: M, introMs: o } = this.series.line;
80
- return { entryMs: s, smoothMs: t, pulseMs: M, introMs: o };
80
+ const { entryMs: s, smoothMs: t, pulseMs: M, introMs: i } = this.series.line;
81
+ return { entryMs: s, smoothMs: t, pulseMs: M, introMs: i };
81
82
  }
82
83
  if (e === "candlestick") {
83
84
  const { entryMs: s, smoothMs: t, introMs: M } = this.series.candlestick;
@@ -95,6 +96,10 @@ class y {
95
96
  const { entryMs: s, smoothMs: t, introMs: M } = this.series.bar;
96
97
  return { entryMs: s, smoothMs: t, introMs: M };
97
98
  }
99
+ if (e === "band") {
100
+ const { entryMs: s, smoothMs: t, introMs: M } = this.series.band;
101
+ return { entryMs: s, smoothMs: t, introMs: M };
102
+ }
98
103
  return {};
99
104
  }
100
105
  /**
@@ -106,69 +111,81 @@ class y {
106
111
  overrides(e) {
107
112
  const s = {};
108
113
  if (e === "line") {
109
- const { entryMs: n, smoothMs: a, pulseMs: l, introMs: c } = this.series.line;
110
- return n === 0 && (s.entryMs = 0), a === 0 && (s.smoothMs = 0), l === 0 && (s.pulseMs = 0), c === 0 && (s.introMs = 0), s;
114
+ const { entryMs: a, smoothMs: l, pulseMs: u, introMs: c } = this.series.line;
115
+ return a === 0 && (s.entryMs = 0), l === 0 && (s.smoothMs = 0), u === 0 && (s.pulseMs = 0), c === 0 && (s.introMs = 0), s;
111
116
  }
112
117
  if (e === "pie")
113
118
  return this.series.pie.entryMs === 0 && (s.entryMs = 0), s;
114
119
  if (e === "heatmap") {
115
- const { entryMs: n, updateMs: a } = this.series.heatmap;
116
- return n === 0 && (s.entryMs = 0), a === 0 && (s.updateMs = 0), s;
120
+ const { entryMs: a, updateMs: l } = this.series.heatmap;
121
+ return a === 0 && (s.entryMs = 0), l === 0 && (s.updateMs = 0), s;
117
122
  }
118
- if (e !== "candlestick" && e !== "bar")
123
+ const t = this.#s(e);
124
+ if (t === null)
119
125
  return s;
120
- const { entryMs: t, smoothMs: M, introMs: o } = e === "candlestick" ? this.series.candlestick : this.series.bar;
121
- return t === 0 && (s.entryMs = 0), M === 0 && (s.smoothMs = 0), o === 0 && (s.introMs = 0), s;
126
+ const { entryMs: M, smoothMs: i, introMs: n } = t;
127
+ return M === 0 && (s.entryMs = 0), i === 0 && (s.smoothMs = 0), n === 0 && (s.introMs = 0), s;
128
+ }
129
+ /** Durations of a series type with entry / smooth / intro knobs, or `null` for any other kind. */
130
+ #s(e) {
131
+ return e === "candlestick" ? this.series.candlestick : e === "bar" ? this.series.bar : e === "band" ? this.series.band : null;
122
132
  }
123
133
  }
124
- function z(i) {
125
- if (i === !1) return f;
126
- const e = i?.line, s = i?.candlestick, t = i?.bar, M = i?.pie, o = i?.heatmap, n = e === !1 ? { entryMs: 0, smoothMs: 0, pulseMs: 0, introMs: 0 } : {
134
+ function W(o) {
135
+ if (o === !1) return L;
136
+ const e = o?.line, s = o?.candlestick, t = o?.bar, M = o?.band, i = o?.pie, n = o?.heatmap, a = e === !1 ? { entryMs: 0, smoothMs: 0, pulseMs: 0, introMs: 0 } : {
127
137
  entryMs: r(e?.entry, k),
128
- smoothMs: r(e?.smooth, g),
129
- pulseMs: r(e?.pulse, N),
130
- introMs: r(e?.intro, I)
131
- }, a = s === !1 ? { entryMs: 0, smoothMs: 0, introMs: 0 } : {
138
+ smoothMs: r(e?.smooth, N),
139
+ pulseMs: r(e?.pulse, I),
140
+ introMs: r(e?.intro, g)
141
+ }, l = s === !1 ? { entryMs: 0, smoothMs: 0, introMs: 0 } : {
132
142
  entryMs: r(s?.entry, R),
133
- smoothMs: r(s?.smooth, v),
134
- introMs: r(s?.intro, Y)
135
- }, l = t === !1 ? { entryMs: 0, smoothMs: 0, introMs: 0 } : {
143
+ smoothMs: r(s?.smooth, b),
144
+ introMs: r(s?.intro, v)
145
+ }, u = t === !1 ? { entryMs: 0, smoothMs: 0, introMs: 0 } : {
136
146
  entryMs: r(t?.entry, O),
137
- smoothMs: r(t?.smooth, C),
138
- introMs: r(t?.intro, b)
139
- }, c = M === !1 ? { entryMs: 0, updateMs: 0 } : {
147
+ smoothMs: r(t?.smooth, Y),
148
+ introMs: r(t?.intro, C)
149
+ }, c = M === !1 ? { entryMs: 0, smoothMs: 0, introMs: 0 } : {
140
150
  entryMs: r(M?.entry, x),
141
- updateMs: r(M?.update, P)
142
- }, T = o === !1 ? { entryMs: 0, updateMs: 0 } : {
143
- entryMs: r(o?.entry, H),
144
- updateMs: r(o?.update, K)
151
+ smoothMs: r(M?.smooth, H),
152
+ introMs: r(M?.intro, P)
153
+ }, h = i === !1 ? { entryMs: 0, updateMs: 0 } : {
154
+ entryMs: r(i?.entry, B),
155
+ updateMs: r(i?.update, K)
156
+ }, m = n === !1 ? { entryMs: 0, updateMs: 0 } : {
157
+ entryMs: r(n?.entry, G),
158
+ updateMs: r(n?.update, X)
145
159
  };
146
- return { line: n, candlestick: a, bar: l, pie: c, heatmap: T };
160
+ return { line: a, candlestick: l, bar: u, band: c, pie: h, heatmap: m };
147
161
  }
148
162
  export {
149
- y as AnimationConfig,
163
+ p as AnimationConfig,
164
+ x as DEFAULT_BAND_ENTRY,
165
+ P as DEFAULT_BAND_INTRO,
166
+ H as DEFAULT_BAND_SMOOTH,
150
167
  O as DEFAULT_BAR_ENTRY,
151
- b as DEFAULT_BAR_INTRO,
152
- C as DEFAULT_BAR_SMOOTH,
168
+ C as DEFAULT_BAR_INTRO,
169
+ Y as DEFAULT_BAR_SMOOTH,
153
170
  R as DEFAULT_CANDLESTICK_ENTRY,
154
- Y as DEFAULT_CANDLESTICK_INTRO,
155
- v as DEFAULT_CANDLESTICK_SMOOTH,
156
- V as DEFAULT_GRID_MS,
157
- H as DEFAULT_HEATMAP_ENTRY,
158
- K as DEFAULT_HEATMAP_UPDATE,
159
- ss as DEFAULT_HISTORY_REVEAL,
171
+ v as DEFAULT_CANDLESTICK_INTRO,
172
+ b as DEFAULT_CANDLESTICK_SMOOTH,
173
+ J as DEFAULT_GRID_MS,
174
+ G as DEFAULT_HEATMAP_ENTRY,
175
+ X as DEFAULT_HEATMAP_UPDATE,
176
+ rs as DEFAULT_HISTORY_REVEAL,
160
177
  k as DEFAULT_LINE_ENTRY,
161
- I as DEFAULT_LINE_INTRO,
162
- N as DEFAULT_LINE_PULSE,
163
- g as DEFAULT_LINE_SMOOTH,
164
- x as DEFAULT_PIE_ENTRY,
165
- P as DEFAULT_PIE_UPDATE,
166
- j as DEFAULT_TICKS_MS,
167
- w as DEFAULT_TOGGLE_MS,
168
- B as DEFAULT_X_GESTURE_MS,
169
- G as DEFAULT_X_SETTLE_MS,
170
- $ as DEFAULT_Y_GESTURE_MS,
171
- X as DEFAULT_Y_SETTLE_MS,
172
- _ as DEFAULT_Y_STICKY_MAX_MS,
173
- m as DEFAULT_Y_STICKY_MIN_MS
178
+ g as DEFAULT_LINE_INTRO,
179
+ I as DEFAULT_LINE_PULSE,
180
+ N as DEFAULT_LINE_SMOOTH,
181
+ B as DEFAULT_PIE_ENTRY,
182
+ K as DEFAULT_PIE_UPDATE,
183
+ z as DEFAULT_TICKS_MS,
184
+ q as DEFAULT_TOGGLE_MS,
185
+ w as DEFAULT_X_GESTURE_MS,
186
+ $ as DEFAULT_X_SETTLE_MS,
187
+ V as DEFAULT_Y_GESTURE_MS,
188
+ j as DEFAULT_Y_SETTLE_MS,
189
+ A as DEFAULT_Y_STICKY_MAX_MS,
190
+ f as DEFAULT_Y_STICKY_MIN_MS
174
191
  };