minerva-design 1.1.0 → 1.3.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 (385) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dist/charts/canvas.d.cts +10 -0
  3. package/dist/charts/canvas.d.ts +10 -0
  4. package/dist/charts/core.cjs +1 -1
  5. package/dist/charts/core.d.cts +8 -1
  6. package/dist/charts/core.d.ts +8 -1
  7. package/dist/charts/core.js +6 -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 +177 -0
  13. package/dist/charts/engine/canvas.js.map +1 -0
  14. package/dist/charts/engine/chart.cjs +1 -2
  15. package/dist/charts/engine/chart.cjs.map +1 -1
  16. package/dist/charts/engine/chart.js +450 -489
  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 +27 -0
  21. package/dist/charts/engine/color.d.ts +27 -0
  22. package/dist/charts/engine/color.js +100 -4
  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 +188 -0
  27. package/dist/charts/engine/controller.d.ts +188 -0
  28. package/dist/charts/engine/controller.js +592 -0
  29. package/dist/charts/engine/controller.js.map +1 -0
  30. package/dist/charts/engine/curve.cjs +2 -0
  31. package/dist/charts/engine/curve.cjs.map +1 -0
  32. package/dist/charts/engine/curve.d.cts +15 -0
  33. package/dist/charts/engine/curve.d.ts +15 -0
  34. package/dist/charts/engine/curve.js +56 -0
  35. package/dist/charts/engine/curve.js.map +1 -0
  36. package/dist/charts/engine/data.cjs +1 -1
  37. package/dist/charts/engine/data.cjs.map +1 -1
  38. package/dist/charts/engine/data.d.cts +15 -2
  39. package/dist/charts/engine/data.d.ts +15 -2
  40. package/dist/charts/engine/data.js +98 -38
  41. package/dist/charts/engine/data.js.map +1 -1
  42. package/dist/charts/engine/dom.cjs +1 -1
  43. package/dist/charts/engine/dom.cjs.map +1 -1
  44. package/dist/charts/engine/dom.d.cts +5 -3
  45. package/dist/charts/engine/dom.d.ts +5 -3
  46. package/dist/charts/engine/dom.js +27 -22
  47. package/dist/charts/engine/dom.js.map +1 -1
  48. package/dist/charts/engine/items.cjs +1 -1
  49. package/dist/charts/engine/items.cjs.map +1 -1
  50. package/dist/charts/engine/items.js +132 -61
  51. package/dist/charts/engine/items.js.map +1 -1
  52. package/dist/charts/engine/model.cjs +1 -1
  53. package/dist/charts/engine/model.cjs.map +1 -1
  54. package/dist/charts/engine/model.d.cts +32 -5
  55. package/dist/charts/engine/model.d.ts +32 -5
  56. package/dist/charts/engine/model.js +226 -109
  57. package/dist/charts/engine/model.js.map +1 -1
  58. package/dist/charts/engine/overlay.cjs +1 -1
  59. package/dist/charts/engine/overlay.cjs.map +1 -1
  60. package/dist/charts/engine/overlay.d.cts +19 -1
  61. package/dist/charts/engine/overlay.d.ts +19 -1
  62. package/dist/charts/engine/overlay.js +77 -63
  63. package/dist/charts/engine/overlay.js.map +1 -1
  64. package/dist/charts/engine/presets.cjs +3 -0
  65. package/dist/charts/engine/presets.cjs.map +1 -0
  66. package/dist/charts/engine/presets.d.cts +169 -0
  67. package/dist/charts/engine/presets.d.ts +169 -0
  68. package/dist/charts/engine/presets.js +240 -0
  69. package/dist/charts/engine/presets.js.map +1 -0
  70. package/dist/charts/engine/renderers/canvas2d.cjs +1 -1
  71. package/dist/charts/engine/renderers/canvas2d.cjs.map +1 -1
  72. package/dist/charts/engine/renderers/canvas2d.d.cts +17 -1
  73. package/dist/charts/engine/renderers/canvas2d.d.ts +17 -1
  74. package/dist/charts/engine/renderers/canvas2d.js +176 -101
  75. package/dist/charts/engine/renderers/canvas2d.js.map +1 -1
  76. package/dist/charts/engine/renderers/range.cjs +1 -1
  77. package/dist/charts/engine/renderers/range.cjs.map +1 -1
  78. package/dist/charts/engine/renderers/range.js +4 -4
  79. package/dist/charts/engine/renderers/range.js.map +1 -1
  80. package/dist/charts/engine/renderers/shaders.cjs +37 -19
  81. package/dist/charts/engine/renderers/shaders.cjs.map +1 -1
  82. package/dist/charts/engine/renderers/shaders.d.cts +2 -2
  83. package/dist/charts/engine/renderers/shaders.d.ts +2 -2
  84. package/dist/charts/engine/renderers/shaders.js +37 -19
  85. package/dist/charts/engine/renderers/shaders.js.map +1 -1
  86. package/dist/charts/engine/renderers/types.cjs.map +1 -1
  87. package/dist/charts/engine/renderers/types.d.cts +11 -4
  88. package/dist/charts/engine/renderers/types.d.ts +11 -4
  89. package/dist/charts/engine/renderers/types.js.map +1 -1
  90. package/dist/charts/engine/renderers/webgl2.cjs +1 -1
  91. package/dist/charts/engine/renderers/webgl2.cjs.map +1 -1
  92. package/dist/charts/engine/renderers/webgl2.js +33 -12
  93. package/dist/charts/engine/renderers/webgl2.js.map +1 -1
  94. package/dist/charts/engine/renderers/webgpu.cjs +1 -1
  95. package/dist/charts/engine/renderers/webgpu.cjs.map +1 -1
  96. package/dist/charts/engine/renderers/webgpu.js +18 -15
  97. package/dist/charts/engine/renderers/webgpu.js.map +1 -1
  98. package/dist/charts/engine/scene.cjs +2 -0
  99. package/dist/charts/engine/scene.cjs.map +1 -0
  100. package/dist/charts/engine/scene.d.cts +102 -0
  101. package/dist/charts/engine/scene.d.ts +102 -0
  102. package/dist/charts/engine/scene.js +353 -0
  103. package/dist/charts/engine/scene.js.map +1 -0
  104. package/dist/charts/engine/shapes/canvas.cjs +2 -0
  105. package/dist/charts/engine/shapes/canvas.cjs.map +1 -0
  106. package/dist/charts/engine/shapes/canvas.d.cts +58 -0
  107. package/dist/charts/engine/shapes/canvas.d.ts +58 -0
  108. package/dist/charts/engine/shapes/canvas.js +159 -0
  109. package/dist/charts/engine/shapes/canvas.js.map +1 -0
  110. package/dist/charts/engine/shapes/chart.cjs +2 -0
  111. package/dist/charts/engine/shapes/chart.cjs.map +1 -0
  112. package/dist/charts/engine/shapes/chart.d.cts +6 -0
  113. package/dist/charts/engine/shapes/chart.d.ts +6 -0
  114. package/dist/charts/engine/shapes/chart.js +273 -0
  115. package/dist/charts/engine/shapes/chart.js.map +1 -0
  116. package/dist/charts/engine/shapes/draw.cjs +2 -0
  117. package/dist/charts/engine/shapes/draw.cjs.map +1 -0
  118. package/dist/charts/engine/shapes/draw.d.cts +20 -0
  119. package/dist/charts/engine/shapes/draw.d.ts +20 -0
  120. package/dist/charts/engine/shapes/draw.js +152 -0
  121. package/dist/charts/engine/shapes/draw.js.map +1 -0
  122. package/dist/charts/engine/shapes/funnel.cjs +2 -0
  123. package/dist/charts/engine/shapes/funnel.cjs.map +1 -0
  124. package/dist/charts/engine/shapes/funnel.d.cts +6 -0
  125. package/dist/charts/engine/shapes/funnel.d.ts +6 -0
  126. package/dist/charts/engine/shapes/funnel.js +149 -0
  127. package/dist/charts/engine/shapes/funnel.js.map +1 -0
  128. package/dist/charts/engine/shapes/gauge.cjs +2 -0
  129. package/dist/charts/engine/shapes/gauge.cjs.map +1 -0
  130. package/dist/charts/engine/shapes/gauge.d.cts +7 -0
  131. package/dist/charts/engine/shapes/gauge.d.ts +7 -0
  132. package/dist/charts/engine/shapes/gauge.js +173 -0
  133. package/dist/charts/engine/shapes/gauge.js.map +1 -0
  134. package/dist/charts/engine/shapes/hit.cjs +2 -0
  135. package/dist/charts/engine/shapes/hit.cjs.map +1 -0
  136. package/dist/charts/engine/shapes/hit.d.cts +28 -0
  137. package/dist/charts/engine/shapes/hit.d.ts +28 -0
  138. package/dist/charts/engine/shapes/hit.js +124 -0
  139. package/dist/charts/engine/shapes/hit.js.map +1 -0
  140. package/dist/charts/engine/shapes/index.d.cts +9 -0
  141. package/dist/charts/engine/shapes/index.d.ts +9 -0
  142. package/dist/charts/engine/shapes/layout.cjs +3 -0
  143. package/dist/charts/engine/shapes/layout.cjs.map +1 -0
  144. package/dist/charts/engine/shapes/layout.d.cts +88 -0
  145. package/dist/charts/engine/shapes/layout.d.ts +88 -0
  146. package/dist/charts/engine/shapes/layout.js +266 -0
  147. package/dist/charts/engine/shapes/layout.js.map +1 -0
  148. package/dist/charts/engine/shapes/pie.cjs +2 -0
  149. package/dist/charts/engine/shapes/pie.cjs.map +1 -0
  150. package/dist/charts/engine/shapes/pie.d.cts +20 -0
  151. package/dist/charts/engine/shapes/pie.d.ts +20 -0
  152. package/dist/charts/engine/shapes/pie.js +302 -0
  153. package/dist/charts/engine/shapes/pie.js.map +1 -0
  154. package/dist/charts/engine/shapes/radar.cjs +2 -0
  155. package/dist/charts/engine/shapes/radar.cjs.map +1 -0
  156. package/dist/charts/engine/shapes/radar.d.cts +8 -0
  157. package/dist/charts/engine/shapes/radar.d.ts +8 -0
  158. package/dist/charts/engine/shapes/radar.js +197 -0
  159. package/dist/charts/engine/shapes/radar.js.map +1 -0
  160. package/dist/charts/engine/shapes/runtime.cjs +2 -0
  161. package/dist/charts/engine/shapes/runtime.cjs.map +1 -0
  162. package/dist/charts/engine/shapes/runtime.d.cts +29 -0
  163. package/dist/charts/engine/shapes/runtime.d.ts +29 -0
  164. package/dist/charts/engine/shapes/runtime.js +97 -0
  165. package/dist/charts/engine/shapes/runtime.js.map +1 -0
  166. package/dist/charts/engine/shapes/scene.cjs +2 -0
  167. package/dist/charts/engine/shapes/scene.cjs.map +1 -0
  168. package/dist/charts/engine/shapes/scene.d.cts +257 -0
  169. package/dist/charts/engine/shapes/scene.d.ts +257 -0
  170. package/dist/charts/engine/shapes/scene.js +123 -0
  171. package/dist/charts/engine/shapes/scene.js.map +1 -0
  172. package/dist/charts/engine/shapes/treemap.cjs +2 -0
  173. package/dist/charts/engine/shapes/treemap.cjs.map +1 -0
  174. package/dist/charts/engine/shapes/treemap.d.cts +14 -0
  175. package/dist/charts/engine/shapes/treemap.d.ts +14 -0
  176. package/dist/charts/engine/shapes/treemap.js +213 -0
  177. package/dist/charts/engine/shapes/treemap.js.map +1 -0
  178. package/dist/charts/engine/shapes/types.d.cts +292 -0
  179. package/dist/charts/engine/shapes/types.d.ts +292 -0
  180. package/dist/charts/engine/signature.cjs +2 -0
  181. package/dist/charts/engine/signature.cjs.map +1 -0
  182. package/dist/charts/engine/signature.d.cts +9 -0
  183. package/dist/charts/engine/signature.d.ts +9 -0
  184. package/dist/charts/engine/signature.js +13 -0
  185. package/dist/charts/engine/signature.js.map +1 -0
  186. package/dist/charts/engine/theme.cjs +1 -1
  187. package/dist/charts/engine/theme.cjs.map +1 -1
  188. package/dist/charts/engine/theme.d.cts +35 -2
  189. package/dist/charts/engine/theme.d.ts +35 -2
  190. package/dist/charts/engine/theme.js +66 -26
  191. package/dist/charts/engine/theme.js.map +1 -1
  192. package/dist/charts/engine/types.d.cts +139 -11
  193. package/dist/charts/engine/types.d.ts +139 -11
  194. package/dist/charts/index.cjs +1 -1
  195. package/dist/charts/index.d.cts +4 -2
  196. package/dist/charts/index.d.ts +4 -2
  197. package/dist/charts/index.js +8 -2
  198. package/dist/charts/react/Chart.cjs +1 -1
  199. package/dist/charts/react/Chart.cjs.map +1 -1
  200. package/dist/charts/react/Chart.d.cts +18 -4
  201. package/dist/charts/react/Chart.d.ts +18 -4
  202. package/dist/charts/react/Chart.js +102 -41
  203. package/dist/charts/react/Chart.js.map +1 -1
  204. package/dist/charts/react/charts.cjs +1 -1
  205. package/dist/charts/react/charts.cjs.map +1 -1
  206. package/dist/charts/react/charts.d.cts +11 -3
  207. package/dist/charts/react/charts.d.ts +11 -3
  208. package/dist/charts/react/charts.js +221 -144
  209. package/dist/charts/react/charts.js.map +1 -1
  210. package/dist/charts/react/shapes.cjs +2 -0
  211. package/dist/charts/react/shapes.cjs.map +1 -0
  212. package/dist/charts/react/shapes.d.cts +255 -0
  213. package/dist/charts/react/shapes.d.ts +255 -0
  214. package/dist/charts/react/shapes.js +242 -0
  215. package/dist/charts/react/shapes.js.map +1 -0
  216. package/dist/charts/react/types.d.cts +100 -63
  217. package/dist/charts/react/types.d.ts +100 -63
  218. package/dist/native/charts/src/canvas.cjs +1 -0
  219. package/dist/native/charts/src/canvas.js +6 -0
  220. package/dist/native/charts/src/engine/axis.cjs +2 -0
  221. package/dist/native/charts/src/engine/axis.cjs.map +1 -0
  222. package/dist/native/charts/src/engine/axis.js +38 -0
  223. package/dist/native/charts/src/engine/axis.js.map +1 -0
  224. package/dist/native/charts/src/engine/canvas.cjs +1 -0
  225. package/dist/native/charts/src/engine/canvas.js +1 -0
  226. package/dist/native/charts/src/engine/color.cjs +2 -0
  227. package/dist/native/charts/src/engine/color.cjs.map +1 -0
  228. package/dist/native/charts/src/engine/color.js +139 -0
  229. package/dist/native/charts/src/engine/color.js.map +1 -0
  230. package/dist/native/charts/src/engine/controller.cjs +3 -0
  231. package/dist/native/charts/src/engine/controller.cjs.map +1 -0
  232. package/dist/native/charts/src/engine/controller.js +592 -0
  233. package/dist/native/charts/src/engine/controller.js.map +1 -0
  234. package/dist/native/charts/src/engine/curve.cjs +2 -0
  235. package/dist/native/charts/src/engine/curve.cjs.map +1 -0
  236. package/dist/native/charts/src/engine/curve.js +56 -0
  237. package/dist/native/charts/src/engine/curve.js.map +1 -0
  238. package/dist/native/charts/src/engine/data.cjs +2 -0
  239. package/dist/native/charts/src/engine/data.cjs.map +1 -0
  240. package/dist/native/charts/src/engine/data.js +164 -0
  241. package/dist/native/charts/src/engine/data.js.map +1 -0
  242. package/dist/native/charts/src/engine/decimate.cjs +2 -0
  243. package/dist/native/charts/src/engine/decimate.cjs.map +1 -0
  244. package/dist/native/charts/src/engine/decimate.js +28 -0
  245. package/dist/native/charts/src/engine/decimate.js.map +1 -0
  246. package/dist/native/charts/src/engine/format.cjs +2 -0
  247. package/dist/native/charts/src/engine/format.cjs.map +1 -0
  248. package/dist/native/charts/src/engine/format.js +34 -0
  249. package/dist/native/charts/src/engine/format.js.map +1 -0
  250. package/dist/native/charts/src/engine/layout.cjs +2 -0
  251. package/dist/native/charts/src/engine/layout.cjs.map +1 -0
  252. package/dist/native/charts/src/engine/layout.js +26 -0
  253. package/dist/native/charts/src/engine/layout.js.map +1 -0
  254. package/dist/native/charts/src/engine/model.cjs +2 -0
  255. package/dist/native/charts/src/engine/model.cjs.map +1 -0
  256. package/dist/native/charts/src/engine/model.js +292 -0
  257. package/dist/native/charts/src/engine/model.js.map +1 -0
  258. package/dist/native/charts/src/engine/overlay.cjs +2 -0
  259. package/dist/native/charts/src/engine/overlay.cjs.map +1 -0
  260. package/dist/native/charts/src/engine/overlay.js +49 -0
  261. package/dist/native/charts/src/engine/overlay.js.map +1 -0
  262. package/dist/native/charts/src/engine/presets.cjs +3 -0
  263. package/dist/native/charts/src/engine/presets.cjs.map +1 -0
  264. package/dist/native/charts/src/engine/presets.js +154 -0
  265. package/dist/native/charts/src/engine/presets.js.map +1 -0
  266. package/dist/native/charts/src/engine/scale.cjs +2 -0
  267. package/dist/native/charts/src/engine/scale.cjs.map +1 -0
  268. package/dist/native/charts/src/engine/scale.js +37 -0
  269. package/dist/native/charts/src/engine/scale.js.map +1 -0
  270. package/dist/native/charts/src/engine/scene.cjs +2 -0
  271. package/dist/native/charts/src/engine/scene.cjs.map +1 -0
  272. package/dist/native/charts/src/engine/scene.js +353 -0
  273. package/dist/native/charts/src/engine/scene.js.map +1 -0
  274. package/dist/native/charts/src/engine/spatial.cjs +2 -0
  275. package/dist/native/charts/src/engine/spatial.cjs.map +1 -0
  276. package/dist/native/charts/src/engine/spatial.js +53 -0
  277. package/dist/native/charts/src/engine/spatial.js.map +1 -0
  278. package/dist/native/charts/src/engine/theme.cjs +2 -0
  279. package/dist/native/charts/src/engine/theme.cjs.map +1 -0
  280. package/dist/native/charts/src/engine/theme.js +62 -0
  281. package/dist/native/charts/src/engine/theme.js.map +1 -0
  282. package/dist/native/charts/src/engine/time.cjs +2 -0
  283. package/dist/native/charts/src/engine/time.cjs.map +1 -0
  284. package/dist/native/charts/src/engine/time.js +189 -0
  285. package/dist/native/charts/src/engine/time.js.map +1 -0
  286. package/dist/native/charts/src/engine/viewport.cjs +2 -0
  287. package/dist/native/charts/src/engine/viewport.cjs.map +1 -0
  288. package/dist/native/charts/src/engine/viewport.js +12 -0
  289. package/dist/native/charts/src/engine/viewport.js.map +1 -0
  290. package/dist/native/components/Chart/ChartBase.cjs +2 -0
  291. package/dist/native/components/Chart/ChartBase.cjs.map +1 -0
  292. package/dist/native/components/Chart/ChartBase.d.cts +29 -0
  293. package/dist/native/components/Chart/ChartBase.d.ts +29 -0
  294. package/dist/native/components/Chart/ChartBase.js +287 -0
  295. package/dist/native/components/Chart/ChartBase.js.map +1 -0
  296. package/dist/native/components/Chart/charts.cjs +2 -0
  297. package/dist/native/components/Chart/charts.cjs.map +1 -0
  298. package/dist/native/components/Chart/charts.d.cts +19 -0
  299. package/dist/native/components/Chart/charts.d.ts +19 -0
  300. package/dist/native/components/Chart/charts.js +173 -0
  301. package/dist/native/components/Chart/charts.js.map +1 -0
  302. package/dist/native/components/Chart/index.cjs +1 -0
  303. package/dist/native/components/Chart/index.d.cts +2 -0
  304. package/dist/native/components/Chart/index.d.ts +2 -0
  305. package/dist/native/components/Chart/index.js +2 -0
  306. package/dist/native/components/Chart/measure.cjs +2 -0
  307. package/dist/native/components/Chart/measure.cjs.map +1 -0
  308. package/dist/native/components/Chart/measure.d.cts +5 -0
  309. package/dist/native/components/Chart/measure.d.ts +5 -0
  310. package/dist/native/components/Chart/measure.js +11 -0
  311. package/dist/native/components/Chart/measure.js.map +1 -0
  312. package/dist/native/components/Chart/scene.cjs +2 -0
  313. package/dist/native/components/Chart/scene.cjs.map +1 -0
  314. package/dist/native/components/Chart/scene.d.cts +41 -0
  315. package/dist/native/components/Chart/scene.d.ts +41 -0
  316. package/dist/native/components/Chart/scene.js +431 -0
  317. package/dist/native/components/Chart/scene.js.map +1 -0
  318. package/dist/native/components/Chart/theme.cjs +2 -0
  319. package/dist/native/components/Chart/theme.cjs.map +1 -0
  320. package/dist/native/components/Chart/theme.d.cts +10 -0
  321. package/dist/native/components/Chart/theme.d.ts +10 -0
  322. package/dist/native/components/Chart/theme.js +10 -0
  323. package/dist/native/components/Chart/theme.js.map +1 -0
  324. package/dist/native/components/Chart/types.d.cts +129 -0
  325. package/dist/native/components/Chart/types.d.ts +129 -0
  326. package/dist/native/index.cjs +1 -1
  327. package/dist/native/index.d.cts +1 -0
  328. package/dist/native/index.d.ts +1 -0
  329. package/dist/native/index.js +6 -4
  330. package/dist/native/manifest.d.cts +7 -0
  331. package/dist/native/manifest.d.ts +7 -0
  332. package/dist/native/source/components/Chart/ChartBase.tsx +545 -0
  333. package/dist/native/source/components/Chart/charts.tsx +291 -0
  334. package/dist/native/source/components/Chart/index.ts +8 -0
  335. package/dist/native/source/components/Chart/measure.ts +50 -0
  336. package/dist/native/source/components/Chart/scene.tsx +1021 -0
  337. package/dist/native/source/components/Chart/theme.ts +16 -0
  338. package/dist/native/source/components/Chart/types.ts +194 -0
  339. package/dist/native/source/index.ts +1 -0
  340. package/dist/native/source/manifest.ts +14 -0
  341. package/dist/taro/charts.d.ts +144 -0
  342. package/dist/taro/index.d.ts +1 -0
  343. package/dist/taro/index.js +3544 -618
  344. package/dist/uni/BarChart.vue +75 -0
  345. package/dist/uni/BarChart.vue.d.ts +111 -0
  346. package/dist/uni/Chart.vue +68 -0
  347. package/dist/uni/Chart.vue.d.ts +100 -0
  348. package/dist/uni/LineChart.vue +75 -0
  349. package/dist/uni/LineChart.vue.d.ts +111 -0
  350. package/dist/uni/ProgressIndicator.vue.d.ts +1 -1
  351. package/dist/uni/QuadrantChart.vue +184 -0
  352. package/dist/uni/QuadrantChart.vue.d.ts +173 -0
  353. package/dist/uni/ScatterChart.vue +69 -0
  354. package/dist/uni/ScatterChart.vue.d.ts +100 -0
  355. package/dist/uni/chart-canvas.d.ts +68 -0
  356. package/dist/uni/chart-canvas.js +363 -0
  357. package/dist/uni/chart-types.d.ts +135 -0
  358. package/dist/uni/chart-types.js +84 -0
  359. package/dist/uni/charts-canvas.d.ts +1 -0
  360. package/dist/uni/charts-canvas.js +10 -0
  361. package/dist/uni/index.d.ts +6 -0
  362. package/dist/uni/index.js +6 -0
  363. package/dist/weapp/bar-chart/index.js +1 -0
  364. package/dist/weapp/bar-chart/index.json +1 -0
  365. package/dist/weapp/bar-chart/index.wxml +1 -0
  366. package/dist/weapp/bar-chart/index.wxss +1 -0
  367. package/dist/weapp/chart/index.js +1 -0
  368. package/dist/weapp/chart/index.json +1 -0
  369. package/dist/weapp/chart/index.wxml +1 -0
  370. package/dist/weapp/chart/index.wxss +1 -0
  371. package/dist/weapp/controls.js +4760 -266
  372. package/dist/weapp/line-chart/index.js +1 -0
  373. package/dist/weapp/line-chart/index.json +1 -0
  374. package/dist/weapp/line-chart/index.wxml +1 -0
  375. package/dist/weapp/line-chart/index.wxss +1 -0
  376. package/dist/weapp/quadrant-chart/index.js +1 -0
  377. package/dist/weapp/quadrant-chart/index.json +1 -0
  378. package/dist/weapp/quadrant-chart/index.wxml +1 -0
  379. package/dist/weapp/quadrant-chart/index.wxss +1 -0
  380. package/dist/weapp/scatter-chart/index.js +1 -0
  381. package/dist/weapp/scatter-chart/index.json +1 -0
  382. package/dist/weapp/scatter-chart/index.wxml +1 -0
  383. package/dist/weapp/scatter-chart/index.wxss +1 -0
  384. package/dist/weapp/types.d.ts +295 -0
  385. package/package.json +21 -1
