minerva-design 1.3.0 → 1.5.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 (1337) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/README.md +21 -21
  3. package/custom-elements.json +18546 -7329
  4. package/dist/angular/fesm2022/minerva-angular.mjs +8303 -172
  5. package/dist/angular/fesm2022/minerva-angular.mjs.map +1 -1
  6. package/dist/angular/types/minerva-angular.d.ts +2809 -0
  7. package/dist/charts/canvas.d.cts +8 -3
  8. package/dist/charts/canvas.d.ts +8 -3
  9. package/dist/charts/core.cjs +1 -1
  10. package/dist/charts/core.d.cts +10 -5
  11. package/dist/charts/core.d.ts +10 -5
  12. package/dist/charts/core.js +27 -8
  13. package/dist/charts/engine/axis.cjs +1 -1
  14. package/dist/charts/engine/axis.cjs.map +1 -1
  15. package/dist/charts/engine/axis.js +43 -20
  16. package/dist/charts/engine/axis.js.map +1 -1
  17. package/dist/charts/engine/canvas.cjs +1 -1
  18. package/dist/charts/engine/canvas.cjs.map +1 -1
  19. package/dist/charts/engine/canvas.d.cts +11 -1
  20. package/dist/charts/engine/canvas.d.ts +11 -1
  21. package/dist/charts/engine/canvas.js +193 -116
  22. package/dist/charts/engine/canvas.js.map +1 -1
  23. package/dist/charts/engine/chart.cjs +1 -1
  24. package/dist/charts/engine/chart.cjs.map +1 -1
  25. package/dist/charts/engine/chart.d.cts +1 -1
  26. package/dist/charts/engine/chart.d.ts +1 -1
  27. package/dist/charts/engine/chart.js +486 -350
  28. package/dist/charts/engine/chart.js.map +1 -1
  29. package/dist/charts/engine/color.cjs +1 -1
  30. package/dist/charts/engine/color.cjs.map +1 -1
  31. package/dist/charts/engine/color.d.cts +18 -0
  32. package/dist/charts/engine/color.d.ts +18 -0
  33. package/dist/charts/engine/color.js +47 -1
  34. package/dist/charts/engine/color.js.map +1 -1
  35. package/dist/charts/engine/controller.cjs +2 -2
  36. package/dist/charts/engine/controller.cjs.map +1 -1
  37. package/dist/charts/engine/controller.d.cts +44 -4
  38. package/dist/charts/engine/controller.d.ts +44 -4
  39. package/dist/charts/engine/controller.js +421 -314
  40. package/dist/charts/engine/controller.js.map +1 -1
  41. package/dist/charts/engine/data.cjs +1 -1
  42. package/dist/charts/engine/data.cjs.map +1 -1
  43. package/dist/charts/engine/data.d.cts +9 -1
  44. package/dist/charts/engine/data.d.ts +9 -1
  45. package/dist/charts/engine/data.js +65 -49
  46. package/dist/charts/engine/data.js.map +1 -1
  47. package/dist/charts/engine/defaults.cjs +2 -0
  48. package/dist/charts/engine/defaults.cjs.map +1 -0
  49. package/dist/charts/engine/defaults.d.cts +20 -0
  50. package/dist/charts/engine/defaults.d.ts +20 -0
  51. package/dist/charts/engine/defaults.js +35 -0
  52. package/dist/charts/engine/defaults.js.map +1 -0
  53. package/dist/charts/engine/format.cjs +1 -1
  54. package/dist/charts/engine/format.cjs.map +1 -1
  55. package/dist/charts/engine/format.d.cts +27 -6
  56. package/dist/charts/engine/format.d.ts +27 -6
  57. package/dist/charts/engine/format.js +59 -21
  58. package/dist/charts/engine/format.js.map +1 -1
  59. package/dist/charts/engine/graph/chart.cjs +2 -0
  60. package/dist/charts/engine/graph/chart.cjs.map +1 -0
  61. package/dist/charts/engine/graph/chart.d.cts +3 -0
  62. package/dist/charts/engine/graph/chart.d.ts +3 -0
  63. package/dist/charts/engine/graph/chart.js +1565 -0
  64. package/dist/charts/engine/graph/chart.js.map +1 -0
  65. package/dist/charts/engine/graph/circular.cjs +2 -0
  66. package/dist/charts/engine/graph/circular.cjs.map +1 -0
  67. package/dist/charts/engine/graph/circular.d.cts +16 -0
  68. package/dist/charts/engine/graph/circular.d.ts +16 -0
  69. package/dist/charts/engine/graph/circular.js +62 -0
  70. package/dist/charts/engine/graph/circular.js.map +1 -0
  71. package/dist/charts/engine/graph/dag.cjs +2 -0
  72. package/dist/charts/engine/graph/dag.cjs.map +1 -0
  73. package/dist/charts/engine/graph/dag.d.cts +34 -0
  74. package/dist/charts/engine/graph/dag.d.ts +34 -0
  75. package/dist/charts/engine/graph/dag.js +314 -0
  76. package/dist/charts/engine/graph/dag.js.map +1 -0
  77. package/dist/charts/engine/graph/dom.cjs +2 -0
  78. package/dist/charts/engine/graph/dom.cjs.map +1 -0
  79. package/dist/charts/engine/graph/dom.d.cts +23 -0
  80. package/dist/charts/engine/graph/dom.d.ts +23 -0
  81. package/dist/charts/engine/graph/dom.js +158 -0
  82. package/dist/charts/engine/graph/dom.js.map +1 -0
  83. package/dist/charts/engine/graph/force.cjs +2 -0
  84. package/dist/charts/engine/graph/force.cjs.map +1 -0
  85. package/dist/charts/engine/graph/force.d.cts +67 -0
  86. package/dist/charts/engine/graph/force.d.ts +67 -0
  87. package/dist/charts/engine/graph/force.js +325 -0
  88. package/dist/charts/engine/graph/force.js.map +1 -0
  89. package/dist/charts/engine/graph/geometry.cjs +2 -0
  90. package/dist/charts/engine/graph/geometry.cjs.map +1 -0
  91. package/dist/charts/engine/graph/geometry.d.cts +37 -0
  92. package/dist/charts/engine/graph/geometry.d.ts +37 -0
  93. package/dist/charts/engine/graph/geometry.js +144 -0
  94. package/dist/charts/engine/graph/geometry.js.map +1 -0
  95. package/dist/charts/engine/graph/index.cjs +1 -0
  96. package/dist/charts/engine/graph/index.d.cts +6 -0
  97. package/dist/charts/engine/graph/index.d.ts +6 -0
  98. package/dist/charts/engine/graph/index.js +6 -0
  99. package/dist/charts/engine/graph/labels.cjs +2 -0
  100. package/dist/charts/engine/graph/labels.cjs.map +1 -0
  101. package/dist/charts/engine/graph/labels.d.cts +12 -0
  102. package/dist/charts/engine/graph/labels.d.ts +12 -0
  103. package/dist/charts/engine/graph/labels.js +128 -0
  104. package/dist/charts/engine/graph/labels.js.map +1 -0
  105. package/dist/charts/engine/graph/model.cjs +2 -0
  106. package/dist/charts/engine/graph/model.cjs.map +1 -0
  107. package/dist/charts/engine/graph/model.d.cts +43 -0
  108. package/dist/charts/engine/graph/model.d.ts +43 -0
  109. package/dist/charts/engine/graph/model.js +88 -0
  110. package/dist/charts/engine/graph/model.js.map +1 -0
  111. package/dist/charts/engine/graph/sizing.cjs +2 -0
  112. package/dist/charts/engine/graph/sizing.cjs.map +1 -0
  113. package/dist/charts/engine/graph/sizing.d.cts +33 -0
  114. package/dist/charts/engine/graph/sizing.d.ts +33 -0
  115. package/dist/charts/engine/graph/sizing.js +60 -0
  116. package/dist/charts/engine/graph/sizing.js.map +1 -0
  117. package/dist/charts/engine/graph/tree.cjs +2 -0
  118. package/dist/charts/engine/graph/tree.cjs.map +1 -0
  119. package/dist/charts/engine/graph/tree.d.cts +30 -0
  120. package/dist/charts/engine/graph/tree.d.ts +30 -0
  121. package/dist/charts/engine/graph/tree.js +218 -0
  122. package/dist/charts/engine/graph/tree.js.map +1 -0
  123. package/dist/charts/engine/graph/types.d.cts +626 -0
  124. package/dist/charts/engine/graph/types.d.ts +626 -0
  125. package/dist/charts/engine/graph/worker.cjs +46 -0
  126. package/dist/charts/engine/graph/worker.cjs.map +1 -0
  127. package/dist/charts/engine/graph/worker.d.cts +36 -0
  128. package/dist/charts/engine/graph/worker.d.ts +36 -0
  129. package/dist/charts/engine/graph/worker.js +129 -0
  130. package/dist/charts/engine/graph/worker.js.map +1 -0
  131. package/dist/charts/engine/items.cjs +1 -1
  132. package/dist/charts/engine/items.cjs.map +1 -1
  133. package/dist/charts/engine/items.d.cts +15 -2
  134. package/dist/charts/engine/items.d.ts +15 -2
  135. package/dist/charts/engine/items.js +257 -81
  136. package/dist/charts/engine/items.js.map +1 -1
  137. package/dist/charts/engine/labels.cjs +2 -0
  138. package/dist/charts/engine/labels.cjs.map +1 -0
  139. package/dist/charts/engine/labels.d.cts +13 -0
  140. package/dist/charts/engine/labels.d.ts +13 -0
  141. package/dist/charts/engine/labels.js +98 -0
  142. package/dist/charts/engine/labels.js.map +1 -0
  143. package/dist/charts/engine/layout.cjs +1 -1
  144. package/dist/charts/engine/layout.cjs.map +1 -1
  145. package/dist/charts/engine/layout.d.cts +43 -2
  146. package/dist/charts/engine/layout.d.ts +43 -2
  147. package/dist/charts/engine/layout.js +62 -12
  148. package/dist/charts/engine/layout.js.map +1 -1
  149. package/dist/charts/engine/locale.cjs +2 -0
  150. package/dist/charts/engine/locale.cjs.map +1 -0
  151. package/dist/charts/engine/locale.d.cts +33 -0
  152. package/dist/charts/engine/locale.d.ts +33 -0
  153. package/dist/charts/engine/locale.js +68 -0
  154. package/dist/charts/engine/locale.js.map +1 -0
  155. package/dist/charts/engine/model.cjs +1 -1
  156. package/dist/charts/engine/model.cjs.map +1 -1
  157. package/dist/charts/engine/model.d.cts +77 -2
  158. package/dist/charts/engine/model.d.ts +77 -2
  159. package/dist/charts/engine/model.js +304 -116
  160. package/dist/charts/engine/model.js.map +1 -1
  161. package/dist/charts/engine/orderbook/book.cjs +2 -0
  162. package/dist/charts/engine/orderbook/book.cjs.map +1 -0
  163. package/dist/charts/engine/orderbook/book.d.cts +28 -0
  164. package/dist/charts/engine/orderbook/book.d.ts +28 -0
  165. package/dist/charts/engine/orderbook/book.js +134 -0
  166. package/dist/charts/engine/orderbook/book.js.map +1 -0
  167. package/dist/charts/engine/orderbook/depth.cjs +2 -0
  168. package/dist/charts/engine/orderbook/depth.cjs.map +1 -0
  169. package/dist/charts/engine/orderbook/depth.d.cts +7 -0
  170. package/dist/charts/engine/orderbook/depth.d.ts +7 -0
  171. package/dist/charts/engine/orderbook/depth.js +413 -0
  172. package/dist/charts/engine/orderbook/depth.js.map +1 -0
  173. package/dist/charts/engine/orderbook/format.cjs +2 -0
  174. package/dist/charts/engine/orderbook/format.cjs.map +1 -0
  175. package/dist/charts/engine/orderbook/format.d.cts +49 -0
  176. package/dist/charts/engine/orderbook/format.d.ts +49 -0
  177. package/dist/charts/engine/orderbook/format.js +65 -0
  178. package/dist/charts/engine/orderbook/format.js.map +1 -0
  179. package/dist/charts/engine/orderbook/heatmap.cjs +2 -0
  180. package/dist/charts/engine/orderbook/heatmap.cjs.map +1 -0
  181. package/dist/charts/engine/orderbook/heatmap.d.cts +9 -0
  182. package/dist/charts/engine/orderbook/heatmap.d.ts +9 -0
  183. package/dist/charts/engine/orderbook/heatmap.js +822 -0
  184. package/dist/charts/engine/orderbook/heatmap.js.map +1 -0
  185. package/dist/charts/engine/orderbook/host.cjs +2 -0
  186. package/dist/charts/engine/orderbook/host.cjs.map +1 -0
  187. package/dist/charts/engine/orderbook/host.d.cts +50 -0
  188. package/dist/charts/engine/orderbook/host.d.ts +50 -0
  189. package/dist/charts/engine/orderbook/host.js +161 -0
  190. package/dist/charts/engine/orderbook/host.js.map +1 -0
  191. package/dist/charts/engine/orderbook/index.cjs +1 -0
  192. package/dist/charts/engine/orderbook/index.d.cts +6 -0
  193. package/dist/charts/engine/orderbook/index.d.ts +6 -0
  194. package/dist/charts/engine/orderbook/index.js +6 -0
  195. package/dist/charts/engine/orderbook/ladder.cjs +2 -0
  196. package/dist/charts/engine/orderbook/ladder.cjs.map +1 -0
  197. package/dist/charts/engine/orderbook/ladder.d.cts +6 -0
  198. package/dist/charts/engine/orderbook/ladder.d.ts +6 -0
  199. package/dist/charts/engine/orderbook/ladder.js +341 -0
  200. package/dist/charts/engine/orderbook/ladder.js.map +1 -0
  201. package/dist/charts/engine/orderbook/layout.cjs +2 -0
  202. package/dist/charts/engine/orderbook/layout.cjs.map +1 -0
  203. package/dist/charts/engine/orderbook/layout.d.cts +37 -0
  204. package/dist/charts/engine/orderbook/layout.d.ts +37 -0
  205. package/dist/charts/engine/orderbook/layout.js +70 -0
  206. package/dist/charts/engine/orderbook/layout.js.map +1 -0
  207. package/dist/charts/engine/orderbook/tape.cjs +2 -0
  208. package/dist/charts/engine/orderbook/tape.cjs.map +1 -0
  209. package/dist/charts/engine/orderbook/tape.d.cts +6 -0
  210. package/dist/charts/engine/orderbook/tape.d.ts +6 -0
  211. package/dist/charts/engine/orderbook/tape.js +450 -0
  212. package/dist/charts/engine/orderbook/tape.js.map +1 -0
  213. package/dist/charts/engine/orderbook/types.d.cts +751 -0
  214. package/dist/charts/engine/orderbook/types.d.ts +751 -0
  215. package/dist/charts/engine/overlay.cjs +1 -1
  216. package/dist/charts/engine/overlay.cjs.map +1 -1
  217. package/dist/charts/engine/overlay.d.cts +28 -2
  218. package/dist/charts/engine/overlay.d.ts +28 -2
  219. package/dist/charts/engine/overlay.js +138 -96
  220. package/dist/charts/engine/overlay.js.map +1 -1
  221. package/dist/charts/engine/presets.cjs +2 -2
  222. package/dist/charts/engine/presets.cjs.map +1 -1
  223. package/dist/charts/engine/presets.d.cts +273 -3
  224. package/dist/charts/engine/presets.d.ts +273 -3
  225. package/dist/charts/engine/presets.js +390 -38
  226. package/dist/charts/engine/presets.js.map +1 -1
  227. package/dist/charts/engine/renderers/detect.cjs +1 -1
  228. package/dist/charts/engine/renderers/detect.cjs.map +1 -1
  229. package/dist/charts/engine/renderers/detect.d.cts +2 -1
  230. package/dist/charts/engine/renderers/detect.d.ts +2 -1
  231. package/dist/charts/engine/renderers/detect.js +24 -19
  232. package/dist/charts/engine/renderers/detect.js.map +1 -1
  233. package/dist/charts/engine/renderers/gl.cjs +2 -0
  234. package/dist/charts/engine/renderers/gl.cjs.map +1 -0
  235. package/dist/charts/engine/renderers/gl.d.cts +21 -0
  236. package/dist/charts/engine/renderers/gl.d.ts +21 -0
  237. package/dist/charts/engine/renderers/gl.js +56 -0
  238. package/dist/charts/engine/renderers/gl.js.map +1 -0
  239. package/dist/charts/engine/renderers/shaders.cjs +143 -1
  240. package/dist/charts/engine/renderers/shaders.cjs.map +1 -1
  241. package/dist/charts/engine/renderers/shaders.d.cts +16 -0
  242. package/dist/charts/engine/renderers/shaders.d.ts +16 -0
  243. package/dist/charts/engine/renderers/shaders.js +139 -1
  244. package/dist/charts/engine/renderers/shaders.js.map +1 -1
  245. package/dist/charts/engine/renderers/webgl.cjs +2 -0
  246. package/dist/charts/engine/renderers/webgl.cjs.map +1 -0
  247. package/dist/charts/engine/renderers/webgl.d.cts +4 -0
  248. package/dist/charts/engine/renderers/webgl.d.ts +4 -0
  249. package/dist/charts/engine/renderers/webgl.js +133 -0
  250. package/dist/charts/engine/renderers/webgl.js.map +1 -0
  251. package/dist/charts/engine/renderers/webgl2.cjs +1 -1
  252. package/dist/charts/engine/renderers/webgl2.cjs.map +1 -1
  253. package/dist/charts/engine/renderers/webgl2.d.cts +0 -1
  254. package/dist/charts/engine/renderers/webgl2.d.ts +0 -1
  255. package/dist/charts/engine/renderers/webgl2.js +59 -108
  256. package/dist/charts/engine/renderers/webgl2.js.map +1 -1
  257. package/dist/charts/engine/scale.cjs +1 -1
  258. package/dist/charts/engine/scale.cjs.map +1 -1
  259. package/dist/charts/engine/scale.js +1 -1
  260. package/dist/charts/engine/scale.js.map +1 -1
  261. package/dist/charts/engine/scene.cjs +1 -1
  262. package/dist/charts/engine/scene.cjs.map +1 -1
  263. package/dist/charts/engine/scene.d.cts +71 -8
  264. package/dist/charts/engine/scene.d.ts +71 -8
  265. package/dist/charts/engine/scene.js +465 -183
  266. package/dist/charts/engine/scene.js.map +1 -1
  267. package/dist/charts/engine/shapes/bullet.cjs +2 -0
  268. package/dist/charts/engine/shapes/bullet.cjs.map +1 -0
  269. package/dist/charts/engine/shapes/bullet.d.cts +6 -0
  270. package/dist/charts/engine/shapes/bullet.d.ts +6 -0
  271. package/dist/charts/engine/shapes/bullet.js +255 -0
  272. package/dist/charts/engine/shapes/bullet.js.map +1 -0
  273. package/dist/charts/engine/shapes/calendar.cjs +2 -0
  274. package/dist/charts/engine/shapes/calendar.cjs.map +1 -0
  275. package/dist/charts/engine/shapes/calendar.d.cts +38 -0
  276. package/dist/charts/engine/shapes/calendar.d.ts +38 -0
  277. package/dist/charts/engine/shapes/calendar.js +369 -0
  278. package/dist/charts/engine/shapes/calendar.js.map +1 -0
  279. package/dist/charts/engine/shapes/canvas.cjs +1 -1
  280. package/dist/charts/engine/shapes/canvas.cjs.map +1 -1
  281. package/dist/charts/engine/shapes/canvas.d.cts +7 -0
  282. package/dist/charts/engine/shapes/canvas.d.ts +7 -0
  283. package/dist/charts/engine/shapes/canvas.js +22 -13
  284. package/dist/charts/engine/shapes/canvas.js.map +1 -1
  285. package/dist/charts/engine/shapes/chart.cjs +1 -1
  286. package/dist/charts/engine/shapes/chart.cjs.map +1 -1
  287. package/dist/charts/engine/shapes/chart.d.cts +3 -2
  288. package/dist/charts/engine/shapes/chart.d.ts +3 -2
  289. package/dist/charts/engine/shapes/chart.js +49 -27
  290. package/dist/charts/engine/shapes/chart.js.map +1 -1
  291. package/dist/charts/engine/shapes/chord.cjs +2 -0
  292. package/dist/charts/engine/shapes/chord.cjs.map +1 -0
  293. package/dist/charts/engine/shapes/chord.d.cts +18 -0
  294. package/dist/charts/engine/shapes/chord.d.ts +18 -0
  295. package/dist/charts/engine/shapes/chord.js +414 -0
  296. package/dist/charts/engine/shapes/chord.js.map +1 -0
  297. package/dist/charts/engine/shapes/draw.cjs +1 -1
  298. package/dist/charts/engine/shapes/draw.cjs.map +1 -1
  299. package/dist/charts/engine/shapes/draw.d.cts +7 -1
  300. package/dist/charts/engine/shapes/draw.d.ts +7 -1
  301. package/dist/charts/engine/shapes/draw.js +62 -19
  302. package/dist/charts/engine/shapes/draw.js.map +1 -1
  303. package/dist/charts/engine/shapes/funnel.cjs +1 -1
  304. package/dist/charts/engine/shapes/funnel.cjs.map +1 -1
  305. package/dist/charts/engine/shapes/funnel.js +3 -3
  306. package/dist/charts/engine/shapes/funnel.js.map +1 -1
  307. package/dist/charts/engine/shapes/gauge.cjs +1 -1
  308. package/dist/charts/engine/shapes/gauge.cjs.map +1 -1
  309. package/dist/charts/engine/shapes/gauge.js +132 -95
  310. package/dist/charts/engine/shapes/gauge.js.map +1 -1
  311. package/dist/charts/engine/shapes/hit.cjs +1 -1
  312. package/dist/charts/engine/shapes/hit.cjs.map +1 -1
  313. package/dist/charts/engine/shapes/hit.d.cts +5 -1
  314. package/dist/charts/engine/shapes/hit.d.ts +5 -1
  315. package/dist/charts/engine/shapes/hit.js +89 -39
  316. package/dist/charts/engine/shapes/hit.js.map +1 -1
  317. package/dist/charts/engine/shapes/index.d.cts +6 -2
  318. package/dist/charts/engine/shapes/index.d.ts +6 -2
  319. package/dist/charts/engine/shapes/labels.cjs +2 -0
  320. package/dist/charts/engine/shapes/labels.cjs.map +1 -0
  321. package/dist/charts/engine/shapes/labels.d.cts +14 -0
  322. package/dist/charts/engine/shapes/labels.d.ts +14 -0
  323. package/dist/charts/engine/shapes/labels.js +154 -0
  324. package/dist/charts/engine/shapes/labels.js.map +1 -0
  325. package/dist/charts/engine/shapes/layout.cjs +2 -2
  326. package/dist/charts/engine/shapes/layout.cjs.map +1 -1
  327. package/dist/charts/engine/shapes/layout.d.cts +10 -3
  328. package/dist/charts/engine/shapes/layout.d.ts +10 -3
  329. package/dist/charts/engine/shapes/layout.js +239 -124
  330. package/dist/charts/engine/shapes/layout.js.map +1 -1
  331. package/dist/charts/engine/shapes/pie.cjs +1 -1
  332. package/dist/charts/engine/shapes/pie.cjs.map +1 -1
  333. package/dist/charts/engine/shapes/pie.js +2 -2
  334. package/dist/charts/engine/shapes/pie.js.map +1 -1
  335. package/dist/charts/engine/shapes/radar.cjs +1 -1
  336. package/dist/charts/engine/shapes/radar.cjs.map +1 -1
  337. package/dist/charts/engine/shapes/radar.d.cts +2 -2
  338. package/dist/charts/engine/shapes/radar.d.ts +2 -2
  339. package/dist/charts/engine/shapes/radar.js +50 -49
  340. package/dist/charts/engine/shapes/radar.js.map +1 -1
  341. package/dist/charts/engine/shapes/radialBar.cjs +2 -0
  342. package/dist/charts/engine/shapes/radialBar.cjs.map +1 -0
  343. package/dist/charts/engine/shapes/radialBar.d.cts +8 -0
  344. package/dist/charts/engine/shapes/radialBar.d.ts +8 -0
  345. package/dist/charts/engine/shapes/radialBar.js +155 -0
  346. package/dist/charts/engine/shapes/radialBar.js.map +1 -0
  347. package/dist/charts/engine/shapes/runtime.cjs +1 -1
  348. package/dist/charts/engine/shapes/runtime.cjs.map +1 -1
  349. package/dist/charts/engine/shapes/runtime.d.cts +9 -2
  350. package/dist/charts/engine/shapes/runtime.d.ts +9 -2
  351. package/dist/charts/engine/shapes/runtime.js +61 -51
  352. package/dist/charts/engine/shapes/runtime.js.map +1 -1
  353. package/dist/charts/engine/shapes/sankey.cjs +2 -0
  354. package/dist/charts/engine/shapes/sankey.cjs.map +1 -0
  355. package/dist/charts/engine/shapes/sankey.d.cts +29 -0
  356. package/dist/charts/engine/shapes/sankey.d.ts +29 -0
  357. package/dist/charts/engine/shapes/sankey.js +372 -0
  358. package/dist/charts/engine/shapes/sankey.js.map +1 -0
  359. package/dist/charts/engine/shapes/scene.cjs +1 -1
  360. package/dist/charts/engine/shapes/scene.cjs.map +1 -1
  361. package/dist/charts/engine/shapes/scene.d.cts +92 -8
  362. package/dist/charts/engine/shapes/scene.d.ts +92 -8
  363. package/dist/charts/engine/shapes/scene.js +76 -31
  364. package/dist/charts/engine/shapes/scene.js.map +1 -1
  365. package/dist/charts/engine/shapes/sunburst.cjs +2 -0
  366. package/dist/charts/engine/shapes/sunburst.cjs.map +1 -0
  367. package/dist/charts/engine/shapes/sunburst.d.cts +6 -0
  368. package/dist/charts/engine/shapes/sunburst.d.ts +6 -0
  369. package/dist/charts/engine/shapes/sunburst.js +261 -0
  370. package/dist/charts/engine/shapes/sunburst.js.map +1 -0
  371. package/dist/charts/engine/shapes/treemap.cjs +1 -1
  372. package/dist/charts/engine/shapes/treemap.cjs.map +1 -1
  373. package/dist/charts/engine/shapes/treemap.js +2 -2
  374. package/dist/charts/engine/shapes/treemap.js.map +1 -1
  375. package/dist/charts/engine/shapes/types.d.cts +550 -12
  376. package/dist/charts/engine/shapes/types.d.ts +550 -12
  377. package/dist/charts/engine/signature.cjs +1 -1
  378. package/dist/charts/engine/signature.cjs.map +1 -1
  379. package/dist/charts/engine/signature.js +1 -1
  380. package/dist/charts/engine/signature.js.map +1 -1
  381. package/dist/charts/engine/three-d/canvas2d.cjs +2 -0
  382. package/dist/charts/engine/three-d/canvas2d.cjs.map +1 -0
  383. package/dist/charts/engine/three-d/canvas2d.d.cts +7 -0
  384. package/dist/charts/engine/three-d/canvas2d.d.ts +7 -0
  385. package/dist/charts/engine/three-d/canvas2d.js +128 -0
  386. package/dist/charts/engine/three-d/canvas2d.js.map +1 -0
  387. package/dist/charts/engine/three-d/chart.cjs +2 -0
  388. package/dist/charts/engine/three-d/chart.cjs.map +1 -0
  389. package/dist/charts/engine/three-d/chart.d.cts +15 -0
  390. package/dist/charts/engine/three-d/chart.d.ts +15 -0
  391. package/dist/charts/engine/three-d/chart.js +621 -0
  392. package/dist/charts/engine/three-d/chart.js.map +1 -0
  393. package/dist/charts/engine/three-d/colormap.cjs +2 -0
  394. package/dist/charts/engine/three-d/colormap.cjs.map +1 -0
  395. package/dist/charts/engine/three-d/colormap.d.cts +16 -0
  396. package/dist/charts/engine/three-d/colormap.d.ts +16 -0
  397. package/dist/charts/engine/three-d/colormap.js +166 -0
  398. package/dist/charts/engine/three-d/colormap.js.map +1 -0
  399. package/dist/charts/engine/three-d/contours.cjs +2 -0
  400. package/dist/charts/engine/three-d/contours.cjs.map +1 -0
  401. package/dist/charts/engine/three-d/contours.d.cts +7 -0
  402. package/dist/charts/engine/three-d/contours.d.ts +7 -0
  403. package/dist/charts/engine/three-d/contours.js +47 -0
  404. package/dist/charts/engine/three-d/contours.js.map +1 -0
  405. package/dist/charts/engine/three-d/detect.cjs +2 -0
  406. package/dist/charts/engine/three-d/detect.cjs.map +1 -0
  407. package/dist/charts/engine/three-d/detect.d.cts +12 -0
  408. package/dist/charts/engine/three-d/detect.d.ts +12 -0
  409. package/dist/charts/engine/three-d/detect.js +37 -0
  410. package/dist/charts/engine/three-d/detect.js.map +1 -0
  411. package/dist/charts/engine/three-d/dom.cjs +2 -0
  412. package/dist/charts/engine/three-d/dom.cjs.map +1 -0
  413. package/dist/charts/engine/three-d/dom.d.cts +21 -0
  414. package/dist/charts/engine/three-d/dom.d.ts +21 -0
  415. package/dist/charts/engine/three-d/dom.js +98 -0
  416. package/dist/charts/engine/three-d/dom.js.map +1 -0
  417. package/dist/charts/engine/three-d/geometry.cjs +2 -0
  418. package/dist/charts/engine/three-d/geometry.cjs.map +1 -0
  419. package/dist/charts/engine/three-d/geometry.d.cts +82 -0
  420. package/dist/charts/engine/three-d/geometry.d.ts +82 -0
  421. package/dist/charts/engine/three-d/geometry.js +545 -0
  422. package/dist/charts/engine/three-d/geometry.js.map +1 -0
  423. package/dist/charts/engine/three-d/hover.cjs +2 -0
  424. package/dist/charts/engine/three-d/hover.cjs.map +1 -0
  425. package/dist/charts/engine/three-d/hover.d.cts +25 -0
  426. package/dist/charts/engine/three-d/hover.d.ts +25 -0
  427. package/dist/charts/engine/three-d/hover.js +131 -0
  428. package/dist/charts/engine/three-d/hover.js.map +1 -0
  429. package/dist/charts/engine/three-d/index.cjs +1 -0
  430. package/dist/charts/engine/three-d/index.d.cts +2 -0
  431. package/dist/charts/engine/three-d/index.d.ts +2 -0
  432. package/dist/charts/engine/three-d/index.js +2 -0
  433. package/dist/charts/engine/three-d/labels.cjs +2 -0
  434. package/dist/charts/engine/three-d/labels.cjs.map +1 -0
  435. package/dist/charts/engine/three-d/labels.d.cts +23 -0
  436. package/dist/charts/engine/three-d/labels.d.ts +23 -0
  437. package/dist/charts/engine/three-d/labels.js +136 -0
  438. package/dist/charts/engine/three-d/labels.js.map +1 -0
  439. package/dist/charts/engine/three-d/math.cjs +2 -0
  440. package/dist/charts/engine/three-d/math.cjs.map +1 -0
  441. package/dist/charts/engine/three-d/math.d.cts +84 -0
  442. package/dist/charts/engine/three-d/math.d.ts +84 -0
  443. package/dist/charts/engine/three-d/math.js +150 -0
  444. package/dist/charts/engine/three-d/math.js.map +1 -0
  445. package/dist/charts/engine/three-d/model.cjs +2 -0
  446. package/dist/charts/engine/three-d/model.cjs.map +1 -0
  447. package/dist/charts/engine/three-d/model.d.cts +132 -0
  448. package/dist/charts/engine/three-d/model.d.ts +132 -0
  449. package/dist/charts/engine/three-d/model.js +279 -0
  450. package/dist/charts/engine/three-d/model.js.map +1 -0
  451. package/dist/charts/engine/three-d/overlay.cjs +2 -0
  452. package/dist/charts/engine/three-d/overlay.cjs.map +1 -0
  453. package/dist/charts/engine/three-d/overlay.d.cts +72 -0
  454. package/dist/charts/engine/three-d/overlay.d.ts +72 -0
  455. package/dist/charts/engine/three-d/overlay.js +204 -0
  456. package/dist/charts/engine/three-d/overlay.js.map +1 -0
  457. package/dist/charts/engine/three-d/pick.cjs +2 -0
  458. package/dist/charts/engine/three-d/pick.cjs.map +1 -0
  459. package/dist/charts/engine/three-d/pick.d.cts +52 -0
  460. package/dist/charts/engine/three-d/pick.d.ts +52 -0
  461. package/dist/charts/engine/three-d/pick.js +220 -0
  462. package/dist/charts/engine/three-d/pick.js.map +1 -0
  463. package/dist/charts/engine/three-d/render-types.cjs +2 -0
  464. package/dist/charts/engine/three-d/render-types.cjs.map +1 -0
  465. package/dist/charts/engine/three-d/render-types.d.cts +103 -0
  466. package/dist/charts/engine/three-d/render-types.d.ts +103 -0
  467. package/dist/charts/engine/three-d/render-types.js +12 -0
  468. package/dist/charts/engine/three-d/render-types.js.map +1 -0
  469. package/dist/charts/engine/three-d/shaders.cjs +311 -0
  470. package/dist/charts/engine/three-d/shaders.cjs.map +1 -0
  471. package/dist/charts/engine/three-d/shaders.d.cts +25 -0
  472. package/dist/charts/engine/three-d/shaders.d.ts +25 -0
  473. package/dist/charts/engine/three-d/shaders.js +210 -0
  474. package/dist/charts/engine/three-d/shaders.js.map +1 -0
  475. package/dist/charts/engine/three-d/sort.cjs +2 -0
  476. package/dist/charts/engine/three-d/sort.cjs.map +1 -0
  477. package/dist/charts/engine/three-d/sort.d.cts +29 -0
  478. package/dist/charts/engine/three-d/sort.d.ts +29 -0
  479. package/dist/charts/engine/three-d/sort.js +145 -0
  480. package/dist/charts/engine/three-d/sort.js.map +1 -0
  481. package/dist/charts/engine/three-d/types.d.cts +615 -0
  482. package/dist/charts/engine/three-d/types.d.ts +615 -0
  483. package/dist/charts/engine/three-d/webgl.cjs +2 -0
  484. package/dist/charts/engine/three-d/webgl.cjs.map +1 -0
  485. package/dist/charts/engine/three-d/webgl.d.cts +10 -0
  486. package/dist/charts/engine/three-d/webgl.d.ts +10 -0
  487. package/dist/charts/engine/three-d/webgl.js +132 -0
  488. package/dist/charts/engine/three-d/webgl.js.map +1 -0
  489. package/dist/charts/engine/three-d/webgpu.cjs +2 -0
  490. package/dist/charts/engine/three-d/webgpu.cjs.map +1 -0
  491. package/dist/charts/engine/three-d/webgpu.d.cts +5 -0
  492. package/dist/charts/engine/three-d/webgpu.d.ts +5 -0
  493. package/dist/charts/engine/three-d/webgpu.js +260 -0
  494. package/dist/charts/engine/three-d/webgpu.js.map +1 -0
  495. package/dist/charts/engine/time.cjs +1 -1
  496. package/dist/charts/engine/time.cjs.map +1 -1
  497. package/dist/charts/engine/time.d.cts +13 -4
  498. package/dist/charts/engine/time.d.ts +13 -4
  499. package/dist/charts/engine/time.js +156 -91
  500. package/dist/charts/engine/time.js.map +1 -1
  501. package/dist/charts/engine/trading/chart.cjs +2 -0
  502. package/dist/charts/engine/trading/chart.cjs.map +1 -0
  503. package/dist/charts/engine/trading/chart.d.cts +13 -0
  504. package/dist/charts/engine/trading/chart.d.ts +13 -0
  505. package/dist/charts/engine/trading/chart.js +2206 -0
  506. package/dist/charts/engine/trading/chart.js.map +1 -0
  507. package/dist/charts/engine/trading/drawings.cjs +3 -0
  508. package/dist/charts/engine/trading/drawings.cjs.map +1 -0
  509. package/dist/charts/engine/trading/drawings.d.cts +95 -0
  510. package/dist/charts/engine/trading/drawings.d.ts +95 -0
  511. package/dist/charts/engine/trading/drawings.js +423 -0
  512. package/dist/charts/engine/trading/drawings.js.map +1 -0
  513. package/dist/charts/engine/trading/format.cjs +2 -0
  514. package/dist/charts/engine/trading/format.cjs.map +1 -0
  515. package/dist/charts/engine/trading/format.d.cts +73 -0
  516. package/dist/charts/engine/trading/format.d.ts +73 -0
  517. package/dist/charts/engine/trading/format.js +163 -0
  518. package/dist/charts/engine/trading/format.js.map +1 -0
  519. package/dist/charts/engine/trading/geometry.cjs +2 -0
  520. package/dist/charts/engine/trading/geometry.cjs.map +1 -0
  521. package/dist/charts/engine/trading/geometry.d.cts +55 -0
  522. package/dist/charts/engine/trading/geometry.d.ts +55 -0
  523. package/dist/charts/engine/trading/geometry.js +131 -0
  524. package/dist/charts/engine/trading/geometry.js.map +1 -0
  525. package/dist/charts/engine/trading/index.cjs +1 -0
  526. package/dist/charts/engine/trading/index.d.cts +4 -0
  527. package/dist/charts/engine/trading/index.d.ts +4 -0
  528. package/dist/charts/engine/trading/index.js +4 -0
  529. package/dist/charts/engine/trading/indicators.cjs +2 -0
  530. package/dist/charts/engine/trading/indicators.cjs.map +1 -0
  531. package/dist/charts/engine/trading/indicators.d.cts +275 -0
  532. package/dist/charts/engine/trading/indicators.d.ts +275 -0
  533. package/dist/charts/engine/trading/indicators.js +544 -0
  534. package/dist/charts/engine/trading/indicators.js.map +1 -0
  535. package/dist/charts/engine/trading/labels.cjs +2 -0
  536. package/dist/charts/engine/trading/labels.cjs.map +1 -0
  537. package/dist/charts/engine/trading/labels.d.cts +7 -0
  538. package/dist/charts/engine/trading/labels.d.ts +7 -0
  539. package/dist/charts/engine/trading/labels.js +171 -0
  540. package/dist/charts/engine/trading/labels.js.map +1 -0
  541. package/dist/charts/engine/trading/scale.cjs +2 -0
  542. package/dist/charts/engine/trading/scale.cjs.map +1 -0
  543. package/dist/charts/engine/trading/scale.d.cts +46 -0
  544. package/dist/charts/engine/trading/scale.d.ts +46 -0
  545. package/dist/charts/engine/trading/scale.js +100 -0
  546. package/dist/charts/engine/trading/scale.js.map +1 -0
  547. package/dist/charts/engine/trading/store.cjs +2 -0
  548. package/dist/charts/engine/trading/store.cjs.map +1 -0
  549. package/dist/charts/engine/trading/store.d.cts +83 -0
  550. package/dist/charts/engine/trading/store.d.ts +83 -0
  551. package/dist/charts/engine/trading/store.js +150 -0
  552. package/dist/charts/engine/trading/store.js.map +1 -0
  553. package/dist/charts/engine/trading/studies.cjs +2 -0
  554. package/dist/charts/engine/trading/studies.cjs.map +1 -0
  555. package/dist/charts/engine/trading/studies.d.cts +85 -0
  556. package/dist/charts/engine/trading/studies.d.ts +85 -0
  557. package/dist/charts/engine/trading/studies.js +510 -0
  558. package/dist/charts/engine/trading/studies.js.map +1 -0
  559. package/dist/charts/engine/trading/sync.cjs +2 -0
  560. package/dist/charts/engine/trading/sync.cjs.map +1 -0
  561. package/dist/charts/engine/trading/sync.d.cts +8 -0
  562. package/dist/charts/engine/trading/sync.d.ts +8 -0
  563. package/dist/charts/engine/trading/sync.js +25 -0
  564. package/dist/charts/engine/trading/sync.js.map +1 -0
  565. package/dist/charts/engine/trading/types.d.cts +1131 -0
  566. package/dist/charts/engine/trading/types.d.ts +1131 -0
  567. package/dist/charts/engine/types.d.cts +247 -22
  568. package/dist/charts/engine/types.d.ts +247 -22
  569. package/dist/charts/index.cjs +1 -1
  570. package/dist/charts/index.d.cts +8 -4
  571. package/dist/charts/index.d.ts +8 -4
  572. package/dist/charts/index.js +30 -11
  573. package/dist/charts/react/Chart.cjs +1 -1
  574. package/dist/charts/react/Chart.cjs.map +1 -1
  575. package/dist/charts/react/Chart.d.cts +4 -4
  576. package/dist/charts/react/Chart.d.ts +4 -4
  577. package/dist/charts/react/Chart.js +5 -1
  578. package/dist/charts/react/Chart.js.map +1 -1
  579. package/dist/charts/react/charts.cjs +1 -1
  580. package/dist/charts/react/charts.cjs.map +1 -1
  581. package/dist/charts/react/charts.d.cts +39 -1
  582. package/dist/charts/react/charts.d.ts +39 -1
  583. package/dist/charts/react/charts.js +312 -128
  584. package/dist/charts/react/charts.js.map +1 -1
  585. package/dist/charts/react/graph.cjs +2 -0
  586. package/dist/charts/react/graph.cjs.map +1 -0
  587. package/dist/charts/react/graph.d.cts +213 -0
  588. package/dist/charts/react/graph.d.ts +213 -0
  589. package/dist/charts/react/graph.js +159 -0
  590. package/dist/charts/react/graph.js.map +1 -0
  591. package/dist/charts/react/orderbook.cjs +2 -0
  592. package/dist/charts/react/orderbook.cjs.map +1 -0
  593. package/dist/charts/react/orderbook.d.cts +142 -0
  594. package/dist/charts/react/orderbook.d.ts +142 -0
  595. package/dist/charts/react/orderbook.js +182 -0
  596. package/dist/charts/react/orderbook.js.map +1 -0
  597. package/dist/charts/react/shapes.cjs +1 -1
  598. package/dist/charts/react/shapes.cjs.map +1 -1
  599. package/dist/charts/react/shapes.d.cts +374 -9
  600. package/dist/charts/react/shapes.d.ts +374 -9
  601. package/dist/charts/react/shapes.js +323 -93
  602. package/dist/charts/react/shapes.js.map +1 -1
  603. package/dist/charts/react/three-d.cjs +2 -0
  604. package/dist/charts/react/three-d.cjs.map +1 -0
  605. package/dist/charts/react/three-d.d.cts +151 -0
  606. package/dist/charts/react/three-d.d.ts +151 -0
  607. package/dist/charts/react/three-d.js +154 -0
  608. package/dist/charts/react/three-d.js.map +1 -0
  609. package/dist/charts/react/trading.cjs +2 -0
  610. package/dist/charts/react/trading.cjs.map +1 -0
  611. package/dist/charts/react/trading.d.cts +145 -0
  612. package/dist/charts/react/trading.d.ts +145 -0
  613. package/dist/charts/react/trading.js +126 -0
  614. package/dist/charts/react/trading.js.map +1 -0
  615. package/dist/charts/react/types.d.cts +143 -8
  616. package/dist/charts/react/types.d.ts +143 -8
  617. package/dist/core/contracts.cjs +1 -1
  618. package/dist/core/contracts.cjs.map +1 -1
  619. package/dist/core/contracts.js +1 -1
  620. package/dist/core/contracts.js.map +1 -1
  621. package/dist/native/charts/src/canvas.cjs +1 -1
  622. package/dist/native/charts/src/canvas.js +9 -3
  623. package/dist/native/charts/src/engine/axis.cjs +1 -1
  624. package/dist/native/charts/src/engine/axis.cjs.map +1 -1
  625. package/dist/native/charts/src/engine/axis.js +43 -20
  626. package/dist/native/charts/src/engine/axis.js.map +1 -1
  627. package/dist/native/charts/src/engine/color.cjs +1 -1
  628. package/dist/native/charts/src/engine/color.cjs.map +1 -1
  629. package/dist/native/charts/src/engine/color.js +47 -5
  630. package/dist/native/charts/src/engine/color.js.map +1 -1
  631. package/dist/native/charts/src/engine/controller.cjs +2 -2
  632. package/dist/native/charts/src/engine/controller.cjs.map +1 -1
  633. package/dist/native/charts/src/engine/controller.js +415 -308
  634. package/dist/native/charts/src/engine/controller.js.map +1 -1
  635. package/dist/native/charts/src/engine/data.cjs +1 -1
  636. package/dist/native/charts/src/engine/data.cjs.map +1 -1
  637. package/dist/native/charts/src/engine/data.js +65 -49
  638. package/dist/native/charts/src/engine/data.js.map +1 -1
  639. package/dist/native/charts/src/engine/format.cjs +1 -1
  640. package/dist/native/charts/src/engine/format.cjs.map +1 -1
  641. package/dist/native/charts/src/engine/format.js +59 -21
  642. package/dist/native/charts/src/engine/format.js.map +1 -1
  643. package/dist/native/charts/src/engine/labels.cjs +2 -0
  644. package/dist/native/charts/src/engine/labels.cjs.map +1 -0
  645. package/dist/native/charts/src/engine/labels.js +98 -0
  646. package/dist/native/charts/src/engine/labels.js.map +1 -0
  647. package/dist/native/charts/src/engine/layout.cjs +1 -1
  648. package/dist/native/charts/src/engine/layout.cjs.map +1 -1
  649. package/dist/native/charts/src/engine/layout.js +62 -12
  650. package/dist/native/charts/src/engine/layout.js.map +1 -1
  651. package/dist/native/charts/src/engine/locale.cjs +2 -0
  652. package/dist/native/charts/src/engine/locale.cjs.map +1 -0
  653. package/dist/native/charts/src/engine/locale.js +60 -0
  654. package/dist/native/charts/src/engine/locale.js.map +1 -0
  655. package/dist/native/charts/src/engine/model.cjs +1 -1
  656. package/dist/native/charts/src/engine/model.cjs.map +1 -1
  657. package/dist/native/charts/src/engine/model.js +307 -119
  658. package/dist/native/charts/src/engine/model.js.map +1 -1
  659. package/dist/native/charts/src/engine/overlay.cjs +1 -1
  660. package/dist/native/charts/src/engine/overlay.cjs.map +1 -1
  661. package/dist/native/charts/src/engine/overlay.js +46 -23
  662. package/dist/native/charts/src/engine/overlay.js.map +1 -1
  663. package/dist/native/charts/src/engine/presets.cjs +2 -2
  664. package/dist/native/charts/src/engine/presets.cjs.map +1 -1
  665. package/dist/native/charts/src/engine/presets.js +470 -41
  666. package/dist/native/charts/src/engine/presets.js.map +1 -1
  667. package/dist/native/charts/src/engine/scale.cjs +1 -1
  668. package/dist/native/charts/src/engine/scale.cjs.map +1 -1
  669. package/dist/native/charts/src/engine/scale.js +1 -1
  670. package/dist/native/charts/src/engine/scale.js.map +1 -1
  671. package/dist/native/charts/src/engine/scene.cjs +1 -1
  672. package/dist/native/charts/src/engine/scene.cjs.map +1 -1
  673. package/dist/native/charts/src/engine/scene.js +489 -207
  674. package/dist/native/charts/src/engine/scene.js.map +1 -1
  675. package/dist/native/charts/src/engine/shapes/bullet.cjs +2 -0
  676. package/dist/native/charts/src/engine/shapes/bullet.cjs.map +1 -0
  677. package/dist/native/charts/src/engine/shapes/bullet.js +255 -0
  678. package/dist/native/charts/src/engine/shapes/bullet.js.map +1 -0
  679. package/dist/native/charts/src/engine/shapes/calendar.cjs +2 -0
  680. package/dist/native/charts/src/engine/shapes/calendar.cjs.map +1 -0
  681. package/dist/native/charts/src/engine/shapes/calendar.js +369 -0
  682. package/dist/native/charts/src/engine/shapes/calendar.js.map +1 -0
  683. package/dist/native/charts/src/engine/shapes/canvas.cjs +2 -0
  684. package/dist/native/charts/src/engine/shapes/canvas.cjs.map +1 -0
  685. package/dist/native/charts/src/engine/shapes/canvas.js +168 -0
  686. package/dist/native/charts/src/engine/shapes/canvas.js.map +1 -0
  687. package/dist/native/charts/src/engine/shapes/chord.cjs +2 -0
  688. package/dist/native/charts/src/engine/shapes/chord.cjs.map +1 -0
  689. package/dist/native/charts/src/engine/shapes/chord.js +414 -0
  690. package/dist/native/charts/src/engine/shapes/chord.js.map +1 -0
  691. package/dist/native/charts/src/engine/shapes/draw.cjs +2 -0
  692. package/dist/native/charts/src/engine/shapes/draw.cjs.map +1 -0
  693. package/dist/native/charts/src/engine/shapes/draw.js +195 -0
  694. package/dist/native/charts/src/engine/shapes/draw.js.map +1 -0
  695. package/dist/native/charts/src/engine/shapes/funnel.cjs +2 -0
  696. package/dist/native/charts/src/engine/shapes/funnel.cjs.map +1 -0
  697. package/dist/native/charts/src/engine/shapes/funnel.js +149 -0
  698. package/dist/native/charts/src/engine/shapes/funnel.js.map +1 -0
  699. package/dist/native/charts/src/engine/shapes/gauge.cjs +2 -0
  700. package/dist/native/charts/src/engine/shapes/gauge.cjs.map +1 -0
  701. package/dist/native/charts/src/engine/shapes/gauge.js +210 -0
  702. package/dist/native/charts/src/engine/shapes/gauge.js.map +1 -0
  703. package/dist/native/charts/src/engine/shapes/hit.cjs +2 -0
  704. package/dist/native/charts/src/engine/shapes/hit.cjs.map +1 -0
  705. package/dist/native/charts/src/engine/shapes/hit.js +135 -0
  706. package/dist/native/charts/src/engine/shapes/hit.js.map +1 -0
  707. package/dist/native/charts/src/engine/shapes/labels.cjs +2 -0
  708. package/dist/native/charts/src/engine/shapes/labels.cjs.map +1 -0
  709. package/dist/native/charts/src/engine/shapes/labels.js +154 -0
  710. package/dist/native/charts/src/engine/shapes/labels.js.map +1 -0
  711. package/dist/native/charts/src/engine/shapes/layout.cjs +3 -0
  712. package/dist/native/charts/src/engine/shapes/layout.cjs.map +1 -0
  713. package/dist/native/charts/src/engine/shapes/layout.js +358 -0
  714. package/dist/native/charts/src/engine/shapes/layout.js.map +1 -0
  715. package/dist/native/charts/src/engine/shapes/pie.cjs +2 -0
  716. package/dist/native/charts/src/engine/shapes/pie.cjs.map +1 -0
  717. package/dist/native/charts/src/engine/shapes/pie.js +302 -0
  718. package/dist/native/charts/src/engine/shapes/pie.js.map +1 -0
  719. package/dist/native/charts/src/engine/shapes/radar.cjs +2 -0
  720. package/dist/native/charts/src/engine/shapes/radar.cjs.map +1 -0
  721. package/dist/native/charts/src/engine/shapes/radar.js +198 -0
  722. package/dist/native/charts/src/engine/shapes/radar.js.map +1 -0
  723. package/dist/native/charts/src/engine/shapes/radialBar.cjs +2 -0
  724. package/dist/native/charts/src/engine/shapes/radialBar.cjs.map +1 -0
  725. package/dist/native/charts/src/engine/shapes/radialBar.js +155 -0
  726. package/dist/native/charts/src/engine/shapes/radialBar.js.map +1 -0
  727. package/dist/native/charts/src/engine/shapes/runtime.cjs +2 -0
  728. package/dist/native/charts/src/engine/shapes/runtime.cjs.map +1 -0
  729. package/dist/native/charts/src/engine/shapes/runtime.js +107 -0
  730. package/dist/native/charts/src/engine/shapes/runtime.js.map +1 -0
  731. package/dist/native/charts/src/engine/shapes/sankey.cjs +2 -0
  732. package/dist/native/charts/src/engine/shapes/sankey.cjs.map +1 -0
  733. package/dist/native/charts/src/engine/shapes/sankey.js +372 -0
  734. package/dist/native/charts/src/engine/shapes/sankey.js.map +1 -0
  735. package/dist/native/charts/src/engine/shapes/scene.cjs +2 -0
  736. package/dist/native/charts/src/engine/shapes/scene.cjs.map +1 -0
  737. package/dist/native/charts/src/engine/shapes/scene.js +168 -0
  738. package/dist/native/charts/src/engine/shapes/scene.js.map +1 -0
  739. package/dist/native/charts/src/engine/shapes/sunburst.cjs +2 -0
  740. package/dist/native/charts/src/engine/shapes/sunburst.cjs.map +1 -0
  741. package/dist/native/charts/src/engine/shapes/sunburst.js +261 -0
  742. package/dist/native/charts/src/engine/shapes/sunburst.js.map +1 -0
  743. package/dist/native/charts/src/engine/shapes/treemap.cjs +2 -0
  744. package/dist/native/charts/src/engine/shapes/treemap.cjs.map +1 -0
  745. package/dist/native/charts/src/engine/shapes/treemap.js +213 -0
  746. package/dist/native/charts/src/engine/shapes/treemap.js.map +1 -0
  747. package/dist/native/charts/src/engine/time.cjs +1 -1
  748. package/dist/native/charts/src/engine/time.cjs.map +1 -1
  749. package/dist/native/charts/src/engine/time.js +156 -91
  750. package/dist/native/charts/src/engine/time.js.map +1 -1
  751. package/dist/native/components/Chart/ChartBase.cjs +1 -1
  752. package/dist/native/components/Chart/ChartBase.cjs.map +1 -1
  753. package/dist/native/components/Chart/ChartBase.d.cts +1 -1
  754. package/dist/native/components/Chart/ChartBase.d.ts +1 -1
  755. package/dist/native/components/Chart/ChartBase.js +110 -107
  756. package/dist/native/components/Chart/ChartBase.js.map +1 -1
  757. package/dist/native/components/Chart/charts.cjs +1 -1
  758. package/dist/native/components/Chart/charts.cjs.map +1 -1
  759. package/dist/native/components/Chart/charts.d.cts +6 -1
  760. package/dist/native/components/Chart/charts.d.ts +6 -1
  761. package/dist/native/components/Chart/charts.js +53 -29
  762. package/dist/native/components/Chart/charts.js.map +1 -1
  763. package/dist/native/components/Chart/index.cjs +1 -1
  764. package/dist/native/components/Chart/index.d.cts +1 -1
  765. package/dist/native/components/Chart/index.d.ts +1 -1
  766. package/dist/native/components/Chart/index.js +2 -2
  767. package/dist/native/components/Chart/scene.cjs +1 -1
  768. package/dist/native/components/Chart/scene.cjs.map +1 -1
  769. package/dist/native/components/Chart/scene.js +315 -229
  770. package/dist/native/components/Chart/scene.js.map +1 -1
  771. package/dist/native/components/Chart/types.d.cts +26 -3
  772. package/dist/native/components/Chart/types.d.ts +26 -3
  773. package/dist/native/components/Charts/charts.cjs +2 -0
  774. package/dist/native/components/Charts/charts.cjs.map +1 -0
  775. package/dist/native/components/Charts/charts.d.cts +41 -0
  776. package/dist/native/components/Charts/charts.d.ts +41 -0
  777. package/dist/native/components/Charts/charts.js +350 -0
  778. package/dist/native/components/Charts/charts.js.map +1 -0
  779. package/dist/native/components/Charts/index.cjs +1 -0
  780. package/dist/native/components/Charts/index.d.cts +2 -0
  781. package/dist/native/components/Charts/index.d.ts +2 -0
  782. package/dist/native/components/Charts/index.js +2 -0
  783. package/dist/native/components/Charts/types.d.cts +155 -0
  784. package/dist/native/components/Charts/types.d.ts +155 -0
  785. package/dist/native/components/ShapeChart/ShapeChartBase.cjs +2 -0
  786. package/dist/native/components/ShapeChart/ShapeChartBase.cjs.map +1 -0
  787. package/dist/native/components/ShapeChart/ShapeChartBase.d.cts +24 -0
  788. package/dist/native/components/ShapeChart/ShapeChartBase.d.ts +24 -0
  789. package/dist/native/components/ShapeChart/ShapeChartBase.js +272 -0
  790. package/dist/native/components/ShapeChart/ShapeChartBase.js.map +1 -0
  791. package/dist/native/components/ShapeChart/charts.cjs +2 -0
  792. package/dist/native/components/ShapeChart/charts.cjs.map +1 -0
  793. package/dist/native/components/ShapeChart/charts.d.cts +43 -0
  794. package/dist/native/components/ShapeChart/charts.d.ts +43 -0
  795. package/dist/native/components/ShapeChart/charts.js +429 -0
  796. package/dist/native/components/ShapeChart/charts.js.map +1 -0
  797. package/dist/native/components/ShapeChart/draw.cjs +2 -0
  798. package/dist/native/components/ShapeChart/draw.cjs.map +1 -0
  799. package/dist/native/components/ShapeChart/draw.d.cts +4 -0
  800. package/dist/native/components/ShapeChart/draw.d.ts +4 -0
  801. package/dist/native/components/ShapeChart/draw.js +113 -0
  802. package/dist/native/components/ShapeChart/draw.js.map +1 -0
  803. package/dist/native/components/ShapeChart/geometry.cjs +2 -0
  804. package/dist/native/components/ShapeChart/geometry.cjs.map +1 -0
  805. package/dist/native/components/ShapeChart/geometry.d.cts +71 -0
  806. package/dist/native/components/ShapeChart/geometry.d.ts +71 -0
  807. package/dist/native/components/ShapeChart/geometry.js +681 -0
  808. package/dist/native/components/ShapeChart/geometry.js.map +1 -0
  809. package/dist/native/components/ShapeChart/index.cjs +1 -0
  810. package/dist/native/components/ShapeChart/index.d.cts +2 -0
  811. package/dist/native/components/ShapeChart/index.d.ts +2 -0
  812. package/dist/native/components/ShapeChart/index.js +2 -0
  813. package/dist/native/components/ShapeChart/recorder.cjs +2 -0
  814. package/dist/native/components/ShapeChart/recorder.cjs.map +1 -0
  815. package/dist/native/components/ShapeChart/recorder.d.cts +115 -0
  816. package/dist/native/components/ShapeChart/recorder.d.ts +115 -0
  817. package/dist/native/components/ShapeChart/recorder.js +583 -0
  818. package/dist/native/components/ShapeChart/recorder.js.map +1 -0
  819. package/dist/native/components/ShapeChart/types.d.cts +594 -0
  820. package/dist/native/components/ShapeChart/types.d.ts +594 -0
  821. package/dist/native/index.cjs +1 -1
  822. package/dist/native/index.d.cts +2 -0
  823. package/dist/native/index.d.ts +2 -0
  824. package/dist/native/index.js +14 -10
  825. package/dist/native/manifest.d.cts +6 -4
  826. package/dist/native/manifest.d.ts +6 -4
  827. package/dist/native/source/components/Chart/ChartBase.tsx +8 -1
  828. package/dist/native/source/components/Chart/charts.tsx +42 -6
  829. package/dist/native/source/components/Chart/index.ts +1 -0
  830. package/dist/native/source/components/Chart/scene.tsx +312 -98
  831. package/dist/native/source/components/Chart/types.ts +31 -1
  832. package/dist/native/source/components/Charts/charts.tsx +521 -0
  833. package/dist/native/source/components/Charts/index.ts +14 -0
  834. package/dist/native/source/components/Charts/types.ts +218 -0
  835. package/dist/native/source/components/ShapeChart/ShapeChartBase.tsx +486 -0
  836. package/dist/native/source/components/ShapeChart/charts.tsx +661 -0
  837. package/dist/native/source/components/ShapeChart/draw.tsx +201 -0
  838. package/dist/native/source/components/ShapeChart/geometry.ts +1366 -0
  839. package/dist/native/source/components/ShapeChart/index.ts +16 -0
  840. package/dist/native/source/components/ShapeChart/recorder.ts +845 -0
  841. package/dist/native/source/components/ShapeChart/types.ts +655 -0
  842. package/dist/native/source/index.ts +2 -0
  843. package/dist/native/source/manifest.ts +31 -4
  844. package/dist/taro/charts.d.ts +229 -4
  845. package/dist/taro/index.d.ts +1 -0
  846. package/dist/taro/index.js +8818 -2093
  847. package/dist/taro/manifest.d.ts +1 -0
  848. package/dist/taro/shape-charts.d.ts +629 -0
  849. package/dist/uni/AreaChart.vue +68 -0
  850. package/dist/uni/AreaChart.vue.d.ts +124 -0
  851. package/dist/uni/Badge.vue.d.ts +1 -1
  852. package/dist/uni/BarChart.vue.d.ts +5 -1
  853. package/dist/uni/BoxPlotChart.vue +66 -0
  854. package/dist/uni/BoxPlotChart.vue.d.ts +110 -0
  855. package/dist/uni/BubbleChart.vue +68 -0
  856. package/dist/uni/BubbleChart.vue.d.ts +110 -0
  857. package/dist/uni/BulletChart.vue +86 -0
  858. package/dist/uni/BulletChart.vue.d.ts +114 -0
  859. package/dist/uni/CalendarHeatmap.vue +92 -0
  860. package/dist/uni/CalendarHeatmap.vue.d.ts +131 -0
  861. package/dist/uni/CandlestickChart.vue +66 -0
  862. package/dist/uni/CandlestickChart.vue.d.ts +104 -0
  863. package/dist/uni/Chart.vue.d.ts +4 -0
  864. package/dist/uni/ChordChart.vue +93 -0
  865. package/dist/uni/ChordChart.vue.d.ts +136 -0
  866. package/dist/uni/DonutChart.vue +72 -0
  867. package/dist/uni/DonutChart.vue.d.ts +118 -0
  868. package/dist/uni/FunnelChart.vue +67 -0
  869. package/dist/uni/FunnelChart.vue.d.ts +108 -0
  870. package/dist/uni/GanttChart.vue +67 -0
  871. package/dist/uni/GanttChart.vue.d.ts +127 -0
  872. package/dist/uni/GaugeChart.vue +77 -0
  873. package/dist/uni/GaugeChart.vue.d.ts +127 -0
  874. package/dist/uni/HeatmapChart.vue +66 -0
  875. package/dist/uni/HeatmapChart.vue.d.ts +120 -0
  876. package/dist/uni/HistogramChart.vue +66 -0
  877. package/dist/uni/HistogramChart.vue.d.ts +125 -0
  878. package/dist/uni/HorizontalBarChart.vue +68 -0
  879. package/dist/uni/HorizontalBarChart.vue.d.ts +129 -0
  880. package/dist/uni/Input.vue.d.ts +1 -1
  881. package/dist/uni/LineChart.vue.d.ts +4 -0
  882. package/dist/uni/MixedChart.vue +68 -0
  883. package/dist/uni/MixedChart.vue.d.ts +110 -0
  884. package/dist/uni/NumberInput.vue.d.ts +1 -1
  885. package/dist/uni/PieChart.vue +72 -0
  886. package/dist/uni/PieChart.vue.d.ts +118 -0
  887. package/dist/uni/QuadrantChart.vue.d.ts +4 -0
  888. package/dist/uni/RadarChart.vue +67 -0
  889. package/dist/uni/RadarChart.vue.d.ts +114 -0
  890. package/dist/uni/RadialBarChart.vue +90 -0
  891. package/dist/uni/RadialBarChart.vue.d.ts +136 -0
  892. package/dist/uni/RangeAreaChart.vue +68 -0
  893. package/dist/uni/RangeAreaChart.vue.d.ts +106 -0
  894. package/dist/uni/ResponsiveGrid.vue.d.ts +1 -1
  895. package/dist/uni/SankeyChart.vue +88 -0
  896. package/dist/uni/SankeyChart.vue.d.ts +125 -0
  897. package/dist/uni/ScatterChart.vue.d.ts +4 -0
  898. package/dist/uni/ShapeChart.vue +73 -0
  899. package/dist/uni/ShapeChart.vue.d.ts +54 -0
  900. package/dist/uni/Sparkline.vue +58 -0
  901. package/dist/uni/Sparkline.vue.d.ts +81 -0
  902. package/dist/uni/SunburstChart.vue +90 -0
  903. package/dist/uni/SunburstChart.vue.d.ts +118 -0
  904. package/dist/uni/Textarea.vue.d.ts +1 -1
  905. package/dist/uni/TimePicker.vue.d.ts +1 -1
  906. package/dist/uni/ToastProvider.vue.d.ts +1 -1
  907. package/dist/uni/TreemapChart.vue +65 -0
  908. package/dist/uni/TreemapChart.vue.d.ts +104 -0
  909. package/dist/uni/WaterfallChart.vue +66 -0
  910. package/dist/uni/WaterfallChart.vue.d.ts +134 -0
  911. package/dist/uni/chart-canvas.d.ts +3 -0
  912. package/dist/uni/chart-canvas.js +4 -0
  913. package/dist/uni/chart-types.d.ts +240 -2
  914. package/dist/uni/chart-types.js +198 -0
  915. package/dist/uni/charts-canvas.js +8 -3
  916. package/dist/uni/index.d.ts +27 -1
  917. package/dist/uni/index.js +27 -1
  918. package/dist/uni/manifest.d.ts +279 -0
  919. package/dist/uni/manifest.js +397 -0
  920. package/dist/uni/named-chart-options.d.ts +95 -0
  921. package/dist/uni/named-chart-options.js +173 -0
  922. package/dist/uni/shape-chart-canvas.d.ts +53 -0
  923. package/dist/uni/shape-chart-canvas.js +333 -0
  924. package/dist/uni/shape-chart-types.d.ts +431 -0
  925. package/dist/uni/shape-chart-types.js +305 -0
  926. package/dist/vue/charts-global.d.ts +48 -0
  927. package/dist/vue/charts.d.ts +18 -0
  928. package/dist/vue/charts.js +56 -0
  929. package/dist/vue/charts.js.map +1 -0
  930. package/dist/vue/components/Chart/AreaChart.vue.d.ts +124 -0
  931. package/dist/vue/components/Chart/AreaChart.vue.js +7 -0
  932. package/dist/vue/components/Chart/AreaChart.vue.js.map +1 -0
  933. package/dist/vue/components/Chart/AreaChart.vue_vue_type_script_setup_true_lang.js +49 -0
  934. package/dist/vue/components/Chart/AreaChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  935. package/dist/vue/components/Chart/Bar3DChart.vue.d.ts +132 -0
  936. package/dist/vue/components/Chart/Bar3DChart.vue.js +7 -0
  937. package/dist/vue/components/Chart/Bar3DChart.vue.js.map +1 -0
  938. package/dist/vue/components/Chart/Bar3DChart.vue_vue_type_script_setup_true_lang.js +55 -0
  939. package/dist/vue/components/Chart/Bar3DChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  940. package/dist/vue/components/Chart/BarChart.vue.d.ts +123 -0
  941. package/dist/vue/components/Chart/BarChart.vue.js +7 -0
  942. package/dist/vue/components/Chart/BarChart.vue.js.map +1 -0
  943. package/dist/vue/components/Chart/BarChart.vue_vue_type_script_setup_true_lang.js +53 -0
  944. package/dist/vue/components/Chart/BarChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  945. package/dist/vue/components/Chart/BoxPlotChart.vue.d.ts +120 -0
  946. package/dist/vue/components/Chart/BoxPlotChart.vue.js +7 -0
  947. package/dist/vue/components/Chart/BoxPlotChart.vue.js.map +1 -0
  948. package/dist/vue/components/Chart/BoxPlotChart.vue_vue_type_script_setup_true_lang.js +63 -0
  949. package/dist/vue/components/Chart/BoxPlotChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  950. package/dist/vue/components/Chart/BubbleChart.vue.d.ts +106 -0
  951. package/dist/vue/components/Chart/BubbleChart.vue.js +7 -0
  952. package/dist/vue/components/Chart/BubbleChart.vue.js.map +1 -0
  953. package/dist/vue/components/Chart/BubbleChart.vue_vue_type_script_setup_true_lang.js +52 -0
  954. package/dist/vue/components/Chart/BubbleChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  955. package/dist/vue/components/Chart/BulletChart.vue.d.ts +117 -0
  956. package/dist/vue/components/Chart/BulletChart.vue.js +7 -0
  957. package/dist/vue/components/Chart/BulletChart.vue.js.map +1 -0
  958. package/dist/vue/components/Chart/BulletChart.vue_vue_type_script_setup_true_lang.js +64 -0
  959. package/dist/vue/components/Chart/BulletChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  960. package/dist/vue/components/Chart/CalendarHeatmap.vue.d.ts +144 -0
  961. package/dist/vue/components/Chart/CalendarHeatmap.vue.js +7 -0
  962. package/dist/vue/components/Chart/CalendarHeatmap.vue.js.map +1 -0
  963. package/dist/vue/components/Chart/CalendarHeatmap.vue_vue_type_script_setup_true_lang.js +77 -0
  964. package/dist/vue/components/Chart/CalendarHeatmap.vue_vue_type_script_setup_true_lang.js.map +1 -0
  965. package/dist/vue/components/Chart/CandlestickChart.vue.d.ts +94 -0
  966. package/dist/vue/components/Chart/CandlestickChart.vue.js +7 -0
  967. package/dist/vue/components/Chart/CandlestickChart.vue.js.map +1 -0
  968. package/dist/vue/components/Chart/CandlestickChart.vue_vue_type_script_setup_true_lang.js +44 -0
  969. package/dist/vue/components/Chart/CandlestickChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  970. package/dist/vue/components/Chart/Chart.vue.d.ts +103 -0
  971. package/dist/vue/components/Chart/Chart.vue.js +7 -0
  972. package/dist/vue/components/Chart/Chart.vue.js.map +1 -0
  973. package/dist/vue/components/Chart/Chart.vue_vue_type_script_setup_true_lang.js +47 -0
  974. package/dist/vue/components/Chart/Chart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  975. package/dist/vue/components/Chart/ChordChart.vue.d.ts +153 -0
  976. package/dist/vue/components/Chart/ChordChart.vue.js +7 -0
  977. package/dist/vue/components/Chart/ChordChart.vue.js.map +1 -0
  978. package/dist/vue/components/Chart/ChordChart.vue_vue_type_script_setup_true_lang.js +81 -0
  979. package/dist/vue/components/Chart/ChordChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  980. package/dist/vue/components/Chart/DependencyGraph.vue.d.ts +179 -0
  981. package/dist/vue/components/Chart/DependencyGraph.vue.js +7 -0
  982. package/dist/vue/components/Chart/DependencyGraph.vue.js.map +1 -0
  983. package/dist/vue/components/Chart/DependencyGraph.vue_vue_type_script_setup_true_lang.js +65 -0
  984. package/dist/vue/components/Chart/DependencyGraph.vue_vue_type_script_setup_true_lang.js.map +1 -0
  985. package/dist/vue/components/Chart/DepthChart.vue.d.ts +139 -0
  986. package/dist/vue/components/Chart/DepthChart.vue.js +7 -0
  987. package/dist/vue/components/Chart/DepthChart.vue.js.map +1 -0
  988. package/dist/vue/components/Chart/DepthChart.vue_vue_type_script_setup_true_lang.js +42 -0
  989. package/dist/vue/components/Chart/DepthChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  990. package/dist/vue/components/Chart/DonutChart.vue.d.ts +104 -0
  991. package/dist/vue/components/Chart/DonutChart.vue.js +7 -0
  992. package/dist/vue/components/Chart/DonutChart.vue.js.map +1 -0
  993. package/dist/vue/components/Chart/DonutChart.vue_vue_type_script_setup_true_lang.js +53 -0
  994. package/dist/vue/components/Chart/DonutChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  995. package/dist/vue/components/Chart/FunnelChart.vue.d.ts +105 -0
  996. package/dist/vue/components/Chart/FunnelChart.vue.js +7 -0
  997. package/dist/vue/components/Chart/FunnelChart.vue.js.map +1 -0
  998. package/dist/vue/components/Chart/FunnelChart.vue_vue_type_script_setup_true_lang.js +58 -0
  999. package/dist/vue/components/Chart/FunnelChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1000. package/dist/vue/components/Chart/GanttChart.vue.d.ts +136 -0
  1001. package/dist/vue/components/Chart/GanttChart.vue.js +7 -0
  1002. package/dist/vue/components/Chart/GanttChart.vue.js.map +1 -0
  1003. package/dist/vue/components/Chart/GanttChart.vue_vue_type_script_setup_true_lang.js +101 -0
  1004. package/dist/vue/components/Chart/GanttChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1005. package/dist/vue/components/Chart/GaugeChart.vue.d.ts +132 -0
  1006. package/dist/vue/components/Chart/GaugeChart.vue.js +7 -0
  1007. package/dist/vue/components/Chart/GaugeChart.vue.js.map +1 -0
  1008. package/dist/vue/components/Chart/GaugeChart.vue_vue_type_script_setup_true_lang.js +71 -0
  1009. package/dist/vue/components/Chart/GaugeChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1010. package/dist/vue/components/Chart/GraphChart.vue.d.ts +184 -0
  1011. package/dist/vue/components/Chart/GraphChart.vue.js +7 -0
  1012. package/dist/vue/components/Chart/GraphChart.vue.js.map +1 -0
  1013. package/dist/vue/components/Chart/GraphChart.vue_vue_type_script_setup_true_lang.js +62 -0
  1014. package/dist/vue/components/Chart/GraphChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1015. package/dist/vue/components/Chart/HeatmapChart.vue.d.ts +129 -0
  1016. package/dist/vue/components/Chart/HeatmapChart.vue.js +7 -0
  1017. package/dist/vue/components/Chart/HeatmapChart.vue.js.map +1 -0
  1018. package/dist/vue/components/Chart/HeatmapChart.vue_vue_type_script_setup_true_lang.js +67 -0
  1019. package/dist/vue/components/Chart/HeatmapChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1020. package/dist/vue/components/Chart/HistogramChart.vue.d.ts +132 -0
  1021. package/dist/vue/components/Chart/HistogramChart.vue.js +7 -0
  1022. package/dist/vue/components/Chart/HistogramChart.vue.js.map +1 -0
  1023. package/dist/vue/components/Chart/HistogramChart.vue_vue_type_script_setup_true_lang.js +66 -0
  1024. package/dist/vue/components/Chart/HistogramChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1025. package/dist/vue/components/Chart/HorizontalBarChart.vue.d.ts +121 -0
  1026. package/dist/vue/components/Chart/HorizontalBarChart.vue.js +7 -0
  1027. package/dist/vue/components/Chart/HorizontalBarChart.vue.js.map +1 -0
  1028. package/dist/vue/components/Chart/HorizontalBarChart.vue_vue_type_script_setup_true_lang.js +55 -0
  1029. package/dist/vue/components/Chart/HorizontalBarChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1030. package/dist/vue/components/Chart/Line3DChart.vue.d.ts +121 -0
  1031. package/dist/vue/components/Chart/Line3DChart.vue.js +7 -0
  1032. package/dist/vue/components/Chart/Line3DChart.vue.js.map +1 -0
  1033. package/dist/vue/components/Chart/Line3DChart.vue_vue_type_script_setup_true_lang.js +47 -0
  1034. package/dist/vue/components/Chart/Line3DChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1035. package/dist/vue/components/Chart/LineChart.vue.d.ts +125 -0
  1036. package/dist/vue/components/Chart/LineChart.vue.js +7 -0
  1037. package/dist/vue/components/Chart/LineChart.vue.js.map +1 -0
  1038. package/dist/vue/components/Chart/LineChart.vue_vue_type_script_setup_true_lang.js +50 -0
  1039. package/dist/vue/components/Chart/LineChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1040. package/dist/vue/components/Chart/MixedChart.vue.d.ts +103 -0
  1041. package/dist/vue/components/Chart/MixedChart.vue.js +7 -0
  1042. package/dist/vue/components/Chart/MixedChart.vue.js.map +1 -0
  1043. package/dist/vue/components/Chart/MixedChart.vue_vue_type_script_setup_true_lang.js +47 -0
  1044. package/dist/vue/components/Chart/MixedChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1045. package/dist/vue/components/Chart/OrderBook.vue.d.ts +125 -0
  1046. package/dist/vue/components/Chart/OrderBook.vue.js +7 -0
  1047. package/dist/vue/components/Chart/OrderBook.vue.js.map +1 -0
  1048. package/dist/vue/components/Chart/OrderBook.vue_vue_type_script_setup_true_lang.js +38 -0
  1049. package/dist/vue/components/Chart/OrderBook.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1050. package/dist/vue/components/Chart/OrderBookHeatmap.vue.d.ts +130 -0
  1051. package/dist/vue/components/Chart/OrderBookHeatmap.vue.js +7 -0
  1052. package/dist/vue/components/Chart/OrderBookHeatmap.vue.js.map +1 -0
  1053. package/dist/vue/components/Chart/OrderBookHeatmap.vue_vue_type_script_setup_true_lang.js +46 -0
  1054. package/dist/vue/components/Chart/OrderBookHeatmap.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1055. package/dist/vue/components/Chart/PieChart.vue.d.ts +104 -0
  1056. package/dist/vue/components/Chart/PieChart.vue.js +7 -0
  1057. package/dist/vue/components/Chart/PieChart.vue.js.map +1 -0
  1058. package/dist/vue/components/Chart/PieChart.vue_vue_type_script_setup_true_lang.js +53 -0
  1059. package/dist/vue/components/Chart/PieChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1060. package/dist/vue/components/Chart/QuadrantChart.vue.d.ts +186 -0
  1061. package/dist/vue/components/Chart/QuadrantChart.vue.js +7 -0
  1062. package/dist/vue/components/Chart/QuadrantChart.vue.js.map +1 -0
  1063. package/dist/vue/components/Chart/QuadrantChart.vue_vue_type_script_setup_true_lang.js +107 -0
  1064. package/dist/vue/components/Chart/QuadrantChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1065. package/dist/vue/components/Chart/RadarChart.vue.d.ts +111 -0
  1066. package/dist/vue/components/Chart/RadarChart.vue.js +7 -0
  1067. package/dist/vue/components/Chart/RadarChart.vue.js.map +1 -0
  1068. package/dist/vue/components/Chart/RadarChart.vue_vue_type_script_setup_true_lang.js +61 -0
  1069. package/dist/vue/components/Chart/RadarChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1070. package/dist/vue/components/Chart/RadialBarChart.vue.d.ts +147 -0
  1071. package/dist/vue/components/Chart/RadialBarChart.vue.js +7 -0
  1072. package/dist/vue/components/Chart/RadialBarChart.vue.js.map +1 -0
  1073. package/dist/vue/components/Chart/RadialBarChart.vue_vue_type_script_setup_true_lang.js +78 -0
  1074. package/dist/vue/components/Chart/RadialBarChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1075. package/dist/vue/components/Chart/RangeAreaChart.vue.d.ts +106 -0
  1076. package/dist/vue/components/Chart/RangeAreaChart.vue.js +7 -0
  1077. package/dist/vue/components/Chart/RangeAreaChart.vue.js.map +1 -0
  1078. package/dist/vue/components/Chart/RangeAreaChart.vue_vue_type_script_setup_true_lang.js +51 -0
  1079. package/dist/vue/components/Chart/RangeAreaChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1080. package/dist/vue/components/Chart/SankeyChart.vue.d.ts +132 -0
  1081. package/dist/vue/components/Chart/SankeyChart.vue.js +7 -0
  1082. package/dist/vue/components/Chart/SankeyChart.vue.js.map +1 -0
  1083. package/dist/vue/components/Chart/SankeyChart.vue_vue_type_script_setup_true_lang.js +71 -0
  1084. package/dist/vue/components/Chart/SankeyChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1085. package/dist/vue/components/Chart/Scatter3DChart.vue.d.ts +121 -0
  1086. package/dist/vue/components/Chart/Scatter3DChart.vue.js +7 -0
  1087. package/dist/vue/components/Chart/Scatter3DChart.vue.js.map +1 -0
  1088. package/dist/vue/components/Chart/Scatter3DChart.vue_vue_type_script_setup_true_lang.js +47 -0
  1089. package/dist/vue/components/Chart/Scatter3DChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1090. package/dist/vue/components/Chart/ScatterChart.vue.d.ts +94 -0
  1091. package/dist/vue/components/Chart/ScatterChart.vue.js +7 -0
  1092. package/dist/vue/components/Chart/ScatterChart.vue.js.map +1 -0
  1093. package/dist/vue/components/Chart/ScatterChart.vue_vue_type_script_setup_true_lang.js +44 -0
  1094. package/dist/vue/components/Chart/ScatterChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1095. package/dist/vue/components/Chart/ShapeChart.vue.d.ts +39 -0
  1096. package/dist/vue/components/Chart/ShapeChart.vue.js +7 -0
  1097. package/dist/vue/components/Chart/ShapeChart.vue.js.map +1 -0
  1098. package/dist/vue/components/Chart/ShapeChart.vue_vue_type_script_setup_true_lang.js +43 -0
  1099. package/dist/vue/components/Chart/ShapeChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1100. package/dist/vue/components/Chart/Sparkline.vue.d.ts +90 -0
  1101. package/dist/vue/components/Chart/Sparkline.vue.js +7 -0
  1102. package/dist/vue/components/Chart/Sparkline.vue.js.map +1 -0
  1103. package/dist/vue/components/Chart/Sparkline.vue_vue_type_script_setup_true_lang.js +66 -0
  1104. package/dist/vue/components/Chart/Sparkline.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1105. package/dist/vue/components/Chart/SunburstChart.vue.d.ts +123 -0
  1106. package/dist/vue/components/Chart/SunburstChart.vue.js +7 -0
  1107. package/dist/vue/components/Chart/SunburstChart.vue.js.map +1 -0
  1108. package/dist/vue/components/Chart/SunburstChart.vue_vue_type_script_setup_true_lang.js +68 -0
  1109. package/dist/vue/components/Chart/SunburstChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1110. package/dist/vue/components/Chart/Surface3DChart.vue.d.ts +143 -0
  1111. package/dist/vue/components/Chart/Surface3DChart.vue.js +7 -0
  1112. package/dist/vue/components/Chart/Surface3DChart.vue.js.map +1 -0
  1113. package/dist/vue/components/Chart/Surface3DChart.vue_vue_type_script_setup_true_lang.js +60 -0
  1114. package/dist/vue/components/Chart/Surface3DChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1115. package/dist/vue/components/Chart/TimeAndSales.vue.d.ts +116 -0
  1116. package/dist/vue/components/Chart/TimeAndSales.vue.js +7 -0
  1117. package/dist/vue/components/Chart/TimeAndSales.vue.js.map +1 -0
  1118. package/dist/vue/components/Chart/TimeAndSales.vue_vue_type_script_setup_true_lang.js +46 -0
  1119. package/dist/vue/components/Chart/TimeAndSales.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1120. package/dist/vue/components/Chart/TradingChart.vue.d.ts +208 -0
  1121. package/dist/vue/components/Chart/TradingChart.vue.js +7 -0
  1122. package/dist/vue/components/Chart/TradingChart.vue.js.map +1 -0
  1123. package/dist/vue/components/Chart/TradingChart.vue_vue_type_script_setup_true_lang.js +101 -0
  1124. package/dist/vue/components/Chart/TradingChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1125. package/dist/vue/components/Chart/TreeChart.vue.d.ts +172 -0
  1126. package/dist/vue/components/Chart/TreeChart.vue.js +7 -0
  1127. package/dist/vue/components/Chart/TreeChart.vue.js.map +1 -0
  1128. package/dist/vue/components/Chart/TreeChart.vue_vue_type_script_setup_true_lang.js +56 -0
  1129. package/dist/vue/components/Chart/TreeChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1130. package/dist/vue/components/Chart/TreemapChart.vue.d.ts +97 -0
  1131. package/dist/vue/components/Chart/TreemapChart.vue.js +7 -0
  1132. package/dist/vue/components/Chart/TreemapChart.vue.js.map +1 -0
  1133. package/dist/vue/components/Chart/TreemapChart.vue_vue_type_script_setup_true_lang.js +54 -0
  1134. package/dist/vue/components/Chart/TreemapChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1135. package/dist/vue/components/Chart/WaterfallChart.vue.d.ts +143 -0
  1136. package/dist/vue/components/Chart/WaterfallChart.vue.js +7 -0
  1137. package/dist/vue/components/Chart/WaterfallChart.vue.js.map +1 -0
  1138. package/dist/vue/components/Chart/WaterfallChart.vue_vue_type_script_setup_true_lang.js +74 -0
  1139. package/dist/vue/components/Chart/WaterfallChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1140. package/dist/vue/components/Chart/cartesian.d.ts +47 -0
  1141. package/dist/vue/components/Chart/cartesian.js +56 -0
  1142. package/dist/vue/components/Chart/cartesian.js.map +1 -0
  1143. package/dist/vue/components/Chart/engine.d.ts +35 -0
  1144. package/dist/vue/components/Chart/engine.js +35 -0
  1145. package/dist/vue/components/Chart/engine.js.map +1 -0
  1146. package/dist/vue/components/Chart/graph.d.ts +153 -0
  1147. package/dist/vue/components/Chart/graph.js +135 -0
  1148. package/dist/vue/components/Chart/graph.js.map +1 -0
  1149. package/dist/vue/components/Chart/index.d.ts +45 -0
  1150. package/dist/vue/components/Chart/index.js +44 -0
  1151. package/dist/vue/components/Chart/orderbook.d.ts +363 -0
  1152. package/dist/vue/components/Chart/orderbook.js +128 -0
  1153. package/dist/vue/components/Chart/orderbook.js.map +1 -0
  1154. package/dist/vue/components/Chart/props.d.ts +188 -0
  1155. package/dist/vue/components/Chart/props.js +92 -0
  1156. package/dist/vue/components/Chart/props.js.map +1 -0
  1157. package/dist/vue/components/Chart/shape.d.ts +41 -0
  1158. package/dist/vue/components/Chart/shape.js +42 -0
  1159. package/dist/vue/components/Chart/shape.js.map +1 -0
  1160. package/dist/vue/components/Chart/three-d.d.ts +106 -0
  1161. package/dist/vue/components/Chart/three-d.js +88 -0
  1162. package/dist/vue/components/Chart/three-d.js.map +1 -0
  1163. package/dist/vue/components/Chart/trading.d.ts +127 -0
  1164. package/dist/vue/components/Chart/trading.js +63 -0
  1165. package/dist/vue/components/Chart/trading.js.map +1 -0
  1166. package/dist/vue/components/Chart/types.d.ts +209 -0
  1167. package/dist/vue/global.d.ts +2 -0
  1168. package/dist/vue/groups/charts.d.ts +1 -0
  1169. package/dist/vue/groups/charts.js +95 -0
  1170. package/dist/vue/groups/charts.js.map +1 -0
  1171. package/dist/vue/index.d.ts +1 -0
  1172. package/dist/vue/index.js +67 -23
  1173. package/dist/vue/internal/register.d.ts +7 -0
  1174. package/dist/vue/internal/register.js +14 -0
  1175. package/dist/vue/internal/register.js.map +1 -0
  1176. package/dist/vue/plugin.d.ts +9 -4
  1177. package/dist/vue/plugin.js +7 -10
  1178. package/dist/vue/plugin.js.map +1 -1
  1179. package/dist/weapp/area-chart/index.js +1 -0
  1180. package/dist/weapp/area-chart/index.json +1 -0
  1181. package/dist/weapp/area-chart/index.wxml +1 -0
  1182. package/dist/weapp/area-chart/index.wxss +1 -0
  1183. package/dist/weapp/box-plot-chart/index.js +1 -0
  1184. package/dist/weapp/box-plot-chart/index.json +1 -0
  1185. package/dist/weapp/box-plot-chart/index.wxml +1 -0
  1186. package/dist/weapp/box-plot-chart/index.wxss +1 -0
  1187. package/dist/weapp/bubble-chart/index.js +1 -0
  1188. package/dist/weapp/bubble-chart/index.json +1 -0
  1189. package/dist/weapp/bubble-chart/index.wxml +1 -0
  1190. package/dist/weapp/bubble-chart/index.wxss +1 -0
  1191. package/dist/weapp/bullet-chart/index.js +1 -0
  1192. package/dist/weapp/bullet-chart/index.json +1 -0
  1193. package/dist/weapp/bullet-chart/index.wxml +1 -0
  1194. package/dist/weapp/bullet-chart/index.wxss +1 -0
  1195. package/dist/weapp/calendar-heatmap/index.js +1 -0
  1196. package/dist/weapp/calendar-heatmap/index.json +1 -0
  1197. package/dist/weapp/calendar-heatmap/index.wxml +1 -0
  1198. package/dist/weapp/calendar-heatmap/index.wxss +1 -0
  1199. package/dist/weapp/candlestick-chart/index.js +1 -0
  1200. package/dist/weapp/candlestick-chart/index.json +1 -0
  1201. package/dist/weapp/candlestick-chart/index.wxml +1 -0
  1202. package/dist/weapp/candlestick-chart/index.wxss +1 -0
  1203. package/dist/weapp/charts/canvas.js +12976 -0
  1204. package/dist/weapp/charts/core.d.ts +2 -0
  1205. package/dist/weapp/charts/core.js +42 -0
  1206. package/dist/weapp/chord-chart/index.js +1 -0
  1207. package/dist/weapp/chord-chart/index.json +1 -0
  1208. package/dist/weapp/chord-chart/index.wxml +1 -0
  1209. package/dist/weapp/chord-chart/index.wxss +1 -0
  1210. package/dist/weapp/controls.js +1495 -4480
  1211. package/dist/weapp/donut-chart/index.js +1 -0
  1212. package/dist/weapp/donut-chart/index.json +1 -0
  1213. package/dist/weapp/donut-chart/index.wxml +1 -0
  1214. package/dist/weapp/donut-chart/index.wxss +1 -0
  1215. package/dist/weapp/funnel-chart/index.js +1 -0
  1216. package/dist/weapp/funnel-chart/index.json +1 -0
  1217. package/dist/weapp/funnel-chart/index.wxml +1 -0
  1218. package/dist/weapp/funnel-chart/index.wxss +1 -0
  1219. package/dist/weapp/gantt-chart/index.js +1 -0
  1220. package/dist/weapp/gantt-chart/index.json +1 -0
  1221. package/dist/weapp/gantt-chart/index.wxml +1 -0
  1222. package/dist/weapp/gantt-chart/index.wxss +1 -0
  1223. package/dist/weapp/gauge-chart/index.js +1 -0
  1224. package/dist/weapp/gauge-chart/index.json +1 -0
  1225. package/dist/weapp/gauge-chart/index.wxml +1 -0
  1226. package/dist/weapp/gauge-chart/index.wxss +1 -0
  1227. package/dist/weapp/heatmap-chart/index.js +1 -0
  1228. package/dist/weapp/heatmap-chart/index.json +1 -0
  1229. package/dist/weapp/heatmap-chart/index.wxml +1 -0
  1230. package/dist/weapp/heatmap-chart/index.wxss +1 -0
  1231. package/dist/weapp/histogram-chart/index.js +1 -0
  1232. package/dist/weapp/histogram-chart/index.json +1 -0
  1233. package/dist/weapp/histogram-chart/index.wxml +1 -0
  1234. package/dist/weapp/histogram-chart/index.wxss +1 -0
  1235. package/dist/weapp/horizontal-bar-chart/index.js +1 -0
  1236. package/dist/weapp/horizontal-bar-chart/index.json +1 -0
  1237. package/dist/weapp/horizontal-bar-chart/index.wxml +1 -0
  1238. package/dist/weapp/horizontal-bar-chart/index.wxss +1 -0
  1239. package/dist/weapp/mixed-chart/index.js +1 -0
  1240. package/dist/weapp/mixed-chart/index.json +1 -0
  1241. package/dist/weapp/mixed-chart/index.wxml +1 -0
  1242. package/dist/weapp/mixed-chart/index.wxss +1 -0
  1243. package/dist/weapp/pie-chart/index.js +1 -0
  1244. package/dist/weapp/pie-chart/index.json +1 -0
  1245. package/dist/weapp/pie-chart/index.wxml +1 -0
  1246. package/dist/weapp/pie-chart/index.wxss +1 -0
  1247. package/dist/weapp/radar-chart/index.js +1 -0
  1248. package/dist/weapp/radar-chart/index.json +1 -0
  1249. package/dist/weapp/radar-chart/index.wxml +1 -0
  1250. package/dist/weapp/radar-chart/index.wxss +1 -0
  1251. package/dist/weapp/radial-bar-chart/index.js +1 -0
  1252. package/dist/weapp/radial-bar-chart/index.json +1 -0
  1253. package/dist/weapp/radial-bar-chart/index.wxml +1 -0
  1254. package/dist/weapp/radial-bar-chart/index.wxss +1 -0
  1255. package/dist/weapp/range-area-chart/index.js +1 -0
  1256. package/dist/weapp/range-area-chart/index.json +1 -0
  1257. package/dist/weapp/range-area-chart/index.wxml +1 -0
  1258. package/dist/weapp/range-area-chart/index.wxss +1 -0
  1259. package/dist/weapp/sankey-chart/index.js +1 -0
  1260. package/dist/weapp/sankey-chart/index.json +1 -0
  1261. package/dist/weapp/sankey-chart/index.wxml +1 -0
  1262. package/dist/weapp/sankey-chart/index.wxss +1 -0
  1263. package/dist/weapp/shape-chart/index.js +1 -0
  1264. package/dist/weapp/shape-chart/index.json +1 -0
  1265. package/dist/weapp/shape-chart/index.wxml +1 -0
  1266. package/dist/weapp/shape-chart/index.wxss +1 -0
  1267. package/dist/weapp/sparkline/index.js +1 -0
  1268. package/dist/weapp/sparkline/index.json +1 -0
  1269. package/dist/weapp/sparkline/index.wxml +1 -0
  1270. package/dist/weapp/sparkline/index.wxss +1 -0
  1271. package/dist/weapp/sunburst-chart/index.js +1 -0
  1272. package/dist/weapp/sunburst-chart/index.json +1 -0
  1273. package/dist/weapp/sunburst-chart/index.wxml +1 -0
  1274. package/dist/weapp/sunburst-chart/index.wxss +1 -0
  1275. package/dist/weapp/treemap-chart/index.js +1 -0
  1276. package/dist/weapp/treemap-chart/index.json +1 -0
  1277. package/dist/weapp/treemap-chart/index.wxml +1 -0
  1278. package/dist/weapp/treemap-chart/index.wxss +1 -0
  1279. package/dist/weapp/types.d.ts +549 -0
  1280. package/dist/weapp/waterfall-chart/index.js +1 -0
  1281. package/dist/weapp/waterfall-chart/index.json +1 -0
  1282. package/dist/weapp/waterfall-chart/index.wxml +1 -0
  1283. package/dist/weapp/waterfall-chart/index.wxss +1 -0
  1284. package/dist/web-components/components/chart/chart.d.ts +58 -0
  1285. package/dist/web-components/components/chart/chart.js +55 -0
  1286. package/dist/web-components/components/chart/chart.js.map +1 -0
  1287. package/dist/web-components/components/chart/charts.d.ts +254 -0
  1288. package/dist/web-components/components/chart/charts.js +208 -0
  1289. package/dist/web-components/components/chart/charts.js.map +1 -0
  1290. package/dist/web-components/components/chart/engine-element.d.ts +53 -0
  1291. package/dist/web-components/components/chart/engine-element.js +77 -0
  1292. package/dist/web-components/components/chart/engine-element.js.map +1 -0
  1293. package/dist/web-components/components/chart/extended.d.ts +234 -0
  1294. package/dist/web-components/components/chart/extended.js +197 -0
  1295. package/dist/web-components/components/chart/extended.js.map +1 -0
  1296. package/dist/web-components/components/chart/series.d.ts +7 -0
  1297. package/dist/web-components/components/chart/series.js +14 -0
  1298. package/dist/web-components/components/chart/series.js.map +1 -0
  1299. package/dist/web-components/components/chart/shape-chart.d.ts +199 -0
  1300. package/dist/web-components/components/chart/shape-chart.js +161 -0
  1301. package/dist/web-components/components/chart/shape-chart.js.map +1 -0
  1302. package/dist/web-components/components/chart/shapes-extended.d.ts +198 -0
  1303. package/dist/web-components/components/chart/shapes-extended.js +182 -0
  1304. package/dist/web-components/components/chart/shapes-extended.js.map +1 -0
  1305. package/dist/web-components/components/chart-3d/chart-3d.d.ts +111 -0
  1306. package/dist/web-components/components/chart-3d/chart-3d.js +97 -0
  1307. package/dist/web-components/components/chart-3d/chart-3d.js.map +1 -0
  1308. package/dist/web-components/components/graph/graph.d.ts +154 -0
  1309. package/dist/web-components/components/graph/graph.js +149 -0
  1310. package/dist/web-components/components/graph/graph.js.map +1 -0
  1311. package/dist/web-components/components/order-book/order-book.d.ts +165 -0
  1312. package/dist/web-components/components/order-book/order-book.js +174 -0
  1313. package/dist/web-components/components/order-book/order-book.js.map +1 -0
  1314. package/dist/web-components/components/trading-chart/trading-chart.d.ts +143 -0
  1315. package/dist/web-components/components/trading-chart/trading-chart.js +158 -0
  1316. package/dist/web-components/components/trading-chart/trading-chart.js.map +1 -0
  1317. package/dist/web-components/elements/chart-3d.d.ts +2 -0
  1318. package/dist/web-components/elements/chart-3d.js +13 -0
  1319. package/dist/web-components/elements/chart-3d.js.map +1 -0
  1320. package/dist/web-components/elements/chart.d.ts +7 -0
  1321. package/dist/web-components/elements/chart.js +44 -0
  1322. package/dist/web-components/elements/chart.js.map +1 -0
  1323. package/dist/web-components/elements/graph.d.ts +2 -0
  1324. package/dist/web-components/elements/graph.js +12 -0
  1325. package/dist/web-components/elements/graph.js.map +1 -0
  1326. package/dist/web-components/elements/order-book.d.ts +2 -0
  1327. package/dist/web-components/elements/order-book.js +13 -0
  1328. package/dist/web-components/elements/order-book.js.map +1 -0
  1329. package/dist/web-components/elements/trading-chart.d.ts +2 -0
  1330. package/dist/web-components/elements/trading-chart.js +8 -0
  1331. package/dist/web-components/elements/trading-chart.js.map +1 -0
  1332. package/dist/web-components/html-custom-data.json +1470 -38
  1333. package/dist/web-components/types/react.d.ts +494 -0
  1334. package/dist/web-components/types/solid.d.ts +368 -0
  1335. package/dist/web-components/types/svelte.d.ts +368 -0
  1336. package/dist/web-components/types/vue.d.ts +410 -0
  1337. package/package.json +128 -1
