minerva-design 1.1.0 → 1.2.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 (249) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/dist/charts/canvas.d.cts +7 -0
  3. package/dist/charts/canvas.d.ts +7 -0
  4. package/dist/charts/core.cjs +1 -1
  5. package/dist/charts/core.d.cts +5 -1
  6. package/dist/charts/core.d.ts +5 -1
  7. package/dist/charts/core.js +4 -1
  8. package/dist/charts/engine/canvas.cjs +2 -0
  9. package/dist/charts/engine/canvas.cjs.map +1 -0
  10. package/dist/charts/engine/canvas.d.cts +85 -0
  11. package/dist/charts/engine/canvas.d.ts +85 -0
  12. package/dist/charts/engine/canvas.js +165 -0
  13. package/dist/charts/engine/canvas.js.map +1 -0
  14. package/dist/charts/engine/chart.cjs +2 -2
  15. package/dist/charts/engine/chart.cjs.map +1 -1
  16. package/dist/charts/engine/chart.js +382 -440
  17. package/dist/charts/engine/chart.js.map +1 -1
  18. package/dist/charts/engine/color.cjs +1 -1
  19. package/dist/charts/engine/color.cjs.map +1 -1
  20. package/dist/charts/engine/color.d.cts +10 -0
  21. package/dist/charts/engine/color.d.ts +10 -0
  22. package/dist/charts/engine/color.js +75 -3
  23. package/dist/charts/engine/color.js.map +1 -1
  24. package/dist/charts/engine/controller.cjs +3 -0
  25. package/dist/charts/engine/controller.cjs.map +1 -0
  26. package/dist/charts/engine/controller.d.cts +182 -0
  27. package/dist/charts/engine/controller.d.ts +182 -0
  28. package/dist/charts/engine/controller.js +528 -0
  29. package/dist/charts/engine/controller.js.map +1 -0
  30. package/dist/charts/engine/model.cjs +1 -1
  31. package/dist/charts/engine/model.cjs.map +1 -1
  32. package/dist/charts/engine/model.d.cts +2 -2
  33. package/dist/charts/engine/model.d.ts +2 -2
  34. package/dist/charts/engine/model.js +72 -72
  35. package/dist/charts/engine/model.js.map +1 -1
  36. package/dist/charts/engine/overlay.cjs +1 -1
  37. package/dist/charts/engine/overlay.cjs.map +1 -1
  38. package/dist/charts/engine/overlay.d.cts +17 -1
  39. package/dist/charts/engine/overlay.d.ts +17 -1
  40. package/dist/charts/engine/overlay.js +63 -49
  41. package/dist/charts/engine/overlay.js.map +1 -1
  42. package/dist/charts/engine/presets.cjs +3 -0
  43. package/dist/charts/engine/presets.cjs.map +1 -0
  44. package/dist/charts/engine/presets.d.cts +103 -0
  45. package/dist/charts/engine/presets.d.ts +103 -0
  46. package/dist/charts/engine/presets.js +153 -0
  47. package/dist/charts/engine/presets.js.map +1 -0
  48. package/dist/charts/engine/renderers/canvas2d.cjs +1 -1
  49. package/dist/charts/engine/renderers/canvas2d.cjs.map +1 -1
  50. package/dist/charts/engine/renderers/canvas2d.d.cts +17 -1
  51. package/dist/charts/engine/renderers/canvas2d.d.ts +17 -1
  52. package/dist/charts/engine/renderers/canvas2d.js +88 -51
  53. package/dist/charts/engine/renderers/canvas2d.js.map +1 -1
  54. package/dist/charts/engine/scene.cjs +2 -0
  55. package/dist/charts/engine/scene.cjs.map +1 -0
  56. package/dist/charts/engine/scene.d.cts +89 -0
  57. package/dist/charts/engine/scene.d.ts +89 -0
  58. package/dist/charts/engine/scene.js +241 -0
  59. package/dist/charts/engine/scene.js.map +1 -0
  60. package/dist/charts/engine/theme.cjs +1 -1
  61. package/dist/charts/engine/theme.cjs.map +1 -1
  62. package/dist/charts/engine/theme.d.cts +25 -1
  63. package/dist/charts/engine/theme.d.ts +25 -1
  64. package/dist/charts/engine/theme.js +42 -26
  65. package/dist/charts/engine/theme.js.map +1 -1
  66. package/dist/charts/engine/types.d.cts +69 -2
  67. package/dist/charts/engine/types.d.ts +69 -2
  68. package/dist/charts/index.cjs +1 -1
  69. package/dist/charts/index.d.cts +1 -1
  70. package/dist/charts/index.d.ts +1 -1
  71. package/dist/charts/index.js +5 -2
  72. package/dist/charts/react/Chart.cjs +1 -1
  73. package/dist/charts/react/Chart.cjs.map +1 -1
  74. package/dist/charts/react/Chart.d.cts +11 -4
  75. package/dist/charts/react/Chart.d.ts +11 -4
  76. package/dist/charts/react/Chart.js +81 -39
  77. package/dist/charts/react/Chart.js.map +1 -1
  78. package/dist/charts/react/charts.cjs +1 -1
  79. package/dist/charts/react/charts.cjs.map +1 -1
  80. package/dist/charts/react/charts.d.cts +1 -1
  81. package/dist/charts/react/charts.d.ts +1 -1
  82. package/dist/charts/react/charts.js +99 -145
  83. package/dist/charts/react/charts.js.map +1 -1
  84. package/dist/charts/react/types.d.cts +29 -61
  85. package/dist/charts/react/types.d.ts +29 -61
  86. package/dist/native/charts/src/canvas.cjs +1 -0
  87. package/dist/native/charts/src/canvas.js +6 -0
  88. package/dist/native/charts/src/engine/axis.cjs +2 -0
  89. package/dist/native/charts/src/engine/axis.cjs.map +1 -0
  90. package/dist/native/charts/src/engine/axis.js +38 -0
  91. package/dist/native/charts/src/engine/axis.js.map +1 -0
  92. package/dist/native/charts/src/engine/canvas.cjs +1 -0
  93. package/dist/native/charts/src/engine/canvas.js +1 -0
  94. package/dist/native/charts/src/engine/color.cjs +2 -0
  95. package/dist/native/charts/src/engine/color.cjs.map +1 -0
  96. package/dist/native/charts/src/engine/color.js +130 -0
  97. package/dist/native/charts/src/engine/color.js.map +1 -0
  98. package/dist/native/charts/src/engine/controller.cjs +3 -0
  99. package/dist/native/charts/src/engine/controller.cjs.map +1 -0
  100. package/dist/native/charts/src/engine/controller.js +528 -0
  101. package/dist/native/charts/src/engine/controller.js.map +1 -0
  102. package/dist/native/charts/src/engine/data.cjs +2 -0
  103. package/dist/native/charts/src/engine/data.cjs.map +1 -0
  104. package/dist/native/charts/src/engine/data.js +104 -0
  105. package/dist/native/charts/src/engine/data.js.map +1 -0
  106. package/dist/native/charts/src/engine/decimate.cjs +2 -0
  107. package/dist/native/charts/src/engine/decimate.cjs.map +1 -0
  108. package/dist/native/charts/src/engine/decimate.js +28 -0
  109. package/dist/native/charts/src/engine/decimate.js.map +1 -0
  110. package/dist/native/charts/src/engine/format.cjs +2 -0
  111. package/dist/native/charts/src/engine/format.cjs.map +1 -0
  112. package/dist/native/charts/src/engine/format.js +34 -0
  113. package/dist/native/charts/src/engine/format.js.map +1 -0
  114. package/dist/native/charts/src/engine/layout.cjs +2 -0
  115. package/dist/native/charts/src/engine/layout.cjs.map +1 -0
  116. package/dist/native/charts/src/engine/layout.js +26 -0
  117. package/dist/native/charts/src/engine/layout.js.map +1 -0
  118. package/dist/native/charts/src/engine/model.cjs +2 -0
  119. package/dist/native/charts/src/engine/model.cjs.map +1 -0
  120. package/dist/native/charts/src/engine/model.js +175 -0
  121. package/dist/native/charts/src/engine/model.js.map +1 -0
  122. package/dist/native/charts/src/engine/overlay.cjs +2 -0
  123. package/dist/native/charts/src/engine/overlay.cjs.map +1 -0
  124. package/dist/native/charts/src/engine/overlay.js +49 -0
  125. package/dist/native/charts/src/engine/overlay.js.map +1 -0
  126. package/dist/native/charts/src/engine/presets.cjs +3 -0
  127. package/dist/native/charts/src/engine/presets.cjs.map +1 -0
  128. package/dist/native/charts/src/engine/presets.js +147 -0
  129. package/dist/native/charts/src/engine/presets.js.map +1 -0
  130. package/dist/native/charts/src/engine/scale.cjs +2 -0
  131. package/dist/native/charts/src/engine/scale.cjs.map +1 -0
  132. package/dist/native/charts/src/engine/scale.js +37 -0
  133. package/dist/native/charts/src/engine/scale.js.map +1 -0
  134. package/dist/native/charts/src/engine/scene.cjs +2 -0
  135. package/dist/native/charts/src/engine/scene.cjs.map +1 -0
  136. package/dist/native/charts/src/engine/scene.js +241 -0
  137. package/dist/native/charts/src/engine/scene.js.map +1 -0
  138. package/dist/native/charts/src/engine/spatial.cjs +2 -0
  139. package/dist/native/charts/src/engine/spatial.cjs.map +1 -0
  140. package/dist/native/charts/src/engine/spatial.js +53 -0
  141. package/dist/native/charts/src/engine/spatial.js.map +1 -0
  142. package/dist/native/charts/src/engine/theme.cjs +2 -0
  143. package/dist/native/charts/src/engine/theme.cjs.map +1 -0
  144. package/dist/native/charts/src/engine/theme.js +62 -0
  145. package/dist/native/charts/src/engine/theme.js.map +1 -0
  146. package/dist/native/charts/src/engine/time.cjs +2 -0
  147. package/dist/native/charts/src/engine/time.cjs.map +1 -0
  148. package/dist/native/charts/src/engine/time.js +189 -0
  149. package/dist/native/charts/src/engine/time.js.map +1 -0
  150. package/dist/native/charts/src/engine/viewport.cjs +2 -0
  151. package/dist/native/charts/src/engine/viewport.cjs.map +1 -0
  152. package/dist/native/charts/src/engine/viewport.js +12 -0
  153. package/dist/native/charts/src/engine/viewport.js.map +1 -0
  154. package/dist/native/components/Chart/ChartBase.cjs +2 -0
  155. package/dist/native/components/Chart/ChartBase.cjs.map +1 -0
  156. package/dist/native/components/Chart/ChartBase.d.cts +29 -0
  157. package/dist/native/components/Chart/ChartBase.d.ts +29 -0
  158. package/dist/native/components/Chart/ChartBase.js +287 -0
  159. package/dist/native/components/Chart/ChartBase.js.map +1 -0
  160. package/dist/native/components/Chart/charts.cjs +2 -0
  161. package/dist/native/components/Chart/charts.cjs.map +1 -0
  162. package/dist/native/components/Chart/charts.d.cts +19 -0
  163. package/dist/native/components/Chart/charts.d.ts +19 -0
  164. package/dist/native/components/Chart/charts.js +173 -0
  165. package/dist/native/components/Chart/charts.js.map +1 -0
  166. package/dist/native/components/Chart/index.cjs +1 -0
  167. package/dist/native/components/Chart/index.d.cts +2 -0
  168. package/dist/native/components/Chart/index.d.ts +2 -0
  169. package/dist/native/components/Chart/index.js +2 -0
  170. package/dist/native/components/Chart/measure.cjs +2 -0
  171. package/dist/native/components/Chart/measure.cjs.map +1 -0
  172. package/dist/native/components/Chart/measure.d.cts +5 -0
  173. package/dist/native/components/Chart/measure.d.ts +5 -0
  174. package/dist/native/components/Chart/measure.js +11 -0
  175. package/dist/native/components/Chart/measure.js.map +1 -0
  176. package/dist/native/components/Chart/scene.cjs +2 -0
  177. package/dist/native/components/Chart/scene.cjs.map +1 -0
  178. package/dist/native/components/Chart/scene.d.cts +41 -0
  179. package/dist/native/components/Chart/scene.d.ts +41 -0
  180. package/dist/native/components/Chart/scene.js +419 -0
  181. package/dist/native/components/Chart/scene.js.map +1 -0
  182. package/dist/native/components/Chart/theme.cjs +2 -0
  183. package/dist/native/components/Chart/theme.cjs.map +1 -0
  184. package/dist/native/components/Chart/theme.d.cts +10 -0
  185. package/dist/native/components/Chart/theme.d.ts +10 -0
  186. package/dist/native/components/Chart/theme.js +10 -0
  187. package/dist/native/components/Chart/theme.js.map +1 -0
  188. package/dist/native/components/Chart/types.d.cts +129 -0
  189. package/dist/native/components/Chart/types.d.ts +129 -0
  190. package/dist/native/index.cjs +1 -1
  191. package/dist/native/index.d.cts +1 -0
  192. package/dist/native/index.d.ts +1 -0
  193. package/dist/native/index.js +6 -4
  194. package/dist/native/manifest.d.cts +7 -0
  195. package/dist/native/manifest.d.ts +7 -0
  196. package/dist/native/source/components/Chart/ChartBase.tsx +545 -0
  197. package/dist/native/source/components/Chart/charts.tsx +291 -0
  198. package/dist/native/source/components/Chart/index.ts +8 -0
  199. package/dist/native/source/components/Chart/measure.ts +50 -0
  200. package/dist/native/source/components/Chart/scene.tsx +987 -0
  201. package/dist/native/source/components/Chart/theme.ts +16 -0
  202. package/dist/native/source/components/Chart/types.ts +194 -0
  203. package/dist/native/source/index.ts +1 -0
  204. package/dist/native/source/manifest.ts +14 -0
  205. package/dist/taro/charts.d.ts +144 -0
  206. package/dist/taro/index.d.ts +1 -0
  207. package/dist/taro/index.js +3064 -618
  208. package/dist/uni/BarChart.vue +75 -0
  209. package/dist/uni/BarChart.vue.d.ts +111 -0
  210. package/dist/uni/Chart.vue +68 -0
  211. package/dist/uni/Chart.vue.d.ts +100 -0
  212. package/dist/uni/LineChart.vue +75 -0
  213. package/dist/uni/LineChart.vue.d.ts +111 -0
  214. package/dist/uni/ProgressIndicator.vue.d.ts +1 -1
  215. package/dist/uni/QuadrantChart.vue +184 -0
  216. package/dist/uni/QuadrantChart.vue.d.ts +173 -0
  217. package/dist/uni/ScatterChart.vue +69 -0
  218. package/dist/uni/ScatterChart.vue.d.ts +100 -0
  219. package/dist/uni/chart-canvas.d.ts +68 -0
  220. package/dist/uni/chart-canvas.js +363 -0
  221. package/dist/uni/chart-types.d.ts +135 -0
  222. package/dist/uni/chart-types.js +84 -0
  223. package/dist/uni/charts-canvas.d.ts +1 -0
  224. package/dist/uni/charts-canvas.js +8 -0
  225. package/dist/uni/index.d.ts +6 -0
  226. package/dist/uni/index.js +6 -0
  227. package/dist/weapp/bar-chart/index.js +1 -0
  228. package/dist/weapp/bar-chart/index.json +1 -0
  229. package/dist/weapp/bar-chart/index.wxml +1 -0
  230. package/dist/weapp/bar-chart/index.wxss +1 -0
  231. package/dist/weapp/chart/index.js +1 -0
  232. package/dist/weapp/chart/index.json +1 -0
  233. package/dist/weapp/chart/index.wxml +1 -0
  234. package/dist/weapp/chart/index.wxss +1 -0
  235. package/dist/weapp/controls.js +4019 -266
  236. package/dist/weapp/line-chart/index.js +1 -0
  237. package/dist/weapp/line-chart/index.json +1 -0
  238. package/dist/weapp/line-chart/index.wxml +1 -0
  239. package/dist/weapp/line-chart/index.wxss +1 -0
  240. package/dist/weapp/quadrant-chart/index.js +1 -0
  241. package/dist/weapp/quadrant-chart/index.json +1 -0
  242. package/dist/weapp/quadrant-chart/index.wxml +1 -0
  243. package/dist/weapp/quadrant-chart/index.wxss +1 -0
  244. package/dist/weapp/scatter-chart/index.js +1 -0
  245. package/dist/weapp/scatter-chart/index.json +1 -0
  246. package/dist/weapp/scatter-chart/index.wxml +1 -0
  247. package/dist/weapp/scatter-chart/index.wxss +1 -0
  248. package/dist/weapp/types.d.ts +295 -0
  249. package/package.json +21 -1