@@ -1,14 +1,17 @@
1
- import { CSSProperties } from 'react';
2
- import { ChartHoverEvent, ChartOptions, ChartRendererKind, ChartView } from '../engine/types.cjs';
1
+ import { CSSProperties, ReactNode } from 'react';
2
+ import { ChartDragEvent, ChartHoverEvent, ChartOptions, ChartPlotClickEvent, ChartRect, ChartRendererKind, ChartView } from '../engine/types.cjs';
3
3
  import { ChartCommonProps, ChartProps } from './types.cjs';
4
4
  interface Handlers {
5
5
  onHover?: (event: ChartHoverEvent | null) => void;
6
6
  onPointClick?: (event: ChartHoverEvent) => void;
7
+ onPlotClick?: (event: ChartPlotClickEvent) => void;
7
8
  onZoom?: (view: ChartView) => void;
8
9
  onRendererChange?: (renderer: ChartRendererKind) => void;
10
+ onDrag?: (event: ChartDragEvent) => void;
11
+ onDrop?: (event: ChartDragEvent) => void;
9
12
  }
10
13
  /** Engine options of the common props */
11
- export declare const engineOptions: (props: Omit<ChartCommonProps, "onPointClick"> & Pick<ChartOptions, "series">) => ChartOptions;
14
+ export declare const engineOptions: (props: Pick<ChartCommonProps, "xAxis" | "yAxis" | "renderer" | "legend" | "tooltip" | "crosshair" | "annotations" | "interaction" | "padding" | "palette" | "ariaLabel"> & Pick<ChartOptions, "series" | "stackMode">) => ChartOptions;
12
15
  interface ChartBaseProps extends Handlers {
13
16
  options: ChartOptions;
14
17
  height?: number | string;
@@ -16,9 +19,20 @@ interface ChartBaseProps extends Handlers {
16
19
  className?: string;
17
20
  style?: CSSProperties;
18
21
  handleRef?: ChartCommonProps["ref"];
22
+ /** React content of the tooltip (replaces the engine's content) */
23
+ renderTooltip?: (event: ChartHoverEvent) => ReactNode;
24
+ /** React content placed over the chart, given the plot area */
25
+ overlay?: (plot: ChartRect) => ReactNode;
19
26
  }
27
+ /**
28
+ * Whether `b` describes the same chart as `a`: top-level options compared by
29
+ * identity (or one level deep for inline arrays / objects), series compared
30
+ * one by one, each series shallowly (inline `series={[{ name, data }]}`
31
+ * with a stable `data` stays equal). Data is never compared by content.
32
+ */
33
+ export declare const sameOptions: (a: ChartOptions, b: ChartOptions) => boolean;
20
34
  /** Mounts the engine in a sized <div> and forwards option / handler changes */
21
- export declare function ChartBase({ options, height, width, className, style, handleRef, ...handlers }: ChartBaseProps): import('react').JSX.Element;
35
+ export declare function ChartBase({ options, height, width, className, style, handleRef, renderTooltip, overlay, ...handlers }: ChartBaseProps): import('react').JSX.Element;
22
36
  /**
23
37
  * GPU chart (WebGPU, then WebGL2, then Canvas2D) mixing line, area, bar and
24
38
  * scatter series; zoomable, keyboard accessible and themed by the Minerva
@@ -1,14 +1,17 @@
1
- import { CSSProperties } from 'react';
2
- import { ChartHoverEvent, ChartOptions, ChartRendererKind, ChartView } from '../engine/types.js';
1
+ import { CSSProperties, ReactNode } from 'react';
2
+ import { ChartDragEvent, ChartHoverEvent, ChartOptions, ChartPlotClickEvent, ChartRect, ChartRendererKind, ChartView } from '../engine/types.js';
3
3
  import { ChartCommonProps, ChartProps } from './types.js';
4
4
  interface Handlers {
5
5
  onHover?: (event: ChartHoverEvent | null) => void;
6
6
  onPointClick?: (event: ChartHoverEvent) => void;
7
+ onPlotClick?: (event: ChartPlotClickEvent) => void;
7
8
  onZoom?: (view: ChartView) => void;
8
9
  onRendererChange?: (renderer: ChartRendererKind) => void;
10
+ onDrag?: (event: ChartDragEvent) => void;
11
+ onDrop?: (event: ChartDragEvent) => void;
9
12
  }
10
13
  /** Engine options of the common props */
11
- export declare const engineOptions: (props: Omit<ChartCommonProps, "onPointClick"> & Pick<ChartOptions, "series">) => ChartOptions;
14
+ export declare const engineOptions: (props: Pick<ChartCommonProps, "xAxis" | "yAxis" | "renderer" | "legend" | "tooltip" | "crosshair" | "annotations" | "interaction" | "padding" | "palette" | "ariaLabel"> & Pick<ChartOptions, "series" | "stackMode">) => ChartOptions;
12
15
  interface ChartBaseProps extends Handlers {
13
16
  options: ChartOptions;
14
17
  height?: number | string;
@@ -16,9 +19,20 @@ interface ChartBaseProps extends Handlers {
16
19
  className?: string;
17
20
  style?: CSSProperties;
18
21
  handleRef?: ChartCommonProps["ref"];
22
+ /** React content of the tooltip (replaces the engine's content) */
23
+ renderTooltip?: (event: ChartHoverEvent) => ReactNode;
24
+ /** React content placed over the chart, given the plot area */
25
+ overlay?: (plot: ChartRect) => ReactNode;
19
26
  }
27
+ /**
28
+ * Whether `b` describes the same chart as `a`: top-level options compared by
29
+ * identity (or one level deep for inline arrays / objects), series compared
30
+ * one by one, each series shallowly (inline `series={[{ name, data }]}`
31
+ * with a stable `data` stays equal). Data is never compared by content.
32
+ */
33
+ export declare const sameOptions: (a: ChartOptions, b: ChartOptions) => boolean;
20
34
  /** Mounts the engine in a sized <div> and forwards option / handler changes */
21
- export declare function ChartBase({ options, height, width, className, style, handleRef, ...handlers }: ChartBaseProps): import('react').JSX.Element;
35
+ export declare function ChartBase({ options, height, width, className, style, handleRef, renderTooltip, overlay, ...handlers }: ChartBaseProps): import('react').JSX.Element;
22
36
  /**
23
37
  * GPU chart (WebGPU, then WebGL2, then Canvas2D) mixing line, area, bar and
24
38
  * scatter series; zoomable, keyboard accessible and themed by the Minerva
@@ -1,9 +1,10 @@
1
1
  "use client";
2
2
  import { createChart as e } from "../engine/chart.js";
3
- import { useEffect as t, useImperativeHandle as n, useRef as r } from "react";
4
- import { jsx as i } from "react/jsx-runtime";
3
+ import { useEffect as t, useImperativeHandle as n, useMemo as r, useRef as i, useState as a } from "react";
4
+ import { createPortal as o, flushSync as s } from "react-dom";
5
+ import { jsx as c, jsxs as l } from "react/jsx-runtime";
5
6
  //#region src/react/Chart.tsx
6
- var a = (e, t) => e === void 0 ? t : typeof e == "number" ? `${e}px` : e, o = (e) => ({
7
+ var u = (e, t) => e === void 0 ? t : typeof e == "number" ? `${e}px` : e, d = (e) => ({
7
8
  series: e.series,
8
9
  xAxis: e.xAxis,
9
10
  yAxis: e.yAxis,
@@ -15,61 +16,121 @@ var a = (e, t) => e === void 0 ? t : typeof e == "number" ? `${e}px` : e, o = (e
15
16
  interaction: e.interaction,
16
17
  padding: e.padding,
17
18
  palette: e.palette,
18
- ariaLabel: e.ariaLabel
19
- });
20
- function s({ options: o, height: s, width: c, className: l, style: u, handleRef: d, ...f }) {
21
- let p = r(null), m = r(null), h = r(f), g = r(o);
19
+ ariaLabel: e.ariaLabel,
20
+ stackMode: e.stackMode
21
+ }), f = (e) => {
22
+ if (typeof e != "object" || !e) return !1;
23
+ let t = Object.getPrototypeOf(e);
24
+ return t === Object.prototype || t === null;
25
+ }, p = (e, t) => {
26
+ let n = Object.keys(e);
27
+ return n.length === Object.keys(t).length && n.every((n) => e[n] === t[n] && Object.prototype.hasOwnProperty.call(t, n));
28
+ }, m = (e, t) => e === t ? !0 : Array.isArray(e) && Array.isArray(t) ? e.length === t.length && e.every((e, n) => e === t[n]) : f(e) && f(t) && p(e, t), h = (e, t) => {
29
+ if (e === t) return !0;
30
+ let n = Object.keys(e);
31
+ return n.length === Object.keys(t).length && n.every((n) => {
32
+ if (!Object.prototype.hasOwnProperty.call(t, n)) return !1;
33
+ if (n !== "series") return m(e[n], t[n]);
34
+ let r = e.series, i = t.series;
35
+ return r === i || r.length === i.length && r.every((e, t) => e === i[t] || p(e, i[t]));
36
+ });
37
+ }, g = (e, t) => !!e && e.x === t.x && e.xLabel === t.xLabel && e.items.length === t.items.length && e.items.every((e, n) => p(e, t.items[n]));
38
+ function _({ options: d, height: f, width: p, className: m, style: _, handleRef: v, renderTooltip: y, overlay: b, ...x }) {
39
+ let S = i(null), C = i(null), w = i(x), T = i(y), E = i(null), [D, O] = a(null), [k, A] = a(null), j = r(() => typeof document > "u" ? null : document.createElement("div"), []), [M, N] = a(d);
40
+ M !== d && !h(M, d) && N(d);
41
+ let P = !!y, F = r(() => {
42
+ if (!P || !j || M.tooltip === !1) return M;
43
+ let e = typeof M.tooltip == "object" ? M.tooltip : {};
44
+ return {
45
+ ...M,
46
+ tooltip: {
47
+ ...e,
48
+ render: (e) => T.current ? (g(E.current, e) || (E.current = e, s(() => O(e))), j) : null
49
+ }
50
+ };
51
+ }, [
52
+ M,
53
+ P,
54
+ j
55
+ ]), I = i(F);
22
56
  return t(() => {
23
- h.current = f;
57
+ w.current = x, T.current = y;
24
58
  }), t(() => {
25
- let t = p.current;
59
+ let t = S.current;
26
60
  if (!t) return;
27
- let n = e(t, g.current);
28
- m.current = n;
61
+ let n = e(t, I.current);
62
+ C.current = n;
29
63
  let r = [
30
- n.on("hover", (e) => h.current.onHover?.(e)),
31
- n.on("click", (e) => h.current.onPointClick?.(e)),
32
- n.on("zoom", (e) => h.current.onZoom?.(e)),
33
- n.on("renderer", (e) => h.current.onRendererChange?.(e))
64
+ n.on("hover", (e) => w.current.onHover?.(e)),
65
+ n.on("click", (e) => w.current.onPointClick?.(e)),
66
+ n.on("plotClick", (e) => w.current.onPlotClick?.(e)),
67
+ n.on("zoom", (e) => w.current.onZoom?.(e)),
68
+ n.on("renderer", (e) => w.current.onRendererChange?.(e)),
69
+ n.on("drag", (e) => w.current.onDrag?.(e)),
70
+ n.on("drop", (e) => w.current.onDrop?.(e)),
71
+ n.on("layout", (e) => A(e))
34
72
  ];
35
73
  return () => {
36
- r.forEach((e) => e()), n.destroy(), m.current = null;
74
+ r.forEach((e) => e()), n.destroy(), C.current = null;
37
75
  };
38
76
  }, []), t(() => {
39
- g.current !== o && (g.current = o, m.current?.setOptions(o));
40
- }, [o]), n(d, () => ({
41
- resetZoom: () => m.current?.resetZoom(),
42
- getView: () => m.current?.getView() ?? null,
43
- setView: (e) => m.current?.setView(e),
44
- getRenderer: () => m.current?.getRenderer() ?? null,
45
- getInstance: () => m.current
46
- }), []), /* @__PURE__ */ i("div", {
47
- ref: p,
48
- className: l,
77
+ I.current !== F && (I.current = F, C.current?.setOptions(F));
78
+ }, [F]), n(v, () => ({
79
+ resetZoom: () => C.current?.resetZoom(),
80
+ getView: () => C.current?.getView() ?? null,
81
+ setView: (e) => C.current?.setView(e),
82
+ getRenderer: () => C.current?.getRenderer() ?? null,
83
+ getInstance: () => C.current
84
+ }), []), /* @__PURE__ */ l("div", {
85
+ className: m,
49
86
  style: {
50
87
  position: "relative",
51
- width: a(c, "100%"),
52
- height: a(s, "320px"),
53
- ...u
54
- }
88
+ width: u(p, "100%"),
89
+ height: u(f, "320px"),
90
+ ..._
91
+ },
92
+ children: [
93
+ /* @__PURE__ */ c("div", {
94
+ ref: S,
95
+ style: {
96
+ position: "absolute",
97
+ inset: 0
98
+ }
99
+ }),
100
+ b && k && /* @__PURE__ */ c("div", {
101
+ className: "minerva-chart-overlay",
102
+ style: {
103
+ position: "absolute",
104
+ left: k.x,
105
+ top: k.y,
106
+ width: k.width,
107
+ height: k.height,
108
+ pointerEvents: "none"
109
+ },
110
+ children: b(k)
111
+ }),
112
+ j && D && y && o(y(D), j)
113
+ ]
55
114
  });
56
115
  }