@@ -1 +1 @@
1
- {"version":3,"file":"controller.js","names":["copyView","v","TAP_SLOP","TOUCH_SLOP","DOUBLE_TAP_MS","LEGEND_ROW","createChartController","options","config","themeInput","theme","createTheme","cache","hidden","listeners","model","view","zoomed","width","height","annotations","scene","sceneDirty","lastPlot","destroyed","hover","pointers","gesture","lastTap","emit","type","listener","event","invalidate","interaction","value","o","measure","text","font","size","weight","rebuild","buildModel","clampRange","base","minSpan","sameRange","resolveAnnotations","it","setHover","legendLayout","option","named","s","cfg","position","entries","x","row","w","legendShape","legendHeight","tooltipLayout","tooltip","custom","result","content","tooltipContent","lines","line","boxW","boxH","left","anchorX","top","anchorY","computeScene","legend","legendTop","layout","layoutChart","labels","collectPointLabels","occupied","labelHeight","a","textBox","x0","x1","y0","y1","right","bottom","pos","pointLabels","placeLabels","t","next","crosshair","showsCrosshair","cx","hoverMarks","dotSize","rect","key","getScene","scales","changed","sameHover","hitAt","sc","hitTest","y","touch","inPlot","p","dataAt","plot","cy","setViewInternal","notify","zoomAt","zoomRange","factor","resetZoom","legendAt","e","toggleSeries","id","startPinch","b","paletteChanged","h","item","i","distance","midX","midY","start","createScales","shift","panRange","at","dx","dy","current","now","hit","set","visibleRange","sorted","count","range","lowerBound","ORDER","scenePrimitives","maxDots","limits","maxBars","column","out","series","end","curved","curvePoints","n","points","bottoms","d","decimateMinMax","nextBottom","k","j","xv","segments","bottomSegments","run","runBottom","yv","bv","half","rects","colors","merge","lastCol","ya","yb","col","pc","toCss","up","down","wicks","bodies","wickColors","bodyColors","step","c","open","color","hi","high","lo","low","hw","hh","inset","unpackColor","dots","colorOf","visible","px","py","cell","cols","owner"],"sources":["../../../../charts/src/engine/controller.ts"],"sourcesContent":["// createChartController: the platform-free chart. It owns the options, the\n// theme, the model, the visible range and the interactions (pointer / touch\n// gestures fed by the host) and describes what to draw (`getScene`). Hosts\n// only draw: createCanvasChart on any 2D context, the React Native charts\n// with views.\n\nimport { toCss, unpackColor } from \"./color\";\nimport { curvePoints } from \"./curve\";\nimport { lowerBound } from \"./data\";\nimport { decimateMinMax } from \"./decimate\";\nimport { createScales, type Rect } from \"./layout\";\nimport { buildModel, type ChartModel, type DataCache } from \"./model\";\nimport {\n font,\n placeLabels,\n textBox,\n type PointLabel,\n type ResolvedAnnotation,\n} from \"./overlay\";\nimport {\n collectPointLabels,\n dotSize,\n hitTest,\n hoverMarks,\n layoutChart,\n legendShape,\n resolveAnnotations,\n sameHover,\n showsCrosshair,\n tooltipContent,\n type ChartLayout,\n type HoverMark,\n type TooltipContent,\n} from \"./scene\";\nimport { createTheme, type ChartTheme, type ChartThemeInput } from \"./theme\";\nimport type {\n ChartEventMap,\n ChartHoverEvent,\n ChartHoverItem,\n ChartOptions,\n ChartPlotClickEvent,\n ChartRect,\n ChartView,\n} from \"./types\";\nimport {\n clampRange,\n panRange,\n sameRange,\n zoomRange,\n type Range,\n} from \"./viewport\";\n\n/** Events of a controller (no renderer events: hosts draw themselves) */\nexport type ChartControllerEventMap = Omit<ChartEventMap, \"renderer\">;\n\nexport interface ChartControllerConfig {\n options: ChartOptions;\n /** Colors and fonts (Minerva variables); light defaults when omitted */\n theme?: ChartThemeInput;\n /** Width in pixels of `text` drawn with the CSS `font` */\n measureText: (text: string, font: string) => number;\n /** Called when the scene changed and must be drawn again */\n onInvalidate?: () => void;\n}\n\nexport interface ChartLegendEntry {\n id: string;\n name: string;\n /** CSS color */\n color: string;\n shape: \"dot\" | \"line\" | \"square\";\n hidden: boolean;\n /** Hit / draw box of the entry, pixels of the chart */\n box: Rect;\n}\n\nexport interface ChartLegendLayout {\n entries: ChartLegendEntry[];\n position: \"top\" | \"bottom\";\n /** Whether a tap toggles the series */\n toggle: boolean;\n /** Height taken by the legend */\n height: number;\n}\n\nexport interface ChartTooltipLayout {\n /** Default content (`text` is set instead when `tooltip.render` returns a string) */\n content: TooltipContent;\n /** Lines of a custom string tooltip */\n text: string[] | null;\n /** Box of the tooltip, pixels of the chart */\n box: Rect;\n /** Line height used to lay the box out */\n lineHeight: number;\n padding: number;\n}\n\nexport interface ChartHoverLayout {\n event: ChartHoverEvent;\n marks: HoverMark[];\n /** X pixel of the guide line (`null` when hidden) */\n crosshairX: number | null;\n tooltip: ChartTooltipLayout | null;\n}\n\n/** Everything a host draws, in CSS pixels of the chart */\nexport interface ChartScene {\n width: number;\n height: number;\n theme: ChartTheme;\n model: ChartModel;\n view: ChartView;\n layout: ChartLayout;\n annotations: ResolvedAnnotation[];\n /** Labels of the dots that found a free slot */\n pointLabels: { label: PointLabel; box: Rect }[];\n legend: ChartLegendLayout | null;\n hover: ChartHoverLayout | null;\n /** Point being dragged (`interaction.dragPoints`) */\n dragging: { x: number; y: number; color: string; size: number } | null;\n}\n\nexport interface ChartPointerOptions {\n /** Pointer id (touch identifier); 0 by default */\n id?: number;\n /** Touch input: the tooltip follows the finger and stays after a tap */\n touch?: boolean;\n}\n\nexport interface ChartController {\n setOptions(options: ChartOptions): void;\n setTheme(theme: ChartThemeInput | undefined): void;\n /** Size of the chart in CSS pixels */\n setSize(width: number, height: number): void;\n /** What to draw (`null` until the size is known) */\n getScene(): ChartScene | null;\n pointerDown(x: number, y: number, options?: ChartPointerOptions): void;\n pointerMove(x: number, y: number, options?: ChartPointerOptions): void;\n pointerUp(x: number, y: number, options?: ChartPointerOptions): void;\n pointerCancel(options?: ChartPointerOptions): void;\n /** The mouse left the chart */\n pointerLeave(): void;\n /** Zooms around a pixel (factor < 1 zooms in) */\n zoomAt(x: number, y: number, factor: number): void;\n resetZoom(): void;\n getView(): ChartView;\n setView(view: Partial<ChartView>): void;\n /** Shows / hides a series (like a legend click) */\n toggleSeries(id: string): void;\n /** Hides the tooltip */\n clearHover(): void;\n getPlotRect(): ChartRect | null;\n toPixel(x: number, y: number): { x: number; y: number } | null;\n fromPixel(x: number, y: number): { x: number; y: number } | null;\n on<K extends keyof ChartControllerEventMap>(\n type: K,\n listener: (event: ChartControllerEventMap[K]) => void,\n ): () => void;\n destroy(): void;\n}\n\nconst copyView = (v: ChartView): ChartView => ({\n x: [v.x[0], v.x[1]],\n y: [v.y[0], v.y[1]],\n});\n\nconst TAP_SLOP = 6;\nconst TOUCH_SLOP = 10;\nconst DOUBLE_TAP_MS = 320;\nconst LEGEND_ROW = 20;\n\ninterface PointerState {\n x: number;\n y: number;\n startX: number;\n startY: number;\n touch: boolean;\n moved: boolean;\n}\n\nexport const createChartController = (\n config: ChartControllerConfig,\n): ChartController => {\n let options = config.options;\n let themeInput = config.theme;\n let theme = createTheme(themeInput, options.palette);\n const cache: DataCache = new Map();\n const hidden = new Set<string>();\n const listeners: {\n [K in keyof ChartControllerEventMap]?: Set<\n (event: ChartControllerEventMap[K]) => void\n >;\n } = {};\n let model: ChartModel;\n let view: ChartView = { x: [0, 1], y: [0, 1] };\n let zoomed = false;\n let width = 0;\n let height = 0;\n let annotations: ResolvedAnnotation[] = [];\n let scene: ChartScene | null = null;\n let sceneDirty = true;\n let lastPlot = \"\";\n let destroyed = false;\n\n let hover: { event: ChartHoverEvent; x: number; y: number } | null = null;\n const pointers = new Map<number, PointerState>();\n let gesture:\n | { kind: \"pan\"; view: ChartView; x: number; y: number }\n | {\n kind: \"pinch\";\n view: ChartView;\n distance: number;\n midX: number;\n midY: number;\n }\n | { kind: \"point\"; item: ChartHoverItem; x: number; y: number }\n | null = null;\n let lastTap = { time: 0, x: 0, y: 0 };\n\n const emit = <K extends keyof ChartControllerEventMap>(\n type: K,\n event: ChartControllerEventMap[K],\n ) => {\n listeners[type]?.forEach((listener) => listener(event));\n };\n\n const invalidate = () => {\n sceneDirty = true;\n if (!destroyed) config.onInvalidate?.();\n };\n\n const interaction = () => {\n const value = options.interaction;\n if (value === false) return null;\n const o = typeof value === \"object\" ? value : {};\n return {\n pan: o.pan ?? true,\n dragPoints: o.dragPoints ?? false,\n };\n };\n\n const measure = (text: string, size = theme.fontSize, weight = 400) =>\n config.measureText(text, font(theme, size, weight));\n\n const rebuild = () => {\n model = buildModel(options, theme, hidden, cache);\n const { base, minSpan } = model;\n if (!zoomed) {\n view = copyView(base);\n } else {\n view = {\n x: model.zoom.x ? clampRange(view.x, base.x, minSpan.x) : [...base.x],\n y: model.zoom.y ? clampRange(view.y, base.y, minSpan.y) : [...base.y],\n };\n zoomed = !sameRange(view.x, base.x) || !sameRange(view.y, base.y);\n }\n annotations = resolveAnnotations(options.annotations, theme);\n if (hover) {\n const stillThere = hover.event.items.every(\n (it) =>\n model.series[it.seriesIndex] &&\n !model.series[it.seriesIndex].hidden &&\n it.index < model.series[it.seriesIndex].cols.count,\n );\n if (!stillThere) setHover(null);\n }\n invalidate();\n };\n\n // --------------------------------------------------------------- legend\n\n const legendLayout = (): ChartLegendLayout | null => {\n const option = options.legend;\n const named = options.series.filter((s) => s.name).length;\n const show = option === undefined ? named > 1 : !!option;\n if (!show) return null;\n const cfg = typeof option === \"object\" ? option : {};\n const position = cfg.position === \"bottom\" ? \"bottom\" : \"top\";\n const entries: ChartLegendEntry[] = [];\n let x = 4;\n let row = 0;\n for (const s of model.series) {\n const w = 14 + measure(s.name, 12) + 8;\n if (x + w > width - 4 && x > 4) {\n x = 4;\n row++;\n }\n entries.push({\n id: s.id,\n name: s.name,\n color: s.colorCss,\n shape: legendShape(s.type),\n hidden: s.hidden,\n box: { x, y: row * LEGEND_ROW, width: w, height: LEGEND_ROW },\n });\n x += w + 10;\n }\n const legendHeight = (row + 1) * LEGEND_ROW + 6;\n if (position === \"bottom\") {\n for (const e of entries) e.box.y += height - legendHeight + 6;\n }\n return {\n entries,\n position,\n toggle: cfg.toggle ?? true,\n height: legendHeight,\n };\n };\n\n // ---------------------------------------------------------------- scene\n\n const tooltipLayout = (\n event: ChartHoverEvent,\n anchorX: number,\n anchorY: number,\n ): ChartTooltipLayout | null => {\n const tooltip = options.tooltip;\n if (tooltip === false) return null;\n const custom = typeof tooltip === \"object\" ? tooltip.render : undefined;\n let text: string[] | null = null;\n if (custom) {\n const result = custom(event);\n if (result === null || result === \"\") return null;\n if (typeof result === \"string\") text = result.split(\"\\n\");\n }\n const content = tooltipContent(model, event, scene?.layout.yTicks ?? null);\n const lineHeight = 18;\n const padding = 8;\n let w = 0;\n let lines: number;\n if (text) {\n for (const line of text) w = Math.max(w, measure(line, 12));\n lines = text.length;\n } else {\n w = measure(content.title, 12, 600) + (content.titleColor ? 14 : 0);\n for (const row of content.rows) {\n w = Math.max(\n w,\n (row.color ? 14 : 0) +\n measure(row.name, 12) +\n 16 +\n measure(row.value, 12, 600),\n );\n }\n lines = 1 + content.rows.length;\n }\n const boxW = Math.ceil(Math.max(w, 96) + padding * 2 + 4);\n const boxH = lines * lineHeight + padding * 2;\n let left = anchorX + 14;\n if (left + boxW > width - 4) left = anchorX - 14 - boxW;\n left = Math.max(4, Math.min(left, width - boxW - 4));\n const top = Math.max(4, Math.min(anchorY - boxH / 2, height - boxH - 4));\n return {\n content,\n text,\n box: { x: left, y: top, width: boxW, height: boxH },\n lineHeight,\n padding,\n };\n };\n\n const computeScene = (): ChartScene | null => {\n if (width <= 0 || height <= 0) return null;\n const legend = legendLayout();\n const legendTop = legend?.position === \"top\" ? legend.height : 0;\n const layout = layoutChart({\n model,\n view,\n theme,\n width,\n height: height - (legend?.height ?? 0),\n padding: options.padding,\n top: legendTop,\n measure: (text) => measure(text),\n });\n const labels = collectPointLabels(\n model,\n view,\n layout.scales,\n layout.yTicks,\n );\n const occupied: Rect[] = [];\n const labelHeight = theme.fontSize + 4;\n for (const a of annotations) {\n if (a.type === \"text\" && a.text) {\n occupied.push(\n textBox(\n a,\n layout.scales,\n measure(a.text, theme.fontSize, a.weight),\n labelHeight,\n ),\n );\n continue;\n }\n if (a.type !== \"rect\" || !a.label) continue;\n // keep the dot labels off the area titles (drawForeground does the same)\n const s = layout.scales;\n const x0 = a.x0 === undefined ? layout.plot.x : s.xToPx(a.x0);\n const x1 =\n a.x1 === undefined ? layout.plot.x + layout.plot.width : s.xToPx(a.x1);\n const y0 =\n a.y0 === undefined ? layout.plot.y + layout.plot.height : s.yToPx(a.y0);\n const y1 = a.y1 === undefined ? layout.plot.y : s.yToPx(a.y1);\n const w = measure(a.label, theme.fontSize + 1, 600);\n const left = Math.min(x0, x1);\n const right = Math.max(x0, x1);\n const top = Math.min(y0, y1);\n const bottom = Math.max(y0, y1);\n const pos = a.labelPosition;\n occupied.push({\n x: pos.endsWith(\"left\")\n ? left + 10\n : pos.endsWith(\"right\")\n ? right - 10 - w\n : (left + right - w) / 2,\n y: pos.startsWith(\"top\")\n ? top + 10\n : pos.startsWith(\"bottom\")\n ? bottom - 10 - labelHeight\n : (top + bottom - labelHeight) / 2,\n width: w,\n height: labelHeight,\n });\n }\n const pointLabels = placeLabels(\n labels,\n layout.plot,\n (t) => measure(t),\n labelHeight - 2,\n occupied,\n );\n const next: ChartScene = {\n width,\n height,\n theme,\n model,\n view: copyView(view),\n layout,\n annotations,\n pointLabels,\n legend,\n hover: null,\n dragging: null,\n };\n scene = next;\n if (hover) {\n const crosshair = showsCrosshair(model, hover.event, options.crosshair);\n const cx = layout.scales.xToPx(hover.event.items[0].x);\n next.hover = {\n event: hover.event,\n marks: hoverMarks(model, layout.scales, hover.event),\n crosshairX:\n crosshair &&\n cx >= layout.plot.x &&\n cx <= layout.plot.x + layout.plot.width\n ? cx\n : null,\n tooltip:\n gesture?.kind === \"pan\" || gesture?.kind === \"point\"\n ? null\n : tooltipLayout(hover.event, hover.x, hover.y),\n };\n }\n if (gesture?.kind === \"point\") {\n const s = model.series[gesture.item.seriesIndex];\n next.dragging = {\n x: gesture.x,\n y: gesture.y,\n color: gesture.item.color,\n size: (s ? dotSize(s, gesture.item.index) : 8) + 6,\n };\n }\n const rect = layout.plot;\n const key = `${rect.x},${rect.y},${rect.width},${rect.height}`;\n if (key !== lastPlot) {\n lastPlot = key;\n emit(\"layout\", { ...rect });\n }\n return next;\n };\n\n const getScene = () => {\n if (sceneDirty || !scene) {\n sceneDirty = false;\n scene = computeScene();\n }\n return scene;\n };\n\n // ---------------------------------------------------------- interaction\n\n const scales = () => getScene()?.layout.scales ?? null;\n\n const setHover = (\n next: { event: ChartHoverEvent; x: number; y: number } | null,\n ) => {\n const changed = !sameHover(hover?.event ?? null, next?.event ?? null);\n hover = next;\n invalidate();\n if (changed) emit(\"hover\", next ? next.event : null);\n };\n\n const hitAt = (x: number, y: number, touch: boolean) => {\n const sc = scales();\n return sc\n ? hitTest(model, sc, scene?.layout.xTicks ?? null, x, y, touch ? 8 : 0)\n : null;\n };\n\n const inPlot = (x: number, y: number) => {\n const p = scales()?.plot;\n return (\n !!p && x >= p.x && x <= p.x + p.width && y >= p.y && y <= p.y + p.height\n );\n };\n\n const dataAt = (x: number, y: number) => {\n const sc = scales();\n if (!sc) return null;\n const { plot } = sc;\n const cx = Math.max(plot.x, Math.min(plot.x + plot.width, x));\n const cy = Math.max(plot.y, Math.min(plot.y + plot.height, y));\n return { x: sc.pxToX(cx), y: sc.pxToY(cy) };\n };\n\n const setViewInternal = (next: ChartView, notify: boolean) => {\n const { base, minSpan } = model;\n view = {\n x: clampRange(next.x, base.x, minSpan.x),\n y: clampRange(next.y, base.y, minSpan.y),\n };\n zoomed = !sameRange(view.x, base.x) || !sameRange(view.y, base.y);\n if (notify) emit(\"zoom\", copyView(view));\n invalidate();\n };\n\n const zoomAt = (x: number, y: number, factor: number) => {\n const sc = scales();\n if (!sc || (!model.zoom.x && !model.zoom.y)) return;\n const next = copyView(view);\n if (model.zoom.x) next.x = zoomRange(view.x, sc.pxToX(x), factor);\n if (model.zoom.y) next.y = zoomRange(view.y, sc.pxToY(y), factor);\n setViewInternal(next, true);\n };\n\n const resetZoom = () => {\n if (!zoomed) return;\n setViewInternal(copyView(model.base), true);\n };\n\n const legendAt = (x: number, y: number) =>\n getScene()?.legend?.entries.find(\n (e) =>\n x >= e.box.x &&\n x <= e.box.x + e.box.width &&\n y >= e.box.y &&\n y <= e.box.y + e.box.height,\n ) ?? null;\n\n const toggleSeries = (id: string) => {\n if (hidden.has(id)) hidden.delete(id);\n else hidden.add(id);\n rebuild();\n };\n\n const startPinch = () => {\n const [a, b] = [...pointers.values()];\n gesture = {\n kind: \"pinch\",\n view: copyView(view),\n distance: Math.max(1, Math.hypot(a.x - b.x, a.y - b.y)),\n midX: (a.x + b.x) / 2,\n midY: (a.y + b.y) / 2,\n };\n setHover(null);\n };\n\n const pointerDown = (x: number, y: number, o: ChartPointerOptions = {}) => {\n if (destroyed) return;\n const id = o.id ?? 0;\n const touch = !!o.touch;\n pointers.set(id, { x, y, startX: x, startY: y, touch, moved: false });\n const it = interaction();\n if (pointers.size === 2) {\n if (it && (model.zoom.x || model.zoom.y) && gesture?.kind !== \"point\")\n startPinch();\n return;\n }\n if (pointers.size > 2 || !it) {\n if (!it && touch) {\n const event = hitAt(x, y, true);\n setHover(event ? { event, x, y } : null);\n }\n return;\n }\n if (it.dragPoints) {\n const item = hitAt(x, y, touch)?.items.find(\n (i) => model.series[i.seriesIndex].type === \"scatter\",\n );\n if (item) {\n gesture = { kind: \"point\", item, x, y };\n return;\n }\n }\n if (zoomed && it.pan && inPlot(x, y)) {\n gesture = { kind: \"pan\", view: copyView(view), x, y };\n return;\n }\n gesture = null;\n if (touch) {\n const event = hitAt(x, y, true);\n setHover(event ? { event, x, y } : null);\n }\n };\n\n const pointerMove = (x: number, y: number, o: ChartPointerOptions = {}) => {\n if (destroyed) return;\n const id = o.id ?? 0;\n const p = pointers.get(id);\n if (p) {\n p.x = x;\n p.y = y;\n if (\n !p.moved &&\n Math.hypot(x - p.startX, y - p.startY) >\n (p.touch ? TOUCH_SLOP : TAP_SLOP)\n )\n p.moved = true;\n }\n if (gesture?.kind === \"pinch\" && pointers.size >= 2) {\n const [a, b] = [...pointers.values()];\n const distance = Math.max(1, Math.hypot(a.x - b.x, a.y - b.y));\n const midX = (a.x + b.x) / 2;\n const midY = (a.y + b.y) / 2;\n const sc = scales();\n if (!sc) return;\n const start = createScales(\n sc.plot,\n gesture.view,\n model.x.reverse,\n model.y.reverse,\n );\n const factor = gesture.distance / distance;\n const next = copyView(gesture.view);\n if (model.zoom.x) {\n next.x = zoomRange(gesture.view.x, start.pxToX(gesture.midX), factor);\n const shift = (midX - gesture.midX) * start.xPerPx * factor;\n next.x = panRange(next.x, model.x.reverse ? shift : -shift);\n }\n if (model.zoom.y) {\n next.y = zoomRange(gesture.view.y, start.pxToY(gesture.midY), factor);\n const shift = (midY - gesture.midY) * start.yPerPx * factor;\n next.y = panRange(next.y, model.y.reverse ? -shift : shift);\n }\n setViewInternal(next, true);\n return;\n }\n if (gesture?.kind === \"point\" && p) {\n if (!p.moved) return;\n gesture.x = x;\n gesture.y = y;\n const at = dataAt(x, y);\n invalidate();\n if (at) emit(\"drag\", { item: gesture.item, x: at.x, y: at.y });\n return;\n }\n if (gesture?.kind === \"pan\" && p) {\n if (!p.moved) return;\n const sc = scales();\n if (!sc) return;\n const dx = x - gesture.x;\n const dy = y - gesture.y;\n const next = copyView(gesture.view);\n if (model.zoom.x)\n next.x = panRange(\n gesture.view.x,\n -dx * sc.xPerPx * (model.x.reverse ? -1 : 1),\n );\n if (model.zoom.y)\n next.y = panRange(\n gesture.view.y,\n dy * sc.yPerPx * (model.y.reverse ? -1 : 1),\n );\n setViewInternal(next, true);\n return;\n }\n if (pointers.size > 1) return;\n // mouse hover, or a finger scrubbing along the data\n if (!p || p.touch || !o.touch) {\n const event = hitAt(x, y, !!p?.touch || !!o.touch);\n if (event || !p?.touch) setHover(event ? { event, x, y } : null);\n }\n };\n\n const pointerUp = (x: number, y: number, o: ChartPointerOptions = {}) => {\n if (destroyed) return;\n const id = o.id ?? 0;\n const p = pointers.get(id);\n pointers.delete(id);\n const current = gesture;\n if (current?.kind === \"pinch\") {\n if (pointers.size < 2) gesture = null;\n return;\n }\n gesture = null;\n if (!p) return;\n if (current?.kind === \"point\") {\n if (p.moved) {\n const at = dataAt(x, y);\n invalidate();\n if (at) emit(\"drop\", { item: current.item, x: at.x, y: at.y });\n return;\n }\n } else if (current?.kind === \"pan\" && p.moved) {\n invalidate();\n return;\n }\n if (p.moved) {\n if (p.touch) invalidate();\n return;\n }\n // tap / click\n const now = Date.now();\n if (\n p.touch &&\n now - lastTap.time < DOUBLE_TAP_MS &&\n Math.hypot(x - lastTap.x, y - lastTap.y) < 24 &&\n zoomed\n ) {\n lastTap = { time: 0, x, y };\n resetZoom();\n return;\n }\n lastTap = { time: now, x, y };\n const legend = legendAt(x, y);\n if (legend) {\n if (getScene()?.legend?.toggle) toggleSeries(legend.id);\n return;\n }\n const hit = hitAt(x, y, p.touch);\n if (hit) {\n if (p.touch) setHover({ event: hit, x, y });\n emit(\"click\", hit);\n return;\n }\n if (p.touch) setHover(null);\n if (inPlot(x, y)) {\n const at = dataAt(x, y);\n if (at) emit(\"plotClick\", at as ChartPlotClickEvent);\n }\n };\n\n const pointerCancel = (o: ChartPointerOptions = {}) => {\n pointers.delete(o.id ?? 0);\n if (gesture?.kind === \"point\" || pointers.size < 2) gesture = null;\n invalidate();\n };\n\n model = buildModel(options, theme, hidden, cache);\n rebuild();\n\n return {\n setOptions(next) {\n if (destroyed) return;\n const paletteChanged =\n (next.palette ?? []).join() !== (options.palette ?? []).join();\n options = next;\n if (paletteChanged) theme = createTheme(themeInput, options.palette);\n rebuild();\n },\n setTheme(next) {\n if (destroyed) return;\n themeInput = next;\n theme = createTheme(themeInput, options.palette);\n rebuild();\n },\n setSize(w, h) {\n if (w === width && h === height) return;\n width = Math.max(0, w);\n height = Math.max(0, h);\n invalidate();\n },\n getScene,\n pointerDown,\n pointerMove,\n pointerUp,\n pointerCancel,\n pointerLeave() {\n if (!gesture && hover) setHover(null);\n },\n zoomAt,\n resetZoom,\n getView: () => copyView(view),\n setView(next) {\n if (destroyed) return;\n setViewInternal({ x: next.x ?? view.x, y: next.y ?? view.y }, false);\n },\n toggleSeries,\n clearHover() {\n if (hover) setHover(null);\n },\n getPlotRect() {\n const p = getScene()?.layout.plot;\n return p ? { ...p } : null;\n },\n toPixel(x, y) {\n const sc = scales();\n return sc ? { x: sc.xToPx(x), y: sc.yToPx(y) } : null;\n },\n fromPixel(x, y) {\n const sc = scales();\n return sc ? { x: sc.pxToX(x), y: sc.pxToY(y) } : null;\n },\n on(type, listener) {\n let set = listeners[type] as Set<typeof listener> | undefined;\n if (!set) {\n set = new Set();\n (listeners as Record<string, unknown>)[type] = set;\n }\n set.add(listener);\n return () => {\n set.delete(listener);\n };\n },\n destroy() {\n destroyed = true;\n pointers.clear();\n for (const key of Object.keys(listeners))\n delete (listeners as Record<string, unknown>)[key];\n },\n };\n};\n\n// ------------------------------------------------------------- primitives\n\n/** A polyline (pixels of the chart): interleaved x, y */\nexport interface ChartLinePrimitive {\n kind: \"line\";\n seriesIndex: number;\n color: string;\n width: number;\n /** Runs of points without gaps */\n segments: number[][];\n}\n\nexport interface ChartAreaPrimitive {\n kind: \"area\";\n seriesIndex: number;\n color: string;\n opacity: number;\n /** Y pixel of the baseline */\n baseline: number;\n segments: number[][];\n /** Stacked areas: y pixel of the bottom edge under every point of `segments` */\n bottoms?: number[][];\n}\n\nexport interface ChartBarPrimitive {\n kind: \"bars\";\n seriesIndex: number;\n color: string;\n /** Interleaved x, y, width, height */\n rects: number[];\n /** CSS color of every rect (candlesticks, heatmap cells, colored bars); `color` otherwise */\n colors?: string[];\n /** Corner radius in pixels */\n radius?: number;\n}\n\nexport interface ChartDotPrimitive {\n kind: \"dots\";\n seriesIndex: number;\n opacity: number;\n /** Interleaved x, y, diameter */\n dots: number[];\n /** CSS color of every dot */\n colors: string[];\n}\n\nexport type ChartPrimitive =\n | ChartLinePrimitive\n | ChartAreaPrimitive\n | ChartBarPrimitive\n | ChartDotPrimitive;\n\nexport interface ChartPrimitiveOptions {\n /**\n * Upper bound of the dots drawn per series: above it the dots are merged\n * into one per occupied cell of their size\n * @default 4000\n */\n maxDots?: number;\n /**\n * Upper bound of the bars drawn per series: above it neighboring bars\n * sharing a pixel column are merged\n * @default 2000\n */\n maxBars?: number;\n /**\n * Width in pixels of the columns lines are decimated to (at most four\n * points per column); larger values mean fewer shapes\n * @default 1\n */\n columnWidth?: number;\n /** Size of the cells dots are merged into (the dot size by default) */\n dotCell?: number;\n}\n\nconst visibleRange = (\n x: Float64Array,\n count: number,\n sorted: boolean,\n range: Range,\n): [number, number] => {\n if (!sorted) return [0, count];\n const [a, b] = range[0] <= range[1] ? range : [range[1], range[0]];\n return [\n Math.max(0, lowerBound(x, count, a) - 1),\n Math.min(count, lowerBound(x, count, b) + 1),\n ];\n};\n\nconst ORDER = {\n heatmap: 0,\n area: 1,\n bar: 2,\n candlestick: 3,\n line: 4,\n scatter: 5,\n} as const;\n\n/**\n * Data of a scene as simple shapes in pixels of the chart, for hosts\n * without a canvas (React Native views, SVG): lines are decimated to a few\n * points per pixel column and large point sets are merged per cell, so the\n * number of shapes stays bounded by the size of the chart.\n */\nexport const scenePrimitives = (\n scene: ChartScene,\n limits: ChartPrimitiveOptions = {},\n): ChartPrimitive[] => {\n const { model, view, layout } = scene;\n const sc = layout.scales;\n const { plot } = layout;\n const maxDots = limits.maxDots ?? 4000;\n const maxBars = limits.maxBars ?? 2000;\n const column = Math.max(1, limits.columnWidth ?? 1);\n const out: ChartPrimitive[] = [];\n const series = model.series\n .filter((s) => !s.hidden && s.cols.count > 0)\n .sort((a, b) => ORDER[a.type] - ORDER[b.type] || a.index - b.index);\n for (const s of series) {\n const { x, y, count, sorted } = s.cols;\n if (s.type === \"line\" || s.type === \"area\") {\n const [start, end] = visibleRange(x, count, sorted, view.x);\n const top = s.stackTop ?? y;\n // curve first (in data space), then decimation; the stacked bottom\n // edge follows the same sampling\n const curved = curvePoints(x, top, start, end, s.curve);\n const bottom = s.stackBase\n ? curvePoints(x, s.stackBase, start, end, s.curve).points\n : null;\n let n = curved.length;\n let points = curved.points;\n let bottoms = bottom;\n if (sorted && n > (plot.width * 2) / column) {\n if (bottom) {\n // keep the bottoms aligned with the kept tops (same x)\n const d = decimateMinMax(points, 0, n, (v) => sc.xToPx(v) / column);\n const next = new Float64Array(d.length * 2);\n const nextBottom = new Float64Array(d.length * 2);\n let k = 0;\n let j = 0;\n for (let i = 0; i < d.length; i++) {\n const xv = d.points[i * 2];\n while (j < n - 1 && points[j * 2] < xv) j++;\n next[k * 2] = xv;\n next[k * 2 + 1] = d.points[i * 2 + 1];\n nextBottom[k * 2] = xv;\n nextBottom[k * 2 + 1] = bottom[j * 2 + 1];\n k++;\n }\n points = next;\n bottoms = nextBottom;\n n = k;\n } else {\n const d = decimateMinMax(points, 0, n, (v) => sc.xToPx(v) / column);\n points = d.points;\n n = d.length;\n }\n }\n const segments: number[][] = [];\n const bottomSegments: number[][] = [];\n let run: number[] = [];\n let runBottom: number[] = [];\n for (let i = 0; i < n; i++) {\n const xv = points[i * 2];\n const yv = points[i * 2 + 1];\n const bv = bottoms ? bottoms[i * 2 + 1] : 0;\n if (\n !Number.isFinite(xv) ||\n !Number.isFinite(yv) ||\n !Number.isFinite(bv)\n ) {\n if (run.length) {\n segments.push(run);\n bottomSegments.push(runBottom);\n }\n run = [];\n runBottom = [];\n continue;\n }\n run.push(sc.xToPx(xv), sc.yToPx(yv));\n if (bottoms) runBottom.push(sc.yToPx(bv));\n }\n if (run.length) {\n segments.push(run);\n bottomSegments.push(runBottom);\n }\n if (s.type === \"area\") {\n out.push({\n kind: \"area\",\n seriesIndex: s.index,\n color: s.colorCss,\n opacity: s.opacity,\n baseline: sc.yToPx(model.baseline),\n segments,\n ...(bottoms ? { bottoms: bottomSegments } : {}),\n });\n }\n out.push({\n kind: \"line\",\n seriesIndex: s.index,\n color: s.colorCss,\n width: s.type === \"area\" ? Math.min(s.lineWidth, 2) : s.lineWidth,\n segments,\n });\n continue;\n }\n if (s.type === \"bar\" && s.barBase && s.barTop) {\n const [start, end] = visibleRange(x, count, sorted, view.x);\n const half = Math.max(s.barHalfWidth / sc.xPerPx, 0.5);\n const rects: number[] = [];\n const colors: string[] = [];\n const merge = end - start > maxBars;\n let lastCol = NaN;\n for (let i = start; i < end; i++) {\n const a = s.barBase[i];\n const b = s.barTop[i];\n if (!Number.isFinite(a) || !Number.isFinite(b)) continue;\n const cx = sc.xToPx(x[i] + s.barOffset);\n if (cx + half < plot.x || cx - half > plot.x + plot.width) continue;\n const ya = sc.yToPx(a);\n const yb = sc.yToPx(b);\n const top = Math.min(ya, yb);\n const h = Math.max(1, Math.abs(ya - yb));\n const col = Math.floor(cx);\n if (merge && col === lastCol && rects.length) {\n // widen the previous bar of the same pixel column vertically\n const k = rects.length - 4;\n const bottom = Math.max(rects[k + 1] + rects[k + 3], top + h);\n rects[k + 1] = Math.min(rects[k + 1], top);\n rects[k + 3] = bottom - rects[k + 1];\n continue;\n }\n lastCol = col;\n rects.push(cx - half, top, half * 2, h);\n const pc = s.pointColors?.[i];\n colors.push(pc ? toCss(pc) : s.colorCss);\n }\n out.push({\n kind: \"bars\",\n seriesIndex: s.index,\n color: s.colorCss,\n rects,\n ...(s.pointColors ? { colors } : {}),\n radius: s.radius,\n });\n continue;\n }\n if (s.type === \"candlestick\") {\n const [start, end] = visibleRange(x, count, sorted, view.x);\n const { open, high, low } = s.cols;\n const half = Math.max(s.barHalfWidth / sc.xPerPx, 1);\n const up = toCss(s.upColor);\n const down = toCss(s.downColor);\n const wicks: number[] = [];\n const bodies: number[] = [];\n const wickColors: string[] = [];\n const bodyColors: string[] = [];\n const step = Math.max(1, Math.ceil((end - start) / maxBars));\n for (let i = start; i < end; i += step) {\n const c = y[i];\n const o = open ? open[i] : c;\n if (!Number.isFinite(c) || !Number.isFinite(o)) continue;\n const cx = sc.xToPx(x[i]);\n if (cx + half < plot.x || cx - half > plot.x + plot.width) continue;\n const color = c < o ? down : up;\n const hi = sc.yToPx(high ? high[i] : Math.max(o, c));\n const lo = sc.yToPx(low ? low[i] : Math.min(o, c));\n wicks.push(cx - 0.5, Math.min(hi, lo), 1, Math.abs(lo - hi));\n wickColors.push(color);\n const ya = sc.yToPx(o);\n const yb = sc.yToPx(c);\n bodies.push(\n cx - half,\n Math.min(ya, yb),\n half * 2,\n Math.max(1, Math.abs(ya - yb)),\n );\n bodyColors.push(color);\n }\n out.push(\n {\n kind: \"bars\",\n seriesIndex: s.index,\n color: up,\n rects: wicks,\n colors: wickColors,\n },\n {\n kind: \"bars\",\n seriesIndex: s.index,\n color: up,\n rects: bodies,\n colors: bodyColors,\n radius: 1,\n },\n );\n continue;\n }\n if (s.type === \"heatmap\") {\n const hw = Math.abs(s.cellHalf.x / sc.xPerPx);\n const hh = Math.abs(s.cellHalf.y / sc.yPerPx);\n const rects: number[] = [];\n const colors: string[] = [];\n const inset = hw > 3 && hh > 3 ? 1 : 0;\n for (let i = 0; i < count && rects.length / 4 < maxBars * 4; i++) {\n const c = s.cellColors?.[i];\n if (!c) continue;\n const cx = sc.xToPx(x[i]);\n const cy = sc.yToPx(y[i]);\n if (\n cx + hw < plot.x ||\n cx - hw > plot.x + plot.width ||\n cy + hh < plot.y ||\n cy - hh > plot.y + plot.height\n )\n continue;\n rects.push(\n cx - hw + inset,\n cy - hh + inset,\n hw * 2 - inset * 2,\n hh * 2 - inset * 2,\n );\n colors.push(toCss(unpackColor(c)));\n }\n out.push({\n kind: \"bars\",\n seriesIndex: s.index,\n color: s.colorCss,\n rects,\n colors,\n radius: s.radius,\n });\n continue;\n }\n // scatter\n const dots: number[] = [];\n const colors: string[] = [];\n const colorOf = (i: number) => {\n const c = s.pointColors?.[i];\n return c ? toCss(c) : s.colorCss;\n };\n const visible: number[] = [];\n for (let i = 0; i < count; i++) {\n const xv = x[i];\n const yv = y[i];\n if (!Number.isFinite(xv) || !Number.isFinite(yv)) continue;\n const px = sc.xToPx(xv);\n const py = sc.yToPx(yv);\n if (\n px < plot.x ||\n px > plot.x + plot.width ||\n py < plot.y ||\n py > plot.y + plot.height\n )\n continue;\n visible.push(i);\n }\n if (visible.length > maxDots) {\n const cell = Math.max(2, limits.dotCell ?? s.pointSize * 0.8);\n const cols = Math.ceil(plot.width / cell) + 1;\n const owner = new Map<number, number>();\n for (const i of visible) {\n const cx = Math.floor((sc.xToPx(x[i]) - plot.x) / cell);\n const cy = Math.floor((sc.yToPx(y[i]) - plot.y) / cell);\n owner.set(cy * cols + cx, i);\n }\n for (const [key, i] of owner) {\n dots.push(\n plot.x + ((key % cols) + 0.5) * cell,\n plot.y + (Math.floor(key / cols) + 0.5) * cell,\n cell,\n );\n colors.push(colorOf(i));\n }\n } else {\n for (const i of visible) {\n dots.push(sc.xToPx(x[i]), sc.yToPx(y[i]), dotSize(s, i));\n colors.push(colorOf(i));\n }\n }\n out.push({\n kind: \"dots\",\n seriesIndex: s.index,\n opacity: s.opacity,\n dots,\n colors,\n });\n }\n return out;\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"controller.js","names":["copyView","v","TAP_SLOP","TOUCH_SLOP","DOUBLE_TAP_MS","LEGEND_ROW","createChartController","options","config","themeInput","theme","createTheme","cache","hidden","listeners","model","view","zoomed","width","height","annotations","scene","sceneDirty","lastPlot","destroyed","hover","pointers","gesture","lastTap","emit","type","listener","event","invalidate","interaction","value","o","measure","text","font","size","weight","rebuild","buildModel","clampRange","base","minSpan","sameRange","resolveAnnotations","it","setHover","legendLayout","option","named","s","legendShown","cfg","position","ramp","colorLegend","first","last","barWidth","right","barX","cy","l","entries","x","row","w","legendShape","legendHeight","tooltipLayout","tooltip","custom","result","content","tooltipContent","lines","swatchWidth","line","names","values","boxW","boxH","left","anchorX","top","anchorY","computeScene","legend","legendTop","layout","layoutChart","labels","collectPointLabels","occupied","labelHeight","a","textBox","r","rectOf","pos","pointLabels","placeLabels","t","next","connectorSegments","guide","crosshairAt","horizontal","hoverMarks","colors","heatPosition","dotSize","rect","key","getScene","scales","changed","sameHover","hitAt","sc","hitTest","y","touch","inPlot","p","dataAt","cx","plot","toData","fromPlotY","setViewInternal","notify","zoomAt","at","zoomRange","factor","resetZoom","legendAt","e","toggleSeries","id","startPinch","b","paletteChanged","h","item","i","distance","midX","midY","start","createScales","from","to","panRange","current","now","hit","toScreen","toPlotY","set","visibleRange","sorted","count","range","lowerBound","ORDER","toRects","along","out","k","scenePrimitives","maxDots","limits","maxBars","column","xLo","xHi","series","end","curved","curvePoints","bottom","n","points","bottoms","d","decimateMinMax","nextBottom","j","xv","band","segments","bottomSegments","lowerSegments","run","runBottom","runLower","flush","yv","bv","q","half","rects","merge","lastCol","ya","yb","col","pc","toCss","boxPrimitives","up","down","wicks","bodies","wickColors","bodyColors","step","c","open","color","hi","high","lo","low","hw","hh","style","heatCellStyle","inset","screenRect","unpackColor","dots","colorOf","visible","screen","cell","cols","owner","lw","boxes","boxColors","lineColors","dotColors","vertical","across","thick","m","q1","q3","before","outliers","prims"],"sources":["../../../../charts/src/engine/controller.ts"],"sourcesContent":["// createChartController: the platform-free chart. It owns the options, the\n// theme, the model, the visible range and the interactions (pointer / touch\n// gestures fed by the host) and describes what to draw (`getScene`). Hosts\n// only draw: createCanvasChart on any 2D context, the React Native charts\n// with views.\n\nimport { toCss, unpackColor } from \"./color\";\nimport { curvePoints } from \"./curve\";\nimport { lowerBound } from \"./data\";\nimport { decimateMinMax } from \"./decimate\";\nimport {\n createScales,\n heatCellStyle,\n screenRect,\n toData,\n toScreen,\n type Rect,\n type Scales,\n} from \"./layout\";\nimport {\n buildModel,\n fromPlotY,\n heatPosition,\n toPlotY,\n type ChartModel,\n type DataCache,\n type SeriesModel,\n} from \"./model\";\nimport {\n font,\n placeLabels,\n rectOf,\n textBox,\n type PointLabel,\n type ResolvedAnnotation,\n} from \"./overlay\";\nimport {\n collectPointLabels,\n colorLegend,\n connectorSegments,\n crosshairAt,\n dotSize,\n hitTest,\n hoverMarks,\n layoutChart,\n legendShape,\n legendShown,\n resolveAnnotations,\n sameHover,\n tooltipContent,\n type ChartLayout,\n type ConnectorSegment,\n type HoverMark,\n type TooltipContent,\n} from \"./scene\";\nimport { createTheme, type ChartTheme, type ChartThemeInput } from \"./theme\";\nimport type {\n ChartEventMap,\n ChartHoverEvent,\n ChartHoverItem,\n ChartOptions,\n ChartPlotClickEvent,\n ChartRect,\n ChartView,\n} from \"./types\";\nimport {\n clampRange,\n panRange,\n sameRange,\n zoomRange,\n type Range,\n} from \"./viewport\";\n\n/** Events of a controller (no renderer events: hosts draw themselves) */\nexport type ChartControllerEventMap = Omit<ChartEventMap, \"renderer\">;\n\nexport interface ChartControllerConfig {\n options: ChartOptions;\n /** Colors and fonts (Minerva variables); light defaults when omitted */\n theme?: ChartThemeInput;\n /** Width in pixels of `text` drawn with the CSS `font` */\n measureText: (text: string, font: string) => number;\n /** Called when the scene changed and must be drawn again */\n onInvalidate?: () => void;\n}\n\nexport interface ChartLegendEntry {\n id: string;\n name: string;\n /** CSS color */\n color: string;\n shape: \"dot\" | \"line\" | \"square\";\n hidden: boolean;\n /** Hit / draw box of the entry, pixels of the chart */\n box: Rect;\n}\n\n/** Visual map of a heatmap: a gradient bar with the values at its ends */\nexport interface ChartColorLegendLayout {\n /** Box of the gradient bar, pixels of the chart */\n bar: Rect;\n /** CSS colors at even steps along the bar, from the lowest value */\n stops: string[];\n /** Value labels: `x` is the anchor, `align` the side of the text it touches */\n labels: { text: string; x: number; y: number; align: \"left\" | \"right\" }[];\n /** X pixels of the ticks on the bar (the middle of diverging ramps) */\n ticks: number[];\n /** X pixel of the hovered value on the bar (`null` when none) */\n caret: number | null;\n}\n\nexport interface ChartLegendLayout {\n /** Series entries (empty when `colors` is set) */\n entries: ChartLegendEntry[];\n /** Color legend of heatmap charts (instead of the entries) */\n colors: ChartColorLegendLayout | null;\n position: \"top\" | \"bottom\";\n /** Whether a tap toggles the series */\n toggle: boolean;\n /** Height taken by the legend */\n height: number;\n}\n\nexport interface ChartTooltipLayout {\n /** Default content (`text` is set instead when `tooltip.render` returns a string) */\n content: TooltipContent;\n /** Lines of a custom string tooltip */\n text: string[] | null;\n /** Box of the tooltip, pixels of the chart */\n box: Rect;\n /** Line height used to lay the box out */\n lineHeight: number;\n padding: number;\n /**\n * Width of the swatch column of the rows (0 when no row has a swatch):\n * the names start after it, the values are right-aligned on the box\n */\n swatchWidth: number;\n}\n\nexport interface ChartHoverLayout {\n event: ChartHoverEvent;\n marks: HoverMark[];\n /** X pixel of the vertical guide line (`null` when hidden) */\n crosshairX: number | null;\n /** Y pixel of the horizontal guide line of horizontal charts (`null` when hidden) */\n crosshairY: number | null;\n tooltip: ChartTooltipLayout | null;\n}\n\n/** Everything a host draws, in CSS pixels of the chart */\nexport interface ChartScene {\n width: number;\n height: number;\n theme: ChartTheme;\n model: ChartModel;\n view: ChartView;\n layout: ChartLayout;\n annotations: ResolvedAnnotation[];\n /** Labels of the dots that found a free slot */\n pointLabels: { label: PointLabel; box: Rect }[];\n legend: ChartLegendLayout | null;\n hover: ChartHoverLayout | null;\n /** Point being dragged (`interaction.dragPoints`) */\n dragging: { x: number; y: number; color: string; size: number } | null;\n /** Lines between consecutive bars (waterfall connectors) */\n connectors: ConnectorSegment[];\n}\n\nexport interface ChartPointerOptions {\n /** Pointer id (touch identifier); 0 by default */\n id?: number;\n /** Touch input: the tooltip follows the finger and stays after a tap */\n touch?: boolean;\n}\n\nexport interface ChartController {\n setOptions(options: ChartOptions): void;\n setTheme(theme: ChartThemeInput | undefined): void;\n /** Size of the chart in CSS pixels */\n setSize(width: number, height: number): void;\n /** What to draw (`null` until the size is known) */\n getScene(): ChartScene | null;\n pointerDown(x: number, y: number, options?: ChartPointerOptions): void;\n pointerMove(x: number, y: number, options?: ChartPointerOptions): void;\n pointerUp(x: number, y: number, options?: ChartPointerOptions): void;\n pointerCancel(options?: ChartPointerOptions): void;\n /** The mouse left the chart */\n pointerLeave(): void;\n /** Zooms around a pixel (factor < 1 zooms in) */\n zoomAt(x: number, y: number, factor: number): void;\n resetZoom(): void;\n getView(): ChartView;\n setView(view: Partial<ChartView>): void;\n /** Shows / hides a series (like a legend click) */\n toggleSeries(id: string): void;\n /** Hides the tooltip */\n clearHover(): void;\n getPlotRect(): ChartRect | null;\n toPixel(x: number, y: number): { x: number; y: number } | null;\n fromPixel(x: number, y: number): { x: number; y: number } | null;\n on<K extends keyof ChartControllerEventMap>(\n type: K,\n listener: (event: ChartControllerEventMap[K]) => void,\n ): () => void;\n destroy(): void;\n}\n\nconst copyView = (v: ChartView): ChartView => ({\n x: [v.x[0], v.x[1]],\n y: [v.y[0], v.y[1]],\n});\n\nconst TAP_SLOP = 6;\nconst TOUCH_SLOP = 10;\nconst DOUBLE_TAP_MS = 320;\nconst LEGEND_ROW = 20;\n\ninterface PointerState {\n x: number;\n y: number;\n startX: number;\n startY: number;\n touch: boolean;\n moved: boolean;\n}\n\nexport const createChartController = (\n config: ChartControllerConfig,\n): ChartController => {\n let options = config.options;\n let themeInput = config.theme;\n let theme = createTheme(themeInput, options.palette);\n const cache: DataCache = new Map();\n const hidden = new Set<string>();\n const listeners: {\n [K in keyof ChartControllerEventMap]?: Set<\n (event: ChartControllerEventMap[K]) => void\n >;\n } = {};\n let model: ChartModel;\n let view: ChartView = { x: [0, 1], y: [0, 1] };\n let zoomed = false;\n let width = 0;\n let height = 0;\n let annotations: ResolvedAnnotation[] = [];\n let scene: ChartScene | null = null;\n let sceneDirty = true;\n let lastPlot = \"\";\n let destroyed = false;\n\n let hover: { event: ChartHoverEvent; x: number; y: number } | null = null;\n const pointers = new Map<number, PointerState>();\n let gesture:\n | { kind: \"pan\"; view: ChartView; x: number; y: number }\n | {\n kind: \"pinch\";\n view: ChartView;\n distance: number;\n midX: number;\n midY: number;\n }\n | { kind: \"point\"; item: ChartHoverItem; x: number; y: number }\n | null = null;\n let lastTap = { time: 0, x: 0, y: 0 };\n\n const emit = <K extends keyof ChartControllerEventMap>(\n type: K,\n event: ChartControllerEventMap[K],\n ) => {\n listeners[type]?.forEach((listener) => listener(event));\n };\n\n const invalidate = () => {\n sceneDirty = true;\n if (!destroyed) config.onInvalidate?.();\n };\n\n const interaction = () => {\n const value = options.interaction;\n if (value === false) return null;\n const o = typeof value === \"object\" ? value : {};\n return {\n pan: o.pan ?? true,\n dragPoints: o.dragPoints ?? false,\n };\n };\n\n const measure = (text: string, size = theme.fontSize, weight = 400) =>\n config.measureText(text, font(theme, size, weight));\n\n const rebuild = () => {\n model = buildModel(options, theme, hidden, cache);\n const { base, minSpan } = model;\n if (!zoomed) {\n view = copyView(base);\n } else {\n view = {\n x: model.zoom.x ? clampRange(view.x, base.x, minSpan.x) : [...base.x],\n y: model.zoom.y ? clampRange(view.y, base.y, minSpan.y) : [...base.y],\n };\n zoomed = !sameRange(view.x, base.x) || !sameRange(view.y, base.y);\n }\n annotations = resolveAnnotations(\n options.annotations,\n theme,\n model.y.type === \"log\" ? Math.log10 : undefined,\n );\n if (hover) {\n const stillThere = hover.event.items.every(\n (it) =>\n model.series[it.seriesIndex] &&\n !model.series[it.seriesIndex].hidden &&\n it.index < model.series[it.seriesIndex].cols.count,\n );\n if (!stillThere) setHover(null);\n }\n invalidate();\n };\n\n // --------------------------------------------------------------- legend\n\n const legendLayout = (): ChartLegendLayout | null => {\n const option = options.legend;\n const named = options.series.filter((s) => s.name).length;\n if (!legendShown(option, model, named)) return null;\n const cfg = typeof option === \"object\" ? option : {};\n const position = cfg.position === \"bottom\" ? \"bottom\" : \"top\";\n const ramp = colorLegend(model);\n if (ramp) {\n // [min] [gradient] [max], on the right\n const first = ramp.labels[0]?.text ?? \"\";\n const last = ramp.labels[ramp.labels.length - 1]?.text ?? \"\";\n const barWidth = Math.max(60, Math.min(160, width * 0.32));\n const right = width - 4 - measure(last, 11) - 8;\n const barX = right - barWidth;\n const rowY = position === \"bottom\" ? height - LEGEND_ROW : 0;\n const cy = rowY + LEGEND_ROW / 2;\n return {\n entries: [],\n colors: {\n bar: { x: barX, y: cy - 4, width: barWidth, height: 8 },\n stops: ramp.stops,\n labels: [\n { text: first, x: barX - 8, y: cy, align: \"right\" },\n { text: last, x: right + 8, y: cy, align: \"left\" },\n ],\n ticks: ramp.labels\n .filter((l) => l.at > 0 && l.at < 1)\n .map((l) => barX + l.at * barWidth),\n caret: null,\n },\n position,\n toggle: false,\n height: LEGEND_ROW + 6,\n };\n }\n const entries: ChartLegendEntry[] = [];\n let x = 4;\n let row = 0;\n for (const s of model.series) {\n const w = 14 + measure(s.name, 12) + 8;\n if (x + w > width - 4 && x > 4) {\n x = 4;\n row++;\n }\n entries.push({\n id: s.id,\n name: s.name,\n color: s.colorCss,\n shape: legendShape(s.type),\n hidden: s.hidden,\n box: { x, y: row * LEGEND_ROW, width: w, height: LEGEND_ROW },\n });\n x += w + 10;\n }\n const legendHeight = (row + 1) * LEGEND_ROW + 6;\n if (position === \"bottom\") {\n for (const e of entries) e.box.y += height - legendHeight + 6;\n }\n return {\n entries,\n colors: null,\n position,\n toggle: cfg.toggle ?? true,\n height: legendHeight,\n };\n };\n\n // ---------------------------------------------------------------- scene\n\n const tooltipLayout = (\n event: ChartHoverEvent,\n anchorX: number,\n anchorY: number,\n ): ChartTooltipLayout | null => {\n const tooltip = options.tooltip;\n if (tooltip === false) return null;\n const custom = typeof tooltip === \"object\" ? tooltip.render : undefined;\n let text: string[] | null = null;\n if (custom) {\n const result = custom(event);\n if (result === null || result === \"\") return null;\n if (typeof result === \"string\") text = result.split(\"\\n\");\n }\n const content = tooltipContent(\n model,\n event,\n scene?.layout.yTicks ?? null,\n scene?.layout.y2Ticks ?? null,\n );\n const lineHeight = 18;\n const padding = 8;\n let w = 0;\n let lines: number;\n const swatchWidth = content.rows.some((row) => row.color) ? 14 : 0;\n if (text) {\n for (const line of text) w = Math.max(w, measure(line, 12));\n lines = text.length;\n } else {\n w = measure(content.title, 12, 600) + (content.titleColor ? 14 : 0);\n if (content.subtitle)\n w = Math.max(\n w,\n measure(content.subtitle, 11) + (content.titleColor ? 14 : 0),\n );\n // a label column and a value column, at least 16px apart\n let names = 0;\n let values = 0;\n for (const row of content.rows) {\n names = Math.max(names, measure(row.name, 12));\n values = Math.max(values, measure(row.value, 12, 600));\n }\n if (content.rows.length)\n w = Math.max(w, swatchWidth + names + 16 + values);\n lines = 1 + (content.subtitle ? 1 : 0) + content.rows.length;\n }\n const boxW = Math.ceil(Math.max(w, 96) + padding * 2 + 4);\n const boxH = lines * lineHeight + padding * 2;\n let left = anchorX + 14;\n if (left + boxW > width - 4) left = anchorX - 14 - boxW;\n left = Math.max(4, Math.min(left, width - boxW - 4));\n const top = Math.max(4, Math.min(anchorY - boxH / 2, height - boxH - 4));\n return {\n content,\n text,\n box: { x: left, y: top, width: boxW, height: boxH },\n lineHeight,\n padding,\n swatchWidth,\n };\n };\n\n const computeScene = (): ChartScene | null => {\n if (width <= 0 || height <= 0) return null;\n const legend = legendLayout();\n const legendTop = legend?.position === \"top\" ? legend.height : 0;\n const layout = layoutChart({\n model,\n view,\n theme,\n width,\n height: height - (legend?.height ?? 0),\n padding: options.padding,\n top: legendTop,\n measure: (text) => measure(text),\n });\n const labels = collectPointLabels(\n model,\n view,\n layout.scales,\n layout.yTicks,\n );\n const occupied: Rect[] = [];\n const labelHeight = theme.fontSize + 4;\n for (const a of annotations) {\n if (a.type === \"text\" && a.text) {\n occupied.push(\n textBox(\n a,\n layout.scales,\n measure(a.text, theme.fontSize, a.weight),\n labelHeight,\n ),\n );\n continue;\n }\n if (a.type !== \"rect\" || !a.label) continue;\n // keep the dot labels off the area titles (drawForeground does the same)\n const r = rectOf(a, layout.scales);\n if (r.width <= 0 || r.height <= 0) continue;\n const w = measure(a.label, theme.fontSize + 1, 600);\n const pos = a.labelPosition;\n occupied.push({\n x: pos.endsWith(\"left\")\n ? r.x + 10\n : pos.endsWith(\"right\")\n ? r.x + r.width - 10 - w\n : r.x + (r.width - w) / 2,\n y: pos.startsWith(\"top\")\n ? r.y + 10\n : pos.startsWith(\"bottom\")\n ? r.y + r.height - 10 - labelHeight\n : r.y + (r.height - labelHeight) / 2,\n width: w,\n height: labelHeight,\n });\n }\n const pointLabels = placeLabels(\n labels,\n layout.plot,\n (t) => measure(t),\n labelHeight - 2,\n occupied,\n );\n const next: ChartScene = {\n width,\n height,\n theme,\n model,\n view: copyView(view),\n layout,\n annotations,\n pointLabels,\n legend,\n hover: null,\n dragging: null,\n connectors: connectorSegments(model, layout.scales),\n };\n scene = next;\n if (hover) {\n const guide = crosshairAt(\n model,\n layout.scales,\n hover.event,\n options.crosshair,\n );\n const horizontal = layout.scales.horizontal;\n next.hover = {\n event: hover.event,\n marks: hoverMarks(model, layout.scales, hover.event),\n crosshairX: horizontal ? null : guide,\n crosshairY: horizontal ? guide : null,\n tooltip:\n gesture?.kind === \"pan\" || gesture?.kind === \"point\"\n ? null\n : tooltipLayout(hover.event, hover.x, hover.y),\n };\n // the hovered value on the color legend\n const colors = legend?.colors;\n const it = hover.event.items[0];\n const s = it ? model.series[it.seriesIndex] : undefined;\n if (colors && it && s?.type === \"heatmap\" && it.value !== undefined)\n colors.caret =\n colors.bar.x + heatPosition(s, it.value) * colors.bar.width;\n }\n if (gesture?.kind === \"point\") {\n const s = model.series[gesture.item.seriesIndex];\n next.dragging = {\n x: gesture.x,\n y: gesture.y,\n color: gesture.item.color,\n size: (s ? dotSize(s, gesture.item.index) : 8) + 6,\n };\n }\n const rect = layout.plot;\n const key = `${rect.x},${rect.y},${rect.width},${rect.height}`;\n if (key !== lastPlot) {\n lastPlot = key;\n emit(\"layout\", { ...rect });\n }\n return next;\n };\n\n const getScene = () => {\n if (sceneDirty || !scene) {\n sceneDirty = false;\n scene = computeScene();\n }\n return scene;\n };\n\n // ---------------------------------------------------------- interaction\n\n const scales = () => getScene()?.layout.scales ?? null;\n\n const setHover = (\n next: { event: ChartHoverEvent; x: number; y: number } | null,\n ) => {\n const changed = !sameHover(hover?.event ?? null, next?.event ?? null);\n hover = next;\n invalidate();\n if (changed) emit(\"hover\", next ? next.event : null);\n };\n\n const hitAt = (x: number, y: number, touch: boolean) => {\n const sc = scales();\n return sc\n ? hitTest(model, sc, scene?.layout.xTicks ?? null, x, y, touch ? 8 : 0)\n : null;\n };\n\n const inPlot = (x: number, y: number) => {\n const p = scales()?.plot;\n return (\n !!p && x >= p.x && x <= p.x + p.width && y >= p.y && y <= p.y + p.height\n );\n };\n\n const dataAt = (x: number, y: number) => {\n const sc = scales();\n if (!sc) return null;\n const { plot } = sc;\n const cx = Math.max(plot.x, Math.min(plot.x + plot.width, x));\n const cy = Math.max(plot.y, Math.min(plot.y + plot.height, y));\n const p = toData(sc, cx, cy);\n // values of the axes (not logarithms)\n return { x: p.x, y: fromPlotY(model, p.y) };\n };\n\n const setViewInternal = (next: ChartView, notify: boolean) => {\n const { base, minSpan } = model;\n view = {\n x: clampRange(next.x, base.x, minSpan.x),\n y: clampRange(next.y, base.y, minSpan.y),\n };\n zoomed = !sameRange(view.x, base.x) || !sameRange(view.y, base.y);\n if (notify) emit(\"zoom\", copyView(view));\n invalidate();\n };\n\n const zoomAt = (x: number, y: number, factor: number) => {\n const sc = scales();\n if (!sc || (!model.zoom.x && !model.zoom.y)) return;\n const next = copyView(view);\n const at = toData(sc, x, y);\n if (model.zoom.x) next.x = zoomRange(view.x, at.x, factor);\n if (model.zoom.y) next.y = zoomRange(view.y, at.y, factor);\n setViewInternal(next, true);\n };\n\n const resetZoom = () => {\n if (!zoomed) return;\n setViewInternal(copyView(model.base), true);\n };\n\n const legendAt = (x: number, y: number) =>\n getScene()?.legend?.entries.find(\n (e) =>\n x >= e.box.x &&\n x <= e.box.x + e.box.width &&\n y >= e.box.y &&\n y <= e.box.y + e.box.height,\n ) ?? null;\n\n const toggleSeries = (id: string) => {\n if (hidden.has(id)) hidden.delete(id);\n else hidden.add(id);\n rebuild();\n };\n\n const startPinch = () => {\n const [a, b] = [...pointers.values()];\n gesture = {\n kind: \"pinch\",\n view: copyView(view),\n distance: Math.max(1, Math.hypot(a.x - b.x, a.y - b.y)),\n midX: (a.x + b.x) / 2,\n midY: (a.y + b.y) / 2,\n };\n setHover(null);\n };\n\n const pointerDown = (x: number, y: number, o: ChartPointerOptions = {}) => {\n if (destroyed) return;\n const id = o.id ?? 0;\n const touch = !!o.touch;\n pointers.set(id, { x, y, startX: x, startY: y, touch, moved: false });\n const it = interaction();\n if (pointers.size === 2) {\n if (it && (model.zoom.x || model.zoom.y) && gesture?.kind !== \"point\")\n startPinch();\n return;\n }\n if (pointers.size > 2 || !it) {\n if (!it && touch) {\n const event = hitAt(x, y, true);\n setHover(event ? { event, x, y } : null);\n }\n return;\n }\n if (it.dragPoints) {\n const item = hitAt(x, y, touch)?.items.find(\n (i) => model.series[i.seriesIndex].type === \"scatter\",\n );\n if (item) {\n gesture = { kind: \"point\", item, x, y };\n return;\n }\n }\n if (zoomed && it.pan && inPlot(x, y)) {\n gesture = { kind: \"pan\", view: copyView(view), x, y };\n return;\n }\n gesture = null;\n if (touch) {\n const event = hitAt(x, y, true);\n setHover(event ? { event, x, y } : null);\n }\n };\n\n const pointerMove = (x: number, y: number, o: ChartPointerOptions = {}) => {\n if (destroyed) return;\n const id = o.id ?? 0;\n const p = pointers.get(id);\n if (p) {\n p.x = x;\n p.y = y;\n if (\n !p.moved &&\n Math.hypot(x - p.startX, y - p.startY) >\n (p.touch ? TOUCH_SLOP : TAP_SLOP)\n )\n p.moved = true;\n }\n if (gesture?.kind === \"pinch\" && pointers.size >= 2) {\n const [a, b] = [...pointers.values()];\n const distance = Math.max(1, Math.hypot(a.x - b.x, a.y - b.y));\n const midX = (a.x + b.x) / 2;\n const midY = (a.y + b.y) / 2;\n const sc = scales();\n if (!sc) return;\n const start = createScales(\n sc.plot,\n gesture.view,\n model.x.reverse,\n model.y.reverse,\n model.horizontal,\n );\n const factor = gesture.distance / distance;\n const next = copyView(gesture.view);\n const from = toData(start, gesture.midX, gesture.midY);\n const to = toData(start, midX, midY);\n // the data under the first midpoint follows the fingers\n if (model.zoom.x) {\n next.x = zoomRange(gesture.view.x, from.x, factor);\n next.x = panRange(next.x, (from.x - to.x) * factor);\n }\n if (model.zoom.y) {\n next.y = zoomRange(gesture.view.y, from.y, factor);\n next.y = panRange(next.y, (from.y - to.y) * factor);\n }\n setViewInternal(next, true);\n return;\n }\n if (gesture?.kind === \"point\" && p) {\n if (!p.moved) return;\n gesture.x = x;\n gesture.y = y;\n const at = dataAt(x, y);\n invalidate();\n if (at) emit(\"drag\", { item: gesture.item, x: at.x, y: at.y });\n return;\n }\n if (gesture?.kind === \"pan\" && p) {\n if (!p.moved) return;\n const sc = scales();\n if (!sc) return;\n const next = copyView(gesture.view);\n const from = toData(sc, gesture.x, gesture.y);\n const to = toData(sc, x, y);\n if (model.zoom.x) next.x = panRange(gesture.view.x, from.x - to.x);\n if (model.zoom.y) next.y = panRange(gesture.view.y, from.y - to.y);\n setViewInternal(next, true);\n return;\n }\n if (pointers.size > 1) return;\n // mouse hover, or a finger scrubbing along the data\n if (!p || p.touch || !o.touch) {\n const event = hitAt(x, y, !!p?.touch || !!o.touch);\n if (event || !p?.touch) setHover(event ? { event, x, y } : null);\n }\n };\n\n const pointerUp = (x: number, y: number, o: ChartPointerOptions = {}) => {\n if (destroyed) return;\n const id = o.id ?? 0;\n const p = pointers.get(id);\n pointers.delete(id);\n const current = gesture;\n if (current?.kind === \"pinch\") {\n if (pointers.size < 2) gesture = null;\n return;\n }\n gesture = null;\n if (!p) return;\n if (current?.kind === \"point\") {\n if (p.moved) {\n const at = dataAt(x, y);\n invalidate();\n if (at) emit(\"drop\", { item: current.item, x: at.x, y: at.y });\n return;\n }\n } else if (current?.kind === \"pan\" && p.moved) {\n invalidate();\n return;\n }\n if (p.moved) {\n if (p.touch) invalidate();\n return;\n }\n // tap / click\n const now = Date.now();\n if (\n p.touch &&\n now - lastTap.time < DOUBLE_TAP_MS &&\n Math.hypot(x - lastTap.x, y - lastTap.y) < 24 &&\n zoomed\n ) {\n lastTap = { time: 0, x, y };\n resetZoom();\n return;\n }\n lastTap = { time: now, x, y };\n const legend = legendAt(x, y);\n if (legend) {\n if (getScene()?.legend?.toggle) toggleSeries(legend.id);\n return;\n }\n const hit = hitAt(x, y, p.touch);\n if (hit) {\n if (p.touch) setHover({ event: hit, x, y });\n emit(\"click\", hit);\n return;\n }\n if (p.touch) setHover(null);\n if (inPlot(x, y)) {\n const at = dataAt(x, y);\n if (at) emit(\"plotClick\", at as ChartPlotClickEvent);\n }\n };\n\n const pointerCancel = (o: ChartPointerOptions = {}) => {\n pointers.delete(o.id ?? 0);\n if (gesture?.kind === \"point\" || pointers.size < 2) gesture = null;\n invalidate();\n };\n\n model = buildModel(options, theme, hidden, cache);\n rebuild();\n\n return {\n setOptions(next) {\n if (destroyed) return;\n const paletteChanged =\n (next.palette ?? []).join() !== (options.palette ?? []).join();\n options = next;\n if (paletteChanged) theme = createTheme(themeInput, options.palette);\n rebuild();\n },\n setTheme(next) {\n if (destroyed) return;\n themeInput = next;\n theme = createTheme(themeInput, options.palette);\n rebuild();\n },\n setSize(w, h) {\n if (w === width && h === height) return;\n width = Math.max(0, w);\n height = Math.max(0, h);\n invalidate();\n },\n getScene,\n pointerDown,\n pointerMove,\n pointerUp,\n pointerCancel,\n pointerLeave() {\n if (!gesture && hover) setHover(null);\n },\n zoomAt,\n resetZoom,\n getView: () => copyView(view),\n setView(next) {\n if (destroyed) return;\n setViewInternal({ x: next.x ?? view.x, y: next.y ?? view.y }, false);\n },\n toggleSeries,\n clearHover() {\n if (hover) setHover(null);\n },\n getPlotRect() {\n const p = getScene()?.layout.plot;\n return p ? { ...p } : null;\n },\n toPixel(x, y) {\n const sc = scales();\n return sc ? toScreen(sc, x, toPlotY(model, y)) : null;\n },\n fromPixel(x, y) {\n const sc = scales();\n if (!sc) return null;\n const p = toData(sc, x, y);\n return { x: p.x, y: fromPlotY(model, p.y) };\n },\n on(type, listener) {\n let set = listeners[type] as Set<typeof listener> | undefined;\n if (!set) {\n set = new Set();\n (listeners as Record<string, unknown>)[type] = set;\n }\n set.add(listener);\n return () => {\n set.delete(listener);\n };\n },\n destroy() {\n destroyed = true;\n pointers.clear();\n for (const key of Object.keys(listeners))\n delete (listeners as Record<string, unknown>)[key];\n },\n };\n};\n\n// ------------------------------------------------------------- primitives\n\n/** A polyline (pixels of the chart): interleaved x, y */\nexport interface ChartLinePrimitive {\n kind: \"line\";\n seriesIndex: number;\n color: string;\n width: number;\n /** Runs of points without gaps */\n segments: number[][];\n}\n\nexport interface ChartAreaPrimitive {\n kind: \"area\";\n seriesIndex: number;\n color: string;\n opacity: number;\n /** Y pixel of the baseline (x pixel when `horizontal`) */\n baseline: number;\n segments: number[][];\n /**\n * Stacked and range areas: y pixel (x pixel when `horizontal`) of the\n * bottom edge under every point of `segments`\n */\n bottoms?: number[][];\n /** Horizontal charts: the area is filled toward the left edge (`baseline` / `bottoms` are x pixels) */\n horizontal?: boolean;\n}\n\nexport interface ChartBarPrimitive {\n kind: \"bars\";\n seriesIndex: number;\n color: string;\n /** Interleaved x, y, width, height */\n rects: number[];\n /** CSS color of every rect (candlesticks, heatmap cells, colored bars); `color` otherwise */\n colors?: string[];\n /** Corner radius in pixels */\n radius?: number;\n /** Opacity of the fill (box plot boxes, translucent bars) */\n opacity?: number;\n}\n\nexport interface ChartDotPrimitive {\n kind: \"dots\";\n seriesIndex: number;\n /** Opacity of the fill (0: rings only) */\n opacity: number;\n /** Interleaved x, y, diameter */\n dots: number[];\n /** CSS color of every dot */\n colors: string[];\n /** Width of a ring of the dot color around every dot, CSS pixels */\n stroke?: number;\n}\n\nexport type ChartPrimitive =\n | ChartLinePrimitive\n | ChartAreaPrimitive\n | ChartBarPrimitive\n | ChartDotPrimitive;\n\nexport interface ChartPrimitiveOptions {\n /**\n * Upper bound of the dots drawn per series: above it the dots are merged\n * into one per occupied cell of their size\n * @default 4000\n */\n maxDots?: number;\n /**\n * Upper bound of the bars drawn per series: above it neighboring bars\n * sharing a pixel column are merged\n * @default 2000\n */\n maxBars?: number;\n /**\n * Width in pixels of the columns lines are decimated to (at most four\n * points per column); larger values mean fewer shapes\n * @default 1\n */\n columnWidth?: number;\n /** Size of the cells dots are merged into (the dot size by default) */\n dotCell?: number;\n}\n\nconst visibleRange = (\n x: Float64Array,\n count: number,\n sorted: boolean,\n range: Range,\n): [number, number] => {\n if (!sorted) return [0, count];\n const [a, b] = range[0] <= range[1] ? range : [range[1], range[0]];\n return [\n Math.max(0, lowerBound(x, count, a) - 1),\n Math.min(count, lowerBound(x, count, b) + 1),\n ];\n};\n\nconst ORDER = {\n heatmap: 0,\n area: 1,\n bar: 2,\n boxplot: 2,\n candlestick: 3,\n line: 4,\n scatter: 5,\n} as const;\n\n/**\n * Rectangles collected along the axes (`x` along the x axis, `y` along the\n * value axis) and turned into screen rects\n */\nconst toRects = (sc: Scales, along: number[]): number[] => {\n if (!sc.horizontal) return along;\n const out = new Array<number>(along.length);\n for (let k = 0; k < along.length; k += 4) {\n out[k] = along[k + 1];\n out[k + 1] = along[k];\n out[k + 2] = along[k + 3];\n out[k + 3] = along[k + 2];\n }\n return out;\n};\n\n/**\n * Data of a scene as simple shapes in pixels of the chart, for hosts\n * without a canvas (React Native views, SVG): lines are decimated to a few\n * points per pixel column and large point sets are merged per cell, so the\n * number of shapes stays bounded by the size of the chart.\n */\nexport const scenePrimitives = (\n scene: ChartScene,\n limits: ChartPrimitiveOptions = {},\n): ChartPrimitive[] => {\n const { model, view, layout } = scene;\n const sc = layout.scales;\n const { plot } = layout;\n const horizontal = sc.horizontal;\n const maxDots = limits.maxDots ?? 4000;\n const maxBars = limits.maxBars ?? 2000;\n const column = Math.max(1, limits.columnWidth ?? 1);\n // the x axis in pixels (along `xToPx`)\n const xLo = horizontal ? plot.y : plot.x;\n const xHi = xLo + (horizontal ? plot.height : plot.width);\n const out: ChartPrimitive[] = [];\n const series = model.series\n .filter((s) => !s.hidden && s.cols.count > 0)\n .sort((a, b) => ORDER[a.type] - ORDER[b.type] || a.index - b.index);\n for (const s of series) {\n const { x, y, count, sorted } = s.cols;\n if (s.type === \"line\" || s.type === \"area\") {\n const [start, end] = visibleRange(x, count, sorted, view.x);\n const top = s.stackTop ?? y;\n // curve first (in data space), then decimation; the stacked bottom\n // edge follows the same sampling\n const curved = curvePoints(x, top, start, end, s.curve);\n const bottom = s.stackBase\n ? curvePoints(x, s.stackBase, start, end, s.curve).points\n : null;\n let n = curved.length;\n let points = curved.points;\n let bottoms = bottom;\n if (sorted && n > ((xHi - xLo) * 2) / column) {\n if (bottom) {\n // keep the bottoms aligned with the kept tops (same x)\n const d = decimateMinMax(points, 0, n, (v) => sc.xToPx(v) / column);\n const next = new Float64Array(d.length * 2);\n const nextBottom = new Float64Array(d.length * 2);\n let k = 0;\n let j = 0;\n for (let i = 0; i < d.length; i++) {\n const xv = d.points[i * 2];\n while (j < n - 1 && points[j * 2] < xv) j++;\n next[k * 2] = xv;\n next[k * 2 + 1] = d.points[i * 2 + 1];\n nextBottom[k * 2] = xv;\n nextBottom[k * 2 + 1] = bottom[j * 2 + 1];\n k++;\n }\n points = next;\n bottoms = nextBottom;\n n = k;\n } else {\n const d = decimateMinMax(points, 0, n, (v) => sc.xToPx(v) / column);\n points = d.points;\n n = d.length;\n }\n }\n // range areas: a line on the lower edge too\n const band = s.type === \"area\" && !!s.cols.y0 && !!bottoms;\n const segments: number[][] = [];\n const bottomSegments: number[][] = [];\n const lowerSegments: number[][] = [];\n let run: number[] = [];\n let runBottom: number[] = [];\n let runLower: number[] = [];\n const flush = () => {\n if (run.length) {\n segments.push(run);\n bottomSegments.push(runBottom);\n if (band) lowerSegments.push(runLower);\n }\n run = [];\n runBottom = [];\n runLower = [];\n };\n for (let i = 0; i < n; i++) {\n const xv = points[i * 2];\n const yv = points[i * 2 + 1];\n const bv = bottoms ? bottoms[i * 2 + 1] : 0;\n if (\n !Number.isFinite(xv) ||\n !Number.isFinite(yv) ||\n !Number.isFinite(bv)\n ) {\n flush();\n continue;\n }\n const p = toScreen(sc, xv, yv);\n run.push(p.x, p.y);\n if (bottoms) runBottom.push(sc.yToPx(bv));\n if (band) {\n const q = toScreen(sc, xv, bv);\n runLower.push(q.x, q.y);\n }\n }\n flush();\n if (s.type === \"area\") {\n out.push({\n kind: \"area\",\n seriesIndex: s.index,\n color: s.colorCss,\n opacity: s.opacity,\n baseline: sc.yToPx(model.baseline),\n segments,\n ...(bottoms ? { bottoms: bottomSegments } : {}),\n ...(horizontal ? { horizontal: true } : {}),\n });\n }\n if (s.lineWidth > 0) {\n const width =\n s.type === \"area\" ? Math.min(s.lineWidth, 2) : s.lineWidth;\n out.push({\n kind: \"line\",\n seriesIndex: s.index,\n color: s.colorCss,\n width,\n segments,\n });\n if (band)\n out.push({\n kind: \"line\",\n seriesIndex: s.index,\n color: s.colorCss,\n width,\n segments: lowerSegments,\n });\n }\n continue;\n }\n if (s.type === \"bar\" && s.barBase && s.barTop) {\n const [start, end] = visibleRange(x, count, sorted, view.x);\n const half = Math.max(s.barHalfWidth / Math.abs(sc.xPerPx), 0.5);\n const rects: number[] = [];\n const colors: string[] = [];\n const merge = end - start > maxBars;\n let lastCol = NaN;\n for (let i = start; i < end; i++) {\n const a = s.barBase[i];\n const b = s.barTop[i];\n if (!Number.isFinite(a) || !Number.isFinite(b)) continue;\n const cx = sc.xToPx(x[i] + s.barOffset);\n if (cx + half < xLo || cx - half > xHi) continue;\n const ya = sc.yToPx(a);\n const yb = sc.yToPx(b);\n const top = Math.min(ya, yb);\n const h = Math.max(1, Math.abs(ya - yb));\n const col = Math.floor(cx);\n if (merge && col === lastCol && rects.length) {\n // widen the previous bar of the same pixel column along the values\n const k = rects.length - 4;\n const bottom = Math.max(rects[k + 1] + rects[k + 3], top + h);\n rects[k + 1] = Math.min(rects[k + 1], top);\n rects[k + 3] = bottom - rects[k + 1];\n continue;\n }\n lastCol = col;\n rects.push(cx - half, top, half * 2, h);\n const pc = s.pointColors?.[i];\n colors.push(pc ? toCss(pc) : s.colorCss);\n }\n out.push({\n kind: \"bars\",\n seriesIndex: s.index,\n color: s.colorCss,\n rects: toRects(sc, rects),\n ...(s.pointColors ? { colors } : {}),\n radius: s.radius,\n ...(s.opacity < 1 ? { opacity: s.opacity } : {}),\n });\n continue;\n }\n if (s.type === \"boxplot\") {\n out.push(...boxPrimitives(s, sc, view.x, xLo, xHi, maxBars));\n continue;\n }\n if (s.type === \"candlestick\") {\n const [start, end] = visibleRange(x, count, sorted, view.x);\n const { open, high, low } = s.cols;\n const half = Math.max(s.barHalfWidth / Math.abs(sc.xPerPx), 1);\n const up = toCss(s.upColor);\n const down = toCss(s.downColor);\n const wicks: number[] = [];\n const bodies: number[] = [];\n const wickColors: string[] = [];\n const bodyColors: string[] = [];\n const step = Math.max(1, Math.ceil((end - start) / maxBars));\n for (let i = start; i < end; i += step) {\n const c = y[i];\n const o = open ? open[i] : c;\n if (!Number.isFinite(c) || !Number.isFinite(o)) continue;\n const cx = sc.xToPx(x[i]);\n if (cx + half < xLo || cx - half > xHi) continue;\n const color = c < o ? down : up;\n const hi = sc.yToPx(high ? high[i] : Math.max(o, c));\n const lo = sc.yToPx(low ? low[i] : Math.min(o, c));\n wicks.push(cx - 0.5, Math.min(hi, lo), 1, Math.abs(lo - hi));\n wickColors.push(color);\n const ya = sc.yToPx(o);\n const yb = sc.yToPx(c);\n bodies.push(\n cx - half,\n Math.min(ya, yb),\n half * 2,\n Math.max(1, Math.abs(ya - yb)),\n );\n bodyColors.push(color);\n }\n out.push(\n {\n kind: \"bars\",\n seriesIndex: s.index,\n color: up,\n rects: toRects(sc, wicks),\n colors: wickColors,\n },\n {\n kind: \"bars\",\n seriesIndex: s.index,\n color: up,\n rects: toRects(sc, bodies),\n colors: bodyColors,\n radius: 1,\n },\n );\n continue;\n }\n if (s.type === \"heatmap\") {\n const hw = Math.abs(s.cellHalf.x / sc.xPerPx);\n const hh = Math.abs(s.cellHalf.y / sc.yPerPx);\n const rects: number[] = [];\n const colors: string[] = [];\n const style = heatCellStyle(hw * 2, hh * 2, s.radius);\n const inset = style.inset;\n for (let i = 0; i < count && rects.length / 4 < maxBars * 4; i++) {\n const c = s.cellColors?.[i];\n if (!c) continue;\n const r = screenRect(\n sc,\n sc.xToPx(x[i]) - hw,\n sc.xToPx(x[i]) + hw,\n sc.yToPx(y[i]) - hh,\n sc.yToPx(y[i]) + hh,\n );\n if (\n r.x + r.width < plot.x ||\n r.x > plot.x + plot.width ||\n r.y + r.height < plot.y ||\n r.y > plot.y + plot.height\n )\n continue;\n rects.push(\n r.x + inset,\n r.y + inset,\n r.width - inset * 2,\n r.height - inset * 2,\n );\n colors.push(toCss(unpackColor(c)));\n }\n out.push({\n kind: \"bars\",\n seriesIndex: s.index,\n color: s.colorCss,\n rects,\n colors,\n radius: style.radius,\n });\n continue;\n }\n // scatter\n const dots: number[] = [];\n const colors: string[] = [];\n const colorOf = (i: number) => {\n const c = s.pointColors?.[i];\n return c ? toCss(c) : s.colorCss;\n };\n const visible: number[] = [];\n const screen: number[] = [];\n for (let i = 0; i < count; i++) {\n const xv = x[i];\n const yv = y[i];\n if (!Number.isFinite(xv) || !Number.isFinite(yv)) continue;\n const p = toScreen(sc, xv, yv);\n if (\n p.x < plot.x ||\n p.x > plot.x + plot.width ||\n p.y < plot.y ||\n p.y > plot.y + plot.height\n )\n continue;\n visible.push(i);\n screen.push(p.x, p.y);\n }\n if (visible.length > maxDots) {\n const cell = Math.max(2, limits.dotCell ?? s.pointSize * 0.8);\n const cols = Math.ceil(plot.width / cell) + 1;\n const owner = new Map<number, number>();\n visible.forEach((i, k) => {\n const cx = Math.floor((screen[k * 2] - plot.x) / cell);\n const cy = Math.floor((screen[k * 2 + 1] - plot.y) / cell);\n owner.set(cy * cols + cx, i);\n });\n for (const [key, i] of owner) {\n dots.push(\n plot.x + ((key % cols) + 0.5) * cell,\n plot.y + (Math.floor(key / cols) + 0.5) * cell,\n cell,\n );\n colors.push(colorOf(i));\n }\n } else {\n visible.forEach((i, k) => {\n dots.push(screen[k * 2], screen[k * 2 + 1], dotSize(s, i));\n colors.push(colorOf(i));\n });\n }\n out.push({\n kind: \"dots\",\n seriesIndex: s.index,\n opacity: s.opacity,\n dots,\n colors,\n });\n }\n return out;\n};\n\n/** Box plot shapes: translucent boxes, then whiskers, caps, edges and medians, then outliers */\nconst boxPrimitives = (\n s: SeriesModel,\n sc: Scales,\n range: Range,\n xLo: number,\n xHi: number,\n maxBars: number,\n): ChartPrimitive[] => {\n const { x, y, count, sorted, high, low, q1, q3, outliers } = s.cols;\n const [start, end] = visibleRange(x, count, sorted, range);\n const half = Math.max(s.barHalfWidth / Math.abs(sc.xPerPx), 1);\n const lw = Math.max(1, s.lineWidth);\n const boxes: number[] = [];\n const lines: number[] = [];\n const boxColors: string[] = [];\n const lineColors: string[] = [];\n const dots: number[] = [];\n const dotColors: string[] = [];\n const step = Math.max(1, Math.ceil((end - start) / maxBars));\n /** A line along the values (a whisker or a side) */\n const vertical = (cx: number, a: number, b: number) => {\n lines.push(cx - lw / 2, Math.min(a, b), lw, Math.abs(a - b));\n };\n /** A line across the box (an edge, a cap or the median) */\n const across = (cx: number, h: number, at: number, thick = lw) => {\n lines.push(cx - h, at - thick / 2, h * 2, thick);\n };\n for (let i = start; i < end; i += step) {\n const m = y[i];\n if (!Number.isFinite(m)) continue;\n const cx = sc.xToPx(x[i] + s.barOffset);\n if (cx + half < xLo || cx - half > xHi) continue;\n const pc = s.pointColors?.[i];\n const color = pc ? toCss(pc) : s.colorCss;\n const lo = sc.yToPx(low && Number.isFinite(low[i]) ? low[i] : m);\n const hi = sc.yToPx(high && Number.isFinite(high[i]) ? high[i] : m);\n const a = sc.yToPx(q1 && Number.isFinite(q1[i]) ? q1[i] : m);\n const b = sc.yToPx(q3 && Number.isFinite(q3[i]) ? q3[i] : m);\n const before = lines.length;\n boxes.push(cx - half, Math.min(a, b), half * 2, Math.abs(a - b));\n boxColors.push(color);\n vertical(cx, lo, a);\n vertical(cx, b, hi);\n vertical(cx - half, a, b);\n vertical(cx + half, a, b);\n across(cx, half / 2, lo);\n across(cx, half / 2, hi);\n across(cx, half, a);\n across(cx, half, b);\n across(cx, half, sc.yToPx(m), Math.max(2, lw * 1.6));\n for (let k = before; k < lines.length; k += 4) lineColors.push(color);\n const out = outliers?.[i];\n if (out) {\n for (const v of out) {\n const p = sc.horizontal\n ? { x: sc.yToPx(v), y: cx }\n : { x: cx, y: sc.yToPx(v) };\n dots.push(p.x, p.y, s.outlierSize);\n dotColors.push(color);\n }\n }\n }\n const prims: ChartPrimitive[] = [\n {\n kind: \"bars\",\n seriesIndex: s.index,\n color: s.colorCss,\n rects: toRects(sc, boxes),\n colors: boxColors,\n opacity: s.opacity,\n },\n {\n kind: \"bars\",\n seriesIndex: s.index,\n color: s.colorCss,\n rects: toRects(sc, lines),\n colors: lineColors,\n },\n ];\n if (dots.length)\n prims.push({\n kind: \"dots\",\n seriesIndex: s.index,\n // rings of the series color, or filled dots\n opacity: s.outlierShape === \"hollow\" ? 0 : 0.85,\n dots,\n colors: dotColors,\n stroke: 1.25,\n });\n return prims;\n};\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- var e=e=>typeof e==`object`&&!!e&&!(`length`in e)&&`y`in e,t=(e,t)=>(n,r)=>{if(typeof n==`number`)return n;if(n instanceof Date)return n.getTime();if(typeof n==`string`){if(e===`category`)return t(n);if(e===`time`)return Date.parse(n);let i=Number(n);return Number.isNaN(i)?r:i}return r},n=e=>typeof e==`number`?e:e==null?NaN:Number(e),r=t=>{let n=new Set;for(let r of t){if(e(r)){let e=r.y;if(!ArrayBuffer.isView(e))for(let t=0;t<e.length;t++){let r=e[t];typeof r==`string`&&n.add(r)}continue}let t=r;for(let e=0;e<t.length;e++){let r=t[e],i=Array.isArray(r)?r[1]:r&&typeof r==`object`?r.y:void 0;typeof i==`string`&&n.add(i)}}return[...n]},i=t=>{let n=new Set,r=e=>{typeof e==`string`&&n.add(e)};for(let n of t){if(e(n)){let e=n.x;if(e&&!ArrayBuffer.isView(e))for(let t=0;t<e.length;t++)r(e[t]);continue}let t=n;for(let e=0;e<t.length;e++){let n=t[e];Array.isArray(n)?r(n[0]):n&&typeof n==`object`&&r(n.x)}}return[...n]},a=(e,t,n,r)=>{let i=1/0,a=-1/0,o=1/0,s=-1/0,c=!0,l=-1/0,{high:u,low:d,value:f}=r;for(let r=0;r<n;r++){let n=e[r];if(!Number.isFinite(n)){t[r]=NaN;continue}n<l&&(c=!1),l=n;let f=t[r];if(Number.isFinite(f)){if(n<i&&(i=n),n>a&&(a=n),f<o&&(o=f),f>s&&(s=f),u){let e=u[r];e>s&&(s=e),e<o&&(o=e)}if(d){let e=d[r];e<o&&(o=e),e>s&&(s=e)}}}let p=1/0,m=-1/0;if(f)for(let e=0;e<n;e++){let t=f[e];Number.isFinite(t)&&(t<p&&(p=t),t>m&&(m=t))}let h=i>a;return{x:e,y:t,count:n,sorted:c,xMin:h?NaN:i,xMax:h?NaN:a,yMin:h?NaN:o,yMax:h?NaN:s,valueMin:p>m?NaN:p,valueMax:p>m?NaN:m,...r}},o=(e,t)=>{if(!e)return null;if(e instanceof Float64Array&&e.length>=t)return e.length===t?e:e.subarray(0,t);let r=new Float64Array(t);for(let i=0;i<t;i++)r[i]=n(e[i]);return r},s=(t,r,i=n)=>{let s={size:null,colors:null,labels:null,open:null,high:null,low:null,value:null};if(e(t)){let e=t.y.length,c=new Float64Array(e),l=t.x;if(!l)for(let t=0;t<e;t++)c[t]=t;else if(ArrayBuffer.isView(l)&&l.length>=e)c.set(l.length===e?l:l.subarray(0,e));else for(let t=0;t<e;t++)c[t]=r(l[t],t);let u=t.y,d;if(ArrayBuffer.isView(u))d=new Float64Array(e),d.set(u);else{d=new Float64Array(e);for(let t=0;t<e;t++)d[t]=i(u[t])}let f=null;if(t.size){f=new Float32Array(e);for(let r=0;r<e;r++)f[r]=n(t.size[r])}return a(c,d,e,{...s,size:f,open:o(t.open,e),high:o(t.high,e),low:o(t.low,e),value:o(t.value,e)})}let c=t,l=c.length,u=new Float64Array(l),d=new Float64Array(l),f=null,p=null,m=null,h=null,g=null,_=null,v=null,y=()=>new Float64Array(l).fill(NaN);for(let e=0;e<l;e++){let t=c[e];if(t==null||typeof t==`number`)u[e]=e,d[e]=n(t);else if(Array.isArray(t))u[e]=r(t[0],e),d[e]=i(t[1]);else if(typeof t==`object`){let a=t;u[e]=a.x===void 0?e:r(a.x,e),d[e]=i(a.y),a.size!==void 0&&(f??(f=new Float32Array(l).fill(NaN)),f[e]=a.size),a.color!==void 0&&(p??(p=Array(l)),p[e]=a.color),a.label!==void 0&&(m??(m=Array(l)),m[e]=a.label),a.open!==void 0&&((h??(h=y()))[e]=n(a.open)),a.high!==void 0&&((g??(g=y()))[e]=n(a.high)),a.low!==void 0&&((_??(_=y()))[e]=n(a.low)),a.value!==void 0&&((v??(v=y()))[e]=n(a.value))}else u[e]=e,d[e]=NaN}return a(u,d,l,{size:f,colors:p,labels:m,open:h,high:g,low:_,value:v})},c=(e,t,n)=>{let r=0,i=t;for(;r<i;){let t=r+i>>>1;e[t]<n?r=t+1:i=t}return r},l=(e,t,n,r)=>{if(n===0)return-1;let i=c(e,n,r),a=i-1,o=i;for(;a>=0&&!Number.isFinite(t[a]);)a--;for(;o<n&&!Number.isFinite(t[o]);)o++;return a<0?o<n?o:-1:o>=n||r-e[a]<=e[o]-r?a:o};exports.collectCategories=i,exports.collectYCategories=r,exports.lowerBound=c,exports.nearestIndex=l,exports.normalizeData=s,exports.xResolver=t;
1
+ var e=e=>typeof e==`object`&&!!e&&!(`length`in e)&&`y`in e,t=(e,t)=>(n,r)=>{if(typeof n==`number`)return n;if(n instanceof Date)return n.getTime();if(typeof n==`string`){if(e===`category`)return t(n);if(e===`time`)return Date.parse(n);let i=Number(n);return Number.isNaN(i)?r:i}return r},n=e=>typeof e==`number`?e:e==null?NaN:e instanceof Date?e.getTime():Number(e),r=(e,t,n)=>{if(!e)return;let r=e[t];r<n.min&&(n.min=r),r>n.max&&(n.max=r)},i=t=>{let n=new Set;for(let r of t){if(e(r)){let e=r.y;if(!ArrayBuffer.isView(e))for(let t=0;t<e.length;t++){let r=e[t];typeof r==`string`&&n.add(r)}continue}let t=r;for(let e=0;e<t.length;e++){let r=t[e],i=Array.isArray(r)?r[1]:r&&typeof r==`object`?r.y:void 0;typeof i==`string`&&n.add(i)}}return[...n]},a=t=>{let n=new Set,r=e=>{typeof e==`string`&&n.add(e)};for(let n of t){if(e(n)){let e=n.x;if(e&&!ArrayBuffer.isView(e))for(let t=0;t<e.length;t++)r(e[t]);continue}let t=n;for(let e=0;e<t.length;e++){let n=t[e];Array.isArray(n)?r(n[0]):n&&typeof n==`object`&&r(n.x)}}return[...n]},o=(e,t,n,i)=>{let a=1/0,o=-1/0,s=!0,c=-1/0,{high:l,low:u,value:d,y0:f,q1:p,q3:m,outliers:h}=i,g=1/0,_=-1/0,v={min:1/0,max:-1/0},y=!!(l||u||f||p||m||h);for(let i=0;i<n;i++){let n=e[i];if(!Number.isFinite(n)){t[i]=NaN;continue}n<c&&(s=!1),c=n;let d=t[i];if(Number.isFinite(d)&&(n<a&&(a=n),n>o&&(o=n),d<g&&(g=d),d>_&&(_=d),y)){v.min=g,v.max=_,r(l,i,v),r(u,i,v),r(f,i,v),r(p,i,v),r(m,i,v);let e=h?.[i];if(e)for(let t of e)t<v.min&&(v.min=t),t>v.max&&(v.max=t);g=v.min,_=v.max}}let b=1/0,x=-1/0;if(d)for(let e=0;e<n;e++){let t=d[e];Number.isFinite(t)&&(t<b&&(b=t),t>x&&(x=t))}let S=a>o;return{x:e,y:t,count:n,sorted:s,xMin:S?NaN:a,xMax:S?NaN:o,yMin:S?NaN:g,yMax:S?NaN:_,valueMin:b>x?NaN:b,valueMax:b>x?NaN:x,...i}},s=(e,t)=>{if(!e)return null;if(e instanceof Float64Array&&e.length>=t)return e.length===t?e:e.subarray(0,t);let r=new Float64Array(t);for(let i=0;i<t;i++)r[i]=n(e[i]);return r},c=(t,r,i=n)=>{let a={size:null,colors:null,labels:null,open:null,high:null,low:null,value:null,y0:null,q1:null,q3:null,outliers:null,details:null};if(e(t)){let e=t.y.length,c=new Float64Array(e),l=t.x;if(!l)for(let t=0;t<e;t++)c[t]=t;else if(ArrayBuffer.isView(l)&&l.length>=e)c.set(l.length===e?l:l.subarray(0,e));else for(let t=0;t<e;t++)c[t]=r(l[t],t);let u=t.y,d;if(ArrayBuffer.isView(u))d=new Float64Array(e),d.set(u);else{d=new Float64Array(e);for(let t=0;t<e;t++)d[t]=i(u[t])}let f=null;if(t.size){f=new Float32Array(e);for(let r=0;r<e;r++)f[r]=n(t.size[r])}return o(c,d,e,{...a,size:f,open:s(t.open,e),high:s(t.high,e),low:s(t.low,e),value:s(t.value,e),y0:s(t.y0,e),q1:s(t.q1,e),q3:s(t.q3,e)})}let c=t,l=c.length,u=new Float64Array(l),d=new Float64Array(l),f=null,p=null,m=null,h=null,g=null,_=null,v=null,y=null,b=null,x=null,S=null,C=null,w=()=>new Float64Array(l).fill(NaN);for(let e=0;e<l;e++){let t=c[e];if(t==null||typeof t==`number`)u[e]=e,d[e]=n(t);else if(Array.isArray(t))u[e]=r(t[0],e),d[e]=i(t[1]);else if(typeof t==`object`){let a=t;u[e]=a.x===void 0?e:r(a.x,e),d[e]=i(a.y),a.size!==void 0&&(f??(f=new Float32Array(l).fill(NaN)),f[e]=a.size),a.color!==void 0&&(p??(p=Array(l)),p[e]=a.color),a.label!==void 0&&(m??(m=Array(l)),m[e]=a.label),a.open!==void 0&&((h??(h=w()))[e]=n(a.open)),a.high!==void 0&&((g??(g=w()))[e]=n(a.high)),a.low!==void 0&&((_??(_=w()))[e]=n(a.low)),a.value!==void 0&&((v??(v=w()))[e]=n(a.value)),a.y0!==void 0&&((y??(y=w()))[e]=n(a.y0)),a.q1!==void 0&&((b??(b=w()))[e]=n(a.q1)),a.q3!==void 0&&((x??(x=w()))[e]=n(a.q3)),a.outliers!==void 0&&a.outliers.length&&(S??(S=Array(l)),S[e]=a.outliers),a.details!==void 0&&a.details.length&&(C??(C=Array(l)),C[e]=a.details)}else u[e]=e,d[e]=NaN}return o(u,d,l,{size:f,colors:p,labels:m,open:h,high:g,low:_,value:v,y0:y,q1:b,q3:x,outliers:S,details:C})},l=(e,t,n)=>{let r=0,i=t;for(;r<i;){let t=r+i>>>1;e[t]<n?r=t+1:i=t}return r},u=(e,t,n,r)=>{if(n===0)return-1;let i=l(e,n,r),a=i-1,o=i;for(;a>=0&&!Number.isFinite(t[a]);)a--;for(;o<n&&!Number.isFinite(t[o]);)o++;return a<0?o<n?o:-1:o>=n||r-e[a]<=e[o]-r?a:o};exports.collectCategories=a,exports.collectYCategories=i,exports.lowerBound=l,exports.nearestIndex=u,exports.normalizeData=c,exports.xResolver=t;
2
2
  //# sourceMappingURL=data.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"data.cjs","names":["isColumns","data","xResolver","value","type","categoryIndex","n","index","toNumber","v","collectYCategories","seen","datas","ys","i","list","item","collectCategories","add","xs","finalize","xMin","xMax","yMin","yMax","sorted","prev","extra","count","xi","x","yi","y","high","h","low","l","valueMin","valueMax","empty","column","values","out","normalizeData","none","resolveX","resolveY","size","colors","labels","open","nanColumn","d","lowerBound","lo","hi","mid","nearestIndex","left","right"],"sources":["../../../../charts/src/engine/data.ts"],"sourcesContent":["// Normalization of series data into columns (Float64Array).\n\nimport type { ChartAxisType, ChartSeriesData, ChartXValue } from \"./types\";\n\nexport interface SeriesColumns {\n x: Float64Array;\n /** NaN where the value is missing */\n y: Float64Array;\n size: Float32Array | null;\n colors: (string | undefined)[] | null;\n labels: (string | undefined)[] | null;\n /** Candlesticks: open / high / low (y is the close) */\n open: Float64Array | null;\n high: Float64Array | null;\n low: Float64Array | null;\n /** Heatmaps: values of the cells */\n value: Float64Array | null;\n count: number;\n /** x is non-decreasing (binary search, decimation) */\n sorted: boolean;\n /** Extent of the finite points (NaN when there is none); high / low included */\n xMin: number;\n xMax: number;\n yMin: number;\n yMax: number;\n /** Extent of the finite `value`s (NaN when there is none) */\n valueMin: number;\n valueMax: number;\n}\n\ntype XResolver = (value: ChartXValue, index: number) => number;\n/** Converts a y value (a category name on category y axes) to a number */\nexport type YResolver = (value: unknown) => number;\n\ntype Extra = Pick<\n SeriesColumns,\n \"size\" | \"colors\" | \"labels\" | \"open\" | \"high\" | \"low\" | \"value\"\n>;\n\nconst isColumns = (\n data: ChartSeriesData,\n): data is {\n x?: ArrayLike<number> | readonly ChartXValue[];\n y: ArrayLike<number> | readonly (number | string | null)[];\n size?: ArrayLike<number>;\n open?: ArrayLike<number>;\n high?: ArrayLike<number>;\n low?: ArrayLike<number>;\n value?: ArrayLike<number> | readonly (number | null)[];\n} =>\n typeof data === \"object\" &&\n data !== null &&\n !(\"length\" in data) &&\n \"y\" in data;\n\n/** Converts an x value to a number for the axis type */\nexport const xResolver = (\n type: ChartAxisType,\n categoryIndex: (name: string) => number,\n): XResolver => {\n return (value, index) => {\n if (typeof value === \"number\") return value;\n if (value instanceof Date) return value.getTime();\n if (typeof value === \"string\") {\n if (type === \"category\") return categoryIndex(value);\n if (type === \"time\") return Date.parse(value);\n const n = Number(value);\n return Number.isNaN(n) ? index : n;\n }\n return index;\n };\n};\n\nconst toNumber = (v: unknown): number =>\n typeof v === \"number\" ? v : v === null || v === undefined ? NaN : Number(v);\n\n/** Category names used by string y values (heatmap rows), in order of appearance */\nexport const collectYCategories = (\n datas: readonly ChartSeriesData[],\n): string[] => {\n const seen = new Set<string>();\n for (const data of datas) {\n if (isColumns(data)) {\n const ys = data.y;\n if (!ArrayBuffer.isView(ys)) {\n for (let i = 0; i < ys.length; i++) {\n const v = ys[i];\n if (typeof v === \"string\") seen.add(v);\n }\n }\n continue;\n }\n const list = data as ArrayLike<unknown>;\n for (let i = 0; i < list.length; i++) {\n const item = list[i];\n const v = Array.isArray(item)\n ? item[1]\n : item && typeof item === \"object\"\n ? (item as { y?: unknown }).y\n : undefined;\n if (typeof v === \"string\") seen.add(v);\n }\n }\n return [...seen];\n};\n\n/** Category names used by string x values, in order of appearance */\nexport const collectCategories = (\n datas: readonly ChartSeriesData[],\n): string[] => {\n const seen = new Set<string>();\n const add = (v: unknown) => {\n if (typeof v === \"string\") seen.add(v);\n };\n for (const data of datas) {\n if (isColumns(data)) {\n const xs = data.x;\n if (xs && !ArrayBuffer.isView(xs)) {\n for (let i = 0; i < xs.length; i++) add(xs[i]);\n }\n continue;\n }\n const list = data as ArrayLike<unknown>;\n for (let i = 0; i < list.length; i++) {\n const item = list[i];\n if (Array.isArray(item)) add(item[0]);\n else if (item && typeof item === \"object\")\n add((item as { x?: unknown }).x);\n }\n }\n return [...seen];\n};\n\nconst finalize = (\n x: Float64Array,\n y: Float64Array,\n count: number,\n extra: Extra,\n): SeriesColumns => {\n let xMin = Infinity;\n let xMax = -Infinity;\n let yMin = Infinity;\n let yMax = -Infinity;\n let sorted = true;\n let prev = -Infinity;\n const { high, low, value } = extra;\n for (let i = 0; i < count; i++) {\n const xi = x[i];\n if (!Number.isFinite(xi)) {\n y[i] = NaN;\n continue;\n }\n if (xi < prev) sorted = false;\n prev = xi;\n const yi = y[i];\n if (!Number.isFinite(yi)) continue;\n if (xi < xMin) xMin = xi;\n if (xi > xMax) xMax = xi;\n if (yi < yMin) yMin = yi;\n if (yi > yMax) yMax = yi;\n if (high) {\n const h = high[i];\n if (h > yMax) yMax = h;\n if (h < yMin) yMin = h;\n }\n if (low) {\n const l = low[i];\n if (l < yMin) yMin = l;\n if (l > yMax) yMax = l;\n }\n }\n let valueMin = Infinity;\n let valueMax = -Infinity;\n if (value) {\n for (let i = 0; i < count; i++) {\n const v = value[i];\n if (!Number.isFinite(v)) continue;\n if (v < valueMin) valueMin = v;\n if (v > valueMax) valueMax = v;\n }\n }\n const empty = xMin > xMax;\n return {\n x,\n y,\n count,\n sorted,\n xMin: empty ? NaN : xMin,\n xMax: empty ? NaN : xMax,\n yMin: empty ? NaN : yMin,\n yMax: empty ? NaN : yMax,\n valueMin: valueMin > valueMax ? NaN : valueMin,\n valueMax: valueMin > valueMax ? NaN : valueMax,\n ...extra,\n };\n};\n\nconst column = (\n values: ArrayLike<unknown> | undefined,\n count: number,\n): Float64Array | null => {\n if (!values) return null;\n if (values instanceof Float64Array && values.length >= count) {\n return values.length === count ? values : values.subarray(0, count);\n }\n const out = new Float64Array(count);\n for (let i = 0; i < count; i++) out[i] = toNumber(values[i]);\n return out;\n};\n\n/** Turns any supported data form into columns */\nexport const normalizeData = (\n data: ChartSeriesData,\n resolveX: XResolver,\n resolveY: YResolver = toNumber,\n): SeriesColumns => {\n const none: Extra = {\n size: null,\n colors: null,\n labels: null,\n open: null,\n high: null,\n low: null,\n value: null,\n };\n if (isColumns(data)) {\n const count = data.y.length;\n const x = new Float64Array(count);\n const xs = data.x;\n if (!xs) {\n for (let i = 0; i < count; i++) x[i] = i;\n } else if (ArrayBuffer.isView(xs) && xs.length >= count) {\n // typed arrays: a plain copy (the hot path of large data sets)\n x.set(\n (xs.length === count\n ? xs\n : (xs as unknown as Float64Array).subarray(\n 0,\n count,\n )) as ArrayLike<number>,\n );\n } else {\n for (let i = 0; i < count; i++) x[i] = resolveX(xs[i] as ChartXValue, i);\n }\n const ys = data.y;\n let y: Float64Array;\n if (ArrayBuffer.isView(ys)) {\n // finalize writes NaN at invalid x: copy so the input is never changed\n y = new Float64Array(count);\n y.set(ys as ArrayLike<number>);\n } else {\n y = new Float64Array(count);\n for (let i = 0; i < count; i++) y[i] = resolveY(ys[i]);\n }\n let size: Float32Array | null = null;\n if (data.size) {\n size = new Float32Array(count);\n for (let i = 0; i < count; i++) size[i] = toNumber(data.size[i]);\n }\n return finalize(x, y, count, {\n ...none,\n size,\n open: column(data.open, count),\n high: column(data.high, count),\n low: column(data.low, count),\n value: column(data.value, count),\n });\n }\n\n const list = data as ArrayLike<unknown>;\n const count = list.length;\n const x = new Float64Array(count);\n const y = new Float64Array(count);\n let size: Float32Array | null = null;\n let colors: (string | undefined)[] | null = null;\n let labels: (string | undefined)[] | null = null;\n let open: Float64Array | null = null;\n let high: Float64Array | null = null;\n let low: Float64Array | null = null;\n let value: Float64Array | null = null;\n const nanColumn = () => new Float64Array(count).fill(NaN);\n\n for (let i = 0; i < count; i++) {\n const item = list[i];\n if (item === null || item === undefined || typeof item === \"number\") {\n x[i] = i;\n y[i] = toNumber(item);\n } else if (Array.isArray(item)) {\n x[i] = resolveX(item[0] as ChartXValue, i);\n y[i] = resolveY(item[1]);\n } else if (typeof item === \"object\") {\n const d = item as {\n x?: ChartXValue;\n y?: number | string | null;\n size?: number;\n color?: string;\n label?: string;\n open?: number;\n high?: number;\n low?: number;\n value?: number | null;\n };\n x[i] = d.x === undefined ? i : resolveX(d.x, i);\n y[i] = resolveY(d.y);\n if (d.size !== undefined) {\n size ??= new Float32Array(count).fill(NaN);\n size[i] = d.size;\n }\n if (d.color !== undefined) {\n colors ??= new Array<string | undefined>(count);\n colors[i] = d.color;\n }\n if (d.label !== undefined) {\n labels ??= new Array<string | undefined>(count);\n labels[i] = d.label;\n }\n if (d.open !== undefined) (open ??= nanColumn())[i] = toNumber(d.open);\n if (d.high !== undefined) (high ??= nanColumn())[i] = toNumber(d.high);\n if (d.low !== undefined) (low ??= nanColumn())[i] = toNumber(d.low);\n if (d.value !== undefined) (value ??= nanColumn())[i] = toNumber(d.value);\n } else {\n x[i] = i;\n y[i] = NaN;\n }\n }\n return finalize(x, y, count, {\n size,\n colors,\n labels,\n open,\n high,\n low,\n value,\n });\n};\n\n/** First index whose x is >= value (sorted x) */\nexport const lowerBound = (\n x: ArrayLike<number>,\n count: number,\n value: number,\n): number => {\n let lo = 0;\n let hi = count;\n while (lo < hi) {\n const mid = (lo + hi) >>> 1;\n if (x[mid] < value) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n};\n\n/** Index of the point with the closest x and a finite y (sorted x), -1 if none */\nexport const nearestIndex = (\n x: ArrayLike<number>,\n y: ArrayLike<number>,\n count: number,\n value: number,\n): number => {\n if (count === 0) return -1;\n const i = lowerBound(x, count, value);\n let left = i - 1;\n let right = i;\n while (left >= 0 && !Number.isFinite(y[left])) left--;\n while (right < count && !Number.isFinite(y[right])) right++;\n if (left < 0) return right < count ? right : -1;\n if (right >= count) return left;\n return value - x[left] <= x[right] - value ? left : right;\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"data.cjs","names":["isColumns","data","xResolver","value","type","categoryIndex","n","index","toNumber","v","widen","column","i","range","collectYCategories","seen","datas","ys","list","item","collectCategories","add","xs","finalize","xMin","xMax","sorted","prev","extra","yMin","yMax","more","high","low","y0","q1","q3","outliers","count","xi","x","yi","y","out","valueMin","valueMax","empty","values","normalizeData","none","resolveX","resolveY","size","colors","labels","open","details","nanColumn","d","lowerBound","lo","hi","mid","nearestIndex","left","right"],"sources":["../../../../charts/src/engine/data.ts"],"sourcesContent":["// Normalization of series data into columns (Float64Array).\n\nimport type {\n ChartAxisType,\n ChartSeriesData,\n ChartTooltipDetail,\n ChartXValue,\n} from \"./types\";\n\nexport interface SeriesColumns {\n x: Float64Array;\n /** NaN where the value is missing */\n y: Float64Array;\n size: Float32Array | null;\n colors: (string | undefined)[] | null;\n labels: (string | undefined)[] | null;\n /** Candlesticks: open / high / low (y is the close) */\n open: Float64Array | null;\n high: Float64Array | null;\n low: Float64Array | null;\n /** Heatmaps: values of the cells */\n value: Float64Array | null;\n /** Floating bars / range areas: starts (lower edges); NaN where missing */\n y0: Float64Array | null;\n /** Box plots: quartiles and outliers */\n q1: Float64Array | null;\n q3: Float64Array | null;\n outliers: (readonly number[] | undefined)[] | null;\n /** Extra tooltip rows of the points (object data only) */\n details: (readonly ChartTooltipDetail[] | undefined)[] | null;\n count: number;\n /** x is non-decreasing (binary search, decimation) */\n sorted: boolean;\n /** Extent of the finite points (NaN when there is none); high / low included */\n xMin: number;\n xMax: number;\n yMin: number;\n yMax: number;\n /** Extent of the finite `value`s (NaN when there is none) */\n valueMin: number;\n valueMax: number;\n}\n\ntype XResolver = (value: ChartXValue, index: number) => number;\n/** Converts a y value (a category name on category y axes) to a number */\nexport type YResolver = (value: unknown) => number;\n\ntype Extra = Pick<\n SeriesColumns,\n | \"size\"\n | \"colors\"\n | \"labels\"\n | \"open\"\n | \"high\"\n | \"low\"\n | \"value\"\n | \"y0\"\n | \"q1\"\n | \"q3\"\n | \"outliers\"\n | \"details\"\n>;\n\nconst isColumns = (\n data: ChartSeriesData,\n): data is {\n x?: ArrayLike<number> | readonly ChartXValue[];\n y: ArrayLike<number> | readonly (number | string | null)[];\n y0?: ArrayLike<number> | readonly (number | null)[];\n size?: ArrayLike<number>;\n open?: ArrayLike<number>;\n high?: ArrayLike<number>;\n low?: ArrayLike<number>;\n q1?: ArrayLike<number>;\n q3?: ArrayLike<number>;\n value?: ArrayLike<number> | readonly (number | null)[];\n} =>\n typeof data === \"object\" &&\n data !== null &&\n !(\"length\" in data) &&\n \"y\" in data;\n\n/** Converts an x value to a number for the axis type */\nexport const xResolver = (\n type: ChartAxisType,\n categoryIndex: (name: string) => number,\n): XResolver => {\n return (value, index) => {\n if (typeof value === \"number\") return value;\n if (value instanceof Date) return value.getTime();\n if (typeof value === \"string\") {\n if (type === \"category\") return categoryIndex(value);\n if (type === \"time\") return Date.parse(value);\n const n = Number(value);\n return Number.isNaN(n) ? index : n;\n }\n return index;\n };\n};\n\nconst toNumber = (v: unknown): number =>\n typeof v === \"number\"\n ? v\n : v === null || v === undefined\n ? NaN\n : v instanceof Date\n ? v.getTime()\n : Number(v);\n\n/** Includes the finite values of a column at `i` in an extent */\nconst widen = (\n column: Float64Array | null,\n i: number,\n range: { min: number; max: number },\n) => {\n if (!column) return;\n const v = column[i];\n if (v < range.min) range.min = v;\n if (v > range.max) range.max = v;\n};\n\n/** Category names used by string y values (heatmap rows), in order of appearance */\nexport const collectYCategories = (\n datas: readonly ChartSeriesData[],\n): string[] => {\n const seen = new Set<string>();\n for (const data of datas) {\n if (isColumns(data)) {\n const ys = data.y;\n if (!ArrayBuffer.isView(ys)) {\n for (let i = 0; i < ys.length; i++) {\n const v = ys[i];\n if (typeof v === \"string\") seen.add(v);\n }\n }\n continue;\n }\n const list = data as ArrayLike<unknown>;\n for (let i = 0; i < list.length; i++) {\n const item = list[i];\n const v = Array.isArray(item)\n ? item[1]\n : item && typeof item === \"object\"\n ? (item as { y?: unknown }).y\n : undefined;\n if (typeof v === \"string\") seen.add(v);\n }\n }\n return [...seen];\n};\n\n/** Category names used by string x values, in order of appearance */\nexport const collectCategories = (\n datas: readonly ChartSeriesData[],\n): string[] => {\n const seen = new Set<string>();\n const add = (v: unknown) => {\n if (typeof v === \"string\") seen.add(v);\n };\n for (const data of datas) {\n if (isColumns(data)) {\n const xs = data.x;\n if (xs && !ArrayBuffer.isView(xs)) {\n for (let i = 0; i < xs.length; i++) add(xs[i]);\n }\n continue;\n }\n const list = data as ArrayLike<unknown>;\n for (let i = 0; i < list.length; i++) {\n const item = list[i];\n if (Array.isArray(item)) add(item[0]);\n else if (item && typeof item === \"object\")\n add((item as { x?: unknown }).x);\n }\n }\n return [...seen];\n};\n\nconst finalize = (\n x: Float64Array,\n y: Float64Array,\n count: number,\n extra: Extra,\n): SeriesColumns => {\n let xMin = Infinity;\n let xMax = -Infinity;\n let sorted = true;\n let prev = -Infinity;\n const { high, low, value, y0, q1, q3, outliers } = extra;\n let yMin = Infinity;\n let yMax = -Infinity;\n const range = { min: Infinity, max: -Infinity };\n const more = !!(high || low || y0 || q1 || q3 || outliers);\n for (let i = 0; i < count; i++) {\n const xi = x[i];\n if (!Number.isFinite(xi)) {\n y[i] = NaN;\n continue;\n }\n if (xi < prev) sorted = false;\n prev = xi;\n const yi = y[i];\n if (!Number.isFinite(yi)) continue;\n if (xi < xMin) xMin = xi;\n if (xi > xMax) xMax = xi;\n if (yi < yMin) yMin = yi;\n if (yi > yMax) yMax = yi;\n if (more) {\n // comparisons with NaN are false: missing values are skipped\n range.min = yMin;\n range.max = yMax;\n widen(high, i, range);\n widen(low, i, range);\n widen(y0, i, range);\n widen(q1, i, range);\n widen(q3, i, range);\n const out = outliers?.[i];\n if (out) {\n for (const v of out) {\n if (v < range.min) range.min = v;\n if (v > range.max) range.max = v;\n }\n }\n yMin = range.min;\n yMax = range.max;\n }\n }\n let valueMin = Infinity;\n let valueMax = -Infinity;\n if (value) {\n for (let i = 0; i < count; i++) {\n const v = value[i];\n if (!Number.isFinite(v)) continue;\n if (v < valueMin) valueMin = v;\n if (v > valueMax) valueMax = v;\n }\n }\n const empty = xMin > xMax;\n return {\n x,\n y,\n count,\n sorted,\n xMin: empty ? NaN : xMin,\n xMax: empty ? NaN : xMax,\n yMin: empty ? NaN : yMin,\n yMax: empty ? NaN : yMax,\n valueMin: valueMin > valueMax ? NaN : valueMin,\n valueMax: valueMin > valueMax ? NaN : valueMax,\n ...extra,\n };\n};\n\nconst column = (\n values: ArrayLike<unknown> | undefined,\n count: number,\n): Float64Array | null => {\n if (!values) return null;\n if (values instanceof Float64Array && values.length >= count) {\n return values.length === count ? values : values.subarray(0, count);\n }\n const out = new Float64Array(count);\n for (let i = 0; i < count; i++) out[i] = toNumber(values[i]);\n return out;\n};\n\n/** Turns any supported data form into columns */\nexport const normalizeData = (\n data: ChartSeriesData,\n resolveX: XResolver,\n resolveY: YResolver = toNumber,\n): SeriesColumns => {\n const none: Extra = {\n size: null,\n colors: null,\n labels: null,\n open: null,\n high: null,\n low: null,\n value: null,\n y0: null,\n q1: null,\n q3: null,\n outliers: null,\n details: null,\n };\n if (isColumns(data)) {\n const count = data.y.length;\n const x = new Float64Array(count);\n const xs = data.x;\n if (!xs) {\n for (let i = 0; i < count; i++) x[i] = i;\n } else if (ArrayBuffer.isView(xs) && xs.length >= count) {\n // typed arrays: a plain copy (the hot path of large data sets)\n x.set(\n (xs.length === count\n ? xs\n : (xs as unknown as Float64Array).subarray(\n 0,\n count,\n )) as ArrayLike<number>,\n );\n } else {\n for (let i = 0; i < count; i++) x[i] = resolveX(xs[i] as ChartXValue, i);\n }\n const ys = data.y;\n let y: Float64Array;\n if (ArrayBuffer.isView(ys)) {\n // finalize writes NaN at invalid x: copy so the input is never changed\n y = new Float64Array(count);\n y.set(ys as ArrayLike<number>);\n } else {\n y = new Float64Array(count);\n for (let i = 0; i < count; i++) y[i] = resolveY(ys[i]);\n }\n let size: Float32Array | null = null;\n if (data.size) {\n size = new Float32Array(count);\n for (let i = 0; i < count; i++) size[i] = toNumber(data.size[i]);\n }\n return finalize(x, y, count, {\n ...none,\n size,\n open: column(data.open, count),\n high: column(data.high, count),\n low: column(data.low, count),\n value: column(data.value, count),\n y0: column(data.y0, count),\n q1: column(data.q1, count),\n q3: column(data.q3, count),\n });\n }\n\n const list = data as ArrayLike<unknown>;\n const count = list.length;\n const x = new Float64Array(count);\n const y = new Float64Array(count);\n let size: Float32Array | null = null;\n let colors: (string | undefined)[] | null = null;\n let labels: (string | undefined)[] | null = null;\n let open: Float64Array | null = null;\n let high: Float64Array | null = null;\n let low: Float64Array | null = null;\n let value: Float64Array | null = null;\n let y0: Float64Array | null = null;\n let q1: Float64Array | null = null;\n let q3: Float64Array | null = null;\n let outliers: (readonly number[] | undefined)[] | null = null;\n let details: (readonly ChartTooltipDetail[] | undefined)[] | null = null;\n const nanColumn = () => new Float64Array(count).fill(NaN);\n\n for (let i = 0; i < count; i++) {\n const item = list[i];\n if (item === null || item === undefined || typeof item === \"number\") {\n x[i] = i;\n y[i] = toNumber(item);\n } else if (Array.isArray(item)) {\n x[i] = resolveX(item[0] as ChartXValue, i);\n y[i] = resolveY(item[1]);\n } else if (typeof item === \"object\") {\n const d = item as {\n x?: ChartXValue;\n y?: number | string | null;\n size?: number;\n color?: string;\n label?: string;\n open?: number;\n high?: number;\n low?: number;\n value?: number | null;\n y0?: number | Date | null;\n q1?: number;\n q3?: number;\n outliers?: readonly number[];\n details?: readonly ChartTooltipDetail[];\n };\n x[i] = d.x === undefined ? i : resolveX(d.x, i);\n y[i] = resolveY(d.y);\n if (d.size !== undefined) {\n size ??= new Float32Array(count).fill(NaN);\n size[i] = d.size;\n }\n if (d.color !== undefined) {\n colors ??= new Array<string | undefined>(count);\n colors[i] = d.color;\n }\n if (d.label !== undefined) {\n labels ??= new Array<string | undefined>(count);\n labels[i] = d.label;\n }\n if (d.open !== undefined) (open ??= nanColumn())[i] = toNumber(d.open);\n if (d.high !== undefined) (high ??= nanColumn())[i] = toNumber(d.high);\n if (d.low !== undefined) (low ??= nanColumn())[i] = toNumber(d.low);\n if (d.value !== undefined) (value ??= nanColumn())[i] = toNumber(d.value);\n if (d.y0 !== undefined) (y0 ??= nanColumn())[i] = toNumber(d.y0);\n if (d.q1 !== undefined) (q1 ??= nanColumn())[i] = toNumber(d.q1);\n if (d.q3 !== undefined) (q3 ??= nanColumn())[i] = toNumber(d.q3);\n if (d.outliers !== undefined && d.outliers.length) {\n outliers ??= new Array<readonly number[] | undefined>(count);\n outliers[i] = d.outliers;\n }\n if (d.details !== undefined && d.details.length) {\n details ??= new Array<readonly ChartTooltipDetail[] | undefined>(count);\n details[i] = d.details;\n }\n } else {\n x[i] = i;\n y[i] = NaN;\n }\n }\n return finalize(x, y, count, {\n size,\n colors,\n labels,\n open,\n high,\n low,\n value,\n y0,\n q1,\n q3,\n outliers,\n details,\n });\n};\n\n/** First index whose x is >= value (sorted x) */\nexport const lowerBound = (\n x: ArrayLike<number>,\n count: number,\n value: number,\n): number => {\n let lo = 0;\n let hi = count;\n while (lo < hi) {\n const mid = (lo + hi) >>> 1;\n if (x[mid] < value) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n};\n\n/** Index of the point with the closest x and a finite y (sorted x), -1 if none */\nexport const nearestIndex = (\n x: ArrayLike<number>,\n y: ArrayLike<number>,\n count: number,\n value: number,\n): number => {\n if (count === 0) return -1;\n const i = lowerBound(x, count, value);\n let left = i - 1;\n let right = i;\n while (left >= 0 && !Number.isFinite(y[left])) left--;\n while (right < count && !Number.isFinite(y[right])) right++;\n if (left < 0) return right < count ? right : -1;\n if (right >= count) return left;\n return value - x[left] <= x[right] - value ? left : right;\n};\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { ChartAxisType, ChartSeriesData, ChartXValue } from './types.cjs';
1
+ import { ChartAxisType, ChartSeriesData, ChartTooltipDetail, ChartXValue } from './types.cjs';
2
2
  export interface SeriesColumns {
3
3
  x: Float64Array;
4
4
  /** NaN where the value is missing */
@@ -12,6 +12,14 @@ export interface SeriesColumns {
12
12
  low: Float64Array | null;
13
13
  /** Heatmaps: values of the cells */
14
14
  value: Float64Array | null;
15
+ /** Floating bars / range areas: starts (lower edges); NaN where missing */
16
+ y0: Float64Array | null;
17
+ /** Box plots: quartiles and outliers */
18
+ q1: Float64Array | null;
19
+ q3: Float64Array | null;
20
+ outliers: (readonly number[] | undefined)[] | null;
21
+ /** Extra tooltip rows of the points (object data only) */
22
+ details: (readonly ChartTooltipDetail[] | undefined)[] | null;
15
23
  count: number;
16
24
  /** x is non-decreasing (binary search, decimation) */
17
25
  sorted: boolean;
@@ -1,4 +1,4 @@
1
- import { ChartAxisType, ChartSeriesData, ChartXValue } from './types.js';
1
+ import { ChartAxisType, ChartSeriesData, ChartTooltipDetail, ChartXValue } from './types.js';
2
2
  export interface SeriesColumns {
3
3
  x: Float64Array;
4
4
  /** NaN where the value is missing */
@@ -12,6 +12,14 @@ export interface SeriesColumns {
12
12
  low: Float64Array | null;
13
13
  /** Heatmaps: values of the cells */
14
14
  value: Float64Array | null;
15
+ /** Floating bars / range areas: starts (lower edges); NaN where missing */
16
+ y0: Float64Array | null;
17
+ /** Box plots: quartiles and outliers */
18
+ q1: Float64Array | null;
19
+ q3: Float64Array | null;
20
+ outliers: (readonly number[] | undefined)[] | null;
21
+ /** Extra tooltip rows of the points (object data only) */
22
+ details: (readonly ChartTooltipDetail[] | undefined)[] | null;
15
23
  count: number;
16
24
  /** x is non-decreasing (binary search, decimation) */
17
25
  sorted: boolean;