@@ -1,90 +1,60 @@
1
- import { axisTicks as e } from "./axis.js";
2
- import { mix as t, resolveColor as n, toCss as r } from "./color.js";
3
- import { lowerBound as i, nearestIndex as a } from "./data.js";
4
- import { createBarHighlight as o, createChartDom as s, createDataCanvas as c, createMarker as l, styleElement as u, swatch as d } from "./dom.js";
5
- import { buildItems as f } from "./items.js";
6
- import { computePlot as p, createScales as ee } from "./layout.js";
7
- import { buildModel as m, gridOf as te } from "./model.js";
8
- import { drawBackground as ne, drawForeground as re, font as ie } from "./overlay.js";
9
- import { createRenderer as ae } from "./renderers/detect.js";
10
- import { readTheme as h, watchTheme as oe } from "./theme.js";
11
- import { clampRange as g, panRange as _, sameRange as v, wheelFactor as se, zoomRange as ce } from "./viewport.js";
1
+ import { lowerBound as e } from "./data.js";
2
+ import { createBarHighlight as t, createChartDom as n, createDataCanvas as r, createMarker as i, styleElement as a, swatch as o } from "./dom.js";
3
+ import { buildItems as s } from "./items.js";
4
+ import { createScales as c } from "./layout.js";
5
+ import { buildModel as l } from "./model.js";
6
+ import { drawBackground as u, drawForeground as d, font as f } from "./overlay.js";
7
+ import { createRenderer as p } from "./renderers/detect.js";
8
+ import { collectPointLabels as m, hitTest as ee, hoverItemOf as te, hoverMarks as ne, layoutChart as re, pointOf as ie, resolveAnnotations as ae, sameHover as oe, showsCrosshair as se, tooltipContent as ce } from "./scene.js";
9
+ import { readTheme as le, watchTheme as ue } from "./theme.js";
10
+ import { clampRange as h, panRange as g, sameRange as _, wheelFactor as de, zoomRange as fe } from "./viewport.js";
12
11
  //#region src/engine/chart.ts