57
- function c(e) {
58
- let { height: t, width: n, className: r, style: a, ref: c, onHover: l, onPointClick: u, onZoom: d, onRendererChange: f } = e;
59
- return /* @__PURE__ */ i(s, {
60
- options: o(e),
116
+ function v(e) {
117
+ let { height: t, width: n, className: r, style: i, ref: a, onHover: o, onPointClick: s, onPlotClick: l, onZoom: u, onRendererChange: f, renderTooltip: p } = e;
118
+ return /* @__PURE__ */ c(_, {
119
+ options: d(e),
61
120
  height: t,
62
121
  width: n,
63
122
  className: r,
64
- style: a,
65
- handleRef: c,
66
- onHover: l,
67
- onPointClick: u,
68
- onZoom: d,
69
- onRendererChange: f
123
+ style: i,
124
+ handleRef: a,
125
+ onHover: o,
126
+ onPointClick: s,
127
+ onPlotClick: l,
128
+ onZoom: u,
129
+ onRendererChange: f,
130
+ renderTooltip: p
70
131
  });
71
132
  }
72
133
  //#endregion
73
- export { c as Chart, s as ChartBase, o as engineOptions };
134
+ export { v as Chart, _ as ChartBase, d as engineOptions, h as sameOptions };
74
135
 
75
136
  //# sourceMappingURL=Chart.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Chart.js","names":["size","value","fallback","engineOptions","props","ChartBase","handlers","containerRef","useRef","chartRef","handlersRef","optionsRef","options","useEffect","container","chart","createChart","offs","v","r","off","useImperativeHandle","handleRef","view","width","height","style","Chart","ref"],"sources":["../../../../charts/src/react/Chart.tsx"],"sourcesContent":["import {\n useEffect,\n useImperativeHandle,\n useRef,\n type CSSProperties,\n} from \"react\";\nimport { createChart } from \"../engine/chart\";\nimport type {\n ChartHoverEvent,\n ChartInstance,\n ChartOptions,\n ChartRendererKind,\n ChartView,\n} from \"../engine/types\";\nimport type { ChartCommonProps, ChartProps } from \"./types\";\n\ninterface Handlers {\n onHover?: (event: ChartHoverEvent | null) => void;\n onPointClick?: (event: ChartHoverEvent) => void;\n onZoom?: (view: ChartView) => void;\n onRendererChange?: (renderer: ChartRendererKind) => void;\n}\n\nconst size = (value: number | string | undefined, fallback: string) =>\n value === undefined\n ? fallback\n : typeof value === \"number\"\n ? `${value}px`\n : value;\n\n/** Engine options of the common props */\nexport const engineOptions = (\n props: Omit<ChartCommonProps, \"onPointClick\"> & Pick<ChartOptions, \"series\">,\n): ChartOptions => ({\n series: props.series,\n xAxis: props.xAxis,\n yAxis: props.yAxis,\n renderer: props.renderer,\n legend: props.legend,\n tooltip: props.tooltip,\n crosshair: props.crosshair,\n annotations: props.annotations,\n interaction: props.interaction,\n padding: props.padding,\n palette: props.palette,\n ariaLabel: props.ariaLabel,\n});\n\ninterface ChartBaseProps extends Handlers {\n options: ChartOptions;\n height?: number | string;\n width?: number | string;\n className?: string;\n style?: CSSProperties;\n handleRef?: ChartCommonProps[\"ref\"];\n}\n\n/** Mounts the engine in a sized <div> and forwards option / handler changes */\nexport function ChartBase({\n options,\n height,\n width,\n className,\n style,\n handleRef,\n ...handlers\n}: ChartBaseProps) {\n const containerRef = useRef<HTMLDivElement>(null);\n const chartRef = useRef<ChartInstance | null>(null);\n const handlersRef = useRef<Handlers>(handlers);\n const optionsRef = useRef(options);\n\n useEffect(() => {\n handlersRef.current = handlers;\n });\n\n useEffect(() => {\n const container = containerRef.current;\n if (!container) return;\n const chart = createChart(container, optionsRef.current);\n chartRef.current = chart;\n const offs = [\n chart.on(\"hover\", (e) => handlersRef.current.onHover?.(e)),\n chart.on(\"click\", (e) => handlersRef.current.onPointClick?.(e)),\n chart.on(\"zoom\", (v) => handlersRef.current.onZoom?.(v)),\n chart.on(\"renderer\", (r) => handlersRef.current.onRendererChange?.(r)),\n ];\n return () => {\n offs.forEach((off) => off());\n chart.destroy();\n chartRef.current = null;\n };\n }, []);\n\n useEffect(() => {\n if (optionsRef.current === options) return;\n optionsRef.current = options;\n chartRef.current?.setOptions(options);\n }, [options]);\n\n useImperativeHandle(\n handleRef,\n () => ({\n resetZoom: () => chartRef.current?.resetZoom(),\n getView: () => chartRef.current?.getView() ?? null,\n setView: (view) => chartRef.current?.setView(view),\n getRenderer: () => chartRef.current?.getRenderer() ?? null,\n getInstance: () => chartRef.current,\n }),\n [],\n );\n\n return (\n <div\n ref={containerRef}\n className={className}\n style={{\n position: \"relative\",\n width: size(width, \"100%\"),\n height: size(height, \"320px\"),\n ...style,\n }}\n />\n );\n}\n\n/**\n * GPU chart (WebGPU, then WebGL2, then Canvas2D) mixing line, area, bar and\n * scatter series; zoomable, keyboard accessible and themed by the Minerva\n * CSS variables.\n */\nexport function Chart(props: ChartProps) {\n const {\n height,\n width,\n className,\n style,\n ref,\n onHover,\n onPointClick,\n onZoom,\n onRendererChange,\n } = props;\n return (\n <ChartBase\n options={engineOptions(props)}\n height={height}\n width={width}\n className={className}\n style={style}\n handleRef={ref}\n onHover={onHover}\n onPointClick={onPointClick}\n onZoom={onZoom}\n onRendererChange={onRendererChange}\n />\n );\n}\n"],"mappings":";;;;;AAuBA,IAAMA,KAAQ,GAAoC,MAChDC,MAAU,KAAA,IACNC,IACA,OAAOD,KAAU,WACf,GAAGA,EAAM,MACTA,GAGKE,KACX,OACkB;CAClB,QAAQC,EAAM;CACd,OAAOA,EAAM;CACb,OAAOA,EAAM;CACb,UAAUA,EAAM;CAChB,QAAQA,EAAM;CACd,SAASA,EAAM;CACf,WAAWA,EAAM;CACjB,aAAaA,EAAM;CACnB,aAAaA,EAAM;CACnB,SAASA,EAAM;CACf,SAASA,EAAM;CACf,WAAWA,EAAM;AACnB;AAYA,SAAgBC,EAAU,EACxB,YACA,WACA,UACA,cACA,UACA,cACA,GAAGC,KACc;CACjB,IAAMC,IAAeC,EAAuB,IAAI,GAC1CC,IAAWD,EAA6B,IAAI,GAC5CE,IAAcF,EAAiBF,CAAQ,GACvCK,IAAaH,EAAOI,CAAO;CA0CjC,OAxCAC,QAAgB;EACd,EAAY,UAAUP;CACxB,CAAC,GAEDO,QAAgB;EACd,IAAMC,IAAYP,EAAa;EAC/B,IAAI,CAACO,GAAW;EAChB,IAAMC,IAAQC,EAAYF,GAAWH,EAAW,OAAO;EACvD,EAAS,UAAUI;EACnB,IAAME,IAAO;GACXF,EAAM,GAAG,UAAU,MAAML,EAAY,QAAQ,UAAU,CAAC,CAAC;GACzDK,EAAM,GAAG,UAAU,MAAML,EAAY,QAAQ,eAAe,CAAC,CAAC;GAC9DK,EAAM,GAAG,SAAS,MAAML,EAAY,QAAQ,SAASQ,CAAC,CAAC;GACvDH,EAAM,GAAG,aAAa,MAAML,EAAY,QAAQ,mBAAmBS,CAAC,CAAC;EACvE;EACA,aAAa;GAGX,AAFAF,EAAK,SAAS,MAAQG,EAAI,CAAC,GAC3BL,EAAM,QAAQ,GACd,EAAS,UAAU;EACrB;CACF,GAAG,CAAC,CAAC,GAELF,QAAgB;EACd,AAAIF,EAAW,YAAYC,MAC3B,EAAW,UAAUA,GACrBH,EAAS,SAAS,WAAWG,CAAO;CACtC,GAAG,CAACA,CAAO,CAAC,GAEZS,EACEC,UACO;EACL,iBAAiBb,EAAS,SAAS,UAAU;EAC7C,eAAeA,EAAS,SAAS,QAAQ,KAAK;EAC9C,UAAU,MAASA,EAAS,SAAS,QAAQc,CAAI;EACjD,mBAAmBd,EAAS,SAAS,YAAY,KAAK;EACtD,mBAAmBA,EAAS;CAC9B,IACA,CAAC,CACH,GAGE,kBAAC,OAAD;EACE,KAAKF;EACM;EACX,OAAO;GACL,UAAU;GACV,OAAOP,EAAKwB,GAAO,MAAM;GACzB,QAAQxB,EAAKyB,GAAQ,OAAO;GAC5B,GAAGC;EACL;CACD,CAAA;AAEL;AAOA,SAAgBC,EAAM,GAAmB;CACvC,IAAM,EACJ,WACA,UACA,cACA,UACA,QACA,YACA,iBACA,WACA,wBACEvB;CACJ,OACE,kBAACC,GAAD;EACE,SAASF,EAAcC,CAAK;EACpB;EACD;EACI;EACJ;EACP,WAAWwB;EACF;EACK;EACN;EACU;CACnB,CAAA;AAEL"}
1
+ {"version":3,"file":"Chart.js","names":["size","value","fallback","engineOptions","props","isPlainObject","proto","shallowEqual","keys","a","b","key","sameValue","v","i","sameOptions","sa","sb","s","sameTooltipEvent","item","ChartBase","handlers","containerRef","useRef","chartRef","handlersRef","tooltipRef","renderTooltip","tipEventRef","tipEvent","setTipEvent","useState","plot","setPlot","tipHost","useMemo","stable","setStable","options","hasTooltip","resolved","base","event","flushSync","optionsRef","useEffect","container","chart","createChart","offs","r","rect","off","useImperativeHandle","handleRef","view","width","height","style","overlay","createPortal","Chart","ref"],"sources":["../../../../charts/src/react/Chart.tsx"],"sourcesContent":["import {\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n type ReactNode,\n} from \"react\";\nimport { createPortal, flushSync } from \"react-dom\";\nimport { createChart } from \"../engine/chart\";\nimport type {\n ChartDragEvent,\n ChartHoverEvent,\n ChartInstance,\n ChartOptions,\n ChartPlotClickEvent,\n ChartRect,\n ChartRendererKind,\n ChartView,\n} from \"../engine/types\";\nimport type { ChartCommonProps, ChartProps } from \"./types\";\n\ninterface Handlers {\n onHover?: (event: ChartHoverEvent | null) => void;\n onPointClick?: (event: ChartHoverEvent) => void;\n onPlotClick?: (event: ChartPlotClickEvent) => void;\n onZoom?: (view: ChartView) => void;\n onRendererChange?: (renderer: ChartRendererKind) => void;\n onDrag?: (event: ChartDragEvent) => void;\n onDrop?: (event: ChartDragEvent) => void;\n}\n\nconst size = (value: number | string | undefined, fallback: string) =>\n value === undefined\n ? fallback\n : typeof value === \"number\"\n ? `${value}px`\n : value;\n\n/** Engine options of the common props */\nexport const engineOptions = (\n props: Pick<\n ChartCommonProps,\n | \"xAxis\"\n | \"yAxis\"\n | \"renderer\"\n | \"legend\"\n | \"tooltip\"\n | \"crosshair\"\n | \"annotations\"\n | \"interaction\"\n | \"padding\"\n | \"palette\"\n | \"ariaLabel\"\n > &\n Pick<ChartOptions, \"series\" | \"stackMode\">,\n): ChartOptions => ({\n series: props.series,\n xAxis: props.xAxis,\n yAxis: props.yAxis,\n renderer: props.renderer,\n legend: props.legend,\n tooltip: props.tooltip,\n crosshair: props.crosshair,\n annotations: props.annotations,\n interaction: props.interaction,\n padding: props.padding,\n palette: props.palette,\n ariaLabel: props.ariaLabel,\n stackMode: props.stackMode,\n});\n\ninterface ChartBaseProps extends Handlers {\n options: ChartOptions;\n height?: number | string;\n width?: number | string;\n className?: string;\n style?: CSSProperties;\n handleRef?: ChartCommonProps[\"ref\"];\n /** React content of the tooltip (replaces the engine's content) */\n renderTooltip?: (event: ChartHoverEvent) => ReactNode;\n /** React content placed over the chart, given the plot area */\n overlay?: (plot: ChartRect) => ReactNode;\n}\n\nconst isPlainObject = (value: unknown): value is Record<string, unknown> => {\n if (typeof value !== \"object\" || value === null) return false;\n const proto = Object.getPrototypeOf(value);\n return proto === Object.prototype || proto === null;\n};\n\n/** Same keys with identical values */\nconst shallowEqual = (\n a: Record<string, unknown>,\n b: Record<string, unknown>,\n): boolean => {\n const keys = Object.keys(a);\n if (keys.length !== Object.keys(b).length) return false;\n return keys.every(\n (key) => a[key] === b[key] && Object.prototype.hasOwnProperty.call(b, key),\n );\n};\n\n/**\n * Identical values, or plain arrays / objects whose items are identical\n * (`[\"#f00\"]`, `{ title: \"x\" }` written inline)\n */\nconst sameValue = (a: unknown, b: unknown): boolean => {\n if (a === b) return true;\n if (Array.isArray(a) && Array.isArray(b))\n return a.length === b.length && a.every((v, i) => v === b[i]);\n return isPlainObject(a) && isPlainObject(b) && shallowEqual(a, b);\n};\n\n/**\n * Whether `b` describes the same chart as `a`: top-level options compared by\n * identity (or one level deep for inline arrays / objects), series compared\n * one by one, each series shallowly (inline `series={[{ name, data }]}`\n * with a stable `data` stays equal). Data is never compared by content.\n */\nexport const sameOptions = (a: ChartOptions, b: ChartOptions): boolean => {\n if (a === b) return true;\n const keys = Object.keys(a) as (keyof ChartOptions)[];\n if (keys.length !== Object.keys(b).length) return false;\n return keys.every((key) => {\n if (!Object.prototype.hasOwnProperty.call(b, key)) return false;\n if (key !== \"series\") return sameValue(a[key], b[key]);\n const sa = a.series;\n const sb = b.series;\n return (\n sa === sb ||\n (sa.length === sb.length &&\n sa.every(\n (s, i) =>\n s === sb[i] ||\n shallowEqual(\n s as unknown as Record<string, unknown>,\n sb[i] as unknown as Record<string, unknown>,\n ),\n ))\n );\n });\n};\n\n/** Same hovered points with the same values (same tooltip content) */\nconst sameTooltipEvent = (\n a: ChartHoverEvent | null,\n b: ChartHoverEvent,\n): boolean =>\n !!a &&\n a.x === b.x &&\n a.xLabel === b.xLabel &&\n a.items.length === b.items.length &&\n a.items.every((item, i) =>\n shallowEqual(\n item as unknown as Record<string, unknown>,\n b.items[i] as unknown as Record<string, unknown>,\n ),\n );\n\n/** Mounts the engine in a sized <div> and forwards option / handler changes */\nexport function ChartBase({\n options,\n height,\n width,\n className,\n style,\n handleRef,\n renderTooltip,\n overlay,\n ...handlers\n}: ChartBaseProps) {\n const containerRef = useRef<HTMLDivElement>(null);\n const chartRef = useRef<ChartInstance | null>(null);\n const handlersRef = useRef<Handlers>(handlers);\n const tooltipRef = useRef(renderTooltip);\n const tipEventRef = useRef<ChartHoverEvent | null>(null);\n const [tipEvent, setTipEvent] = useState<ChartHoverEvent | null>(null);\n const [plot, setPlot] = useState<ChartRect | null>(null);\n const tipHost = useMemo(\n () =>\n typeof document === \"undefined\" ? null : document.createElement(\"div\"),\n [],\n );\n\n // Parents pass a new options object on every render: keep the previous\n // one while it describes the same chart, so the engine isn't rebuilt\n // (state derived during render, the pattern React documents for it)\n const [stable, setStable] = useState(options);\n if (stable !== options && !sameOptions(stable, options)) setStable(options);\n // the render callback reads the latest `renderTooltip` through a ref: only\n // its presence matters here (inline callbacks change on every render)\n const hasTooltip = !!renderTooltip;\n\n const resolved = useMemo((): ChartOptions => {\n if (!hasTooltip || !tipHost || stable.tooltip === false) return stable;\n const base = typeof stable.tooltip === \"object\" ? stable.tooltip : {};\n return {\n ...stable,\n tooltip: {\n ...base,\n render: (event) => {\n if (!tooltipRef.current) return null;\n // render synchronously so the engine measures the final size;\n // pointer moves over the same points keep the rendered content\n if (!sameTooltipEvent(tipEventRef.current, event)) {\n tipEventRef.current = event;\n flushSync(() => setTipEvent(event));\n }\n return tipHost;\n },\n },\n };\n }, [stable, hasTooltip, tipHost]);\n const optionsRef = useRef(resolved);\n\n useEffect(() => {\n handlersRef.current = handlers;\n tooltipRef.current = renderTooltip;\n });\n\n useEffect(() => {\n const container = containerRef.current;\n if (!container) return;\n const chart = createChart(container, optionsRef.current);\n chartRef.current = chart;\n const offs = [\n chart.on(\"hover\", (e) => handlersRef.current.onHover?.(e)),\n chart.on(\"click\", (e) => handlersRef.current.onPointClick?.(e)),\n chart.on(\"plotClick\", (e) => handlersRef.current.onPlotClick?.(e)),\n chart.on(\"zoom\", (v) => handlersRef.current.onZoom?.(v)),\n chart.on(\"renderer\", (r) => handlersRef.current.onRendererChange?.(r)),\n chart.on(\"drag\", (e) => handlersRef.current.onDrag?.(e)),\n chart.on(\"drop\", (e) => handlersRef.current.onDrop?.(e)),\n chart.on(\"layout\", (rect) => setPlot(rect)),\n ];\n return () => {\n offs.forEach((off) => off());\n chart.destroy();\n chartRef.current = null;\n };\n }, []);\n\n useEffect(() => {\n if (optionsRef.current === resolved) return;\n optionsRef.current = resolved;\n chartRef.current?.setOptions(resolved);\n }, [resolved]);\n\n useImperativeHandle(\n handleRef,\n () => ({\n resetZoom: () => chartRef.current?.resetZoom(),\n getView: () => chartRef.current?.getView() ?? null,\n setView: (view) => chartRef.current?.setView(view),\n getRenderer: () => chartRef.current?.getRenderer() ?? null,\n getInstance: () => chartRef.current,\n }),\n [],\n );\n\n return (\n <div\n className={className}\n style={{\n position: \"relative\",\n width: size(width, \"100%\"),\n height: size(height, \"320px\"),\n ...style,\n }}\n >\n <div ref={containerRef} style={{ position: \"absolute\", inset: 0 }} />\n {overlay && plot && (\n <div\n className=\"minerva-chart-overlay\"\n style={{\n position: \"absolute\",\n left: plot.x,\n top: plot.y,\n width: plot.width,\n height: plot.height,\n pointerEvents: \"none\",\n }}\n >\n {overlay(plot)}\n </div>\n )}\n {tipHost &&\n tipEvent &&\n renderTooltip &&\n createPortal(renderTooltip(tipEvent), tipHost)}\n </div>\n );\n}\n\n/**\n * GPU chart (WebGPU, then WebGL2, then Canvas2D) mixing line, area, bar and\n * scatter series; zoomable, keyboard accessible and themed by the Minerva\n * CSS variables.\n */\nexport function Chart(props: ChartProps) {\n const {\n height,\n width,\n className,\n style,\n ref,\n onHover,\n onPointClick,\n onPlotClick,\n onZoom,\n onRendererChange,\n renderTooltip,\n } = props;\n return (\n <ChartBase\n options={engineOptions(props)}\n height={height}\n width={width}\n className={className}\n style={style}\n handleRef={ref}\n onHover={onHover}\n onPointClick={onPointClick}\n onPlotClick={onPlotClick}\n onZoom={onZoom}\n onRendererChange={onRendererChange}\n renderTooltip={renderTooltip}\n />\n );\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use client";const e=require("./Chart.cjs");let t=require("react"),n=require("react/jsx-runtime");var r=(e,t,n)=>e.map(e=>({...e,type:e.type??t,...n!==void 0&&(e.type??t)===`bar`?{stack:e.stack??n}:{}})),i=e=>({height:e.height,width:e.width,className:e.className,style:e.style,handleRef:e.ref,onHover:e.onHover,onPointClick:e.onPointClick,onZoom:e.onZoom,onRendererChange:e.onRendererChange});function a(a){let{series:o,area:s=!1}=a,c=(0,t.useMemo)(()=>r(o,s?`area`:`line`),[o,s]);return(0,n.jsx)(e.ChartBase,{options:e.engineOptions({...a,series:c}),...i(a)})}function o(a){let{series:o,stacked:s=!1}=a,c=(0,t.useMemo)(()=>r(o,`bar`,s?`stack`:void 0),[o,s]);return(0,n.jsx)(e.ChartBase,{options:e.engineOptions({...a,series:c}),...i(a)})}function s(a){let{series:o}=a,s=(0,t.useMemo)(()=>r(o,`scatter`),[o]);return(0,n.jsx)(e.ChartBase,{options:e.engineOptions({...a,series:s}),...i(a)})}var c={topLeft:`var(--danger-color, #ef4444)`,topRight:`var(--primary-color, #4f46e5)`,bottomLeft:`var(--warning-color, #f59e0b)`,bottomRight:`var(--text-secondary-color, #64748b)`};function l(r){let{points:a,xDomain:o=[0,10],yDomain:s=[0,10],xSplit:l,ySplit:u,quadrants:d,xLabel:f,yLabel:p,reverseX:m=!1,showLabels:h=!0,pointSize:g=12,name:_,onPointClick:v}=r,[y,b]=o,[x,S]=s,C=l??(y+b)/2,w=u??(x+S)/2,T=(0,t.useMemo)(()=>{let e=e=>({...d?.[e],color:d?.[e]?.color??c[e]});return{topLeft:e(`topLeft`),topRight:e(`topRight`),bottomLeft:e(`bottomLeft`),bottomRight:e(`bottomRight`)}},[d]),E=(0,t.useMemo)(()=>{let e=(e,t)=>{let n=m?e<C:e>=C;return t>=w?n?`topRight`:`topLeft`:n?`bottomRight`:`bottomLeft`};return[{type:`scatter`,name:_??``,pointSize:g,showLabels:h,opacity:.9,data:a.map(t=>({x:t.x,y:t.y,label:t.label,size:t.size,color:t.color??T[e(t.x,t.y)].color}))}]},[a,T,m,C,w,_,g,h]),D=(0,t.useMemo)(()=>{let e=m?[C,b]:[y,C],t=m?[y,C]:[C,b],n=(e,[t,n],[r,i],a)=>({type:`rect`,x0:t,x1:n,y0:r,y1:i,color:T[e].color,opacity:.07,label:T[e].label,labelPosition:a});return[n(`topLeft`,e,[w,S],`top-left`),n(`topRight`,t,[w,S],`top-right`),n(`bottomLeft`,e,[x,w],`bottom-left`),n(`bottomRight`,t,[x,w],`bottom-right`),{type:`line`,axis:`x`,value:C,dash:[],color:`var(--border-strong-color, var(--border-color, #cbd5e1))`},{type:`line`,axis:`y`,value:w,dash:[],color:`var(--border-strong-color, var(--border-color, #cbd5e1))`},...r.annotations??[]]},[T,m,y,b,x,S,C,w,r.annotations]),O=e.engineOptions({...r,series:E,annotations:D,xAxis:{min:y,max:b,title:f,reverse:m,nice:!1,grid:!1,tickCount:4},yAxis:{min:x,max:S,title:p,nice:!1,grid:!1,tickCount:4},legend:r.legend??!1,interaction:r.interaction??{zoom:!1}});return(0,n.jsx)(e.ChartBase,{options:O,...i({...r,onPointClick:void 0}),onPointClick:v?e=>{let t=e.items[0]?.index;t!==void 0&&a[t]&&v(a[t],t)}:void 0})}exports.BarChart=o,exports.LineChart=a,exports.QuadrantChart=l,exports.ScatterChart=s;
1
+ "use client";const e=require("./Chart.cjs"),t=require("../engine/presets.cjs");let n=require("react"),r=require("react/jsx-runtime");var i=e=>({height:e.height,width:e.width,className:e.className,style:e.style,handleRef:e.ref,onHover:e.onHover,onPointClick:e.onPointClick,onPlotClick:e.onPlotClick,onZoom:e.onZoom,onRendererChange:e.onRendererChange,renderTooltip:e.renderTooltip});function a(a){let{series:o,area:s=!1,curve:c,stacked:l=!1,percent:u=!1}=a,d=(0,n.useMemo)(()=>t.lineSeries(o,s,{curve:c,stacked:l||u}),[o,s,c,l,u]);return(0,r.jsx)(e.ChartBase,{options:e.engineOptions({...a,series:d,stackMode:u?`percent`:void 0}),...i(a)})}function o(a){let{series:o,curve:s=`smooth`,stacked:c=!1,percent:l=!1}=a,u=(0,n.useMemo)(()=>t.areaSeries(o,{curve:s,stacked:c||l}),[o,s,c,l]);return(0,r.jsx)(e.ChartBase,{options:e.engineOptions({...a,series:u,stackMode:l?`percent`:void 0}),...i(a)})}function s(a){let{series:o,stacked:s=!1,percent:c=!1,labels:l=!1}=a,u=(0,n.useMemo)(()=>t.barSeries(o,s||c,l),[o,s,c,l]);return(0,r.jsx)(e.ChartBase,{options:e.engineOptions({...a,series:u,stackMode:c?`percent`:void 0}),...i(a)})}function c(a){let{series:o}=a,s=(0,n.useMemo)(()=>t.candlestickSeries(o),[o]);return(0,r.jsx)(e.ChartBase,{options:e.engineOptions({...a,series:s}),...i(a)})}function l(a){let{data:o,xCategories:s,yCategories:c,colorScale:l,valueRange:u,name:d,radius:f,format:p}=a,m=(0,n.useMemo)(()=>t.heatmapChartOptions({data:o,xCategories:s,yCategories:c,colorScale:l,valueRange:u,name:d,radius:f,format:p}).series,[o,s,c,l,u,d,f,p]),h=e.engineOptions({...a,series:m});return(0,r.jsx)(e.ChartBase,{options:{...t.heatmapChartOptions({data:o,xCategories:s,yCategories:c},{...h,legend:a.legend,interaction:a.interaction,tooltip:a.tooltip}),series:m},...i(a)})}function u(i){let{data:a,type:o,color:s,curve:c,name:l,reference:u,format:d,height:f=48,width:p,renderer:m,tooltip:h,palette:g,ariaLabel:_,className:v,style:y,ref:b,onHover:x,renderTooltip:S}=i,C=(0,n.useMemo)(()=>t.sparklineOptions({data:a,type:o,color:s,curve:c,name:l,reference:u,format:d},{renderer:m,tooltip:h,palette:g,ariaLabel:_}),[a,o,s,c,l,u,d,m,h,g,_]);return(0,r.jsx)(e.ChartBase,{options:C,height:f,width:p,className:v,style:y,handleRef:b,onHover:x,renderTooltip:S})}function d(a){let{series:o}=a,s=(0,n.useMemo)(()=>t.scatterSeries(o),[o]);return(0,r.jsx)(e.ChartBase,{options:e.engineOptions({...a,series:s}),...i(a)})}var f=[`topLeft`,`topRight`,`bottomLeft`,`bottomRight`],p=(e,t,n)=>{let r=e.endsWith(`Left`),i=e.startsWith(`top`);return{position:`absolute`,left:r?0:n.x-t.x,top:i?0:n.y-t.y,width:r?n.x-t.x:t.x+t.width-n.x,height:i?n.y-t.y:t.y+t.height-n.y,pointerEvents:`none`}};function m(n){let{points:a,xDomain:o,yDomain:s,xSplit:c,ySplit:l,quadrants:u,xLabel:d,yLabel:m,axisLabels:h,showTicks:g,reverseX:_,showLabels:v,pointSize:y,name:b,draggable:x,onPointClick:S,onPointDrop:C,onQuadrantClick:w,renderTooltip:T,quadrantContent:E}=n,D={xDomain:o,yDomain:s,xSplit:c,ySplit:l,reverseX:_},O=t.quadrantChartOptions({points:a,xDomain:o,yDomain:s,xSplit:c,ySplit:l,quadrants:u,xLabel:d,yLabel:m,axisLabels:h,showTicks:g,reverseX:_,showLabels:v,pointSize:y,name:b,draggable:x??!!C},e.engineOptions({...n,series:[]})),k=E?e=>{let[t,n]=o??[0,10],[i,a]=s??[0,10],u=c??(t+n)/2,d=l??(i+a)/2,m=(u-t)/(n-t||1),h=(d-i)/(a-i||1),g={x:e.x+e.width*(_?1-m:m),y:e.y+e.height*(1-h)};return f.map(t=>E[t]?(0,r.jsx)(`div`,{className:`minerva-chart-quadrant minerva-chart-quadrant-${t}`,style:p(t,e,g),children:E[t]},t):null)}:void 0;return(0,r.jsx)(e.ChartBase,{options:O,...i({...n,onPointClick:void 0,renderTooltip:void 0}),overlay:k,onPointClick:S?e=>{let t=e.items[0]?.index;t!==void 0&&a[t]&&S(a[t],t)}:void 0,onPlotClick:w?e=>w(t.quadrantOf(D,e.x,e.y),e):void 0,onDrop:C?e=>{let n=e.item.index;a[n]&&C(a[n],n,{x:e.x,y:e.y,quadrant:t.quadrantOf(D,e.x,e.y)})}:void 0,renderTooltip:T?e=>{let t=e.items[0]?.index;return t!==void 0&&a[t]?T(a[t],t):null}:void 0})}exports.AreaChart=o,exports.BarChart=s,exports.CandlestickChart=c,exports.HeatmapChart=l,exports.LineChart=a,exports.QuadrantChart=m,exports.ScatterChart=d,exports.Sparkline=u;
2
2
  //# sourceMappingURL=charts.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"charts.cjs","names":["useMemo","ChartBase","engineOptions","require_Chart","react","react_jsx_runtime","withType","series","s","type","stack","frameProps","props","LineChart","input","area","BarChart","stacked","ScatterChart","DEFAULT_QUADRANT_COLORS","QuadrantChart","x0","x1","xDomain","y0","y1","yDomain","xs","xSplit","ys","ySplit","regions","region","quadrants","corner","cornerOf","right","reverseX","x","y","name","points","p","pointSize","showLabels","annotations","left","rect","xa","xb","ya","yb","position","options","xLabel","yLabel","onPointClick","index","event"],"sources":["../../../../charts/src/react/charts.tsx"],"sourcesContent":["import { useMemo } from \"react\";\nimport type {\n ChartAnnotation,\n ChartSeries,\n ChartSeriesType,\n} from \"../engine/types\";\nimport { ChartBase, engineOptions } from \"./Chart\";\nimport type {\n BarChartProps,\n ChartCommonProps,\n LineChartProps,\n QuadrantChartProps,\n QuadrantRegion,\n ScatterChartProps,\n} from \"./types\";\n\nconst withType = (\n series: readonly ChartSeries[],\n type: ChartSeriesType,\n stack?: string,\n): ChartSeries[] =>\n series.map((s) => ({\n ...s,\n type: s.type ?? type,\n ...(stack !== undefined && (s.type ?? type) === \"bar\"\n ? { stack: s.stack ?? stack }\n : {}),\n }));\n\nconst frameProps = (props: ChartCommonProps) => ({\n height: props.height,\n width: props.width,\n className: props.className,\n style: props.style,\n handleRef: props.ref,\n onHover: props.onHover,\n onPointClick: props.onPointClick,\n onZoom: props.onZoom,\n onRendererChange: props.onRendererChange,\n});\n\n/** Line (or area) chart; handles millions of points on the GPU */\nexport function LineChart(props: LineChartProps) {\n const { series: input, area = false } = props;\n const series = useMemo(\n () => withType(input, area ? \"area\" : \"line\"),\n [input, area],\n );\n return (\n <ChartBase\n options={engineOptions({ ...props, series })}\n {...frameProps(props)}\n />\n );\n}\n\n/** Bar chart: grouped side by side, or stacked */\nexport function BarChart(props: BarChartProps) {\n const { series: input, stacked = false } = props;\n const series = useMemo(\n () => withType(input, \"bar\", stacked ? \"stack\" : undefined),\n [input, stacked],\n );\n return (\n <ChartBase\n options={engineOptions({ ...props, series })}\n {...frameProps(props)}\n />\n );\n}\n\n/** Scatter chart: zooms on both axes, hit testing through a spatial index */\nexport function ScatterChart(props: ScatterChartProps) {\n const { series: input } = props;\n const series = useMemo(() => withType(input, \"scatter\"), [input]);\n return (\n <ChartBase\n options={engineOptions({ ...props, series })}\n {...frameProps(props)}\n />\n );\n}\n\nconst DEFAULT_QUADRANT_COLORS = {\n topLeft: \"var(--danger-color, #ef4444)\",\n topRight: \"var(--primary-color, #4f46e5)\",\n bottomLeft: \"var(--warning-color, #f59e0b)\",\n bottomRight: \"var(--text-secondary-color, #64748b)\",\n} as const;\n\ntype Corner = keyof typeof DEFAULT_QUADRANT_COLORS;\n\n/**\n * Four-quadrant matrix (priority matrix, Eisenhower, BCG, ...): tinted\n * quadrants with titles, dividers, and labelled dots placed without\n * overlapping labels.\n */\nexport function QuadrantChart(props: QuadrantChartProps) {\n const {\n points,\n xDomain = [0, 10],\n yDomain = [0, 10],\n xSplit,\n ySplit,\n quadrants,\n xLabel,\n yLabel,\n reverseX = false,\n showLabels = true,\n pointSize = 12,\n name,\n onPointClick,\n } = props;\n const [x0, x1] = xDomain;\n const [y0, y1] = yDomain;\n const xs = xSplit ?? (x0 + x1) / 2;\n const ys = ySplit ?? (y0 + y1) / 2;\n\n const regions = useMemo(() => {\n const region = (\n corner: Corner,\n ): Required<Pick<QuadrantRegion, \"color\">> & QuadrantRegion => ({\n ...quadrants?.[corner],\n color: quadrants?.[corner]?.color ?? DEFAULT_QUADRANT_COLORS[corner],\n });\n return {\n topLeft: region(\"topLeft\"),\n topRight: region(\"topRight\"),\n bottomLeft: region(\"bottomLeft\"),\n bottomRight: region(\"bottomRight\"),\n };\n }, [quadrants]);\n\n const series = useMemo((): ChartSeries[] => {\n const cornerOf = (x: number, y: number): Corner => {\n const right = reverseX ? x < xs : x >= xs;\n const top = y >= ys;\n return top\n ? right\n ? \"topRight\"\n : \"topLeft\"\n : right\n ? \"bottomRight\"\n : \"bottomLeft\";\n };\n return [\n {\n type: \"scatter\",\n name: name ?? \"\",\n pointSize,\n showLabels,\n opacity: 0.9,\n data: points.map((p) => ({\n x: p.x,\n y: p.y,\n label: p.label,\n size: p.size,\n color: p.color ?? regions[cornerOf(p.x, p.y)].color,\n })),\n },\n ];\n }, [points, regions, reverseX, xs, ys, name, pointSize, showLabels]);\n\n const annotations = useMemo((): ChartAnnotation[] => {\n // visual left / right -> data ranges\n const left: [number, number] = reverseX ? [xs, x1] : [x0, xs];\n const right: [number, number] = reverseX ? [x0, xs] : [xs, x1];\n const rect = (\n corner: Corner,\n [xa, xb]: [number, number],\n [ya, yb]: [number, number],\n position: \"top-left\" | \"top-right\" | \"bottom-left\" | \"bottom-right\",\n ): ChartAnnotation => ({\n type: \"rect\",\n x0: xa,\n x1: xb,\n y0: ya,\n y1: yb,\n color: regions[corner].color,\n opacity: 0.07,\n label: regions[corner].label,\n labelPosition: position,\n });\n return [\n rect(\"topLeft\", left, [ys, y1], \"top-left\"),\n rect(\"topRight\", right, [ys, y1], \"top-right\"),\n rect(\"bottomLeft\", left, [y0, ys], \"bottom-left\"),\n rect(\"bottomRight\", right, [y0, ys], \"bottom-right\"),\n {\n type: \"line\",\n axis: \"x\",\n value: xs,\n dash: [],\n color: \"var(--border-strong-color, var(--border-color, #cbd5e1))\",\n },\n {\n type: \"line\",\n axis: \"y\",\n value: ys,\n dash: [],\n color: \"var(--border-strong-color, var(--border-color, #cbd5e1))\",\n },\n ...(props.annotations ?? []),\n ];\n }, [regions, reverseX, x0, x1, y0, y1, xs, ys, props.annotations]);\n\n const options = engineOptions({\n ...props,\n series,\n annotations,\n xAxis: {\n min: x0,\n max: x1,\n title: xLabel,\n reverse: reverseX,\n nice: false,\n grid: false,\n tickCount: 4,\n },\n yAxis: {\n min: y0,\n max: y1,\n title: yLabel,\n nice: false,\n grid: false,\n tickCount: 4,\n },\n legend: props.legend ?? false,\n interaction: props.interaction ?? { zoom: false },\n });\n\n return (\n <ChartBase\n options={options}\n {...frameProps({ ...props, onPointClick: undefined })}\n onPointClick={\n onPointClick\n ? (event) => {\n const index = event.items[0]?.index;\n if (index !== undefined && points[index])\n onPointClick(points[index], index);\n }\n : undefined\n }\n />\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"charts.cjs","names":["useMemo","lineSeries","ChartBase","engineOptions","areaSeries","barSeries","candlestickSeries","heatmapChartOptions","sparklineOptions","scatterSeries","quadrantChartOptions","quadrantOf","require_Chart","require_presets","react","react_jsx_runtime","frameProps","props","LineChart","input","series","area","stacked","percent","curve","AreaChart","BarChart","labels","CandlestickChart","HeatmapChart","data","xCategories","yCategories","colorScale","valueRange","name","radius","format","base","Sparkline","options","type","color","reference","renderer","tooltip","palette","ariaLabel","ref","ScatterChart","CORNERS","cornerStyle","left","corner","top","split","plot","QuadrantChart","geometry","draggable","onPointDrop","overlay","quadrantContent","x0","x1","xDomain","y0","y1","yDomain","xs","xSplit","ys","ySplit","fx","fy","reverseX","onPointClick","index","event","points","onQuadrantClick","at","renderTooltip"],"sources":["../../../../charts/src/react/charts.tsx"],"sourcesContent":["import { useMemo, type CSSProperties } from \"react\";\nimport {\n areaSeries,\n barSeries,\n candlestickSeries,\n heatmapChartOptions,\n lineSeries,\n quadrantChartOptions,\n quadrantOf,\n scatterSeries,\n sparklineOptions,\n type QuadrantCorner,\n} from \"../engine/presets\";\nimport type { ChartRect } from \"../engine/types\";\nimport { ChartBase, engineOptions } from \"./Chart\";\nimport type {\n AreaChartProps,\n BarChartProps,\n CandlestickChartProps,\n ChartCommonProps,\n HeatmapChartProps,\n LineChartProps,\n QuadrantChartProps,\n ScatterChartProps,\n SparklineProps,\n} from \"./types\";\n\nconst frameProps = (props: ChartCommonProps) => ({\n height: props.height,\n width: props.width,\n className: props.className,\n style: props.style,\n handleRef: props.ref,\n onHover: props.onHover,\n onPointClick: props.onPointClick,\n onPlotClick: props.onPlotClick,\n onZoom: props.onZoom,\n onRendererChange: props.onRendererChange,\n renderTooltip: props.renderTooltip,\n});\n\n/** Line (or area) chart; handles millions of points on the GPU */\nexport function LineChart(props: LineChartProps) {\n const {\n series: input,\n area = false,\n curve,\n stacked = false,\n percent = false,\n } = props;\n const series = useMemo(\n () => lineSeries(input, area, { curve, stacked: stacked || percent }),\n [input, area, curve, stacked, percent],\n );\n return (\n <ChartBase\n options={engineOptions({\n ...props,\n series,\n stackMode: percent ? \"percent\" : undefined,\n })}\n {...frameProps(props)}\n />\n );\n}\n\n/** Area chart: smooth by default, stacked or 100% stacked */\nexport function AreaChart(props: AreaChartProps) {\n const {\n series: input,\n curve = \"smooth\",\n stacked = false,\n percent = false,\n } = props;\n const series = useMemo(\n () => areaSeries(input, { curve, stacked: stacked || percent }),\n [input, curve, stacked, percent],\n );\n return (\n <ChartBase\n options={engineOptions({\n ...props,\n series,\n stackMode: percent ? \"percent\" : undefined,\n })}\n {...frameProps(props)}\n />\n );\n}\n\n/** Bar chart: grouped side by side, stacked or 100% stacked, with optional value labels */\nexport function BarChart(props: BarChartProps) {\n const {\n series: input,\n stacked = false,\n percent = false,\n labels = false,\n } = props;\n const series = useMemo(\n () => barSeries(input, stacked || percent, labels),\n [input, stacked, percent, labels],\n );\n return (\n <ChartBase\n options={engineOptions({\n ...props,\n series,\n stackMode: percent ? \"percent\" : undefined,\n })}\n {...frameProps(props)}\n />\n );\n}\n\n/** Candlestick (OHLC) chart: rising and falling candles, zoomable on the GPU */\nexport function CandlestickChart(props: CandlestickChartProps) {\n const { series: input } = props;\n const series = useMemo(() => candlestickSeries(input), [input]);\n return (\n <ChartBase\n options={engineOptions({ ...props, series })}\n {...frameProps(props)}\n />\n );\n}\n\n/** Heatmap: a grid of cells colored by value (categories or numbers on both axes) */\nexport function HeatmapChart(props: HeatmapChartProps) {\n const {\n data,\n xCategories,\n yCategories,\n colorScale,\n valueRange,\n name,\n radius,\n format,\n } = props;\n const series = useMemo(\n () =>\n heatmapChartOptions({\n data,\n xCategories,\n yCategories,\n colorScale,\n valueRange,\n name,\n radius,\n format,\n }).series,\n [\n data,\n xCategories,\n yCategories,\n colorScale,\n valueRange,\n name,\n radius,\n format,\n ],\n );\n const base = engineOptions({ ...props, series });\n return (\n <ChartBase\n options={{\n ...heatmapChartOptions(\n { data, xCategories, yCategories },\n {\n ...base,\n legend: props.legend,\n interaction: props.interaction,\n tooltip: props.tooltip,\n },\n ),\n series,\n }}\n {...frameProps(props)}\n />\n );\n}\n\n/** Word-sized chart without axes: a trend in a table cell, a KPI card, ... */\nexport function Sparkline(props: SparklineProps) {\n const {\n data,\n type,\n color,\n curve,\n name,\n reference,\n format,\n height = 48,\n width,\n renderer,\n tooltip,\n palette,\n ariaLabel,\n className,\n style,\n ref,\n onHover,\n renderTooltip,\n } = props;\n const options = useMemo(\n () =>\n sparklineOptions(\n { data, type, color, curve, name, reference, format },\n { renderer, tooltip, palette, ariaLabel },\n ),\n [\n data,\n type,\n color,\n curve,\n name,\n reference,\n format,\n renderer,\n tooltip,\n palette,\n ariaLabel,\n ],\n );\n return (\n <ChartBase\n options={options}\n height={height}\n width={width}\n className={className}\n style={style}\n handleRef={ref}\n onHover={onHover}\n renderTooltip={renderTooltip}\n />\n );\n}\n\n/** Scatter chart: zooms on both axes, hit testing through a spatial index */\nexport function ScatterChart(props: ScatterChartProps) {\n const { series: input } = props;\n const series = useMemo(() => scatterSeries(input), [input]);\n return (\n <ChartBase\n options={engineOptions({ ...props, series })}\n {...frameProps(props)}\n />\n );\n}\n\nconst CORNERS: QuadrantCorner[] = [\n \"topLeft\",\n \"topRight\",\n \"bottomLeft\",\n \"bottomRight\",\n];\n\nconst cornerStyle = (\n corner: QuadrantCorner,\n plot: ChartRect,\n split: { x: number; y: number },\n): CSSProperties => {\n const left = corner.endsWith(\"Left\");\n const top = corner.startsWith(\"top\");\n return {\n position: \"absolute\",\n left: left ? 0 : split.x - plot.x,\n top: top ? 0 : split.y - plot.y,\n width: left ? split.x - plot.x : plot.x + plot.width - split.x,\n height: top ? split.y - plot.y : plot.y + plot.height - split.y,\n pointerEvents: \"none\",\n };\n};\n\n/**\n * Four-quadrant matrix (priority matrix, Eisenhower, BCG, ...): tinted\n * quadrants with titles, dividers, and labelled dots placed without\n * overlapping labels. Dots can be dragged to another quadrant.\n */\nexport function QuadrantChart(props: QuadrantChartProps) {\n const {\n points,\n xDomain,\n yDomain,\n xSplit,\n ySplit,\n quadrants,\n xLabel,\n yLabel,\n axisLabels,\n showTicks,\n reverseX,\n showLabels,\n pointSize,\n name,\n draggable,\n onPointClick,\n onPointDrop,\n onQuadrantClick,\n renderTooltip,\n quadrantContent,\n } = props;\n const geometry = { xDomain, yDomain, xSplit, ySplit, reverseX };\n\n const options = quadrantChartOptions(\n {\n points,\n xDomain,\n yDomain,\n xSplit,\n ySplit,\n quadrants,\n xLabel,\n yLabel,\n axisLabels,\n showTicks,\n reverseX,\n showLabels,\n pointSize,\n name,\n draggable: draggable ?? !!onPointDrop,\n },\n engineOptions({ ...props, series: [] }),\n );\n\n const overlay = quadrantContent\n ? (plot: ChartRect) => {\n const [x0, x1] = xDomain ?? [0, 10];\n const [y0, y1] = yDomain ?? [0, 10];\n const xs = xSplit ?? (x0 + x1) / 2;\n const ys = ySplit ?? (y0 + y1) / 2;\n const fx = (xs - x0) / (x1 - x0 || 1);\n const fy = (ys - y0) / (y1 - y0 || 1);\n const split = {\n x: plot.x + plot.width * (reverseX ? 1 - fx : fx),\n y: plot.y + plot.height * (1 - fy),\n };\n return CORNERS.map((corner) =>\n quadrantContent[corner] ? (\n <div\n key={corner}\n className={`minerva-chart-quadrant minerva-chart-quadrant-${corner}`}\n style={cornerStyle(corner, plot, split)}\n >\n {quadrantContent[corner]}\n </div>\n ) : null,\n );\n }\n : undefined;\n\n return (\n <ChartBase\n options={options}\n {...frameProps({\n ...props,\n onPointClick: undefined,\n renderTooltip: undefined,\n })}\n overlay={overlay}\n onPointClick={\n onPointClick\n ? (event) => {\n const index = event.items[0]?.index;\n if (index !== undefined && points[index])\n onPointClick(points[index], index);\n }\n : undefined\n }\n onPlotClick={\n onQuadrantClick\n ? (at) => onQuadrantClick(quadrantOf(geometry, at.x, at.y), at)\n : undefined\n }\n onDrop={\n onPointDrop\n ? (event) => {\n const index = event.item.index;\n if (!points[index]) return;\n onPointDrop(points[index], index, {\n x: event.x,\n y: event.y,\n quadrant: quadrantOf(geometry, event.x, event.y),\n });\n }\n : undefined\n }\n renderTooltip={\n renderTooltip\n ? (event) => {\n const index = event.items[0]?.index;\n return index !== undefined && points[index]\n ? renderTooltip(points[index], index)\n : null;\n }\n : undefined\n }\n />\n );\n}\n"],"mappings":"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"}
@@ -1,13 +1,21 @@
1
- import { BarChartProps, LineChartProps, QuadrantChartProps, ScatterChartProps } from './types.cjs';
1
+ import { AreaChartProps, BarChartProps, CandlestickChartProps, HeatmapChartProps, LineChartProps, QuadrantChartProps, ScatterChartProps, SparklineProps } from './types.cjs';
2
2
  /** Line (or area) chart; handles millions of points on the GPU */
3
3
  export declare function LineChart(props: LineChartProps): import('react').JSX.Element;
4
- /** Bar chart: grouped side by side, or stacked */
4
+ /** Area chart: smooth by default, stacked or 100% stacked */
5
+ export declare function AreaChart(props: AreaChartProps): import('react').JSX.Element;
6
+ /** Bar chart: grouped side by side, stacked or 100% stacked, with optional value labels */
5
7
  export declare function BarChart(props: BarChartProps): import('react').JSX.Element;
8
+ /** Candlestick (OHLC) chart: rising and falling candles, zoomable on the GPU */
9
+ export declare function CandlestickChart(props: CandlestickChartProps): import('react').JSX.Element;
10
+ /** Heatmap: a grid of cells colored by value (categories or numbers on both axes) */
11
+ export declare function HeatmapChart(props: HeatmapChartProps): import('react').JSX.Element;
12
+ /** Word-sized chart without axes: a trend in a table cell, a KPI card, ... */
13
+ export declare function Sparkline(props: SparklineProps): import('react').JSX.Element;
6
14
  /** Scatter chart: zooms on both axes, hit testing through a spatial index */
7
15
  export declare function ScatterChart(props: ScatterChartProps): import('react').JSX.Element;
8
16
  /**
9
17
  * Four-quadrant matrix (priority matrix, Eisenhower, BCG, ...): tinted
10
18
  * quadrants with titles, dividers, and labelled dots placed without
11
- * overlapping labels.
19
+ * overlapping labels. Dots can be dragged to another quadrant.
12
20
  */
13
21
  export declare function QuadrantChart(props: QuadrantChartProps): import('react').JSX.Element;
@@ -1,13 +1,21 @@
1
- import { BarChartProps, LineChartProps, QuadrantChartProps, ScatterChartProps } from './types.js';
1
+ import { AreaChartProps, BarChartProps, CandlestickChartProps, HeatmapChartProps, LineChartProps, QuadrantChartProps, ScatterChartProps, SparklineProps } from './types.js';
2
2
  /** Line (or area) chart; handles millions of points on the GPU */
3
3
  export declare function LineChart(props: LineChartProps): import('react').JSX.Element;
4
- /** Bar chart: grouped side by side, or stacked */
4
+ /** Area chart: smooth by default, stacked or 100% stacked */
5
+ export declare function AreaChart(props: AreaChartProps): import('react').JSX.Element;
6
+ /** Bar chart: grouped side by side, stacked or 100% stacked, with optional value labels */
5
7
  export declare function BarChart(props: BarChartProps): import('react').JSX.Element;
8
+ /** Candlestick (OHLC) chart: rising and falling candles, zoomable on the GPU */
9
+ export declare function CandlestickChart(props: CandlestickChartProps): import('react').JSX.Element;
10
+ /** Heatmap: a grid of cells colored by value (categories or numbers on both axes) */
11
+ export declare function HeatmapChart(props: HeatmapChartProps): import('react').JSX.Element;
12
+ /** Word-sized chart without axes: a trend in a table cell, a KPI card, ... */
13
+ export declare function Sparkline(props: SparklineProps): import('react').JSX.Element;
6
14
  /** Scatter chart: zooms on both axes, hit testing through a spatial index */
7
15
  export declare function ScatterChart(props: ScatterChartProps): import('react').JSX.Element;
8
16
  /**
9
17
  * Four-quadrant matrix (priority matrix, Eisenhower, BCG, ...): tinted
10
18
  * quadrants with titles, dividers, and labelled dots placed without
11
- * overlapping labels.
19
+ * overlapping labels. Dots can be dragged to another quadrant.
12
20
  */
13
21
  export declare function QuadrantChart(props: QuadrantChartProps): import('react').JSX.Element;