13
- var le = 300, ue = {
14
- top: 12,
15
- right: 16,
16
- bottom: 4,
17
- left: 4
18
- }, y = (e) => (e[0] + e[1]) / 2, b = (e) => ({
12
+ var v = (e) => (e[0] + e[1]) / 2, y = (e) => ({
19
13
  x: [e.x[0], e.x[1]],
20
14
  y: [e.y[0], e.y[1]]
21
- }), x = (x, de) => {
22
- let S = x.ownerDocument, C = S.defaultView, w = s(x), fe = /* @__PURE__ */ new Map(), T = /* @__PURE__ */ new Set(), E = {}, D = de, O = h(w.root, D.palette), k, A = {
15
+ }), pe = (pe, me) => {
16
+ let b = pe.ownerDocument, x = b.defaultView, S = n(pe), he = /* @__PURE__ */ new Map(), C = /* @__PURE__ */ new Set(), w = {}, T = me, E = le(S.root, T.palette), D, O = {
23
17
  x: [0, 1],
24
18
  y: [0, 1]
25
- }, j = !1, M = {
19
+ }, k = !1, A = {
26
20
  x: 0,
27
21
  y: 0
28
- }, pe = [], N = !0, me = 0, P = [], F = null, I = null, L = null, R = null, he = 0, z = !1, B = 0, V = null, H = null, U = [], W = [], G = 0, ge = "", _e = /* @__PURE__ */ new WeakMap(), ve = 0, ye = (e) => {
29
- let t = _e.get(e);
30
- return t === void 0 && _e.set(e, t = ++ve), t;
31
- }, be = () => {}, xe = new Promise((e) => {
32
- be = e;
33
- }), K = (e, t) => {
34
- E[e]?.forEach((e) => e(t));
35
- }, q = () => {
36
- let e = D.interaction;
22
+ }, ge = [], j = !0, _e = 0, ve = [], M = null, N = null, P = null, F = null, ye = 0, I = !1, L = 0, R = null, be = "", z = null, B = null, V = null, xe = [], Se = [], Ce = 0, we = "", Te = /* @__PURE__ */ new WeakMap(), Ee = 0, De = (e) => {
23
+ let t = Te.get(e);
24
+ return t === void 0 && Te.set(e, t = ++Ee), t;
25
+ }, Oe = () => {}, ke = new Promise((e) => {
26
+ Oe = e;
27
+ }), H = (e, t) => {
28
+ w[e]?.forEach((e) => e(t));
29
+ }, U = () => {
30
+ let e = T.interaction;
37
31
  if (e === !1) return null;
38
32
  let t = typeof e == "object" ? e : {};
39
33
  return {
40
34
  zoom: t.zoom ?? !0,
41
35
  wheel: t.wheel ?? "modifier",
42
36
  pan: t.pan ?? !0,
43
- keyboard: t.keyboard ?? !0
37
+ keyboard: t.keyboard ?? !0,
38
+ dragPoints: t.dragPoints ?? !1
44
39
  };
45
- }, Se = () => D.tooltip === !1 ? null : typeof D.tooltip == "object" ? D.tooltip : {}, J = () => {
46
- z || B || (B = C?.requestAnimationFrame ? C.requestAnimationFrame(Ae) : setTimeout(Ae, 16));
47
- }, Ce = () => (D.annotations ?? []).map((e) => {
48
- if (e.type === "rect") {
49
- let r = e.color ? n(e.color, w.root, O.primary) : O.primary;
50
- return {
51
- type: "rect",
52
- x0: e.x0,
53
- x1: e.x1,
54
- y0: e.y0,
55
- y1: e.y1,
56
- color: r,
57
- opacity: e.opacity ?? .08,
58
- label: e.label,
59
- labelPosition: e.labelPosition ?? "top-left",
60
- labelColor: e.labelColor ? n(e.labelColor, w.root, r) : t(r, O.text, .2)
61
- };
62
- }
63
- return {
64
- type: "line",
65
- axis: e.axis,
66
- value: e.value,
67
- color: e.color ? n(e.color, w.root, O.textMuted) : O.textMuted,
68
- width: e.width ?? 1,
69
- dash: [...e.dash ?? [4, 4]],
70
- label: e.label
71
- };
72
- }), Y = () => {
73
- k = m(D, O, T, fe, w.root);
74
- let { base: e, zoom: t, minSpan: n } = k;
75
- j ? (A = {
76
- x: t.x ? g(A.x, e.x, n.x) : [...e.x],
77
- y: t.y ? g(A.y, e.y, n.y) : [...e.y]
78
- }, j = !v(A.x, e.x) || !v(A.y, e.y)) : A = b(e);
40
+ }, Ae = () => T.tooltip === !1 ? null : typeof T.tooltip == "object" ? T.tooltip : {}, W = () => {
41
+ I || L || (L = x?.requestAnimationFrame ? x.requestAnimationFrame(Ie) : setTimeout(Ie, 16));
42
+ }, G = () => {
43
+ D = l(T, E, C, he);
44
+ let { base: e, zoom: t, minSpan: n } = D;
45
+ k ? (O = {
46
+ x: t.x ? h(O.x, e.x, n.x) : [...e.x],
47
+ y: t.y ? h(O.y, e.y, n.y) : [...e.y]
48
+ }, k = !_(O.x, e.x) || !_(O.y, e.y)) : O = y(e);
79
49
  let r = [
80
- G,
81
- k.baseline,
50
+ Ce,
51
+ D.baseline,
82
52
  e.x.join(),
83
53
  e.y.join(),
84
- ...k.series.map((e) => [
54
+ ...D.series.map((e) => [
85
55
  e.key,
86
56
  e.type,
87
- ye(e.cols),
57
+ De(e.cols),
88
58
  e.colorCss,
89
59
  e.hidden,
90
60
  e.lineWidth,
@@ -92,29 +62,29 @@ var le = 300, ue = {
92
62
  e.opacity,
93
63
  e.barOffset,
94
64
  e.barHalfWidth,
95
- D.series[e.index].stack ?? ""
65
+ T.series[e.index].stack ?? ""
96
66
  ].join("|"))
97
67
  ].join("\n");
98
- r !== ge && (ge = r, M = {
99
- x: y(e.x),
100
- y: y(e.y)
101
- }, N = !0, V && !V.keyboard && (V = null)), P = Ce(), Te(), Ee(), J();
102
- }, we = () => {
68
+ r !== we && (we = r, A = {
69
+ x: v(e.x),
70
+ y: v(e.y)
71
+ }, j = !0, R && !R.keyboard && (R = null)), ve = ae(T.annotations, E), Me(), Ne(), W();
72
+ }, je = () => {
103
73
  let e = (e, t) => Math.max(Math.abs(e[0] - t), Math.abs(e[1] - t)) > (e[1] - e[0]) * 2e3;
104
- (e(A.x, M.x) || e(A.y, M.y)) && (M = {
105
- x: y(A.x),
106
- y: y(A.y)
107
- }, N = !0);
108
- }, Te = () => {
109
- let e = D.legend, t = D.series.filter((e) => e.name).length, n = e === void 0 ? t > 1 : !!e, r = typeof e == "object" ? e : {}, i = r.toggle ?? !0, a = [...w.legend.children].indexOf(S.activeElement);
110
- if (w.legend.replaceChildren(), w.legend.style.display = n ? "flex" : "none", !n) return;
111
- let o = r.position === "bottom";
112
- w.legend.style.order = o ? "1" : "0", w.legend.style.padding = o ? "8px 4px 0" : "0 4px 8px";
113
- for (let e of k.series) {
114
- let t = S.createElement(i ? "button" : "span");
74
+ (e(O.x, A.x) || e(O.y, A.y)) && (A = {
75
+ x: v(O.x),
76
+ y: v(O.y)
77
+ }, j = !0);
78
+ }, Me = () => {
79
+ let e = T.legend, t = T.series.filter((e) => e.name).length, n = e === void 0 ? t > 1 : !!e, r = typeof e == "object" ? e : {}, i = r.toggle ?? !0, s = [...S.legend.children].indexOf(b.activeElement);
80
+ if (S.legend.replaceChildren(), S.legend.style.display = n ? "flex" : "none", !n) return;
81
+ let c = r.position === "bottom";
82
+ S.legend.style.order = c ? "1" : "0", S.legend.style.padding = c ? "8px 4px 0" : "0 4px 8px";
83
+ for (let e of D.series) {
84
+ let t = b.createElement(i ? "button" : "span");
115
85
  t instanceof HTMLButtonElement && (t.type = "button", t.setAttribute("aria-pressed", String(!e.hidden)), t.addEventListener("click", () => {
116
- T.has(e.id) ? T.delete(e.id) : T.add(e.id), Y();
117
- })), u(t, {
86
+ C.has(e.id) ? C.delete(e.id) : C.add(e.id), G();
87
+ })), a(t, {
118
88
  display: "inline-flex",
119
89
  alignItems: "center",
120
90
  gap: "6px",
@@ -128,415 +98,366 @@ var le = 300, ue = {
128
98
  cursor: i ? "pointer" : "default",
129
99
  opacity: e.hidden ? "0.45" : "1",
130
100
  textDecoration: e.hidden ? "line-through" : "none"
131
- }), t.append(d(S, e.colorCss, e.type === "scatter" ? "dot" : e.type === "line" ? "line" : "square"), S.createTextNode(e.name)), w.legend.appendChild(t);
101
+ }), t.append(o(b, e.colorCss, e.type === "scatter" ? "dot" : e.type === "line" ? "line" : "square"), b.createTextNode(e.name)), S.legend.appendChild(t);
132
102
  }
133
- a >= 0 && w.legend.children[a]?.focus();
134
- }, Ee = () => {
135
- let e = k.series.map((e) => e.name).join(", ");
136
- w.stage.setAttribute("aria-label", D.ariaLabel ?? (e ? `Chart: ${e}` : "Chart")), q()?.keyboard ? w.stage.tabIndex = 0 : w.stage.removeAttribute("tabindex");
137
- }, De = (e, t, n, r) => {
103
+ s >= 0 && S.legend.children[s]?.focus();
104
+ }, Ne = () => {
105
+ let e = D.series.map((e) => e.name).join(", ");
106
+ S.stage.setAttribute("aria-label", T.ariaLabel ?? (e ? `Chart: ${e}` : "Chart"));
107
+ let t = U()?.keyboard;
108
+ S.stage.style.touchAction = U()?.dragPoints ? "none" : "pan-y", t ? S.stage.tabIndex = 0 : S.stage.removeAttribute("tabindex");
109
+ }, Pe = (e, t, n, r) => {
138
110
  let i = Math.max(1, Math.round(t * r)), a = Math.max(1, Math.round(n * r));
139
111
  e.width !== i && (e.width = i), e.height !== a && (e.height = a), e.style.width = `${t}px`, e.style.height = `${n}px`;
140
- }, Oe = (e, t, n) => {
112
+ }, Fe = (e, t, n) => {
141
113
  let r = 2 / (e[1] - e[0]), i = (t - e[0]) * r - 1;
142
114
  return n ? [-r, -i] : [r, i];
143
- }, ke = (e) => {
144
- let t = [];
145
- for (let n of k.series) {
146
- if (n.hidden || n.type !== "scatter" || !n.showLabels) continue;
147
- let { x: r, y: i, count: a, labels: o, size: s } = n.cols;
148
- if (o) for (let c = 0; c < a && t.length < le; c++) {
149
- let a = o[c];
150
- if (!a) continue;
151
- let l = r[c], u = i[c];
152
- if (l < A.x[0] || l > A.x[1] || u < A.y[0] || u > A.y[1]) continue;
153
- let d = s && s[c] > 0 ? s[c] : n.pointSize;
154
- t.push({
155
- x: e.xToPx(l),
156
- y: e.yToPx(u),
157
- r: d / 2,
158
- text: a
159
- });
160
- }
161
- }
162
- return t;
163
115
  };
164
- function Ae() {
165
- if (B = 0, z) return;
166
- let t = w.stage.clientWidth, n = w.stage.clientHeight;
167
- if (t <= 0 || n <= 0) return;
168
- let r = C?.devicePixelRatio || 1;
169
- De(w.background, t, n, r), De(w.foreground, t, n, r);
170
- let i = w.background.getContext("2d"), a = w.foreground.getContext("2d"), o = O.fontSize, s = k.y.tickCount ?? (n >= 220 ? 5 : Math.max(2, Math.round((n - 48) / 52)));
171
- L = e(k.y, A.y, s);
172
- let c = 0, l = 48;
173
- if (i) {
174
- if (i.setTransform(r, 0, 0, r, 0, 0), i.font = ie(O), k.y.visible) for (let e of L.labels) c = Math.max(c, i.measureText(e).width);
175
- if (k.x.type === "category") {
176
- l = 0;
177
- let e = Math.max(1, Math.floor(k.x.categories.length / 200));
178
- for (let t = 0; t < k.x.categories.length; t += e) l = Math.max(l, i.measureText(k.x.categories[t]).width);
179
- }
180
- }
181
- let d = {
182
- ...ue,
183
- ...D.padding
184
- }, m = p({
185
- width: t,
186
- height: n,
187
- padding: d,
188
- yLabelWidth: k.y.visible ? Math.ceil(c) : 0,
189
- xAxisVisible: k.x.visible,
190
- xTitle: !!k.x.title && k.x.visible,
191
- yTitle: !!k.y.title && k.y.visible,
192
- fontSize: o
193
- }), te = k.x.type === "category" ? Math.max(1, Math.floor(m.width / (l + 14))) : k.x.tickCount ?? Math.max(2, Math.floor(m.width / 96));
194
- if (I = e(k.x, A.x, te), F = ee(m, A, k.x.reverse, k.y.reverse), i && ne(i, {
195
- width: t,
196
- height: n,
197
- scales: F,
198
- x: k.x,
199
- y: k.y,
200
- xTicks: I,
201
- yTicks: L,
202
- theme: O,
203
- annotations: P
204
- }), a && (a.setTransform(r, 0, 0, r, 0, 0), re(a, {
205
- width: t,
206
- height: n,
207
- scales: F,
208
- theme: O,
209
- annotations: P,
210
- pointLabels: ke(F)
211
- })), R) {
212
- let e = R.canvas;
213
- u(e, {
214
- left: `${m.x}px`,
215
- top: `${m.y}px`,
216
- width: `${m.width}px`,
217
- height: `${m.height}px`
116
+ function Ie() {
117
+ if (L = 0, I) return;
118
+ let e = S.stage.clientWidth, t = S.stage.clientHeight;
119
+ if (e <= 0 || t <= 0) return;
120
+ let n = x?.devicePixelRatio || 1;
121
+ Pe(S.background, e, t, n), Pe(S.foreground, e, t, n);
122
+ let r = S.background.getContext("2d"), i = S.foreground.getContext("2d");
123
+ r && (r.setTransform(n, 0, 0, n, 0, 0), r.font = f(E));
124
+ let o = re({
125
+ model: D,
126
+ view: O,
127
+ theme: E,
128
+ width: e,
129
+ height: t,
130
+ padding: T.padding,
131
+ measure: r ? (e) => r.measureText(e).width : (e) => e.length * E.fontSize * .6
132
+ }), { plot: c } = o;
133
+ N = o.xTicks, P = o.yTicks, M = o.scales;
134
+ let l = Le();
135
+ if (l && l.join() !== be && (be = l.join(), H("layout", {
136
+ x: l[0],
137
+ y: l[1],
138
+ width: l[2],
139
+ height: l[3]
140
+ })), r && u(r, {
141
+ width: e,
142
+ height: t,
143
+ scales: M,
144
+ x: D.x,
145
+ y: D.y,
146
+ xTicks: N,
147
+ yTicks: P,
148
+ theme: E,
149
+ annotations: ve
150
+ }), i && (i.setTransform(n, 0, 0, n, 0, 0), d(i, {
151
+ width: e,
152
+ height: t,
153
+ scales: M,
154
+ theme: E,
155
+ annotations: ve,
156
+ pointLabels: m(D, O, M)
157
+ })), F) {
158
+ let e = F.canvas;
159
+ a(e, {
160
+ left: `${c.x}px`,
161
+ top: `${c.y}px`,
162
+ width: `${c.width}px`,
163
+ height: `${c.height}px`
218
164
  });
219
- let t = Math.max(1, Math.round(m.width * r)), n = Math.max(1, Math.round(m.height * r));
220
- (e.width !== t || e.height !== n) && R.resize(t, n), we(), N && (me++, pe = f(k, M, me), N = !1);
221
- let [i, a] = Oe(A.x, M.x, k.x.reverse), [o, s] = Oe(A.y, M.y, k.y.reverse);
222
- R.render(pe, {
165
+ let t = Math.max(1, Math.round(c.width * n)), r = Math.max(1, Math.round(c.height * n));
166
+ (e.width !== t || e.height !== r) && F.resize(t, r), je(), j && (_e++, ge = s(D, A, _e), j = !1);
167
+ let [i, o] = Fe(O.x, A.x, D.x.reverse), [l, u] = Fe(O.y, A.y, D.y.reverse);
168
+ F.render(ge, {
223
169
  transform: {
224
170
  xScale: i,
225
- xOffset: a,
226
- yScale: o,
227
- yOffset: s
171
+ xOffset: o,
172
+ yScale: l,
173
+ yOffset: u
228
174
  },
229
175
  width: t,
230
- height: n,
231
- dpr: r
176
+ height: r,
177
+ dpr: n
232
178
  });
233
179
  }
234
- Be();
180
+ J();
235
181
  }
236
- let je = (e, t, n) => {
237
- let r = e.cols.x[t] + (e.type === "bar" ? e.barOffset : 0), i = e.type === "bar" && e.barTop ? e.barTop[t] : e.cols.y[t];
238
- return {
239
- px: n.xToPx(r),
240
- py: n.yToPx(i)
241
- };
242
- }, Me = (e, t, n, r, i) => {
243
- let a = je(e, t, i), o = !1;
244
- if (e.type === "bar" && e.barBase) {
245
- let s = e.barHalfWidth / i.xPerPx, c = i.yToPx(e.barBase[t]);
246
- o = Math.abs(n - a.px) <= s && r >= Math.min(c, a.py) - 2 && r <= Math.max(c, a.py) + 2;
247
- }
248
- return {
249
- series: e,
250
- index: t,
251
- px: a.px,
252
- py: a.py,
253
- dx: Math.abs(i.xToPx(e.cols.x[t]) - n),
254
- dist: o ? 0 : Math.hypot(a.px - n, a.py - r),
255
- inside: o
256
- };
257
- }, Ne = (e, t, n, r) => {
258
- let i = Math.max(e.pointSize / 2 + 6, 10), a = r.pxToX(t), o = r.pxToY(n), s = i * r.xPerPx, c = i * r.yPerPx, l = -1, u = Infinity, { x: d, y: f, size: p } = e.cols;
259
- return te(e).query(a - s, a + s, o - c, o + c, (i) => {
260
- let a = Math.hypot(r.xToPx(d[i]) - t, r.yToPx(f[i]) - n);
261
- a <= Math.max((p && p[i] > 0 ? p[i] : e.pointSize) / 2 + 4, 8) && a <= u && (u = a, l = i);
262
- }), l;
263
- }, Pe = (e, t) => {
264
- let { x: n, y: r, count: i, sorted: o } = e.cols;
265
- if (o) return a(n, r, i, t);
266
- let s = -1, c = Infinity;
267
- for (let e = 0; e < i; e++) {
268
- if (!Number.isFinite(r[e])) continue;
269
- let i = Math.abs(n[e] - t);
270
- i < c && (c = i, s = e);
271
- }
272
- return s;
273
- }, Fe = (e) => {
274
- let t = e.series, n = t.pointColors?.[e.index], i = t.cols.labels?.[e.index];
275
- return {
276
- seriesIndex: t.index,
277
- seriesId: t.id,
278
- seriesName: t.name,
279
- index: e.index,
280
- x: t.cols.x[e.index],
281
- y: t.cols.y[e.index],
282
- color: n ? r(n) : t.colorCss,
283
- ...i === void 0 ? {} : { label: i }
284
- };
285
- }, Ie = (e) => {
286
- if (!e.length) return null;
287
- e.sort((e, t) => e.series.index - t.series.index);
288
- let t = e.map(Fe), n = t[0].x;
289
- return {
290
- items: t,
291
- x: n,
292
- xLabel: I?.formatValue(n) ?? String(n)
293
- };
294
- }, Le = (e, t) => {
295
- let n = F;
296
- if (!n) return null;
297
- let { plot: r } = n;
298
- if (e < r.x - 6 || e > r.x + r.width + 6 || t < r.y - 6 || t > r.y + r.height + 6) return null;
299
- let i = n.pxToX(e), a = [], o = [];
300
- for (let r of k.series) if (!(r.hidden || r.cols.count === 0)) {
301
- if (r.type === "scatter") {
302
- let i = Ne(r, e, t, n);
303
- i >= 0 && a.push(Me(r, i, e, t, n));
304
- } else {
305
- let a = Pe(r, i);
306
- a >= 0 && o.push(Me(r, a, e, t, n));
307
- }
308
- }
309
- if (k.tooltipMode === "nearest") {
310
- let e = [...a, ...o].filter((e) => e.inside || e.series.type === "scatter" || e.dist <= 32);
311
- if (!e.length) return null;
312
- let t = e.reduce((e, t) => t.dist <= e.dist ? t : e);
313
- return Ie([t]);
314
- }
315
- if (!o.length) return a.length ? Ie([a.reduce((e, t) => t.dist <= e.dist ? t : e)]) : null;
316
- let s = Math.min(...o.map((e) => e.dx)), c = k.x.type === "category" ? .5 / n.xPerPx : 0, l = o.filter((e) => e.dx <= s + Math.max(1, c)), u = l.reduce((e, t) => t.dx < e.dx ? t : e), d = [
317
- u,
318
- ...l.filter((e) => e !== u),
319
- ...a
320
- ], f = Ie(d);
321
- return f && (f.x = Fe(u).x, f.xLabel = I?.formatValue(f.x) ?? String(f.x)), f;
322
- }, X = (e) => {
323
- let t = V === null != (e === null) || V && e && (V.event.items.length !== e.event.items.length || V.event.items.some((t, n) => t.index !== e.event.items[n].index || t.seriesIndex !== e.event.items[n].seriesIndex));
324
- V = e, Be(), t && K("hover", e ? e.event : null);
325
- }, Re = (e) => {
326
- let t = Se()?.render;
182
+ let K = (e, t) => M ? ee(D, M, N, e, t) : null, Le = () => {
183
+ let e = M?.plot;
184
+ return e ? [
185
+ e.x + S.stage.offsetLeft,
186
+ e.y + S.stage.offsetTop,
187
+ e.width,
188
+ e.height
189
+ ] : null;
190
+ }, Re = (e, t) => U()?.dragPoints ? K(e, t)?.items.find((e) => D.series[e.seriesIndex].type === "scatter") ?? null : null, q = (e) => {
191
+ let t = !oe(R?.event ?? null, e?.event ?? null);
192
+ R = e, J(), t && H("hover", e ? e.event : null);
193
+ }, ze = (e) => {
194
+ let t = Ae()?.render;
327
195
  if (t) return t(e);
328
- let n = S.createDocumentFragment(), r = S.createElement("div");
329
- u(r, {
196
+ let n = ce(D, e, P), r = b.createDocumentFragment(), i = b.createElement("div");
197
+ a(i, {
330
198
  display: "flex",
331
199
  alignItems: "center",
332
200
  gap: "6px",
333
201
  fontWeight: "600",
334
202
  marginBottom: "4px",
335
203
  color: "var(--text-color, #1f2937)"
336
- });
337
- let i = (e, t, n) => {
338
- let r = S.createElement("div");
339
- u(r, {
204
+ }), n.titleColor && i.appendChild(o(b, n.titleColor, "dot")), i.appendChild(b.createTextNode(n.title)), r.append(i);
205
+ for (let e of n.rows) {
206
+ let t = b.createElement("div");
207
+ a(t, {
340
208
  display: "flex",
341
209
  alignItems: "center",
342
210
  gap: "8px"
343
- }), e && r.appendChild(d(S, e, "dot"));
344
- let i = S.createElement("span");
345
- u(i, {
211
+ }), e.color && t.appendChild(o(b, e.color, "dot"));
212
+ let n = b.createElement("span");
213
+ a(n, {
346
214
  flex: "1 1 auto",
347
215
  color: "var(--text-secondary-color, #6b7280)"
348
- }), i.textContent = t;
349
- let a = S.createElement("span");
350
- return u(a, {
216
+ }), n.textContent = e.name;
217
+ let i = b.createElement("span");
218
+ a(i, {
351
219
  fontWeight: "600",
352
220
  fontVariantNumeric: "tabular-nums",
353
221
  marginLeft: "12px"
354
- }), a.textContent = n, r.append(i, a), r;
355
- }, a = L?.formatValue ?? String;
356
- if (e.items.every((e) => k.series[e.seriesIndex].type === "scatter") && e.items.length === 1) {
357
- let t = e.items[0];
358
- return r.append(d(S, t.color, "dot"), S.createTextNode(t.label ?? t.seriesName)), n.append(r, i(null, k.x.title ?? "x", e.xLabel), i(null, k.y.title ?? "y", a(t.y))), t.label !== void 0 && k.series.length > 1 && n.append(i(null, "", t.seriesName)), n;
222
+ }), i.textContent = e.value, t.append(n, i), r.append(t);
359
223
  }
360
- r.textContent = e.xLabel, n.append(r);
361
- for (let t of e.items) {
362
- let e = t.label ? `${t.seriesName} · ${t.label}` : t.seriesName;
363
- n.append(i(t.color, e, a(t.y)));
364
- }
365
- return n;
366
- }, ze = (e, t, n) => (e[t] || (e[t] = n(), w.hover.appendChild(e[t])), e[t].style.display = "block", e[t]);
367
- function Be() {
368
- let e = F, t = 0, n = 0;
369
- if (w.crosshair.style.display = "none", V && e) {
370
- let { plot: r } = e;
371
- w.hover.style.width = `${w.stage.clientWidth}px`, w.hover.style.height = `${w.stage.clientHeight}px`;
372
- let i = k.tooltipMode === "axis";
373
- if (D.crosshair ?? (i && V.event.items.some((e) => k.series[e.seriesIndex].type !== "scatter"))) {
374
- let t = V.event.items[0], n = e.xToPx(t.x);
375
- n >= r.x && n <= r.x + r.width && u(w.crosshair, {
224
+ return r;
225
+ }, Be = (e, t, n) => (e[t] || (e[t] = n(), S.hover.appendChild(e[t])), e[t].style.display = "block", e[t]);
226
+ function J() {
227
+ let e = M, n = 0, r = 0;
228
+ if (S.crosshair.style.display = "none", R && e) {
229
+ let { plot: o } = e;
230
+ if (S.hover.style.width = `${S.stage.clientWidth}px`, S.hover.style.height = `${S.stage.clientHeight}px`, se(D, R.event, T.crosshair)) {
231
+ let t = R.event.items[0], n = e.xToPx(t.x);
232
+ n >= o.x && n <= o.x + o.width && a(S.crosshair, {
376
233
  display: "block",
377
234
  left: `${Math.round(n)}px`,
378
- top: `${r.y}px`,
379
- height: `${r.height}px`
235
+ top: `${o.y}px`,
236
+ height: `${o.height}px`
380
237
  });
381
238
  }
382
- for (let i of V.event.items) {
383
- let a = k.series[i.seriesIndex];
384
- if (a.type === "bar" && a.barBase && a.barTop) {
385
- let t = e.xToPx(i.x + a.barOffset), r = Math.max(a.barHalfWidth / e.xPerPx, 1), s = e.yToPx(a.barBase[i.index]), c = e.yToPx(a.barTop[i.index]), l = ze(W, n++, () => o(S));
386
- u(l, {
387
- left: `${t - r}px`,
388
- top: `${Math.min(s, c)}px`,
389
- width: `${r * 2}px`,
390
- height: `${Math.max(1, Math.abs(s - c))}px`
239
+ for (let o of ne(D, e, R.event)) {
240
+ if (o.kind === "bar") {
241
+ let e = Be(Se, r++, () => t(b));
242
+ a(e, {
243
+ left: `${o.x}px`,
244
+ top: `${o.y}px`,
245
+ width: `${o.width}px`,
246
+ height: `${o.height}px`
391
247
  });
392
248
  continue;
393
249
  }
394
- let s = e.xToPx(i.x), c = e.yToPx(i.y);
395
- if (s < r.x - 1 || s > r.x + r.width + 1 || c < r.y - 1 || c > r.y + r.height + 1) continue;
396
- let d = a.type === "scatter" ? (a.cols.size && a.cols.size[i.index] > 0 ? a.cols.size[i.index] : a.pointSize) + 6 : Math.max(10, a.lineWidth * 2 + 6), f = ze(U, t++, () => l(S));
397
- u(f, {
398
- left: `${s}px`,
399
- top: `${c}px`,
400
- width: `${d}px`,
401
- height: `${d}px`,
402
- background: i.color
250
+ let e = Be(xe, n++, () => i(b));
251
+ a(e, {
252
+ left: `${o.x}px`,
253
+ top: `${o.y}px`,
254
+ width: `${o.size}px`,
255
+ height: `${o.size}px`,
256
+ background: o.color
403
257
  });
404
258
  }
405
259
  }
406
- for (let e = t; e < U.length; e++) U[e].style.display = "none";
407
- for (let e = n; e < W.length; e++) W[e].style.display = "none";
408
- let r = w.tooltip, i = V && e && Se() && !H?.moved ? Re(V.event) : null;
409
- if (!V || i === null || i === "") {
410
- r.style.display = "none";
260
+ for (let e = n; e < xe.length; e++) xe[e].style.display = "none";
261
+ for (let e = r; e < Se.length; e++) Se[e].style.display = "none";
262
+ let o = S.tooltip, s = R && e && Ae() && !V?.moved && !z?.moved ? ze(R.event) : null;
263
+ if (!R || s === null || s === "") {
264
+ o.style.display = "none";
411
265
  return;
412
266
  }
413
- typeof i == "string" ? r.textContent = i : r.replaceChildren(i), r.style.display = "block";
414
- let a = w.stage.clientWidth, s = w.stage.clientHeight, c = r.offsetWidth, d = r.offsetHeight, f = V.anchorX + 16;
415
- f + c > a - 4 && (f = V.anchorX - 16 - c), f = Math.max(4, Math.min(f, a - c - 4));
416
- let p = Math.max(4, Math.min(V.anchorY - d / 2, s - d - 4));
417
- r.style.transform = `translate(${Math.round(f)}px, ${Math.round(p)}px)`;
267
+ typeof s == "string" ? (o.textContent = s, o.style.whiteSpace = "pre") : (o.replaceChildren(s), o.style.whiteSpace = "nowrap"), o.style.display = "block";
268
+ let c = S.stage.clientWidth, l = S.stage.clientHeight, u = o.offsetWidth, d = o.offsetHeight, f = R.anchorX + 16;
269
+ f + u > c - 4 && (f = R.anchorX - 16 - u), f = Math.max(4, Math.min(f, c - u - 4));
270
+ let p = Math.max(4, Math.min(R.anchorY - d / 2, l - d - 4));
271
+ o.style.transform = `translate(${Math.round(f)}px, ${Math.round(p)}px)`;
418
272
  }
419
- let Z = (e, t) => {
420
- let { base: n, minSpan: r } = k;
421
- A = {
422
- x: g(e.x, n.x, r.x),
423
- y: g(e.y, n.y, r.y)
424
- }, j = !v(A.x, n.x) || !v(A.y, n.y);
425
- let i = q();
426
- w.stage.style.cursor = j && i?.pan ? "grab" : "", t && K("zoom", b(A)), J();
273
+ let Y = (e, t) => {
274
+ let { base: n, minSpan: r } = D;
275
+ O = {
276
+ x: h(e.x, n.x, r.x),
277
+ y: h(e.y, n.y, r.y)
278
+ }, k = !_(O.x, n.x) || !_(O.y, n.y);
279
+ let i = U();
280
+ S.stage.style.cursor = k && i?.pan ? "grab" : "", t && H("zoom", y(O)), W();
427
281
  }, Ve = (e, t, n) => {
428
- let r = F;
282
+ let r = M;
429
283
  if (!r) return;
430
- let i = b(A);
431
- k.zoom.x && (i.x = ce(A.x, r.pxToX(e), n)), k.zoom.y && (i.y = ce(A.y, r.pxToY(t), n)), Z(i, !0);
432
- }, Q = (e) => {
433
- let t = w.stage.getBoundingClientRect();
284
+ let i = y(O);
285
+ D.zoom.x && (i.x = fe(O.x, r.pxToX(e), n)), D.zoom.y && (i.y = fe(O.y, r.pxToY(t), n)), Y(i, !0);
286
+ }, X = (e) => {
287
+ let t = S.stage.getBoundingClientRect();
434
288
  return {
435
289
  x: e.clientX - t.left,
436
290
  y: e.clientY - t.top
437
291
  };
438
- }, He = (e, t) => {
439
- let n = F?.plot;
292
+ }, Z = (e, t) => {
293
+ let n = M?.plot;
440
294
  return !!n && e >= n.x && e <= n.x + n.width && t >= n.y && t <= n.y + n.height;
295
+ }, Q = (e, t) => {
296
+ let n = M;
297
+ if (!n) return null;
298
+ let { plot: r } = n, i = Math.max(r.x, Math.min(r.x + r.width, e)), a = Math.max(r.y, Math.min(r.y + r.height, t));
299
+ return {
300
+ x: n.pxToX(i),
301
+ y: n.pxToY(a)
302
+ };
303
+ }, He = (e, t, n) => {
304
+ if (n === null) {
305
+ B && (B.style.display = "none");
306
+ return;
307
+ }
308
+ B || (B = i(b), S.hover.appendChild(B));
309
+ let r = (D.series.find((e) => e.type === "scatter")?.pointSize ?? 8) + 8;
310
+ S.hover.style.width = `${S.stage.clientWidth}px`, S.hover.style.height = `${S.stage.clientHeight}px`, a(B, {
311
+ display: "block",
312
+ left: `${e}px`,
313
+ top: `${t}px`,
314
+ width: `${r}px`,
315
+ height: `${r}px`,
316
+ background: n
317
+ });
441
318
  }, Ue = (e) => {
442
- let { x: t, y: n } = Q(e);
443
- if (H && H.id === e.pointerId) {
444
- let r = t - H.x, i = n - H.y;
445
- if (!H.moved && Math.hypot(r, i) > 3) {
446
- let t = q();
447
- j && t?.pan && (H.moved = !0, w.stage.setPointerCapture?.(e.pointerId), w.stage.style.cursor = "grabbing");
319
+ let { x: t, y: n } = X(e);
320
+ if (z && z.id === e.pointerId) {
321
+ if (!z.moved && Math.hypot(t - z.x, n - z.y) > 3 && (z.moved = !0, S.stage.setPointerCapture?.(e.pointerId), S.stage.style.cursor = "grabbing"), z.moved) {
322
+ let e = Q(t, n);
323
+ e && (He(t, n, z.item.color), J(), H("drag", {
324
+ item: z.item,
325
+ x: e.x,
326
+ y: e.y
327
+ }));
328
+ }
329
+ return;
330
+ }
331
+ if (V && V.id === e.pointerId) {
332
+ let r = t - V.x, i = n - V.y;
333
+ if (!V.moved && Math.hypot(r, i) > 3) {
334
+ let t = U();
335
+ k && t?.pan && (V.moved = !0, S.stage.setPointerCapture?.(e.pointerId), S.stage.style.cursor = "grabbing");
448
336
  }
449
- if (H.moved && F) {
450
- let e = b(H.view);
451
- k.zoom.x && (e.x = _(H.view.x, -r * F.xPerPx * (k.x.reverse ? -1 : 1))), k.zoom.y && (e.y = _(H.view.y, i * F.yPerPx * (k.y.reverse ? -1 : 1))), Z(e, !0);
337
+ if (V.moved && M) {
338
+ let e = y(V.view);
339
+ D.zoom.x && (e.x = g(V.view.x, -r * M.xPerPx * (D.x.reverse ? -1 : 1))), D.zoom.y && (e.y = g(V.view.y, i * M.yPerPx * (D.y.reverse ? -1 : 1))), Y(e, !0);
452
340
  return;
453
341
  }
454
342
  }
455
- let r = Le(t, n);
456
- X(r ? {
343
+ let r = K(t, n);
344
+ q(r ? {
457
345
  event: r,
458
346
  anchorX: t,
459
347
  anchorY: n,
460
348
  keyboard: !1
461
- } : null);
349
+ } : null), !V && U()?.dragPoints && (S.stage.style.cursor = Re(t, n) || k && U()?.pan ? "grab" : "");
462
350
  }, We = (e) => {
463
351
  if (e.button !== 0) return;
464
- let { x: t, y: n } = Q(e);
465
- He(t, n) && (H = {
352
+ let { x: t, y: n } = X(e);
353
+ if (!Z(t, n)) return;
354
+ let r = Re(t, n);
355
+ if (r) {
356
+ z = {
357
+ id: e.pointerId,
358
+ item: r,
359
+ x: t,
360
+ y: n,
361
+ moved: !1
362
+ };
363
+ return;
364
+ }
365
+ V = {
466
366
  id: e.pointerId,
467
367
  x: t,
468
368
  y: n,
469
- view: b(A),
369
+ view: y(O),
470
370
  moved: !1
471
- });
371
+ };
472
372
  }, Ge = (e) => {
473
- if (!H || H.id !== e.pointerId) return;
474
- let t = H.moved;
475
- if (H = null, w.stage.hasPointerCapture?.(e.pointerId) && w.stage.releasePointerCapture(e.pointerId), w.stage.style.cursor = j && q()?.pan ? "grab" : "", t) Be();
373
+ if (z && z.id === e.pointerId) {
374
+ let { item: t, moved: n } = z;
375
+ z = null, S.stage.hasPointerCapture?.(e.pointerId) && S.stage.releasePointerCapture(e.pointerId), He(0, 0, null);
376
+ let { x: r, y: i } = X(e);
377
+ if (S.stage.style.cursor = Re(r, i) ? "grab" : "", n) {
378
+ let n = Q(r, i);
379
+ n && e.type !== "pointercancel" && H("drop", {
380
+ item: t,
381
+ x: n.x,
382
+ y: n.y
383
+ }), J();
384
+ } else {
385
+ let e = K(r, i);
386
+ e && H("click", e);
387
+ }
388
+ return;
389
+ }
390
+ if (!V || V.id !== e.pointerId) return;
391
+ let t = V.moved;
392
+ if (V = null, S.stage.hasPointerCapture?.(e.pointerId) && S.stage.releasePointerCapture(e.pointerId), S.stage.style.cursor = k && U()?.pan ? "grab" : "", t) J();
476
393
  else {
477
- let { x: t, y: n } = Q(e), r = Le(t, n);
478
- r && K("click", r);
394
+ let { x: t, y: n } = X(e), r = K(t, n);
395
+ if (r) H("click", r);
396
+ else if (e.type !== "pointercancel" && Z(t, n)) {
397
+ let e = Q(t, n);
398
+ e && H("plotClick", e);
399
+ }
479
400
  }
480
401
  }, Ke = () => {
481
- H?.moved || X(null);
402
+ !V?.moved && !z?.moved && q(null);
482
403
  }, qe = (e) => {
483
- let t = q();
484
- if (!t || t.zoom === !1 || !k.zoom.x && !k.zoom.y) return;
485
- let { x: n, y: r } = Q(e);
486
- if (!He(n, r)) return;
404
+ let t = U();
405
+ if (!t || t.zoom === !1 || !D.zoom.x && !D.zoom.y) return;
406
+ let { x: n, y: r } = X(e);
407
+ if (!Z(n, r)) return;
487
408
  let i = e.ctrlKey || e.metaKey;
488
- if (t.wheel === "always" || i) e.preventDefault(), Ve(n, r, se(e.deltaY, e.deltaMode, e.ctrlKey && !e.metaKey));
489
- else if (j && k.zoom.x && F && Math.abs(e.deltaX) > Math.abs(e.deltaY)) {
409
+ if (t.wheel === "always" || i) e.preventDefault(), Ve(n, r, de(e.deltaY, e.deltaMode, e.ctrlKey && !e.metaKey));
410
+ else if (k && D.zoom.x && M && Math.abs(e.deltaX) > Math.abs(e.deltaY)) {
490
411
  e.preventDefault();
491
- let t = b(A);
492
- t.x = _(A.x, e.deltaX * F.xPerPx * (k.x.reverse ? -1 : 1)), Z(t, !0);
412
+ let t = y(O);
413
+ t.x = g(O.x, e.deltaX * M.xPerPx * (D.x.reverse ? -1 : 1)), Y(t, !0);
493
414
  }
494
415
  }, Je = (e) => {
495
- let { x: t, y: n } = Q(e);
496
- q() && j && He(t, n) && rt();
497
- }, Ye = (e) => {
498
- let t = F;
499
- if (!t) return;
500
- let n = V?.keyboard ? V.event.items[0] : null, r = (n && k.series[n.seriesIndex]) ?? k.series.find((e) => !e.hidden && e.cols.count > 0);
501
- if (!r) return;
502
- let { x: a, y: o, count: s } = r.cols, c;
503
- for (n ? c = n.index + e : (c = r.cols.sorted ? i(a, s, A.x[0]) : 0, e < 0 && (c = r.cols.sorted ? i(a, s, A.x[1]) - 1 : s - 1)); c >= 0 && c < s && !Number.isFinite(o[c]);) c += e || 1;
504
- if (c < 0 || c >= s) return;
505
- let l = t;
506
- if (k.zoom.x && (a[c] < A.x[0] || a[c] > A.x[1])) {
507
- let e = A.x[1] - A.x[0];
508
- Z({
509
- x: [a[c] - e / 2, a[c] + e / 2],
510
- y: A.y
511
- }, !0), l = F = ee(t.plot, A, k.x.reverse, k.y.reverse);
416
+ let { x: t, y: n } = X(e);
417
+ U() && k && Z(t, n) && rt();
418
+ }, Ye = (t) => {
419
+ let n = M;
420
+ if (!n) return;
421
+ let r = R?.keyboard ? R.event.items[0] : null, i = (r && D.series[r.seriesIndex]) ?? D.series.find((e) => !e.hidden && e.cols.count > 0);
422
+ if (!i) return;
423
+ let { x: a, y: o, count: s } = i.cols, l;
424
+ for (r ? l = r.index + t : (l = i.cols.sorted ? e(a, s, O.x[0]) : 0, t < 0 && (l = i.cols.sorted ? e(a, s, O.x[1]) - 1 : s - 1)); l >= 0 && l < s && !Number.isFinite(o[l]);) l += t || 1;
425
+ if (l < 0 || l >= s) return;
426
+ let u = n;
427
+ if (D.zoom.x && (a[l] < O.x[0] || a[l] > O.x[1])) {
428
+ let e = O.x[1] - O.x[0];
429
+ Y({
430
+ x: [a[l] - e / 2, a[l] + e / 2],
431
+ y: O.y
432
+ }, !0), u = M = c(n.plot, O, D.x.reverse, D.y.reverse);
512
433
  }
513
- let u = je(r, c, l), d = Fe(Me(r, c, u.px, u.py, l)), f = {
514
- items: [d, ...k.tooltipMode === "axis" && r.type !== "scatter" ? (Le(u.px, u.py)?.items ?? []).filter((e) => e.seriesIndex !== r.index) : []],
515
- x: d.x,
516
- xLabel: I?.formatValue(d.x) ?? String(d.x)
434
+ let d = ie(i, l, u), f = te(i, l), p = {
435
+ items: [f, ...D.tooltipMode === "axis" && i.type !== "scatter" ? (K(d.px, d.py)?.items ?? []).filter((e) => e.seriesIndex !== i.index) : []],
436
+ x: f.x,
437
+ xLabel: N?.formatValue(f.x) ?? String(f.x)
517
438
  };
518
- X({
519
- event: f,
520
- anchorX: u.px,
521
- anchorY: u.py,
439
+ q({
440
+ event: p,
441
+ anchorX: d.px,
442
+ anchorY: d.py,
522
443
  keyboard: !0
523
444
  });
524
- let p = d;
525
- w.live.textContent = `${p.seriesName}: ${f.xLabel}, ${L?.formatValue(p.y) ?? p.y}${p.label ? ` (${p.label})` : ""}`;
445
+ let m = f;
446
+ S.live.textContent = `${m.seriesName}: ${p.xLabel}, ${P?.formatValue(m.y) ?? m.y}${m.label ? ` (${m.label})` : ""}`;
526
447
  }, Xe = (e) => {
527
- if (!q()?.keyboard) return;
448
+ if (!U()?.keyboard) return;
528
449
  let t = () => {
529
- let e = F?.plot;
450
+ let e = M?.plot;
530
451
  return e ? [e.x + e.width / 2, e.y + e.height / 2] : [0, 0];
531
452
  };
532
453
  switch (e.key) {
533
454
  case "ArrowRight":
534
455
  case "ArrowLeft":
535
- e.preventDefault(), Ye(e.key === "ArrowRight" === k.x.reverse ? -1 : 1);
456
+ e.preventDefault(), Ye(e.key === "ArrowRight" === D.x.reverse ? -1 : 1);
536
457
  break;
537
458
  case "+":
538
459
  case "=": {
539
- if (!k.zoom.x && !k.zoom.y) return;
460
+ if (!D.zoom.x && !D.zoom.y) return;
540
461
  e.preventDefault();
541
462
  let [n, r] = t();
542
463
  Ve(n, r, .8);
@@ -544,7 +465,7 @@ var le = 300, ue = {
544
465
  }
545
466
  case "-":
546
467
  case "_": {
547
- if (!k.zoom.x && !k.zoom.y) return;
468
+ if (!D.zoom.x && !D.zoom.y) return;
548
469
  e.preventDefault();
549
470
  let [n, r] = t();
550
471
  Ve(n, r, 1.25);
@@ -553,72 +474,93 @@ var le = 300, ue = {
553
474
  case "0":
554
475
  e.preventDefault(), rt();
555
476
  break;
556
- case "Escape": V && (e.preventDefault(), X(null));
477
+ case "Escape": R && (e.preventDefault(), q(null));
557
478
  }
558
479
  }, Ze = () => {
559
480
  let e;
560
481
  try {
561
- e = w.stage.matches(":focus-visible");
482
+ e = S.stage.matches(":focus-visible");
562
483
  } catch {
563
484
  e = !0;
564
485
  }
565
- e && (w.stage.style.boxShadow = "0 0 0 2px var(--primary-color, #4f46e5)");
486
+ e && (S.stage.style.boxShadow = "0 0 0 2px var(--primary-color, #4f46e5)");
566
487
  }, Qe = () => {
567
- w.stage.style.boxShadow = "", V?.keyboard && X(null);
568
- }, $ = w.stage;
488
+ S.stage.style.boxShadow = "", R?.keyboard && q(null);
489
+ }, $ = S.stage;
569
490
  $.addEventListener("pointermove", Ue), $.addEventListener("pointerdown", We), $.addEventListener("pointerup", Ge), $.addEventListener("pointercancel", Ge), $.addEventListener("pointerleave", Ke), $.addEventListener("wheel", qe, { passive: !1 }), $.addEventListener("dblclick", Je), $.addEventListener("keydown", Xe), $.addEventListener("focus", Ze), $.addEventListener("blur", Qe);
570
- let $e = typeof ResizeObserver == "function" ? new ResizeObserver(() => J()) : null;
571
- $e?.observe(w.stage);
491
+ let $e = typeof ResizeObserver == "function" ? new ResizeObserver(() => W()) : null;
492
+ $e?.observe(S.stage);
572
493
  let et = () => {
573
- z || (O = h(w.root, D.palette), G++, Y());
574
- }, tt = oe(et), nt = async (e = /* @__PURE__ */ new Set()) => {
575
- let t = ++he, n = await ae(D.renderer ?? "auto", () => c(S), (t) => {
576
- z || R?.kind !== t || (R.destroy(), R.canvas.remove(), R = null, nt(/* @__PURE__ */ new Set([...e, t])));
494
+ I || (E = le(S.root, T.palette), Ce++, G());
495
+ }, tt = ue(et), nt = async (e = /* @__PURE__ */ new Set()) => {
496
+ let t = ++ye, n = await p(T.renderer ?? "auto", () => r(b), (t) => {
497
+ I || F?.kind !== t || (F.destroy(), F.canvas.remove(), F = null, nt(/* @__PURE__ */ new Set([...e, t])));
577
498
  }, e);
578
- if (z || t !== he) {
499
+ if (I || t !== ye) {
579
500
  n?.destroy();
580
501
  return;
581
502
  }
582
- R && (R.destroy(), R.canvas.remove()), R = n, n && (w.root.dataset.renderer = n.kind, w.stage.insertBefore(n.canvas, w.foreground), N = !0, K("renderer", n.kind)), be(n?.kind ?? null), J();
503
+ F && (F.destroy(), F.canvas.remove()), F = n, n && (S.root.dataset.renderer = n.kind, S.stage.insertBefore(n.canvas, S.foreground), j = !0, H("renderer", n.kind)), Oe(n?.kind ?? null), W();
583
504
  };
584
505
  function rt() {
585
- j && Z(b(k.base), !0);
506
+ k && Y(y(D.base), !0);
586
507
  }
587
- return Y(), nt(), {
508
+ return G(), nt(), {
588
509
  setOptions(e) {
589
- if (z) return;
590
- let t = D;
591
- D = e, (e.palette ?? []).join() !== (t.palette ?? []).join() && (O = h(w.root, e.palette), G++), (e.renderer ?? "auto") !== (t.renderer ?? "auto") && nt(), Y();
510
+ if (I) return;
511
+ let t = T;
512
+ T = e, (e.palette ?? []).join() !== (t.palette ?? []).join() && (E = le(S.root, e.palette), Ce++), (e.renderer ?? "auto") !== (t.renderer ?? "auto") && nt(), G();
592
513
  },
593
514
  resize() {
594
- J();
515
+ W();
595
516
  },
596
517
  resetZoom: rt,
597
- getView: () => b(A),
518
+ getView: () => y(O),
598
519
  setView(e) {
599
- z || Z({
600
- x: e.x ?? A.x,
601
- y: e.y ?? A.y
520
+ I || Y({
521
+ x: e.x ?? O.x,
522
+ y: e.y ?? O.y
602
523
  }, !1);
603
524
  },
604
- getRenderer: () => R?.kind ?? null,
605
- ready: xe,
525
+ getRenderer: () => F?.kind ?? null,
526
+ getPlotRect() {
527
+ let e = Le();
528
+ return e ? {
529
+ x: e[0],
530
+ y: e[1],
531
+ width: e[2],
532
+ height: e[3]
533
+ } : null;
534
+ },
535
+ toPixel(e, t) {
536
+ return M ? {
537
+ x: M.xToPx(e) + S.stage.offsetLeft,
538
+ y: M.yToPx(t) + S.stage.offsetTop
539
+ } : null;
540
+ },
541
+ fromPixel(e, t) {
542
+ return M ? {
543
+ x: M.pxToX(e - S.stage.offsetLeft),
544
+ y: M.pxToY(t - S.stage.offsetTop)
545
+ } : null;
546
+ },
547
+ ready: ke,
606
548
  refreshTheme: et,
607
549
  on(e, t) {
608
- let n = E[e];
609
- return n || (n = /* @__PURE__ */ new Set(), E[e] = n), n.add(t), () => {
550
+ let n = w[e];
551
+ return n || (n = /* @__PURE__ */ new Set(), w[e] = n), n.add(t), () => {
610
552
  n.delete(t);
611
553
  };
612
554
  },
613
555
  destroy() {
614
- if (!z) {
615
- z = !0, B && (C?.cancelAnimationFrame ? C.cancelAnimationFrame(B) : clearTimeout(B)), $e?.disconnect(), tt(), $.removeEventListener("wheel", qe), R?.destroy(), R = null, w.root.remove();
616
- for (let e of Object.keys(E)) delete E[e];
556
+ if (!I) {
557
+ I = !0, L && (x?.cancelAnimationFrame ? x.cancelAnimationFrame(L) : clearTimeout(L)), $e?.disconnect(), tt(), $.removeEventListener("wheel", qe), F?.destroy(), F = null, S.root.remove();
558
+ for (let e of Object.keys(w)) delete w[e];
617
559
  }
618
560
  }
619
561
  };
620
562
  };
621
563
  //#endregion
622
- export { x as createChart };
564
+ export { pe as createChart };
623
565
 
624
566
  //# sourceMappingURL=chart.js.map