minerva-design 1.2.0 → 1.4.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 (1226) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/README.md +21 -21
  3. package/custom-elements.json +13630 -4757
  4. package/dist/angular/fesm2022/minerva-angular.mjs +6872 -172
  5. package/dist/angular/fesm2022/minerva-angular.mjs.map +1 -1
  6. package/dist/angular/types/minerva-angular.d.ts +2240 -0
  7. package/dist/charts/canvas.d.cts +10 -2
  8. package/dist/charts/canvas.d.ts +10 -2
  9. package/dist/charts/core.cjs +1 -1
  10. package/dist/charts/core.d.cts +9 -3
  11. package/dist/charts/core.d.ts +9 -3
  12. package/dist/charts/core.js +19 -6
  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 +6 -6
  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 +161 -99
  22. package/dist/charts/engine/canvas.js.map +1 -1
  23. package/dist/charts/engine/chart.cjs +1 -2
  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 +390 -349
  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 +17 -0
  32. package/dist/charts/engine/color.d.ts +17 -0
  33. package/dist/charts/engine/color.js +27 -3
  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 +17 -2
  38. package/dist/charts/engine/controller.d.ts +17 -2
  39. package/dist/charts/engine/controller.js +404 -280
  40. package/dist/charts/engine/controller.js.map +1 -1
  41. package/dist/charts/engine/curve.cjs +2 -0
  42. package/dist/charts/engine/curve.cjs.map +1 -0
  43. package/dist/charts/engine/curve.d.cts +15 -0
  44. package/dist/charts/engine/curve.d.ts +15 -0
  45. package/dist/charts/engine/curve.js +56 -0
  46. package/dist/charts/engine/curve.js.map +1 -0
  47. package/dist/charts/engine/data.cjs +1 -1
  48. package/dist/charts/engine/data.cjs.map +1 -1
  49. package/dist/charts/engine/data.d.cts +21 -2
  50. package/dist/charts/engine/data.d.ts +21 -2
  51. package/dist/charts/engine/data.js +117 -43
  52. package/dist/charts/engine/data.js.map +1 -1
  53. package/dist/charts/engine/dom.cjs +1 -1
  54. package/dist/charts/engine/dom.cjs.map +1 -1
  55. package/dist/charts/engine/dom.d.cts +5 -3
  56. package/dist/charts/engine/dom.d.ts +5 -3
  57. package/dist/charts/engine/dom.js +27 -22
  58. package/dist/charts/engine/dom.js.map +1 -1
  59. package/dist/charts/engine/format.cjs +1 -1
  60. package/dist/charts/engine/format.cjs.map +1 -1
  61. package/dist/charts/engine/format.d.cts +21 -6
  62. package/dist/charts/engine/format.d.ts +21 -6
  63. package/dist/charts/engine/format.js +46 -21
  64. package/dist/charts/engine/format.js.map +1 -1
  65. package/dist/charts/engine/items.cjs +1 -1
  66. package/dist/charts/engine/items.cjs.map +1 -1
  67. package/dist/charts/engine/items.js +290 -62
  68. package/dist/charts/engine/items.js.map +1 -1
  69. package/dist/charts/engine/labels.cjs +2 -0
  70. package/dist/charts/engine/labels.cjs.map +1 -0
  71. package/dist/charts/engine/labels.d.cts +13 -0
  72. package/dist/charts/engine/labels.d.ts +13 -0
  73. package/dist/charts/engine/labels.js +74 -0
  74. package/dist/charts/engine/labels.js.map +1 -0
  75. package/dist/charts/engine/layout.cjs +1 -1
  76. package/dist/charts/engine/layout.cjs.map +1 -1
  77. package/dist/charts/engine/layout.d.cts +34 -2
  78. package/dist/charts/engine/layout.d.ts +34 -2
  79. package/dist/charts/engine/layout.js +53 -12
  80. package/dist/charts/engine/layout.js.map +1 -1
  81. package/dist/charts/engine/locale.cjs +2 -0
  82. package/dist/charts/engine/locale.cjs.map +1 -0
  83. package/dist/charts/engine/locale.d.cts +33 -0
  84. package/dist/charts/engine/locale.d.ts +33 -0
  85. package/dist/charts/engine/locale.js +68 -0
  86. package/dist/charts/engine/locale.js.map +1 -0
  87. package/dist/charts/engine/model.cjs +1 -1
  88. package/dist/charts/engine/model.cjs.map +1 -1
  89. package/dist/charts/engine/model.d.cts +68 -3
  90. package/dist/charts/engine/model.d.ts +68 -3
  91. package/dist/charts/engine/model.js +332 -108
  92. package/dist/charts/engine/model.js.map +1 -1
  93. package/dist/charts/engine/orderbook/book.cjs +2 -0
  94. package/dist/charts/engine/orderbook/book.cjs.map +1 -0
  95. package/dist/charts/engine/orderbook/book.d.cts +28 -0
  96. package/dist/charts/engine/orderbook/book.d.ts +28 -0
  97. package/dist/charts/engine/orderbook/book.js +134 -0
  98. package/dist/charts/engine/orderbook/book.js.map +1 -0
  99. package/dist/charts/engine/orderbook/depth.cjs +2 -0
  100. package/dist/charts/engine/orderbook/depth.cjs.map +1 -0
  101. package/dist/charts/engine/orderbook/depth.d.cts +7 -0
  102. package/dist/charts/engine/orderbook/depth.d.ts +7 -0
  103. package/dist/charts/engine/orderbook/depth.js +413 -0
  104. package/dist/charts/engine/orderbook/depth.js.map +1 -0
  105. package/dist/charts/engine/orderbook/format.cjs +2 -0
  106. package/dist/charts/engine/orderbook/format.cjs.map +1 -0
  107. package/dist/charts/engine/orderbook/format.d.cts +48 -0
  108. package/dist/charts/engine/orderbook/format.d.ts +48 -0
  109. package/dist/charts/engine/orderbook/format.js +65 -0
  110. package/dist/charts/engine/orderbook/format.js.map +1 -0
  111. package/dist/charts/engine/orderbook/heatmap.cjs +2 -0
  112. package/dist/charts/engine/orderbook/heatmap.cjs.map +1 -0
  113. package/dist/charts/engine/orderbook/heatmap.d.cts +9 -0
  114. package/dist/charts/engine/orderbook/heatmap.d.ts +9 -0
  115. package/dist/charts/engine/orderbook/heatmap.js +703 -0
  116. package/dist/charts/engine/orderbook/heatmap.js.map +1 -0
  117. package/dist/charts/engine/orderbook/host.cjs +2 -0
  118. package/dist/charts/engine/orderbook/host.cjs.map +1 -0
  119. package/dist/charts/engine/orderbook/host.d.cts +50 -0
  120. package/dist/charts/engine/orderbook/host.d.ts +50 -0
  121. package/dist/charts/engine/orderbook/host.js +161 -0
  122. package/dist/charts/engine/orderbook/host.js.map +1 -0
  123. package/dist/charts/engine/orderbook/index.cjs +1 -0
  124. package/dist/charts/engine/orderbook/index.d.cts +6 -0
  125. package/dist/charts/engine/orderbook/index.d.ts +6 -0
  126. package/dist/charts/engine/orderbook/index.js +6 -0
  127. package/dist/charts/engine/orderbook/ladder.cjs +2 -0
  128. package/dist/charts/engine/orderbook/ladder.cjs.map +1 -0
  129. package/dist/charts/engine/orderbook/ladder.d.cts +6 -0
  130. package/dist/charts/engine/orderbook/ladder.d.ts +6 -0
  131. package/dist/charts/engine/orderbook/ladder.js +341 -0
  132. package/dist/charts/engine/orderbook/ladder.js.map +1 -0
  133. package/dist/charts/engine/orderbook/tape.cjs +2 -0
  134. package/dist/charts/engine/orderbook/tape.cjs.map +1 -0
  135. package/dist/charts/engine/orderbook/tape.d.cts +6 -0
  136. package/dist/charts/engine/orderbook/tape.d.ts +6 -0
  137. package/dist/charts/engine/orderbook/tape.js +450 -0
  138. package/dist/charts/engine/orderbook/tape.js.map +1 -0
  139. package/dist/charts/engine/orderbook/types.d.cts +735 -0
  140. package/dist/charts/engine/orderbook/types.d.ts +735 -0
  141. package/dist/charts/engine/overlay.cjs +1 -1
  142. package/dist/charts/engine/overlay.cjs.map +1 -1
  143. package/dist/charts/engine/overlay.d.cts +18 -0
  144. package/dist/charts/engine/overlay.d.ts +18 -0
  145. package/dist/charts/engine/overlay.js +138 -102
  146. package/dist/charts/engine/overlay.js.map +1 -1
  147. package/dist/charts/engine/presets.cjs +2 -2
  148. package/dist/charts/engine/presets.cjs.map +1 -1
  149. package/dist/charts/engine/presets.d.cts +319 -5
  150. package/dist/charts/engine/presets.d.ts +319 -5
  151. package/dist/charts/engine/presets.js +463 -38
  152. package/dist/charts/engine/presets.js.map +1 -1
  153. package/dist/charts/engine/renderers/canvas2d.cjs +1 -1
  154. package/dist/charts/engine/renderers/canvas2d.cjs.map +1 -1
  155. package/dist/charts/engine/renderers/canvas2d.js +149 -111
  156. package/dist/charts/engine/renderers/canvas2d.js.map +1 -1
  157. package/dist/charts/engine/renderers/detect.cjs +1 -1
  158. package/dist/charts/engine/renderers/detect.cjs.map +1 -1
  159. package/dist/charts/engine/renderers/detect.js +18 -15
  160. package/dist/charts/engine/renderers/detect.js.map +1 -1
  161. package/dist/charts/engine/renderers/gl.cjs +2 -0
  162. package/dist/charts/engine/renderers/gl.cjs.map +1 -0
  163. package/dist/charts/engine/renderers/gl.d.cts +21 -0
  164. package/dist/charts/engine/renderers/gl.d.ts +21 -0
  165. package/dist/charts/engine/renderers/gl.js +56 -0
  166. package/dist/charts/engine/renderers/gl.js.map +1 -0
  167. package/dist/charts/engine/renderers/range.cjs +1 -1
  168. package/dist/charts/engine/renderers/range.cjs.map +1 -1
  169. package/dist/charts/engine/renderers/range.js +4 -4
  170. package/dist/charts/engine/renderers/range.js.map +1 -1
  171. package/dist/charts/engine/renderers/shaders.cjs +180 -20
  172. package/dist/charts/engine/renderers/shaders.cjs.map +1 -1
  173. package/dist/charts/engine/renderers/shaders.d.cts +18 -2
  174. package/dist/charts/engine/renderers/shaders.d.ts +18 -2
  175. package/dist/charts/engine/renderers/shaders.js +176 -20
  176. package/dist/charts/engine/renderers/shaders.js.map +1 -1
  177. package/dist/charts/engine/renderers/types.cjs.map +1 -1
  178. package/dist/charts/engine/renderers/types.d.cts +11 -4
  179. package/dist/charts/engine/renderers/types.d.ts +11 -4
  180. package/dist/charts/engine/renderers/types.js.map +1 -1
  181. package/dist/charts/engine/renderers/webgl.cjs +2 -0
  182. package/dist/charts/engine/renderers/webgl.cjs.map +1 -0
  183. package/dist/charts/engine/renderers/webgl.d.cts +4 -0
  184. package/dist/charts/engine/renderers/webgl.d.ts +4 -0
  185. package/dist/charts/engine/renderers/webgl.js +133 -0
  186. package/dist/charts/engine/renderers/webgl.js.map +1 -0
  187. package/dist/charts/engine/renderers/webgl2.cjs +1 -1
  188. package/dist/charts/engine/renderers/webgl2.cjs.map +1 -1
  189. package/dist/charts/engine/renderers/webgl2.d.cts +0 -1
  190. package/dist/charts/engine/renderers/webgl2.d.ts +0 -1
  191. package/dist/charts/engine/renderers/webgl2.js +62 -90
  192. package/dist/charts/engine/renderers/webgl2.js.map +1 -1
  193. package/dist/charts/engine/renderers/webgpu.cjs +1 -1
  194. package/dist/charts/engine/renderers/webgpu.cjs.map +1 -1
  195. package/dist/charts/engine/renderers/webgpu.js +18 -15
  196. package/dist/charts/engine/renderers/webgpu.js.map +1 -1
  197. package/dist/charts/engine/scale.cjs +1 -1
  198. package/dist/charts/engine/scale.cjs.map +1 -1
  199. package/dist/charts/engine/scale.js +1 -1
  200. package/dist/charts/engine/scale.js.map +1 -1
  201. package/dist/charts/engine/scene.cjs +1 -1
  202. package/dist/charts/engine/scene.cjs.map +1 -1
  203. package/dist/charts/engine/scene.d.cts +32 -9
  204. package/dist/charts/engine/scene.d.ts +32 -9
  205. package/dist/charts/engine/scene.js +363 -122
  206. package/dist/charts/engine/scene.js.map +1 -1
  207. package/dist/charts/engine/shapes/bullet.cjs +2 -0
  208. package/dist/charts/engine/shapes/bullet.cjs.map +1 -0
  209. package/dist/charts/engine/shapes/bullet.d.cts +6 -0
  210. package/dist/charts/engine/shapes/bullet.d.ts +6 -0
  211. package/dist/charts/engine/shapes/bullet.js +255 -0
  212. package/dist/charts/engine/shapes/bullet.js.map +1 -0
  213. package/dist/charts/engine/shapes/calendar.cjs +2 -0
  214. package/dist/charts/engine/shapes/calendar.cjs.map +1 -0
  215. package/dist/charts/engine/shapes/calendar.d.cts +38 -0
  216. package/dist/charts/engine/shapes/calendar.d.ts +38 -0
  217. package/dist/charts/engine/shapes/calendar.js +369 -0
  218. package/dist/charts/engine/shapes/calendar.js.map +1 -0
  219. package/dist/charts/engine/shapes/canvas.cjs +2 -0
  220. package/dist/charts/engine/shapes/canvas.cjs.map +1 -0
  221. package/dist/charts/engine/shapes/canvas.d.cts +65 -0
  222. package/dist/charts/engine/shapes/canvas.d.ts +65 -0
  223. package/dist/charts/engine/shapes/canvas.js +168 -0
  224. package/dist/charts/engine/shapes/canvas.js.map +1 -0
  225. package/dist/charts/engine/shapes/chart.cjs +2 -0
  226. package/dist/charts/engine/shapes/chart.cjs.map +1 -0
  227. package/dist/charts/engine/shapes/chart.d.cts +7 -0
  228. package/dist/charts/engine/shapes/chart.d.ts +7 -0
  229. package/dist/charts/engine/shapes/chart.js +292 -0
  230. package/dist/charts/engine/shapes/chart.js.map +1 -0
  231. package/dist/charts/engine/shapes/draw.cjs +2 -0
  232. package/dist/charts/engine/shapes/draw.cjs.map +1 -0
  233. package/dist/charts/engine/shapes/draw.d.cts +22 -0
  234. package/dist/charts/engine/shapes/draw.d.ts +22 -0
  235. package/dist/charts/engine/shapes/draw.js +165 -0
  236. package/dist/charts/engine/shapes/draw.js.map +1 -0
  237. package/dist/charts/engine/shapes/funnel.cjs +2 -0
  238. package/dist/charts/engine/shapes/funnel.cjs.map +1 -0
  239. package/dist/charts/engine/shapes/funnel.d.cts +6 -0
  240. package/dist/charts/engine/shapes/funnel.d.ts +6 -0
  241. package/dist/charts/engine/shapes/funnel.js +149 -0
  242. package/dist/charts/engine/shapes/funnel.js.map +1 -0
  243. package/dist/charts/engine/shapes/gauge.cjs +2 -0
  244. package/dist/charts/engine/shapes/gauge.cjs.map +1 -0
  245. package/dist/charts/engine/shapes/gauge.d.cts +7 -0
  246. package/dist/charts/engine/shapes/gauge.d.ts +7 -0
  247. package/dist/charts/engine/shapes/gauge.js +210 -0
  248. package/dist/charts/engine/shapes/gauge.js.map +1 -0
  249. package/dist/charts/engine/shapes/hit.cjs +2 -0
  250. package/dist/charts/engine/shapes/hit.cjs.map +1 -0
  251. package/dist/charts/engine/shapes/hit.d.cts +30 -0
  252. package/dist/charts/engine/shapes/hit.d.ts +30 -0
  253. package/dist/charts/engine/shapes/hit.js +145 -0
  254. package/dist/charts/engine/shapes/hit.js.map +1 -0
  255. package/dist/charts/engine/shapes/index.d.cts +12 -0
  256. package/dist/charts/engine/shapes/index.d.ts +12 -0
  257. package/dist/charts/engine/shapes/labels.cjs +2 -0
  258. package/dist/charts/engine/shapes/labels.cjs.map +1 -0
  259. package/dist/charts/engine/shapes/labels.d.cts +14 -0
  260. package/dist/charts/engine/shapes/labels.d.ts +14 -0
  261. package/dist/charts/engine/shapes/labels.js +146 -0
  262. package/dist/charts/engine/shapes/labels.js.map +1 -0
  263. package/dist/charts/engine/shapes/layout.cjs +3 -0
  264. package/dist/charts/engine/shapes/layout.cjs.map +1 -0
  265. package/dist/charts/engine/shapes/layout.d.cts +93 -0
  266. package/dist/charts/engine/shapes/layout.d.ts +93 -0
  267. package/dist/charts/engine/shapes/layout.js +353 -0
  268. package/dist/charts/engine/shapes/layout.js.map +1 -0
  269. package/dist/charts/engine/shapes/pie.cjs +2 -0
  270. package/dist/charts/engine/shapes/pie.cjs.map +1 -0
  271. package/dist/charts/engine/shapes/pie.d.cts +20 -0
  272. package/dist/charts/engine/shapes/pie.d.ts +20 -0
  273. package/dist/charts/engine/shapes/pie.js +302 -0
  274. package/dist/charts/engine/shapes/pie.js.map +1 -0
  275. package/dist/charts/engine/shapes/radar.cjs +2 -0
  276. package/dist/charts/engine/shapes/radar.cjs.map +1 -0
  277. package/dist/charts/engine/shapes/radar.d.cts +8 -0
  278. package/dist/charts/engine/shapes/radar.d.ts +8 -0
  279. package/dist/charts/engine/shapes/radar.js +198 -0
  280. package/dist/charts/engine/shapes/radar.js.map +1 -0
  281. package/dist/charts/engine/shapes/radialBar.cjs +2 -0
  282. package/dist/charts/engine/shapes/radialBar.cjs.map +1 -0
  283. package/dist/charts/engine/shapes/radialBar.d.cts +8 -0
  284. package/dist/charts/engine/shapes/radialBar.d.ts +8 -0
  285. package/dist/charts/engine/shapes/radialBar.js +155 -0
  286. package/dist/charts/engine/shapes/radialBar.js.map +1 -0
  287. package/dist/charts/engine/shapes/runtime.cjs +2 -0
  288. package/dist/charts/engine/shapes/runtime.cjs.map +1 -0
  289. package/dist/charts/engine/shapes/runtime.d.cts +36 -0
  290. package/dist/charts/engine/shapes/runtime.d.ts +36 -0
  291. package/dist/charts/engine/shapes/runtime.js +107 -0
  292. package/dist/charts/engine/shapes/runtime.js.map +1 -0
  293. package/dist/charts/engine/shapes/sankey.cjs +2 -0
  294. package/dist/charts/engine/shapes/sankey.cjs.map +1 -0
  295. package/dist/charts/engine/shapes/sankey.d.cts +29 -0
  296. package/dist/charts/engine/shapes/sankey.d.ts +29 -0
  297. package/dist/charts/engine/shapes/sankey.js +372 -0
  298. package/dist/charts/engine/shapes/sankey.js.map +1 -0
  299. package/dist/charts/engine/shapes/scene.cjs +2 -0
  300. package/dist/charts/engine/shapes/scene.cjs.map +1 -0
  301. package/dist/charts/engine/shapes/scene.d.cts +311 -0
  302. package/dist/charts/engine/shapes/scene.d.ts +311 -0
  303. package/dist/charts/engine/shapes/scene.js +125 -0
  304. package/dist/charts/engine/shapes/scene.js.map +1 -0
  305. package/dist/charts/engine/shapes/sunburst.cjs +2 -0
  306. package/dist/charts/engine/shapes/sunburst.cjs.map +1 -0
  307. package/dist/charts/engine/shapes/sunburst.d.cts +6 -0
  308. package/dist/charts/engine/shapes/sunburst.d.ts +6 -0
  309. package/dist/charts/engine/shapes/sunburst.js +261 -0
  310. package/dist/charts/engine/shapes/sunburst.js.map +1 -0
  311. package/dist/charts/engine/shapes/treemap.cjs +2 -0
  312. package/dist/charts/engine/shapes/treemap.cjs.map +1 -0
  313. package/dist/charts/engine/shapes/treemap.d.cts +14 -0
  314. package/dist/charts/engine/shapes/treemap.d.ts +14 -0
  315. package/dist/charts/engine/shapes/treemap.js +213 -0
  316. package/dist/charts/engine/shapes/treemap.js.map +1 -0
  317. package/dist/charts/engine/shapes/types.d.cts +719 -0
  318. package/dist/charts/engine/shapes/types.d.ts +719 -0
  319. package/dist/charts/engine/signature.cjs +2 -0
  320. package/dist/charts/engine/signature.cjs.map +1 -0
  321. package/dist/charts/engine/signature.d.cts +9 -0
  322. package/dist/charts/engine/signature.d.ts +9 -0
  323. package/dist/charts/engine/signature.js +13 -0
  324. package/dist/charts/engine/signature.js.map +1 -0
  325. package/dist/charts/engine/theme.cjs +1 -1
  326. package/dist/charts/engine/theme.cjs.map +1 -1
  327. package/dist/charts/engine/theme.d.cts +10 -1
  328. package/dist/charts/engine/theme.d.ts +10 -1
  329. package/dist/charts/engine/theme.js +40 -16
  330. package/dist/charts/engine/theme.js.map +1 -1
  331. package/dist/charts/engine/three-d/canvas2d.cjs +2 -0
  332. package/dist/charts/engine/three-d/canvas2d.cjs.map +1 -0
  333. package/dist/charts/engine/three-d/canvas2d.d.cts +4 -0
  334. package/dist/charts/engine/three-d/canvas2d.d.ts +4 -0
  335. package/dist/charts/engine/three-d/canvas2d.js +104 -0
  336. package/dist/charts/engine/three-d/canvas2d.js.map +1 -0
  337. package/dist/charts/engine/three-d/chart.cjs +2 -0
  338. package/dist/charts/engine/three-d/chart.cjs.map +1 -0
  339. package/dist/charts/engine/three-d/chart.d.cts +15 -0
  340. package/dist/charts/engine/three-d/chart.d.ts +15 -0
  341. package/dist/charts/engine/three-d/chart.js +621 -0
  342. package/dist/charts/engine/three-d/chart.js.map +1 -0
  343. package/dist/charts/engine/three-d/colormap.cjs +2 -0
  344. package/dist/charts/engine/three-d/colormap.cjs.map +1 -0
  345. package/dist/charts/engine/three-d/colormap.d.cts +16 -0
  346. package/dist/charts/engine/three-d/colormap.d.ts +16 -0
  347. package/dist/charts/engine/three-d/colormap.js +166 -0
  348. package/dist/charts/engine/three-d/colormap.js.map +1 -0
  349. package/dist/charts/engine/three-d/contours.cjs +2 -0
  350. package/dist/charts/engine/three-d/contours.cjs.map +1 -0
  351. package/dist/charts/engine/three-d/contours.d.cts +7 -0
  352. package/dist/charts/engine/three-d/contours.d.ts +7 -0
  353. package/dist/charts/engine/three-d/contours.js +47 -0
  354. package/dist/charts/engine/three-d/contours.js.map +1 -0
  355. package/dist/charts/engine/three-d/detect.cjs +2 -0
  356. package/dist/charts/engine/three-d/detect.cjs.map +1 -0
  357. package/dist/charts/engine/three-d/detect.d.cts +11 -0
  358. package/dist/charts/engine/three-d/detect.d.ts +11 -0
  359. package/dist/charts/engine/three-d/detect.js +35 -0
  360. package/dist/charts/engine/three-d/detect.js.map +1 -0
  361. package/dist/charts/engine/three-d/dom.cjs +2 -0
  362. package/dist/charts/engine/three-d/dom.cjs.map +1 -0
  363. package/dist/charts/engine/three-d/dom.d.cts +21 -0
  364. package/dist/charts/engine/three-d/dom.d.ts +21 -0
  365. package/dist/charts/engine/three-d/dom.js +98 -0
  366. package/dist/charts/engine/three-d/dom.js.map +1 -0
  367. package/dist/charts/engine/three-d/geometry.cjs +2 -0
  368. package/dist/charts/engine/three-d/geometry.cjs.map +1 -0
  369. package/dist/charts/engine/three-d/geometry.d.cts +76 -0
  370. package/dist/charts/engine/three-d/geometry.d.ts +76 -0
  371. package/dist/charts/engine/three-d/geometry.js +529 -0
  372. package/dist/charts/engine/three-d/geometry.js.map +1 -0
  373. package/dist/charts/engine/three-d/hover.cjs +2 -0
  374. package/dist/charts/engine/three-d/hover.cjs.map +1 -0
  375. package/dist/charts/engine/three-d/hover.d.cts +25 -0
  376. package/dist/charts/engine/three-d/hover.d.ts +25 -0
  377. package/dist/charts/engine/three-d/hover.js +131 -0
  378. package/dist/charts/engine/three-d/hover.js.map +1 -0
  379. package/dist/charts/engine/three-d/index.cjs +1 -0
  380. package/dist/charts/engine/three-d/index.d.cts +2 -0
  381. package/dist/charts/engine/three-d/index.d.ts +2 -0
  382. package/dist/charts/engine/three-d/index.js +2 -0
  383. package/dist/charts/engine/three-d/labels.cjs +2 -0
  384. package/dist/charts/engine/three-d/labels.cjs.map +1 -0
  385. package/dist/charts/engine/three-d/labels.d.cts +23 -0
  386. package/dist/charts/engine/three-d/labels.d.ts +23 -0
  387. package/dist/charts/engine/three-d/labels.js +136 -0
  388. package/dist/charts/engine/three-d/labels.js.map +1 -0
  389. package/dist/charts/engine/three-d/math.cjs +2 -0
  390. package/dist/charts/engine/three-d/math.cjs.map +1 -0
  391. package/dist/charts/engine/three-d/math.d.cts +84 -0
  392. package/dist/charts/engine/three-d/math.d.ts +84 -0
  393. package/dist/charts/engine/three-d/math.js +150 -0
  394. package/dist/charts/engine/three-d/math.js.map +1 -0
  395. package/dist/charts/engine/three-d/model.cjs +2 -0
  396. package/dist/charts/engine/three-d/model.cjs.map +1 -0
  397. package/dist/charts/engine/three-d/model.d.cts +130 -0
  398. package/dist/charts/engine/three-d/model.d.ts +130 -0
  399. package/dist/charts/engine/three-d/model.js +277 -0
  400. package/dist/charts/engine/three-d/model.js.map +1 -0
  401. package/dist/charts/engine/three-d/overlay.cjs +2 -0
  402. package/dist/charts/engine/three-d/overlay.cjs.map +1 -0
  403. package/dist/charts/engine/three-d/overlay.d.cts +72 -0
  404. package/dist/charts/engine/three-d/overlay.d.ts +72 -0
  405. package/dist/charts/engine/three-d/overlay.js +197 -0
  406. package/dist/charts/engine/three-d/overlay.js.map +1 -0
  407. package/dist/charts/engine/three-d/pick.cjs +2 -0
  408. package/dist/charts/engine/three-d/pick.cjs.map +1 -0
  409. package/dist/charts/engine/three-d/pick.d.cts +52 -0
  410. package/dist/charts/engine/three-d/pick.d.ts +52 -0
  411. package/dist/charts/engine/three-d/pick.js +220 -0
  412. package/dist/charts/engine/three-d/pick.js.map +1 -0
  413. package/dist/charts/engine/three-d/render-types.cjs +2 -0
  414. package/dist/charts/engine/three-d/render-types.cjs.map +1 -0
  415. package/dist/charts/engine/three-d/render-types.d.cts +82 -0
  416. package/dist/charts/engine/three-d/render-types.d.ts +82 -0
  417. package/dist/charts/engine/three-d/render-types.js +13 -0
  418. package/dist/charts/engine/three-d/render-types.js.map +1 -0
  419. package/dist/charts/engine/three-d/shaders.cjs +276 -0
  420. package/dist/charts/engine/three-d/shaders.cjs.map +1 -0
  421. package/dist/charts/engine/three-d/shaders.d.cts +26 -0
  422. package/dist/charts/engine/three-d/shaders.d.ts +26 -0
  423. package/dist/charts/engine/three-d/shaders.js +191 -0
  424. package/dist/charts/engine/three-d/shaders.js.map +1 -0
  425. package/dist/charts/engine/three-d/sort.cjs +2 -0
  426. package/dist/charts/engine/three-d/sort.cjs.map +1 -0
  427. package/dist/charts/engine/three-d/sort.d.cts +18 -0
  428. package/dist/charts/engine/three-d/sort.d.ts +18 -0
  429. package/dist/charts/engine/three-d/sort.js +71 -0
  430. package/dist/charts/engine/three-d/sort.js.map +1 -0
  431. package/dist/charts/engine/three-d/types.d.cts +588 -0
  432. package/dist/charts/engine/three-d/types.d.ts +588 -0
  433. package/dist/charts/engine/three-d/webgl.cjs +2 -0
  434. package/dist/charts/engine/three-d/webgl.cjs.map +1 -0
  435. package/dist/charts/engine/three-d/webgl.d.cts +10 -0
  436. package/dist/charts/engine/three-d/webgl.d.ts +10 -0
  437. package/dist/charts/engine/three-d/webgl.js +130 -0
  438. package/dist/charts/engine/three-d/webgl.js.map +1 -0
  439. package/dist/charts/engine/three-d/webgpu.cjs +2 -0
  440. package/dist/charts/engine/three-d/webgpu.cjs.map +1 -0
  441. package/dist/charts/engine/three-d/webgpu.d.cts +5 -0
  442. package/dist/charts/engine/three-d/webgpu.d.ts +5 -0
  443. package/dist/charts/engine/three-d/webgpu.js +249 -0
  444. package/dist/charts/engine/three-d/webgpu.js.map +1 -0
  445. package/dist/charts/engine/time.cjs +1 -1
  446. package/dist/charts/engine/time.cjs.map +1 -1
  447. package/dist/charts/engine/time.d.cts +13 -4
  448. package/dist/charts/engine/time.d.ts +13 -4
  449. package/dist/charts/engine/time.js +156 -91
  450. package/dist/charts/engine/time.js.map +1 -1
  451. package/dist/charts/engine/trading/chart.cjs +2 -0
  452. package/dist/charts/engine/trading/chart.cjs.map +1 -0
  453. package/dist/charts/engine/trading/chart.d.cts +3 -0
  454. package/dist/charts/engine/trading/chart.d.ts +3 -0
  455. package/dist/charts/engine/trading/chart.js +1507 -0
  456. package/dist/charts/engine/trading/chart.js.map +1 -0
  457. package/dist/charts/engine/trading/drawings.cjs +2 -0
  458. package/dist/charts/engine/trading/drawings.cjs.map +1 -0
  459. package/dist/charts/engine/trading/drawings.d.cts +57 -0
  460. package/dist/charts/engine/trading/drawings.d.ts +57 -0
  461. package/dist/charts/engine/trading/drawings.js +160 -0
  462. package/dist/charts/engine/trading/drawings.js.map +1 -0
  463. package/dist/charts/engine/trading/format.cjs +2 -0
  464. package/dist/charts/engine/trading/format.cjs.map +1 -0
  465. package/dist/charts/engine/trading/format.d.cts +60 -0
  466. package/dist/charts/engine/trading/format.d.ts +60 -0
  467. package/dist/charts/engine/trading/format.js +131 -0
  468. package/dist/charts/engine/trading/format.js.map +1 -0
  469. package/dist/charts/engine/trading/geometry.cjs +2 -0
  470. package/dist/charts/engine/trading/geometry.cjs.map +1 -0
  471. package/dist/charts/engine/trading/geometry.d.cts +55 -0
  472. package/dist/charts/engine/trading/geometry.d.ts +55 -0
  473. package/dist/charts/engine/trading/geometry.js +131 -0
  474. package/dist/charts/engine/trading/geometry.js.map +1 -0
  475. package/dist/charts/engine/trading/index.cjs +1 -0
  476. package/dist/charts/engine/trading/index.d.cts +3 -0
  477. package/dist/charts/engine/trading/index.d.ts +3 -0
  478. package/dist/charts/engine/trading/index.js +3 -0
  479. package/dist/charts/engine/trading/indicators.cjs +2 -0
  480. package/dist/charts/engine/trading/indicators.cjs.map +1 -0
  481. package/dist/charts/engine/trading/indicators.d.cts +105 -0
  482. package/dist/charts/engine/trading/indicators.d.ts +105 -0
  483. package/dist/charts/engine/trading/indicators.js +268 -0
  484. package/dist/charts/engine/trading/indicators.js.map +1 -0
  485. package/dist/charts/engine/trading/labels.cjs +2 -0
  486. package/dist/charts/engine/trading/labels.cjs.map +1 -0
  487. package/dist/charts/engine/trading/labels.d.cts +7 -0
  488. package/dist/charts/engine/trading/labels.d.ts +7 -0
  489. package/dist/charts/engine/trading/labels.js +91 -0
  490. package/dist/charts/engine/trading/labels.js.map +1 -0
  491. package/dist/charts/engine/trading/scale.cjs +2 -0
  492. package/dist/charts/engine/trading/scale.cjs.map +1 -0
  493. package/dist/charts/engine/trading/scale.d.cts +46 -0
  494. package/dist/charts/engine/trading/scale.d.ts +46 -0
  495. package/dist/charts/engine/trading/scale.js +100 -0
  496. package/dist/charts/engine/trading/scale.js.map +1 -0
  497. package/dist/charts/engine/trading/store.cjs +2 -0
  498. package/dist/charts/engine/trading/store.cjs.map +1 -0
  499. package/dist/charts/engine/trading/store.d.cts +62 -0
  500. package/dist/charts/engine/trading/store.d.ts +62 -0
  501. package/dist/charts/engine/trading/store.js +129 -0
  502. package/dist/charts/engine/trading/store.js.map +1 -0
  503. package/dist/charts/engine/trading/studies.cjs +2 -0
  504. package/dist/charts/engine/trading/studies.cjs.map +1 -0
  505. package/dist/charts/engine/trading/studies.d.cts +52 -0
  506. package/dist/charts/engine/trading/studies.d.ts +52 -0
  507. package/dist/charts/engine/trading/studies.js +254 -0
  508. package/dist/charts/engine/trading/studies.js.map +1 -0
  509. package/dist/charts/engine/trading/types.d.cts +656 -0
  510. package/dist/charts/engine/trading/types.d.ts +656 -0
  511. package/dist/charts/engine/types.d.cts +227 -15
  512. package/dist/charts/engine/types.d.ts +227 -15
  513. package/dist/charts/index.cjs +1 -1
  514. package/dist/charts/index.d.cts +7 -2
  515. package/dist/charts/index.d.ts +7 -2
  516. package/dist/charts/index.js +22 -8
  517. package/dist/charts/react/Chart.cjs +1 -1
  518. package/dist/charts/react/Chart.cjs.map +1 -1
  519. package/dist/charts/react/Chart.d.cts +11 -4
  520. package/dist/charts/react/Chart.d.ts +11 -4
  521. package/dist/charts/react/Chart.js +70 -47
  522. package/dist/charts/react/Chart.js.map +1 -1
  523. package/dist/charts/react/charts.cjs +1 -1
  524. package/dist/charts/react/charts.cjs.map +1 -1
  525. package/dist/charts/react/charts.d.cts +48 -2
  526. package/dist/charts/react/charts.d.ts +48 -2
  527. package/dist/charts/react/charts.js +371 -76
  528. package/dist/charts/react/charts.js.map +1 -1
  529. package/dist/charts/react/orderbook.cjs +2 -0
  530. package/dist/charts/react/orderbook.cjs.map +1 -0
  531. package/dist/charts/react/orderbook.d.cts +142 -0
  532. package/dist/charts/react/orderbook.d.ts +142 -0
  533. package/dist/charts/react/orderbook.js +182 -0
  534. package/dist/charts/react/orderbook.js.map +1 -0
  535. package/dist/charts/react/shapes.cjs +2 -0
  536. package/dist/charts/react/shapes.cjs.map +1 -0
  537. package/dist/charts/react/shapes.d.cts +537 -0
  538. package/dist/charts/react/shapes.d.ts +537 -0
  539. package/dist/charts/react/shapes.js +429 -0
  540. package/dist/charts/react/shapes.js.map +1 -0
  541. package/dist/charts/react/three-d.cjs +2 -0
  542. package/dist/charts/react/three-d.cjs.map +1 -0
  543. package/dist/charts/react/three-d.d.cts +151 -0
  544. package/dist/charts/react/three-d.d.ts +151 -0
  545. package/dist/charts/react/three-d.js +154 -0
  546. package/dist/charts/react/three-d.js.map +1 -0
  547. package/dist/charts/react/trading.cjs +2 -0
  548. package/dist/charts/react/trading.cjs.map +1 -0
  549. package/dist/charts/react/trading.d.cts +93 -0
  550. package/dist/charts/react/trading.d.ts +93 -0
  551. package/dist/charts/react/trading.js +95 -0
  552. package/dist/charts/react/trading.js.map +1 -0
  553. package/dist/charts/react/types.d.cts +200 -7
  554. package/dist/charts/react/types.d.ts +200 -7
  555. package/dist/core/contracts.cjs +1 -1
  556. package/dist/core/contracts.cjs.map +1 -1
  557. package/dist/core/contracts.js +1 -1
  558. package/dist/core/contracts.js.map +1 -1
  559. package/dist/native/charts/src/canvas.cjs +1 -1
  560. package/dist/native/charts/src/canvas.js +9 -3
  561. package/dist/native/charts/src/engine/axis.cjs +1 -1
  562. package/dist/native/charts/src/engine/axis.cjs.map +1 -1
  563. package/dist/native/charts/src/engine/axis.js +6 -6
  564. package/dist/native/charts/src/engine/axis.js.map +1 -1
  565. package/dist/native/charts/src/engine/color.cjs +1 -1
  566. package/dist/native/charts/src/engine/color.cjs.map +1 -1
  567. package/dist/native/charts/src/engine/color.js +12 -3
  568. package/dist/native/charts/src/engine/color.js.map +1 -1
  569. package/dist/native/charts/src/engine/controller.cjs +2 -2
  570. package/dist/native/charts/src/engine/controller.cjs.map +1 -1
  571. package/dist/native/charts/src/engine/controller.js +418 -294
  572. package/dist/native/charts/src/engine/controller.js.map +1 -1
  573. package/dist/native/charts/src/engine/curve.cjs +2 -0
  574. package/dist/native/charts/src/engine/curve.cjs.map +1 -0
  575. package/dist/native/charts/src/engine/curve.js +56 -0
  576. package/dist/native/charts/src/engine/curve.js.map +1 -0
  577. package/dist/native/charts/src/engine/data.cjs +1 -1
  578. package/dist/native/charts/src/engine/data.cjs.map +1 -1
  579. package/dist/native/charts/src/engine/data.js +117 -43
  580. package/dist/native/charts/src/engine/data.js.map +1 -1
  581. package/dist/native/charts/src/engine/format.cjs +1 -1
  582. package/dist/native/charts/src/engine/format.cjs.map +1 -1
  583. package/dist/native/charts/src/engine/format.js +46 -21
  584. package/dist/native/charts/src/engine/format.js.map +1 -1
  585. package/dist/native/charts/src/engine/labels.cjs +2 -0
  586. package/dist/native/charts/src/engine/labels.cjs.map +1 -0
  587. package/dist/native/charts/src/engine/labels.js +74 -0
  588. package/dist/native/charts/src/engine/labels.js.map +1 -0
  589. package/dist/native/charts/src/engine/layout.cjs +1 -1
  590. package/dist/native/charts/src/engine/layout.cjs.map +1 -1
  591. package/dist/native/charts/src/engine/layout.js +53 -12
  592. package/dist/native/charts/src/engine/layout.js.map +1 -1
  593. package/dist/native/charts/src/engine/locale.cjs +2 -0
  594. package/dist/native/charts/src/engine/locale.cjs.map +1 -0
  595. package/dist/native/charts/src/engine/locale.js +60 -0
  596. package/dist/native/charts/src/engine/locale.js.map +1 -0
  597. package/dist/native/charts/src/engine/model.cjs +1 -1
  598. package/dist/native/charts/src/engine/model.cjs.map +1 -1
  599. package/dist/native/charts/src/engine/model.js +335 -111
  600. package/dist/native/charts/src/engine/model.js.map +1 -1
  601. package/dist/native/charts/src/engine/overlay.cjs +1 -1
  602. package/dist/native/charts/src/engine/overlay.cjs.map +1 -1
  603. package/dist/native/charts/src/engine/overlay.js +54 -31
  604. package/dist/native/charts/src/engine/overlay.js.map +1 -1
  605. package/dist/native/charts/src/engine/presets.cjs +2 -2
  606. package/dist/native/charts/src/engine/presets.cjs.map +1 -1
  607. package/dist/native/charts/src/engine/presets.js +456 -34
  608. package/dist/native/charts/src/engine/presets.js.map +1 -1
  609. package/dist/native/charts/src/engine/scale.cjs +1 -1
  610. package/dist/native/charts/src/engine/scale.cjs.map +1 -1
  611. package/dist/native/charts/src/engine/scale.js +1 -1
  612. package/dist/native/charts/src/engine/scale.js.map +1 -1
  613. package/dist/native/charts/src/engine/scene.cjs +1 -1
  614. package/dist/native/charts/src/engine/scene.cjs.map +1 -1
  615. package/dist/native/charts/src/engine/scene.js +369 -128
  616. package/dist/native/charts/src/engine/scene.js.map +1 -1
  617. package/dist/native/charts/src/engine/shapes/bullet.cjs +2 -0
  618. package/dist/native/charts/src/engine/shapes/bullet.cjs.map +1 -0
  619. package/dist/native/charts/src/engine/shapes/bullet.js +255 -0
  620. package/dist/native/charts/src/engine/shapes/bullet.js.map +1 -0
  621. package/dist/native/charts/src/engine/shapes/calendar.cjs +2 -0
  622. package/dist/native/charts/src/engine/shapes/calendar.cjs.map +1 -0
  623. package/dist/native/charts/src/engine/shapes/calendar.js +364 -0
  624. package/dist/native/charts/src/engine/shapes/calendar.js.map +1 -0
  625. package/dist/native/charts/src/engine/shapes/canvas.cjs +2 -0
  626. package/dist/native/charts/src/engine/shapes/canvas.cjs.map +1 -0
  627. package/dist/native/charts/src/engine/shapes/canvas.js +168 -0
  628. package/dist/native/charts/src/engine/shapes/canvas.js.map +1 -0
  629. package/dist/native/charts/src/engine/shapes/draw.cjs +2 -0
  630. package/dist/native/charts/src/engine/shapes/draw.cjs.map +1 -0
  631. package/dist/native/charts/src/engine/shapes/draw.js +165 -0
  632. package/dist/native/charts/src/engine/shapes/draw.js.map +1 -0
  633. package/dist/native/charts/src/engine/shapes/funnel.cjs +2 -0
  634. package/dist/native/charts/src/engine/shapes/funnel.cjs.map +1 -0
  635. package/dist/native/charts/src/engine/shapes/funnel.js +149 -0
  636. package/dist/native/charts/src/engine/shapes/funnel.js.map +1 -0
  637. package/dist/native/charts/src/engine/shapes/gauge.cjs +2 -0
  638. package/dist/native/charts/src/engine/shapes/gauge.cjs.map +1 -0
  639. package/dist/native/charts/src/engine/shapes/gauge.js +210 -0
  640. package/dist/native/charts/src/engine/shapes/gauge.js.map +1 -0
  641. package/dist/native/charts/src/engine/shapes/hit.cjs +2 -0
  642. package/dist/native/charts/src/engine/shapes/hit.cjs.map +1 -0
  643. package/dist/native/charts/src/engine/shapes/hit.js +106 -0
  644. package/dist/native/charts/src/engine/shapes/hit.js.map +1 -0
  645. package/dist/native/charts/src/engine/shapes/labels.cjs +2 -0
  646. package/dist/native/charts/src/engine/shapes/labels.cjs.map +1 -0
  647. package/dist/native/charts/src/engine/shapes/labels.js +146 -0
  648. package/dist/native/charts/src/engine/shapes/labels.js.map +1 -0
  649. package/dist/native/charts/src/engine/shapes/layout.cjs +3 -0
  650. package/dist/native/charts/src/engine/shapes/layout.cjs.map +1 -0
  651. package/dist/native/charts/src/engine/shapes/layout.js +331 -0
  652. package/dist/native/charts/src/engine/shapes/layout.js.map +1 -0
  653. package/dist/native/charts/src/engine/shapes/pie.cjs +2 -0
  654. package/dist/native/charts/src/engine/shapes/pie.cjs.map +1 -0
  655. package/dist/native/charts/src/engine/shapes/pie.js +302 -0
  656. package/dist/native/charts/src/engine/shapes/pie.js.map +1 -0
  657. package/dist/native/charts/src/engine/shapes/radar.cjs +2 -0
  658. package/dist/native/charts/src/engine/shapes/radar.cjs.map +1 -0
  659. package/dist/native/charts/src/engine/shapes/radar.js +198 -0
  660. package/dist/native/charts/src/engine/shapes/radar.js.map +1 -0
  661. package/dist/native/charts/src/engine/shapes/radialBar.cjs +2 -0
  662. package/dist/native/charts/src/engine/shapes/radialBar.cjs.map +1 -0
  663. package/dist/native/charts/src/engine/shapes/radialBar.js +155 -0
  664. package/dist/native/charts/src/engine/shapes/radialBar.js.map +1 -0
  665. package/dist/native/charts/src/engine/shapes/runtime.cjs +2 -0
  666. package/dist/native/charts/src/engine/shapes/runtime.cjs.map +1 -0
  667. package/dist/native/charts/src/engine/shapes/runtime.js +107 -0
  668. package/dist/native/charts/src/engine/shapes/runtime.js.map +1 -0
  669. package/dist/native/charts/src/engine/shapes/sankey.cjs +2 -0
  670. package/dist/native/charts/src/engine/shapes/sankey.cjs.map +1 -0
  671. package/dist/native/charts/src/engine/shapes/sankey.js +372 -0
  672. package/dist/native/charts/src/engine/shapes/sankey.js.map +1 -0
  673. package/dist/native/charts/src/engine/shapes/scene.cjs +2 -0
  674. package/dist/native/charts/src/engine/shapes/scene.cjs.map +1 -0
  675. package/dist/native/charts/src/engine/shapes/scene.js +125 -0
  676. package/dist/native/charts/src/engine/shapes/scene.js.map +1 -0
  677. package/dist/native/charts/src/engine/shapes/sunburst.cjs +2 -0
  678. package/dist/native/charts/src/engine/shapes/sunburst.cjs.map +1 -0
  679. package/dist/native/charts/src/engine/shapes/sunburst.js +261 -0
  680. package/dist/native/charts/src/engine/shapes/sunburst.js.map +1 -0
  681. package/dist/native/charts/src/engine/shapes/treemap.cjs +2 -0
  682. package/dist/native/charts/src/engine/shapes/treemap.cjs.map +1 -0
  683. package/dist/native/charts/src/engine/shapes/treemap.js +213 -0
  684. package/dist/native/charts/src/engine/shapes/treemap.js.map +1 -0
  685. package/dist/native/charts/src/engine/theme.cjs.map +1 -1
  686. package/dist/native/charts/src/engine/theme.js.map +1 -1
  687. package/dist/native/charts/src/engine/time.cjs +1 -1
  688. package/dist/native/charts/src/engine/time.cjs.map +1 -1
  689. package/dist/native/charts/src/engine/time.js +156 -91
  690. package/dist/native/charts/src/engine/time.js.map +1 -1
  691. package/dist/native/components/Chart/ChartBase.cjs +1 -1
  692. package/dist/native/components/Chart/ChartBase.cjs.map +1 -1
  693. package/dist/native/components/Chart/ChartBase.d.cts +1 -1
  694. package/dist/native/components/Chart/ChartBase.d.ts +1 -1
  695. package/dist/native/components/Chart/ChartBase.js +110 -107
  696. package/dist/native/components/Chart/ChartBase.js.map +1 -1
  697. package/dist/native/components/Chart/charts.cjs +1 -1
  698. package/dist/native/components/Chart/charts.cjs.map +1 -1
  699. package/dist/native/components/Chart/charts.d.cts +6 -1
  700. package/dist/native/components/Chart/charts.d.ts +6 -1
  701. package/dist/native/components/Chart/charts.js +53 -29
  702. package/dist/native/components/Chart/charts.js.map +1 -1
  703. package/dist/native/components/Chart/index.cjs +1 -1
  704. package/dist/native/components/Chart/index.d.cts +1 -1
  705. package/dist/native/components/Chart/index.d.ts +1 -1
  706. package/dist/native/components/Chart/index.js +2 -2
  707. package/dist/native/components/Chart/scene.cjs +1 -1
  708. package/dist/native/components/Chart/scene.cjs.map +1 -1
  709. package/dist/native/components/Chart/scene.js +244 -215
  710. package/dist/native/components/Chart/scene.js.map +1 -1
  711. package/dist/native/components/Chart/types.d.cts +26 -3
  712. package/dist/native/components/Chart/types.d.ts +26 -3
  713. package/dist/native/components/Charts/charts.cjs +2 -0
  714. package/dist/native/components/Charts/charts.cjs.map +1 -0
  715. package/dist/native/components/Charts/charts.d.cts +41 -0
  716. package/dist/native/components/Charts/charts.d.ts +41 -0
  717. package/dist/native/components/Charts/charts.js +338 -0
  718. package/dist/native/components/Charts/charts.js.map +1 -0
  719. package/dist/native/components/Charts/index.cjs +1 -0
  720. package/dist/native/components/Charts/index.d.cts +2 -0
  721. package/dist/native/components/Charts/index.d.ts +2 -0
  722. package/dist/native/components/Charts/index.js +2 -0
  723. package/dist/native/components/Charts/types.d.cts +144 -0
  724. package/dist/native/components/Charts/types.d.ts +144 -0
  725. package/dist/native/components/ShapeChart/ShapeChartBase.cjs +2 -0
  726. package/dist/native/components/ShapeChart/ShapeChartBase.cjs.map +1 -0
  727. package/dist/native/components/ShapeChart/ShapeChartBase.d.cts +24 -0
  728. package/dist/native/components/ShapeChart/ShapeChartBase.d.ts +24 -0
  729. package/dist/native/components/ShapeChart/ShapeChartBase.js +271 -0
  730. package/dist/native/components/ShapeChart/ShapeChartBase.js.map +1 -0
  731. package/dist/native/components/ShapeChart/charts.cjs +2 -0
  732. package/dist/native/components/ShapeChart/charts.cjs.map +1 -0
  733. package/dist/native/components/ShapeChart/charts.d.cts +38 -0
  734. package/dist/native/components/ShapeChart/charts.d.ts +38 -0
  735. package/dist/native/components/ShapeChart/charts.js +387 -0
  736. package/dist/native/components/ShapeChart/charts.js.map +1 -0
  737. package/dist/native/components/ShapeChart/draw.cjs +2 -0
  738. package/dist/native/components/ShapeChart/draw.cjs.map +1 -0
  739. package/dist/native/components/ShapeChart/draw.d.cts +4 -0
  740. package/dist/native/components/ShapeChart/draw.d.ts +4 -0
  741. package/dist/native/components/ShapeChart/draw.js +104 -0
  742. package/dist/native/components/ShapeChart/draw.js.map +1 -0
  743. package/dist/native/components/ShapeChart/geometry.cjs +2 -0
  744. package/dist/native/components/ShapeChart/geometry.cjs.map +1 -0
  745. package/dist/native/components/ShapeChart/geometry.d.cts +71 -0
  746. package/dist/native/components/ShapeChart/geometry.d.ts +71 -0
  747. package/dist/native/components/ShapeChart/geometry.js +602 -0
  748. package/dist/native/components/ShapeChart/geometry.js.map +1 -0
  749. package/dist/native/components/ShapeChart/index.cjs +1 -0
  750. package/dist/native/components/ShapeChart/index.d.cts +2 -0
  751. package/dist/native/components/ShapeChart/index.d.ts +2 -0
  752. package/dist/native/components/ShapeChart/index.js +2 -0
  753. package/dist/native/components/ShapeChart/recorder.cjs +2 -0
  754. package/dist/native/components/ShapeChart/recorder.cjs.map +1 -0
  755. package/dist/native/components/ShapeChart/recorder.d.cts +106 -0
  756. package/dist/native/components/ShapeChart/recorder.d.ts +106 -0
  757. package/dist/native/components/ShapeChart/recorder.js +574 -0
  758. package/dist/native/components/ShapeChart/recorder.js.map +1 -0
  759. package/dist/native/components/ShapeChart/types.d.cts +509 -0
  760. package/dist/native/components/ShapeChart/types.d.ts +509 -0
  761. package/dist/native/index.cjs +1 -1
  762. package/dist/native/index.d.cts +2 -0
  763. package/dist/native/index.d.ts +2 -0
  764. package/dist/native/index.js +14 -10
  765. package/dist/native/manifest.d.cts +6 -4
  766. package/dist/native/manifest.d.ts +6 -4
  767. package/dist/native/source/components/Chart/ChartBase.tsx +8 -1
  768. package/dist/native/source/components/Chart/charts.tsx +42 -6
  769. package/dist/native/source/components/Chart/index.ts +1 -0
  770. package/dist/native/source/components/Chart/scene.tsx +204 -100
  771. package/dist/native/source/components/Chart/types.ts +31 -1
  772. package/dist/native/source/components/Charts/charts.tsx +493 -0
  773. package/dist/native/source/components/Charts/index.ts +14 -0
  774. package/dist/native/source/components/Charts/types.ts +207 -0
  775. package/dist/native/source/components/ShapeChart/ShapeChartBase.tsx +484 -0
  776. package/dist/native/source/components/ShapeChart/charts.tsx +605 -0
  777. package/dist/native/source/components/ShapeChart/draw.tsx +170 -0
  778. package/dist/native/source/components/ShapeChart/geometry.ts +1185 -0
  779. package/dist/native/source/components/ShapeChart/index.ts +15 -0
  780. package/dist/native/source/components/ShapeChart/recorder.ts +830 -0
  781. package/dist/native/source/components/ShapeChart/types.ts +564 -0
  782. package/dist/native/source/index.ts +2 -0
  783. package/dist/native/source/manifest.ts +30 -4
  784. package/dist/taro/charts.d.ts +209 -4
  785. package/dist/taro/index.d.ts +1 -0
  786. package/dist/taro/index.js +8032 -1891
  787. package/dist/taro/manifest.d.ts +1 -0
  788. package/dist/taro/shape-charts.d.ts +537 -0
  789. package/dist/uni/AreaChart.vue +68 -0
  790. package/dist/uni/AreaChart.vue.d.ts +120 -0
  791. package/dist/uni/Badge.vue.d.ts +1 -1
  792. package/dist/uni/BoxPlotChart.vue +66 -0
  793. package/dist/uni/BoxPlotChart.vue.d.ts +102 -0
  794. package/dist/uni/BubbleChart.vue +68 -0
  795. package/dist/uni/BubbleChart.vue.d.ts +106 -0
  796. package/dist/uni/BulletChart.vue +86 -0
  797. package/dist/uni/BulletChart.vue.d.ts +110 -0
  798. package/dist/uni/CalendarHeatmap.vue +92 -0
  799. package/dist/uni/CalendarHeatmap.vue.d.ts +129 -0
  800. package/dist/uni/CandlestickChart.vue +66 -0
  801. package/dist/uni/CandlestickChart.vue.d.ts +100 -0
  802. package/dist/uni/DonutChart.vue +72 -0
  803. package/dist/uni/DonutChart.vue.d.ts +114 -0
  804. package/dist/uni/FunnelChart.vue +67 -0
  805. package/dist/uni/FunnelChart.vue.d.ts +104 -0
  806. package/dist/uni/GanttChart.vue +67 -0
  807. package/dist/uni/GanttChart.vue.d.ts +123 -0
  808. package/dist/uni/GaugeChart.vue +77 -0
  809. package/dist/uni/GaugeChart.vue.d.ts +123 -0
  810. package/dist/uni/HeatmapChart.vue +66 -0
  811. package/dist/uni/HeatmapChart.vue.d.ts +114 -0
  812. package/dist/uni/HistogramChart.vue +66 -0
  813. package/dist/uni/HistogramChart.vue.d.ts +121 -0
  814. package/dist/uni/HorizontalBarChart.vue +68 -0
  815. package/dist/uni/HorizontalBarChart.vue.d.ts +127 -0
  816. package/dist/uni/Input.vue.d.ts +1 -1
  817. package/dist/uni/MixedChart.vue +68 -0
  818. package/dist/uni/MixedChart.vue.d.ts +106 -0
  819. package/dist/uni/NumberInput.vue.d.ts +1 -1
  820. package/dist/uni/PieChart.vue +72 -0
  821. package/dist/uni/PieChart.vue.d.ts +114 -0
  822. package/dist/uni/RadarChart.vue +67 -0
  823. package/dist/uni/RadarChart.vue.d.ts +110 -0
  824. package/dist/uni/RadialBarChart.vue +90 -0
  825. package/dist/uni/RadialBarChart.vue.d.ts +132 -0
  826. package/dist/uni/RangeAreaChart.vue +68 -0
  827. package/dist/uni/RangeAreaChart.vue.d.ts +102 -0
  828. package/dist/uni/ResponsiveGrid.vue.d.ts +1 -1
  829. package/dist/uni/SankeyChart.vue +88 -0
  830. package/dist/uni/SankeyChart.vue.d.ts +121 -0
  831. package/dist/uni/ShapeChart.vue +73 -0
  832. package/dist/uni/ShapeChart.vue.d.ts +54 -0
  833. package/dist/uni/Sparkline.vue +58 -0
  834. package/dist/uni/Sparkline.vue.d.ts +77 -0
  835. package/dist/uni/SunburstChart.vue +90 -0
  836. package/dist/uni/SunburstChart.vue.d.ts +114 -0
  837. package/dist/uni/Textarea.vue.d.ts +1 -1
  838. package/dist/uni/TimePicker.vue.d.ts +1 -1
  839. package/dist/uni/TreemapChart.vue +65 -0
  840. package/dist/uni/TreemapChart.vue.d.ts +100 -0
  841. package/dist/uni/WaterfallChart.vue +66 -0
  842. package/dist/uni/WaterfallChart.vue.d.ts +125 -0
  843. package/dist/uni/chart-types.d.ts +216 -2
  844. package/dist/uni/chart-types.js +174 -0
  845. package/dist/uni/charts-canvas.js +10 -3
  846. package/dist/uni/index.d.ts +26 -1
  847. package/dist/uni/index.js +26 -1
  848. package/dist/uni/manifest.d.ts +272 -0
  849. package/dist/uni/manifest.js +387 -0
  850. package/dist/uni/named-chart-options.d.ts +88 -0
  851. package/dist/uni/named-chart-options.js +156 -0
  852. package/dist/uni/shape-chart-canvas.d.ts +51 -0
  853. package/dist/uni/shape-chart-canvas.js +342 -0
  854. package/dist/uni/shape-chart-types.d.ts +381 -0
  855. package/dist/uni/shape-chart-types.js +261 -0
  856. package/dist/vue/components/Chart/AreaChart.vue.d.ts +124 -0
  857. package/dist/vue/components/Chart/AreaChart.vue.js +7 -0
  858. package/dist/vue/components/Chart/AreaChart.vue.js.map +1 -0
  859. package/dist/vue/components/Chart/AreaChart.vue_vue_type_script_setup_true_lang.js +49 -0
  860. package/dist/vue/components/Chart/AreaChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  861. package/dist/vue/components/Chart/Bar3DChart.vue.d.ts +132 -0
  862. package/dist/vue/components/Chart/Bar3DChart.vue.js +7 -0
  863. package/dist/vue/components/Chart/Bar3DChart.vue.js.map +1 -0
  864. package/dist/vue/components/Chart/Bar3DChart.vue_vue_type_script_setup_true_lang.js +55 -0
  865. package/dist/vue/components/Chart/Bar3DChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  866. package/dist/vue/components/Chart/BarChart.vue.d.ts +123 -0
  867. package/dist/vue/components/Chart/BarChart.vue.js +7 -0
  868. package/dist/vue/components/Chart/BarChart.vue.js.map +1 -0
  869. package/dist/vue/components/Chart/BarChart.vue_vue_type_script_setup_true_lang.js +53 -0
  870. package/dist/vue/components/Chart/BarChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  871. package/dist/vue/components/Chart/BoxPlotChart.vue.d.ts +112 -0
  872. package/dist/vue/components/Chart/BoxPlotChart.vue.js +7 -0
  873. package/dist/vue/components/Chart/BoxPlotChart.vue.js.map +1 -0
  874. package/dist/vue/components/Chart/BoxPlotChart.vue_vue_type_script_setup_true_lang.js +57 -0
  875. package/dist/vue/components/Chart/BoxPlotChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  876. package/dist/vue/components/Chart/BubbleChart.vue.d.ts +106 -0
  877. package/dist/vue/components/Chart/BubbleChart.vue.js +7 -0
  878. package/dist/vue/components/Chart/BubbleChart.vue.js.map +1 -0
  879. package/dist/vue/components/Chart/BubbleChart.vue_vue_type_script_setup_true_lang.js +52 -0
  880. package/dist/vue/components/Chart/BubbleChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  881. package/dist/vue/components/Chart/BulletChart.vue.d.ts +117 -0
  882. package/dist/vue/components/Chart/BulletChart.vue.js +7 -0
  883. package/dist/vue/components/Chart/BulletChart.vue.js.map +1 -0
  884. package/dist/vue/components/Chart/BulletChart.vue_vue_type_script_setup_true_lang.js +64 -0
  885. package/dist/vue/components/Chart/BulletChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  886. package/dist/vue/components/Chart/CalendarHeatmap.vue.d.ts +144 -0
  887. package/dist/vue/components/Chart/CalendarHeatmap.vue.js +7 -0
  888. package/dist/vue/components/Chart/CalendarHeatmap.vue.js.map +1 -0
  889. package/dist/vue/components/Chart/CalendarHeatmap.vue_vue_type_script_setup_true_lang.js +77 -0
  890. package/dist/vue/components/Chart/CalendarHeatmap.vue_vue_type_script_setup_true_lang.js.map +1 -0
  891. package/dist/vue/components/Chart/CandlestickChart.vue.d.ts +94 -0
  892. package/dist/vue/components/Chart/CandlestickChart.vue.js +7 -0
  893. package/dist/vue/components/Chart/CandlestickChart.vue.js.map +1 -0
  894. package/dist/vue/components/Chart/CandlestickChart.vue_vue_type_script_setup_true_lang.js +44 -0
  895. package/dist/vue/components/Chart/CandlestickChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  896. package/dist/vue/components/Chart/Chart.vue.d.ts +103 -0
  897. package/dist/vue/components/Chart/Chart.vue.js +7 -0
  898. package/dist/vue/components/Chart/Chart.vue.js.map +1 -0
  899. package/dist/vue/components/Chart/Chart.vue_vue_type_script_setup_true_lang.js +47 -0
  900. package/dist/vue/components/Chart/Chart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  901. package/dist/vue/components/Chart/DepthChart.vue.d.ts +139 -0
  902. package/dist/vue/components/Chart/DepthChart.vue.js +7 -0
  903. package/dist/vue/components/Chart/DepthChart.vue.js.map +1 -0
  904. package/dist/vue/components/Chart/DepthChart.vue_vue_type_script_setup_true_lang.js +42 -0
  905. package/dist/vue/components/Chart/DepthChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  906. package/dist/vue/components/Chart/DonutChart.vue.d.ts +104 -0
  907. package/dist/vue/components/Chart/DonutChart.vue.js +7 -0
  908. package/dist/vue/components/Chart/DonutChart.vue.js.map +1 -0
  909. package/dist/vue/components/Chart/DonutChart.vue_vue_type_script_setup_true_lang.js +53 -0
  910. package/dist/vue/components/Chart/DonutChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  911. package/dist/vue/components/Chart/FunnelChart.vue.d.ts +105 -0
  912. package/dist/vue/components/Chart/FunnelChart.vue.js +7 -0
  913. package/dist/vue/components/Chart/FunnelChart.vue.js.map +1 -0
  914. package/dist/vue/components/Chart/FunnelChart.vue_vue_type_script_setup_true_lang.js +58 -0
  915. package/dist/vue/components/Chart/FunnelChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  916. package/dist/vue/components/Chart/GanttChart.vue.d.ts +132 -0
  917. package/dist/vue/components/Chart/GanttChart.vue.js +7 -0
  918. package/dist/vue/components/Chart/GanttChart.vue.js.map +1 -0
  919. package/dist/vue/components/Chart/GanttChart.vue_vue_type_script_setup_true_lang.js +98 -0
  920. package/dist/vue/components/Chart/GanttChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  921. package/dist/vue/components/Chart/GaugeChart.vue.d.ts +132 -0
  922. package/dist/vue/components/Chart/GaugeChart.vue.js +7 -0
  923. package/dist/vue/components/Chart/GaugeChart.vue.js.map +1 -0
  924. package/dist/vue/components/Chart/GaugeChart.vue_vue_type_script_setup_true_lang.js +71 -0
  925. package/dist/vue/components/Chart/GaugeChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  926. package/dist/vue/components/Chart/HeatmapChart.vue.d.ts +125 -0
  927. package/dist/vue/components/Chart/HeatmapChart.vue.js +7 -0
  928. package/dist/vue/components/Chart/HeatmapChart.vue.js.map +1 -0
  929. package/dist/vue/components/Chart/HeatmapChart.vue_vue_type_script_setup_true_lang.js +65 -0
  930. package/dist/vue/components/Chart/HeatmapChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  931. package/dist/vue/components/Chart/HistogramChart.vue.d.ts +132 -0
  932. package/dist/vue/components/Chart/HistogramChart.vue.js +7 -0
  933. package/dist/vue/components/Chart/HistogramChart.vue.js.map +1 -0
  934. package/dist/vue/components/Chart/HistogramChart.vue_vue_type_script_setup_true_lang.js +66 -0
  935. package/dist/vue/components/Chart/HistogramChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  936. package/dist/vue/components/Chart/HorizontalBarChart.vue.d.ts +121 -0
  937. package/dist/vue/components/Chart/HorizontalBarChart.vue.js +7 -0
  938. package/dist/vue/components/Chart/HorizontalBarChart.vue.js.map +1 -0
  939. package/dist/vue/components/Chart/HorizontalBarChart.vue_vue_type_script_setup_true_lang.js +55 -0
  940. package/dist/vue/components/Chart/HorizontalBarChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  941. package/dist/vue/components/Chart/Line3DChart.vue.d.ts +121 -0
  942. package/dist/vue/components/Chart/Line3DChart.vue.js +7 -0
  943. package/dist/vue/components/Chart/Line3DChart.vue.js.map +1 -0
  944. package/dist/vue/components/Chart/Line3DChart.vue_vue_type_script_setup_true_lang.js +47 -0
  945. package/dist/vue/components/Chart/Line3DChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  946. package/dist/vue/components/Chart/LineChart.vue.d.ts +125 -0
  947. package/dist/vue/components/Chart/LineChart.vue.js +7 -0
  948. package/dist/vue/components/Chart/LineChart.vue.js.map +1 -0
  949. package/dist/vue/components/Chart/LineChart.vue_vue_type_script_setup_true_lang.js +50 -0
  950. package/dist/vue/components/Chart/LineChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  951. package/dist/vue/components/Chart/MixedChart.vue.d.ts +103 -0
  952. package/dist/vue/components/Chart/MixedChart.vue.js +7 -0
  953. package/dist/vue/components/Chart/MixedChart.vue.js.map +1 -0
  954. package/dist/vue/components/Chart/MixedChart.vue_vue_type_script_setup_true_lang.js +47 -0
  955. package/dist/vue/components/Chart/MixedChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  956. package/dist/vue/components/Chart/OrderBook.vue.d.ts +125 -0
  957. package/dist/vue/components/Chart/OrderBook.vue.js +7 -0
  958. package/dist/vue/components/Chart/OrderBook.vue.js.map +1 -0
  959. package/dist/vue/components/Chart/OrderBook.vue_vue_type_script_setup_true_lang.js +38 -0
  960. package/dist/vue/components/Chart/OrderBook.vue_vue_type_script_setup_true_lang.js.map +1 -0
  961. package/dist/vue/components/Chart/OrderBookHeatmap.vue.d.ts +128 -0
  962. package/dist/vue/components/Chart/OrderBookHeatmap.vue.js +7 -0
  963. package/dist/vue/components/Chart/OrderBookHeatmap.vue.js.map +1 -0
  964. package/dist/vue/components/Chart/OrderBookHeatmap.vue_vue_type_script_setup_true_lang.js +46 -0
  965. package/dist/vue/components/Chart/OrderBookHeatmap.vue_vue_type_script_setup_true_lang.js.map +1 -0
  966. package/dist/vue/components/Chart/PieChart.vue.d.ts +104 -0
  967. package/dist/vue/components/Chart/PieChart.vue.js +7 -0
  968. package/dist/vue/components/Chart/PieChart.vue.js.map +1 -0
  969. package/dist/vue/components/Chart/PieChart.vue_vue_type_script_setup_true_lang.js +53 -0
  970. package/dist/vue/components/Chart/PieChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  971. package/dist/vue/components/Chart/QuadrantChart.vue.d.ts +186 -0
  972. package/dist/vue/components/Chart/QuadrantChart.vue.js +7 -0
  973. package/dist/vue/components/Chart/QuadrantChart.vue.js.map +1 -0
  974. package/dist/vue/components/Chart/QuadrantChart.vue_vue_type_script_setup_true_lang.js +107 -0
  975. package/dist/vue/components/Chart/QuadrantChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  976. package/dist/vue/components/Chart/RadarChart.vue.d.ts +111 -0
  977. package/dist/vue/components/Chart/RadarChart.vue.js +7 -0
  978. package/dist/vue/components/Chart/RadarChart.vue.js.map +1 -0
  979. package/dist/vue/components/Chart/RadarChart.vue_vue_type_script_setup_true_lang.js +61 -0
  980. package/dist/vue/components/Chart/RadarChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  981. package/dist/vue/components/Chart/RadialBarChart.vue.d.ts +147 -0
  982. package/dist/vue/components/Chart/RadialBarChart.vue.js +7 -0
  983. package/dist/vue/components/Chart/RadialBarChart.vue.js.map +1 -0
  984. package/dist/vue/components/Chart/RadialBarChart.vue_vue_type_script_setup_true_lang.js +78 -0
  985. package/dist/vue/components/Chart/RadialBarChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  986. package/dist/vue/components/Chart/RangeAreaChart.vue.d.ts +106 -0
  987. package/dist/vue/components/Chart/RangeAreaChart.vue.js +7 -0
  988. package/dist/vue/components/Chart/RangeAreaChart.vue.js.map +1 -0
  989. package/dist/vue/components/Chart/RangeAreaChart.vue_vue_type_script_setup_true_lang.js +51 -0
  990. package/dist/vue/components/Chart/RangeAreaChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  991. package/dist/vue/components/Chart/SankeyChart.vue.d.ts +132 -0
  992. package/dist/vue/components/Chart/SankeyChart.vue.js +7 -0
  993. package/dist/vue/components/Chart/SankeyChart.vue.js.map +1 -0
  994. package/dist/vue/components/Chart/SankeyChart.vue_vue_type_script_setup_true_lang.js +71 -0
  995. package/dist/vue/components/Chart/SankeyChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  996. package/dist/vue/components/Chart/Scatter3DChart.vue.d.ts +121 -0
  997. package/dist/vue/components/Chart/Scatter3DChart.vue.js +7 -0
  998. package/dist/vue/components/Chart/Scatter3DChart.vue.js.map +1 -0
  999. package/dist/vue/components/Chart/Scatter3DChart.vue_vue_type_script_setup_true_lang.js +47 -0
  1000. package/dist/vue/components/Chart/Scatter3DChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1001. package/dist/vue/components/Chart/ScatterChart.vue.d.ts +94 -0
  1002. package/dist/vue/components/Chart/ScatterChart.vue.js +7 -0
  1003. package/dist/vue/components/Chart/ScatterChart.vue.js.map +1 -0
  1004. package/dist/vue/components/Chart/ScatterChart.vue_vue_type_script_setup_true_lang.js +44 -0
  1005. package/dist/vue/components/Chart/ScatterChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1006. package/dist/vue/components/Chart/ShapeChart.vue.d.ts +39 -0
  1007. package/dist/vue/components/Chart/ShapeChart.vue.js +7 -0
  1008. package/dist/vue/components/Chart/ShapeChart.vue.js.map +1 -0
  1009. package/dist/vue/components/Chart/ShapeChart.vue_vue_type_script_setup_true_lang.js +43 -0
  1010. package/dist/vue/components/Chart/ShapeChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1011. package/dist/vue/components/Chart/Sparkline.vue.d.ts +90 -0
  1012. package/dist/vue/components/Chart/Sparkline.vue.js +7 -0
  1013. package/dist/vue/components/Chart/Sparkline.vue.js.map +1 -0
  1014. package/dist/vue/components/Chart/Sparkline.vue_vue_type_script_setup_true_lang.js +66 -0
  1015. package/dist/vue/components/Chart/Sparkline.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1016. package/dist/vue/components/Chart/SunburstChart.vue.d.ts +123 -0
  1017. package/dist/vue/components/Chart/SunburstChart.vue.js +7 -0
  1018. package/dist/vue/components/Chart/SunburstChart.vue.js.map +1 -0
  1019. package/dist/vue/components/Chart/SunburstChart.vue_vue_type_script_setup_true_lang.js +68 -0
  1020. package/dist/vue/components/Chart/SunburstChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1021. package/dist/vue/components/Chart/Surface3DChart.vue.d.ts +143 -0
  1022. package/dist/vue/components/Chart/Surface3DChart.vue.js +7 -0
  1023. package/dist/vue/components/Chart/Surface3DChart.vue.js.map +1 -0
  1024. package/dist/vue/components/Chart/Surface3DChart.vue_vue_type_script_setup_true_lang.js +60 -0
  1025. package/dist/vue/components/Chart/Surface3DChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1026. package/dist/vue/components/Chart/TimeAndSales.vue.d.ts +114 -0
  1027. package/dist/vue/components/Chart/TimeAndSales.vue.js +7 -0
  1028. package/dist/vue/components/Chart/TimeAndSales.vue.js.map +1 -0
  1029. package/dist/vue/components/Chart/TimeAndSales.vue_vue_type_script_setup_true_lang.js +46 -0
  1030. package/dist/vue/components/Chart/TimeAndSales.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1031. package/dist/vue/components/Chart/TradingChart.vue.d.ts +160 -0
  1032. package/dist/vue/components/Chart/TradingChart.vue.js +7 -0
  1033. package/dist/vue/components/Chart/TradingChart.vue.js.map +1 -0
  1034. package/dist/vue/components/Chart/TradingChart.vue_vue_type_script_setup_true_lang.js +70 -0
  1035. package/dist/vue/components/Chart/TradingChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1036. package/dist/vue/components/Chart/TreemapChart.vue.d.ts +97 -0
  1037. package/dist/vue/components/Chart/TreemapChart.vue.js +7 -0
  1038. package/dist/vue/components/Chart/TreemapChart.vue.js.map +1 -0
  1039. package/dist/vue/components/Chart/TreemapChart.vue_vue_type_script_setup_true_lang.js +54 -0
  1040. package/dist/vue/components/Chart/TreemapChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1041. package/dist/vue/components/Chart/WaterfallChart.vue.d.ts +132 -0
  1042. package/dist/vue/components/Chart/WaterfallChart.vue.js +7 -0
  1043. package/dist/vue/components/Chart/WaterfallChart.vue.js.map +1 -0
  1044. package/dist/vue/components/Chart/WaterfallChart.vue_vue_type_script_setup_true_lang.js +68 -0
  1045. package/dist/vue/components/Chart/WaterfallChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1046. package/dist/vue/components/Chart/cartesian.d.ts +47 -0
  1047. package/dist/vue/components/Chart/cartesian.js +56 -0
  1048. package/dist/vue/components/Chart/cartesian.js.map +1 -0
  1049. package/dist/vue/components/Chart/engine.d.ts +35 -0
  1050. package/dist/vue/components/Chart/engine.js +35 -0
  1051. package/dist/vue/components/Chart/engine.js.map +1 -0
  1052. package/dist/vue/components/Chart/index.d.ts +41 -0
  1053. package/dist/vue/components/Chart/index.js +40 -0
  1054. package/dist/vue/components/Chart/orderbook.d.ts +359 -0
  1055. package/dist/vue/components/Chart/orderbook.js +126 -0
  1056. package/dist/vue/components/Chart/orderbook.js.map +1 -0
  1057. package/dist/vue/components/Chart/props.d.ts +188 -0
  1058. package/dist/vue/components/Chart/props.js +92 -0
  1059. package/dist/vue/components/Chart/props.js.map +1 -0
  1060. package/dist/vue/components/Chart/shape.d.ts +41 -0
  1061. package/dist/vue/components/Chart/shape.js +42 -0
  1062. package/dist/vue/components/Chart/shape.js.map +1 -0
  1063. package/dist/vue/components/Chart/three-d.d.ts +106 -0
  1064. package/dist/vue/components/Chart/three-d.js +88 -0
  1065. package/dist/vue/components/Chart/three-d.js.map +1 -0
  1066. package/dist/vue/components/Chart/trading.d.ts +105 -0
  1067. package/dist/vue/components/Chart/trading.js +55 -0
  1068. package/dist/vue/components/Chart/trading.js.map +1 -0
  1069. package/dist/vue/components/Chart/types.d.ts +137 -0
  1070. package/dist/vue/global.d.ts +38 -0
  1071. package/dist/vue/groups/charts.d.ts +1 -0
  1072. package/dist/vue/groups/charts.js +87 -0
  1073. package/dist/vue/groups/charts.js.map +1 -0
  1074. package/dist/vue/index.d.ts +1 -0
  1075. package/dist/vue/index.js +63 -23
  1076. package/dist/vue/plugin.js +12 -10
  1077. package/dist/vue/plugin.js.map +1 -1
  1078. package/dist/weapp/area-chart/index.js +1 -0
  1079. package/dist/weapp/area-chart/index.json +1 -0
  1080. package/dist/weapp/area-chart/index.wxml +1 -0
  1081. package/dist/weapp/area-chart/index.wxss +1 -0
  1082. package/dist/weapp/box-plot-chart/index.js +1 -0
  1083. package/dist/weapp/box-plot-chart/index.json +1 -0
  1084. package/dist/weapp/box-plot-chart/index.wxml +1 -0
  1085. package/dist/weapp/box-plot-chart/index.wxss +1 -0
  1086. package/dist/weapp/bubble-chart/index.js +1 -0
  1087. package/dist/weapp/bubble-chart/index.json +1 -0
  1088. package/dist/weapp/bubble-chart/index.wxml +1 -0
  1089. package/dist/weapp/bubble-chart/index.wxss +1 -0
  1090. package/dist/weapp/bullet-chart/index.js +1 -0
  1091. package/dist/weapp/bullet-chart/index.json +1 -0
  1092. package/dist/weapp/bullet-chart/index.wxml +1 -0
  1093. package/dist/weapp/bullet-chart/index.wxss +1 -0
  1094. package/dist/weapp/calendar-heatmap/index.js +1 -0
  1095. package/dist/weapp/calendar-heatmap/index.json +1 -0
  1096. package/dist/weapp/calendar-heatmap/index.wxml +1 -0
  1097. package/dist/weapp/calendar-heatmap/index.wxss +1 -0
  1098. package/dist/weapp/candlestick-chart/index.js +1 -0
  1099. package/dist/weapp/candlestick-chart/index.json +1 -0
  1100. package/dist/weapp/candlestick-chart/index.wxml +1 -0
  1101. package/dist/weapp/candlestick-chart/index.wxss +1 -0
  1102. package/dist/weapp/charts/canvas.js +11436 -0
  1103. package/dist/weapp/charts/core.d.ts +2 -0
  1104. package/dist/weapp/charts/core.js +41 -0
  1105. package/dist/weapp/controls.js +1428 -3732
  1106. package/dist/weapp/donut-chart/index.js +1 -0
  1107. package/dist/weapp/donut-chart/index.json +1 -0
  1108. package/dist/weapp/donut-chart/index.wxml +1 -0
  1109. package/dist/weapp/donut-chart/index.wxss +1 -0
  1110. package/dist/weapp/funnel-chart/index.js +1 -0
  1111. package/dist/weapp/funnel-chart/index.json +1 -0
  1112. package/dist/weapp/funnel-chart/index.wxml +1 -0
  1113. package/dist/weapp/funnel-chart/index.wxss +1 -0
  1114. package/dist/weapp/gantt-chart/index.js +1 -0
  1115. package/dist/weapp/gantt-chart/index.json +1 -0
  1116. package/dist/weapp/gantt-chart/index.wxml +1 -0
  1117. package/dist/weapp/gantt-chart/index.wxss +1 -0
  1118. package/dist/weapp/gauge-chart/index.js +1 -0
  1119. package/dist/weapp/gauge-chart/index.json +1 -0
  1120. package/dist/weapp/gauge-chart/index.wxml +1 -0
  1121. package/dist/weapp/gauge-chart/index.wxss +1 -0
  1122. package/dist/weapp/heatmap-chart/index.js +1 -0
  1123. package/dist/weapp/heatmap-chart/index.json +1 -0
  1124. package/dist/weapp/heatmap-chart/index.wxml +1 -0
  1125. package/dist/weapp/heatmap-chart/index.wxss +1 -0
  1126. package/dist/weapp/histogram-chart/index.js +1 -0
  1127. package/dist/weapp/histogram-chart/index.json +1 -0
  1128. package/dist/weapp/histogram-chart/index.wxml +1 -0
  1129. package/dist/weapp/histogram-chart/index.wxss +1 -0
  1130. package/dist/weapp/horizontal-bar-chart/index.js +1 -0
  1131. package/dist/weapp/horizontal-bar-chart/index.json +1 -0
  1132. package/dist/weapp/horizontal-bar-chart/index.wxml +1 -0
  1133. package/dist/weapp/horizontal-bar-chart/index.wxss +1 -0
  1134. package/dist/weapp/mixed-chart/index.js +1 -0
  1135. package/dist/weapp/mixed-chart/index.json +1 -0
  1136. package/dist/weapp/mixed-chart/index.wxml +1 -0
  1137. package/dist/weapp/mixed-chart/index.wxss +1 -0
  1138. package/dist/weapp/pie-chart/index.js +1 -0
  1139. package/dist/weapp/pie-chart/index.json +1 -0
  1140. package/dist/weapp/pie-chart/index.wxml +1 -0
  1141. package/dist/weapp/pie-chart/index.wxss +1 -0
  1142. package/dist/weapp/radar-chart/index.js +1 -0
  1143. package/dist/weapp/radar-chart/index.json +1 -0
  1144. package/dist/weapp/radar-chart/index.wxml +1 -0
  1145. package/dist/weapp/radar-chart/index.wxss +1 -0
  1146. package/dist/weapp/radial-bar-chart/index.js +1 -0
  1147. package/dist/weapp/radial-bar-chart/index.json +1 -0
  1148. package/dist/weapp/radial-bar-chart/index.wxml +1 -0
  1149. package/dist/weapp/radial-bar-chart/index.wxss +1 -0
  1150. package/dist/weapp/range-area-chart/index.js +1 -0
  1151. package/dist/weapp/range-area-chart/index.json +1 -0
  1152. package/dist/weapp/range-area-chart/index.wxml +1 -0
  1153. package/dist/weapp/range-area-chart/index.wxss +1 -0
  1154. package/dist/weapp/sankey-chart/index.js +1 -0
  1155. package/dist/weapp/sankey-chart/index.json +1 -0
  1156. package/dist/weapp/sankey-chart/index.wxml +1 -0
  1157. package/dist/weapp/sankey-chart/index.wxss +1 -0
  1158. package/dist/weapp/shape-chart/index.js +1 -0
  1159. package/dist/weapp/shape-chart/index.json +1 -0
  1160. package/dist/weapp/shape-chart/index.wxml +1 -0
  1161. package/dist/weapp/shape-chart/index.wxss +1 -0
  1162. package/dist/weapp/sparkline/index.js +1 -0
  1163. package/dist/weapp/sparkline/index.json +1 -0
  1164. package/dist/weapp/sparkline/index.wxml +1 -0
  1165. package/dist/weapp/sparkline/index.wxss +1 -0
  1166. package/dist/weapp/sunburst-chart/index.js +1 -0
  1167. package/dist/weapp/sunburst-chart/index.json +1 -0
  1168. package/dist/weapp/sunburst-chart/index.wxml +1 -0
  1169. package/dist/weapp/sunburst-chart/index.wxss +1 -0
  1170. package/dist/weapp/treemap-chart/index.js +1 -0
  1171. package/dist/weapp/treemap-chart/index.json +1 -0
  1172. package/dist/weapp/treemap-chart/index.wxml +1 -0
  1173. package/dist/weapp/treemap-chart/index.wxss +1 -0
  1174. package/dist/weapp/types.d.ts +466 -0
  1175. package/dist/weapp/waterfall-chart/index.js +1 -0
  1176. package/dist/weapp/waterfall-chart/index.json +1 -0
  1177. package/dist/weapp/waterfall-chart/index.wxml +1 -0
  1178. package/dist/weapp/waterfall-chart/index.wxss +1 -0
  1179. package/dist/web-components/components/chart/chart.d.ts +58 -0
  1180. package/dist/web-components/components/chart/chart.js +55 -0
  1181. package/dist/web-components/components/chart/chart.js.map +1 -0
  1182. package/dist/web-components/components/chart/charts.d.ts +252 -0
  1183. package/dist/web-components/components/chart/charts.js +201 -0
  1184. package/dist/web-components/components/chart/charts.js.map +1 -0
  1185. package/dist/web-components/components/chart/engine-element.d.ts +53 -0
  1186. package/dist/web-components/components/chart/engine-element.js +77 -0
  1187. package/dist/web-components/components/chart/engine-element.js.map +1 -0
  1188. package/dist/web-components/components/chart/extended.d.ts +224 -0
  1189. package/dist/web-components/components/chart/extended.js +183 -0
  1190. package/dist/web-components/components/chart/extended.js.map +1 -0
  1191. package/dist/web-components/components/chart/series.d.ts +7 -0
  1192. package/dist/web-components/components/chart/series.js +14 -0
  1193. package/dist/web-components/components/chart/series.js.map +1 -0
  1194. package/dist/web-components/components/chart/shape-chart.d.ts +199 -0
  1195. package/dist/web-components/components/chart/shape-chart.js +161 -0
  1196. package/dist/web-components/components/chart/shape-chart.js.map +1 -0
  1197. package/dist/web-components/components/chart/shapes-extended.d.ts +162 -0
  1198. package/dist/web-components/components/chart/shapes-extended.js +156 -0
  1199. package/dist/web-components/components/chart/shapes-extended.js.map +1 -0
  1200. package/dist/web-components/components/chart-3d/chart-3d.d.ts +111 -0
  1201. package/dist/web-components/components/chart-3d/chart-3d.js +97 -0
  1202. package/dist/web-components/components/chart-3d/chart-3d.js.map +1 -0
  1203. package/dist/web-components/components/order-book/order-book.d.ts +165 -0
  1204. package/dist/web-components/components/order-book/order-book.js +174 -0
  1205. package/dist/web-components/components/order-book/order-book.js.map +1 -0
  1206. package/dist/web-components/components/trading-chart/trading-chart.d.ts +96 -0
  1207. package/dist/web-components/components/trading-chart/trading-chart.js +96 -0
  1208. package/dist/web-components/components/trading-chart/trading-chart.js.map +1 -0
  1209. package/dist/web-components/elements/chart-3d.d.ts +2 -0
  1210. package/dist/web-components/elements/chart-3d.js +13 -0
  1211. package/dist/web-components/elements/chart-3d.js.map +1 -0
  1212. package/dist/web-components/elements/chart.d.ts +7 -0
  1213. package/dist/web-components/elements/chart.js +43 -0
  1214. package/dist/web-components/elements/chart.js.map +1 -0
  1215. package/dist/web-components/elements/order-book.d.ts +2 -0
  1216. package/dist/web-components/elements/order-book.js +13 -0
  1217. package/dist/web-components/elements/order-book.js.map +1 -0
  1218. package/dist/web-components/elements/trading-chart.d.ts +2 -0
  1219. package/dist/web-components/elements/trading-chart.js +8 -0
  1220. package/dist/web-components/elements/trading-chart.js.map +1 -0
  1221. package/dist/web-components/html-custom-data.json +1192 -29
  1222. package/dist/web-components/types/react.d.ts +435 -0
  1223. package/dist/web-components/types/solid.d.ts +321 -0
  1224. package/dist/web-components/types/svelte.d.ts +321 -0
  1225. package/dist/web-components/types/vue.d.ts +359 -0
  1226. package/package.json +113 -1
@@ -1,26 +1,67 @@
1
1
  //#region ../charts/src/engine/layout.ts
2
- var e = (e, t, n, r) => {
3
- let [i, a] = t.x, [o, s] = t.y, c = e.width / (a - i || 1), l = e.height / (s - o || 1), u = e.x, d = e.x + e.width, f = e.y, p = e.y + e.height;
2
+ var e = (e, t, n, r, i = !1) => {
3
+ let [a, o] = t.x, [s, c] = t.y, l = e.x, u = e.x + e.width, d = e.y, f = e.y + e.height;
4
+ if (i) {
5
+ let p = e.height / (o - a || 1), m = e.width / (c - s || 1);
6
+ return {
7
+ plot: e,
8
+ view: t,
9
+ horizontal: i,
10
+ xToPx: n ? (e) => f - (e - a) * p : (e) => d + (e - a) * p,
11
+ yToPx: r ? (e) => u - (e - s) * m : (e) => l + (e - s) * m,
12
+ pxToX: n ? (e) => a + (f - e) / p : (e) => a + (e - d) / p,
13
+ pxToY: r ? (e) => s + (u - e) / m : (e) => s + (e - l) / m,
14
+ xPerPx: 1 / p,
15
+ yPerPx: 1 / m
16
+ };
17
+ }
18
+ let p = e.width / (o - a || 1), m = e.height / (c - s || 1);
4
19
  return {
5
20
  plot: e,
6
21
  view: t,
7
- xToPx: n ? (e) => d - (e - i) * c : (e) => u + (e - i) * c,
8
- yToPx: r ? (e) => f + (e - o) * l : (e) => p - (e - o) * l,
9
- pxToX: n ? (e) => i + (d - e) / c : (e) => i + (e - u) / c,
10
- pxToY: r ? (e) => o + (e - f) / l : (e) => o + (p - e) / l,
11
- xPerPx: 1 / c,
12
- yPerPx: 1 / l
22
+ horizontal: i,
23
+ xToPx: n ? (e) => u - (e - a) * p : (e) => l + (e - a) * p,
24
+ yToPx: r ? (e) => d + (e - s) * m : (e) => f - (e - s) * m,
25
+ pxToX: n ? (e) => a + (u - e) / p : (e) => a + (e - l) / p,
26
+ pxToY: r ? (e) => s + (e - d) / m : (e) => s + (f - e) / m,
27
+ xPerPx: 1 / p,
28
+ yPerPx: 1 / m
13
29
  };
14
- }, t = (e) => {
15
- let { width: t, height: n, padding: r, fontSize: i } = e, a = Math.ceil(i * 1.4), o = r.left + (e.yLabelWidth > 0 ? e.yLabelWidth + 8 : 0) + (e.yTitle ? a + 6 : 0), s = r.bottom + (e.xAxisVisible ? a + 8 : 0) + (e.xTitle ? a + 4 : 0), c = r.top, l = r.right;
30
+ }, t = (e, t, n) => e.horizontal ? {
31
+ x: e.yToPx(n),
32
+ y: e.xToPx(t)
33
+ } : {
34
+ x: e.xToPx(t),
35
+ y: e.yToPx(n)
36
+ }, n = (e, t, n) => e.horizontal ? {
37
+ x: e.pxToX(n),
38
+ y: e.pxToY(t)
39
+ } : {
40
+ x: e.pxToX(t),
41
+ y: e.pxToY(n)
42
+ }, r = (e, t, n) => e.horizontal ? n : t, i = (e, t, n) => e.horizontal ? t : n, a = (e, t, n, r, i) => {
43
+ let a = Math.min(t, n), o = Math.max(t, n), s = Math.min(r, i), c = Math.max(r, i);
44
+ return e.horizontal ? {
45
+ x: s,
46
+ y: a,
47
+ width: c - s,
48
+ height: o - a
49
+ } : {
50
+ x: a,
51
+ y: s,
52
+ width: o - a,
53
+ height: c - s
54
+ };
55
+ }, o = (e) => {
56
+ let { width: t, height: n, padding: r, fontSize: i } = e, a = Math.ceil(i * 1.4), o = r.left + (e.yLabelWidth > 0 ? e.yLabelWidth + 8 : 0) + (e.yTitle ? a + 6 : 0), s = r.bottom + (e.xAxisVisible ? a + 8 : 0) + (e.xTitle ? a + 4 : 0), c = r.top, l = e.y2LabelWidth ?? 0, u = l > 0 || e.y2Title ? Math.max(4, r.left) + (l > 0 ? l + 8 : 0) + (e.y2Title ? a + 6 : 0) : r.right;
16
57
  return {
17
58
  x: Math.round(o),
18
59
  y: Math.round(c),
19
- width: Math.max(10, Math.round(t - o - l)),
60
+ width: Math.max(10, Math.round(t - o - u)),
20
61
  height: Math.max(10, Math.round(n - c - s))
21
62
  };
22
63
  };
23
64
  //#endregion
24
- export { t as computePlot, e as createScales };
65
+ export { r as alongX, i as alongY, o as computePlot, e as createScales, a as screenRect, n as toData, t as toScreen };
25
66
 
26
67
  //# sourceMappingURL=layout.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"layout.js","names":["createScales","x0","x1","view","y0","y1","xs","plot","ys","left","right","top","bottom","reverseX","v","reverseY","p","computePlot","input","line","fontSize","padding","width","height"],"sources":["../../../../../../charts/src/engine/layout.ts"],"sourcesContent":["// Plot rectangle and data <-> pixel mappings (CSS pixels of the stage).\n\nimport type { ChartView } from \"./types\";\n\nexport interface Rect {\n x: number;\n y: number;\n width: number;\n height: number;\n}\n\nexport interface Scales {\n plot: Rect;\n view: ChartView;\n xToPx(value: number): number;\n yToPx(value: number): number;\n pxToX(px: number): number;\n pxToY(px: number): number;\n /** Data units per CSS pixel */\n xPerPx: number;\n yPerPx: number;\n}\n\nexport const createScales = (\n plot: Rect,\n view: ChartView,\n reverseX: boolean,\n reverseY: boolean,\n): Scales => {\n const [x0, x1] = view.x;\n const [y0, y1] = view.y;\n const xs = plot.width / (x1 - x0 || 1);\n const ys = plot.height / (y1 - y0 || 1);\n const left = plot.x;\n const right = plot.x + plot.width;\n const top = plot.y;\n const bottom = plot.y + plot.height;\n return {\n plot,\n view,\n xToPx: reverseX\n ? (v) => right - (v - x0) * xs\n : (v) => left + (v - x0) * xs,\n yToPx: reverseY\n ? (v) => top + (v - y0) * ys\n : (v) => bottom - (v - y0) * ys,\n pxToX: reverseX\n ? (p) => x0 + (right - p) / xs\n : (p) => x0 + (p - left) / xs,\n pxToY: reverseY\n ? (p) => y0 + (p - top) / ys\n : (p) => y0 + (bottom - p) / ys,\n xPerPx: 1 / xs,\n yPerPx: 1 / ys,\n };\n};\n\nexport interface LayoutInput {\n width: number;\n height: number;\n padding: { top: number; right: number; bottom: number; left: number };\n /** Width of the widest y tick label (0 when the axis is hidden) */\n yLabelWidth: number;\n xAxisVisible: boolean;\n xTitle: boolean;\n yTitle: boolean;\n fontSize: number;\n}\n\n/** Room for the axes, then the plot area */\nexport const computePlot = (input: LayoutInput): Rect => {\n const { width, height, padding, fontSize } = input;\n const line = Math.ceil(fontSize * 1.4);\n const left =\n padding.left +\n (input.yLabelWidth > 0 ? input.yLabelWidth + 8 : 0) +\n (input.yTitle ? line + 6 : 0);\n const bottom =\n padding.bottom +\n (input.xAxisVisible ? line + 8 : 0) +\n (input.xTitle ? line + 4 : 0);\n const top = padding.top;\n const right = padding.right;\n return {\n x: Math.round(left),\n y: Math.round(top),\n width: Math.max(10, Math.round(width - left - right)),\n height: Math.max(10, Math.round(height - top - bottom)),\n };\n};\n"],"mappings":";AAuBA,IAAaA,KACX,GACA,GACA,GACA,MACW;CACX,IAAM,CAACC,GAAIC,KAAMC,EAAK,GAChB,CAACC,GAAIC,KAAMF,EAAK,GAChBG,IAAKC,EAAK,SAASL,IAAKD,KAAM,IAC9BO,IAAKD,EAAK,UAAUF,IAAKD,KAAM,IAC/BK,IAAOF,EAAK,GACZG,IAAQH,EAAK,IAAIA,EAAK,OACtBI,IAAMJ,EAAK,GACXK,IAASL,EAAK,IAAIA,EAAK;CAC7B,OAAO;EACL;EACA;EACA,OAAOM,KACF,MAAMH,KAASI,IAAIb,KAAMK,KACzB,MAAMG,KAAQK,IAAIb,KAAMK;EAC7B,OAAOS,KACF,MAAMJ,KAAOG,IAAIV,KAAMI,KACvB,MAAMI,KAAUE,IAAIV,KAAMI;EAC/B,OAAOK,KACF,MAAMZ,KAAMS,IAAQM,KAAKV,KACzB,MAAML,KAAMe,IAAIP,KAAQH;EAC7B,OAAOS,KACF,MAAMX,KAAMY,IAAIL,KAAOH,KACvB,MAAMJ,KAAMQ,IAASI,KAAKR;EAC/B,QAAQ,IAAIF;EACZ,QAAQ,IAAIE;CACd;AACF,GAeaS,KAAe,MAA6B;CACvD,IAAM,EAAE,UAAO,WAAQ,YAAS,gBAAaC,GACvCC,IAAO,KAAK,KAAKC,IAAW,GAAG,GAC/BX,IACJY,EAAQ,QACPH,EAAM,cAAc,IAAIA,EAAM,cAAc,IAAI,MAChDA,EAAM,SAASC,IAAO,IAAI,IACvBP,IACJS,EAAQ,UACPH,EAAM,eAAeC,IAAO,IAAI,MAChCD,EAAM,SAASC,IAAO,IAAI,IACvBR,IAAMU,EAAQ,KACdX,IAAQW,EAAQ;CACtB,OAAO;EACL,GAAG,KAAK,MAAMZ,CAAI;EAClB,GAAG,KAAK,MAAME,CAAG;EACjB,OAAO,KAAK,IAAI,IAAI,KAAK,MAAMW,IAAQb,IAAOC,CAAK,CAAC;EACpD,QAAQ,KAAK,IAAI,IAAI,KAAK,MAAMa,IAASZ,IAAMC,CAAM,CAAC;CACxD;AACF"}
1
+ {"version":3,"file":"layout.js","names":["createScales","x0","x1","view","y0","y1","left","plot","right","top","bottom","horizontal","xs","ys","reverseX","v","reverseY","p","toScreen","s","y","x","toData","py","px","alongX","alongY","screenRect","xa","xb","b","c","ya","yb","d","computePlot","input","line","fontSize","padding","y2Width","width","height"],"sources":["../../../../../../charts/src/engine/layout.ts"],"sourcesContent":["// Plot rectangle and data <-> pixel mappings (CSS pixels of the stage).\n\nimport type { ChartView } from \"./types\";\n\nexport interface Rect {\n x: number;\n y: number;\n width: number;\n height: number;\n}\n\n/**\n * Data <-> pixel mappings of a plot. `xToPx` / `yToPx` give the pixel along\n * the axis showing that data axis: the screen x / y of vertical charts, the\n * screen y / x of horizontal ones (use `toScreen` / `toData` for points).\n */\nexport interface Scales {\n plot: Rect;\n view: ChartView;\n /** The x axis runs down the left side, the values along the bottom */\n horizontal: boolean;\n xToPx(value: number): number;\n yToPx(value: number): number;\n pxToX(px: number): number;\n pxToY(px: number): number;\n /** Data units per CSS pixel */\n xPerPx: number;\n yPerPx: number;\n}\n\nexport const createScales = (\n plot: Rect,\n view: ChartView,\n reverseX: boolean,\n reverseY: boolean,\n horizontal = false,\n): Scales => {\n const [x0, x1] = view.x;\n const [y0, y1] = view.y;\n const left = plot.x;\n const right = plot.x + plot.width;\n const top = plot.y;\n const bottom = plot.y + plot.height;\n if (horizontal) {\n // x from top to bottom, y from left to right\n const xs = plot.height / (x1 - x0 || 1);\n const ys = plot.width / (y1 - y0 || 1);\n return {\n plot,\n view,\n horizontal,\n xToPx: reverseX\n ? (v) => bottom - (v - x0) * xs\n : (v) => top + (v - x0) * xs,\n yToPx: reverseY\n ? (v) => right - (v - y0) * ys\n : (v) => left + (v - y0) * ys,\n pxToX: reverseX\n ? (p) => x0 + (bottom - p) / xs\n : (p) => x0 + (p - top) / xs,\n pxToY: reverseY\n ? (p) => y0 + (right - p) / ys\n : (p) => y0 + (p - left) / ys,\n xPerPx: 1 / xs,\n yPerPx: 1 / ys,\n };\n }\n const xs = plot.width / (x1 - x0 || 1);\n const ys = plot.height / (y1 - y0 || 1);\n return {\n plot,\n view,\n horizontal,\n xToPx: reverseX\n ? (v) => right - (v - x0) * xs\n : (v) => left + (v - x0) * xs,\n yToPx: reverseY\n ? (v) => top + (v - y0) * ys\n : (v) => bottom - (v - y0) * ys,\n pxToX: reverseX\n ? (p) => x0 + (right - p) / xs\n : (p) => x0 + (p - left) / xs,\n pxToY: reverseY\n ? (p) => y0 + (p - top) / ys\n : (p) => y0 + (bottom - p) / ys,\n xPerPx: 1 / xs,\n yPerPx: 1 / ys,\n };\n};\n\n/** Screen pixel of a data point */\nexport const toScreen = (\n s: Scales,\n x: number,\n y: number,\n): { x: number; y: number } =>\n s.horizontal\n ? { x: s.yToPx(y), y: s.xToPx(x) }\n : { x: s.xToPx(x), y: s.yToPx(y) };\n\n/** Data point under a screen pixel */\nexport const toData = (\n s: Scales,\n px: number,\n py: number,\n): { x: number; y: number } =>\n s.horizontal\n ? { x: s.pxToX(py), y: s.pxToY(px) }\n : { x: s.pxToX(px), y: s.pxToY(py) };\n\n/** Coordinate of a screen pixel along the x axis (`xToPx` space) */\nexport const alongX = (s: Scales, px: number, py: number) =>\n s.horizontal ? py : px;\n\n/** Coordinate of a screen pixel along the value axis (`yToPx` space) */\nexport const alongY = (s: Scales, px: number, py: number) =>\n s.horizontal ? px : py;\n\n/**\n * Screen rectangle between two pixels along x (`xa`, `xb`) and two along\n * y (`ya`, `yb`)\n */\nexport const screenRect = (\n s: Scales,\n xa: number,\n xb: number,\n ya: number,\n yb: number,\n): Rect => {\n const a = Math.min(xa, xb);\n const b = Math.max(xa, xb);\n const c = Math.min(ya, yb);\n const d = Math.max(ya, yb);\n return s.horizontal\n ? { x: c, y: a, width: d - c, height: b - a }\n : { x: a, y: c, width: b - a, height: d - c };\n};\n\n/** Length in pixels of the x axis (plot width, height when horizontal) */\nexport const xLength = (s: Scales) =>\n s.horizontal ? s.plot.height : s.plot.width;\n\nexport interface LayoutInput {\n width: number;\n height: number;\n padding: { top: number; right: number; bottom: number; left: number };\n /** Width of the widest tick label of the left axis (0 when the axis is hidden) */\n yLabelWidth: number;\n /** Width of the widest tick label of the right axis (0 without one) */\n y2LabelWidth?: number;\n /** The right axis has a title */\n y2Title?: boolean;\n xAxisVisible: boolean;\n xTitle: boolean;\n yTitle: boolean;\n fontSize: number;\n}\n\n/** Room for the axes, then the plot area */\nexport const computePlot = (input: LayoutInput): Rect => {\n const { width, height, padding, fontSize } = input;\n const line = Math.ceil(fontSize * 1.4);\n const left =\n padding.left +\n (input.yLabelWidth > 0 ? input.yLabelWidth + 8 : 0) +\n (input.yTitle ? line + 6 : 0);\n const bottom =\n padding.bottom +\n (input.xAxisVisible ? line + 8 : 0) +\n (input.xTitle ? line + 4 : 0);\n const top = padding.top;\n const y2Width = input.y2LabelWidth ?? 0;\n const right =\n y2Width > 0 || input.y2Title\n ? Math.max(4, padding.left) +\n (y2Width > 0 ? y2Width + 8 : 0) +\n (input.y2Title ? line + 6 : 0)\n : padding.right;\n return {\n x: Math.round(left),\n y: Math.round(top),\n width: Math.max(10, Math.round(width - left - right)),\n height: Math.max(10, Math.round(height - top - bottom)),\n };\n};\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ var e=e=>e||globalThis.document?.documentElement?.lang||globalThis.navigator?.language||`en`,t=e=>e.toLowerCase().split(/[-_]/)[0]||`en`,n=(n,r,i)=>{let a=t(e(r)),o=a===`en`?void 0:n[a];return{...n.en,...o,...i}},r=new Map,i=(e,t={})=>{let n=`${e}|${JSON.stringify(t)}`,i=r.get(n);if(!i){try{i=new Intl.NumberFormat(e,t)}catch{i=new Intl.NumberFormat(`en`,t)}r.set(n,i)}return i},a=n=>{switch(t(e(n))){case`zh`:return[[0xe8d4a51000,`万亿`],[1e8,`亿`],[1e4,`万`]];case`ja`:return[[0xe8d4a51000,`兆`],[1e8,`億`],[1e4,`万`]];case`fr`:return[[0xe8d4a51000,` Bn`],[1e9,` Md`],[1e6,` M`],[1e3,` k`]];default:return[[0xe8d4a51000,`T`],[1e9,`B`],[1e6,`M`],[1e3,`k`]]}},o=new Map,s=(e,t={})=>{let n=`${e}|${JSON.stringify(t)}`,r=o.get(n);if(!r){try{r=new Intl.DateTimeFormat(e,t)}catch{r=new Intl.DateTimeFormat(`en`,t)}o.set(n,r)}return r};exports.compactUnits=a,exports.dateFormat=s,exports.languageOf=t,exports.localeLabels=n,exports.numberFormat=i,exports.resolveLocale=e;
2
+ //# sourceMappingURL=locale.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"locale.cjs","names":["resolveLocale","locale","languageOf","localeLabels","language","own","dictionary","overrides","numberFormats","numberFormat","key","options","format","compactUnits","dateFormats","dateFormat"],"sources":["../../../../../../charts/src/engine/locale.ts"],"sourcesContent":["// Language of the texts and numbers the engine writes itself (tooltip row\n// names, accessible names, \"No data\", compact units...). Every chart module\n// keeps its own dictionary and resolves it with `localeLabels`, so a chart\n// follows the page language without any option, and `locale` / `labels`\n// options override it.\n\n/** Built-in strings of a module: English (complete) and other languages (partial) */\nexport type LabelDictionary<T extends object> = { en: T } & {\n [language: string]: Partial<T> | undefined;\n};\n\n/**\n * Locale of a chart: the `locale` option, else the `lang` of the document\n * (`<html lang>`), else the browser language, else `en`\n */\nexport const resolveLocale = (locale?: string): string => {\n if (locale) return locale;\n const doc = (\n globalThis as { document?: { documentElement?: { lang?: string } } }\n ).document;\n const lang = doc?.documentElement?.lang;\n if (lang) return lang;\n const nav = (globalThis as { navigator?: { language?: string } }).navigator;\n return nav?.language || \"en\";\n};\n\n/** `zh-CN` -> `zh`, `fr_FR` -> `fr` */\nexport const languageOf = (locale: string): string =>\n locale.toLowerCase().split(/[-_]/)[0] || \"en\";\n\n/**\n * Strings of a module for a locale: the built-in language (English for\n * unknown languages) completed with English, then the `overrides`\n */\nexport const localeLabels = <T extends object>(\n dictionary: LabelDictionary<T>,\n locale?: string,\n overrides?: Partial<T>,\n): T => {\n const language = languageOf(resolveLocale(locale));\n const own = language === \"en\" ? undefined : dictionary[language];\n return { ...dictionary.en, ...own, ...overrides };\n};\n\nconst numberFormats = new Map<string, Intl.NumberFormat>();\n\n/** Cached `Intl.NumberFormat` (formatting is on hot paths: ticks, tooltips) */\nexport const numberFormat = (\n locale: string,\n options: Intl.NumberFormatOptions = {},\n): Intl.NumberFormat => {\n const key = `${locale}|${JSON.stringify(options)}`;\n let format = numberFormats.get(key);\n if (!format) {\n try {\n format = new Intl.NumberFormat(locale, options);\n } catch {\n format = new Intl.NumberFormat(\"en\", options);\n }\n numberFormats.set(key, format);\n }\n return format;\n};\n\n/**\n * Compact units of a language, largest first: thousands-based (k, M, B, T)\n * in English and French, ten-thousands-based (万, 亿 / 億) in Chinese and\n * Japanese\n */\nexport const compactUnits = (locale?: string): readonly [number, string][] => {\n switch (languageOf(resolveLocale(locale))) {\n case \"zh\":\n return [\n [1e12, \"万亿\"],\n [1e8, \"亿\"],\n [1e4, \"万\"],\n ];\n case \"ja\":\n return [\n [1e12, \"兆\"],\n [1e8, \"億\"],\n [1e4, \"万\"],\n ];\n case \"fr\":\n return [\n [1e12, \" Bn\"],\n [1e9, \" Md\"],\n [1e6, \" M\"],\n [1e3, \" k\"],\n ];\n default:\n return [\n [1e12, \"T\"],\n [1e9, \"B\"],\n [1e6, \"M\"],\n [1e3, \"k\"],\n ];\n }\n};\n\nconst dateFormats = new Map<string, Intl.DateTimeFormat>();\n\n/** Cached `Intl.DateTimeFormat` (time axis ticks and tooltips) */\nexport const dateFormat = (\n locale: string,\n options: Intl.DateTimeFormatOptions = {},\n): Intl.DateTimeFormat => {\n const key = `${locale}|${JSON.stringify(options)}`;\n let format = dateFormats.get(key);\n if (!format) {\n try {\n format = new Intl.DateTimeFormat(locale, options);\n } catch {\n format = new Intl.DateTimeFormat(\"en\", options);\n }\n dateFormats.set(key, format);\n }\n return format;\n};\n\n/**\n * Calls `onChange` when the `lang` of the document changes (charts without\n * a `locale` option follow the page language); returns the cleanup\n */\nexport const watchLocale = (onChange: () => void): (() => void) => {\n const doc = (globalThis as { document?: { documentElement?: Node | null } })\n .document;\n const root = doc?.documentElement;\n if (!root || typeof MutationObserver !== \"function\") return () => {};\n const observer = new MutationObserver(onChange);\n observer.observe(root, { attributes: true, attributeFilter: [\"lang\"] });\n return () => observer.disconnect();\n};\n"],"mappings":"AAeA,IAAaA,EAAiB,GACxBC,GAEF,WACA,UACgB,iBAAiB,MAEtB,WAAqD,WACtD,UAAY,KAIbC,EAAc,GACzBD,EAAO,YAAY,CAAC,CAAC,MAAM,MAAM,CAAC,CAAC,IAAM,KAM9BE,GACX,EACA,EACA,IACM,CACN,IAAMC,EAAWF,EAAWF,EAAcC,CAAM,CAAC,EAC3CI,EAAMD,IAAa,KAAO,IAAA,GAAYE,EAAWF,GACvD,MAAO,CAAE,GAAGE,EAAW,GAAI,GAAGD,EAAK,GAAGE,CAAU,CAClD,EAEMC,EAAgB,IAAI,IAGbC,GACX,EACA,EAAoC,CAAC,IACf,CACtB,IAAMC,EAAM,GAAGT,EAAO,GAAG,KAAK,UAAUU,CAAO,IAC3CC,EAASJ,EAAc,IAAIE,CAAG,EAClC,GAAI,CAACE,EAAQ,CACX,GAAI,CACF,EAAS,IAAI,KAAK,aAAaX,EAAQU,CAAO,CAChD,MAAQ,CACN,EAAS,IAAI,KAAK,aAAa,KAAMA,CAAO,CAC9C,CACAH,EAAc,IAAIE,EAAKE,CAAM,CAC/B,CACA,OAAOA,CACT,EAOaC,EAAgB,GAAiD,CAC5E,OAAQX,EAAWF,EAAcC,CAAM,CAAC,EAAxC,CACE,IAAK,KACH,MAAO,CACL,CAAC,aAAM,IAAI,EACX,CAAC,IAAK,GAAG,EACT,CAAC,IAAK,GAAG,CACX,EACF,IAAK,KACH,MAAO,CACL,CAAC,aAAM,GAAG,EACV,CAAC,IAAK,GAAG,EACT,CAAC,IAAK,GAAG,CACX,EACF,IAAK,KACH,MAAO,CACL,CAAC,aAAM,KAAK,EACZ,CAAC,IAAK,KAAK,EACX,CAAC,IAAK,IAAI,EACV,CAAC,IAAK,IAAI,CACZ,EACF,QACE,MAAO,CACL,CAAC,aAAM,GAAG,EACV,CAAC,IAAK,GAAG,EACT,CAAC,IAAK,GAAG,EACT,CAAC,IAAK,GAAG,CACX,CACJ,CACF,EAEMa,EAAc,IAAI,IAGXC,GACX,EACA,EAAsC,CAAC,IACf,CACxB,IAAML,EAAM,GAAGT,EAAO,GAAG,KAAK,UAAUU,CAAO,IAC3CC,EAASE,EAAY,IAAIJ,CAAG,EAChC,GAAI,CAACE,EAAQ,CACX,GAAI,CACF,EAAS,IAAI,KAAK,eAAeX,EAAQU,CAAO,CAClD,MAAQ,CACN,EAAS,IAAI,KAAK,eAAe,KAAMA,CAAO,CAChD,CACAG,EAAY,IAAIJ,EAAKE,CAAM,CAC7B,CACA,OAAOA,CACT"}
@@ -0,0 +1,60 @@
1
+ //#region ../charts/src/engine/locale.ts
2
+ var e = (e) => e || globalThis.document?.documentElement?.lang || globalThis.navigator?.language || "en", t = (e) => e.toLowerCase().split(/[-_]/)[0] || "en", n = (n, r, i) => {
3
+ let a = t(e(r)), o = a === "en" ? void 0 : n[a];
4
+ return {
5
+ ...n.en,
6
+ ...o,
7
+ ...i
8
+ };
9
+ }, r = /* @__PURE__ */ new Map(), i = (e, t = {}) => {
10
+ let n = `${e}|${JSON.stringify(t)}`, i = r.get(n);
11
+ if (!i) {
12
+ try {
13
+ i = new Intl.NumberFormat(e, t);
14
+ } catch {
15
+ i = new Intl.NumberFormat("en", t);
16
+ }
17
+ r.set(n, i);
18
+ }
19
+ return i;
20
+ }, a = (n) => {
21
+ switch (t(e(n))) {
22
+ case "zh": return [
23
+ [0xe8d4a51000, "万亿"],
24
+ [1e8, "亿"],
25
+ [1e4, "万"]
26
+ ];
27
+ case "ja": return [
28
+ [0xe8d4a51000, "兆"],
29
+ [1e8, "億"],
30
+ [1e4, "万"]
31
+ ];
32
+ case "fr": return [
33
+ [0xe8d4a51000, " Bn"],
34
+ [1e9, " Md"],
35
+ [1e6, " M"],
36
+ [1e3, " k"]
37
+ ];
38
+ default: return [
39
+ [0xe8d4a51000, "T"],
40
+ [1e9, "B"],
41
+ [1e6, "M"],
42
+ [1e3, "k"]
43
+ ];
44
+ }
45
+ }, o = /* @__PURE__ */ new Map(), s = (e, t = {}) => {
46
+ let n = `${e}|${JSON.stringify(t)}`, r = o.get(n);
47
+ if (!r) {
48
+ try {
49
+ r = new Intl.DateTimeFormat(e, t);
50
+ } catch {
51
+ r = new Intl.DateTimeFormat("en", t);
52
+ }
53
+ o.set(n, r);
54
+ }
55
+ return r;
56
+ };
57
+ //#endregion
58
+ export { a as compactUnits, s as dateFormat, t as languageOf, n as localeLabels, i as numberFormat, e as resolveLocale };
59
+
60
+ //# sourceMappingURL=locale.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"locale.js","names":["resolveLocale","locale","languageOf","localeLabels","language","own","dictionary","overrides","numberFormats","numberFormat","key","options","format","compactUnits","dateFormats","dateFormat"],"sources":["../../../../../../charts/src/engine/locale.ts"],"sourcesContent":["// Language of the texts and numbers the engine writes itself (tooltip row\n// names, accessible names, \"No data\", compact units...). Every chart module\n// keeps its own dictionary and resolves it with `localeLabels`, so a chart\n// follows the page language without any option, and `locale` / `labels`\n// options override it.\n\n/** Built-in strings of a module: English (complete) and other languages (partial) */\nexport type LabelDictionary<T extends object> = { en: T } & {\n [language: string]: Partial<T> | undefined;\n};\n\n/**\n * Locale of a chart: the `locale` option, else the `lang` of the document\n * (`<html lang>`), else the browser language, else `en`\n */\nexport const resolveLocale = (locale?: string): string => {\n if (locale) return locale;\n const doc = (\n globalThis as { document?: { documentElement?: { lang?: string } } }\n ).document;\n const lang = doc?.documentElement?.lang;\n if (lang) return lang;\n const nav = (globalThis as { navigator?: { language?: string } }).navigator;\n return nav?.language || \"en\";\n};\n\n/** `zh-CN` -> `zh`, `fr_FR` -> `fr` */\nexport const languageOf = (locale: string): string =>\n locale.toLowerCase().split(/[-_]/)[0] || \"en\";\n\n/**\n * Strings of a module for a locale: the built-in language (English for\n * unknown languages) completed with English, then the `overrides`\n */\nexport const localeLabels = <T extends object>(\n dictionary: LabelDictionary<T>,\n locale?: string,\n overrides?: Partial<T>,\n): T => {\n const language = languageOf(resolveLocale(locale));\n const own = language === \"en\" ? undefined : dictionary[language];\n return { ...dictionary.en, ...own, ...overrides };\n};\n\nconst numberFormats = new Map<string, Intl.NumberFormat>();\n\n/** Cached `Intl.NumberFormat` (formatting is on hot paths: ticks, tooltips) */\nexport const numberFormat = (\n locale: string,\n options: Intl.NumberFormatOptions = {},\n): Intl.NumberFormat => {\n const key = `${locale}|${JSON.stringify(options)}`;\n let format = numberFormats.get(key);\n if (!format) {\n try {\n format = new Intl.NumberFormat(locale, options);\n } catch {\n format = new Intl.NumberFormat(\"en\", options);\n }\n numberFormats.set(key, format);\n }\n return format;\n};\n\n/**\n * Compact units of a language, largest first: thousands-based (k, M, B, T)\n * in English and French, ten-thousands-based (万, 亿 / 億) in Chinese and\n * Japanese\n */\nexport const compactUnits = (locale?: string): readonly [number, string][] => {\n switch (languageOf(resolveLocale(locale))) {\n case \"zh\":\n return [\n [1e12, \"万亿\"],\n [1e8, \"亿\"],\n [1e4, \"万\"],\n ];\n case \"ja\":\n return [\n [1e12, \"兆\"],\n [1e8, \"億\"],\n [1e4, \"万\"],\n ];\n case \"fr\":\n return [\n [1e12, \" Bn\"],\n [1e9, \" Md\"],\n [1e6, \" M\"],\n [1e3, \" k\"],\n ];\n default:\n return [\n [1e12, \"T\"],\n [1e9, \"B\"],\n [1e6, \"M\"],\n [1e3, \"k\"],\n ];\n }\n};\n\nconst dateFormats = new Map<string, Intl.DateTimeFormat>();\n\n/** Cached `Intl.DateTimeFormat` (time axis ticks and tooltips) */\nexport const dateFormat = (\n locale: string,\n options: Intl.DateTimeFormatOptions = {},\n): Intl.DateTimeFormat => {\n const key = `${locale}|${JSON.stringify(options)}`;\n let format = dateFormats.get(key);\n if (!format) {\n try {\n format = new Intl.DateTimeFormat(locale, options);\n } catch {\n format = new Intl.DateTimeFormat(\"en\", options);\n }\n dateFormats.set(key, format);\n }\n return format;\n};\n\n/**\n * Calls `onChange` when the `lang` of the document changes (charts without\n * a `locale` option follow the page language); returns the cleanup\n */\nexport const watchLocale = (onChange: () => void): (() => void) => {\n const doc = (globalThis as { document?: { documentElement?: Node | null } })\n .document;\n const root = doc?.documentElement;\n if (!root || typeof MutationObserver !== \"function\") return () => {};\n const observer = new MutationObserver(onChange);\n observer.observe(root, { attributes: true, attributeFilter: [\"lang\"] });\n return () => observer.disconnect();\n};\n"],"mappings":";AAeA,IAAaA,KAAiB,MACxBC,KAEF,WACA,UACgB,iBAAiB,QAEtB,WAAqD,WACtD,YAAY,MAIbC,KAAc,MACzBD,EAAO,YAAY,CAAC,CAAC,MAAM,MAAM,CAAC,CAAC,MAAM,MAM9BE,KACX,GACA,GACA,MACM;CACN,IAAMC,IAAWF,EAAWF,EAAcC,CAAM,CAAC,GAC3CI,IAAMD,MAAa,OAAO,KAAA,IAAYE,EAAWF;CACvD,OAAO;EAAE,GAAGE,EAAW;EAAI,GAAGD;EAAK,GAAGE;CAAU;AAClD,GAEMC,oBAAgB,IAAI,IAA+B,GAG5CC,KACX,GACA,IAAoC,CAAC,MACf;CACtB,IAAMC,IAAM,GAAGT,EAAO,GAAG,KAAK,UAAUU,CAAO,KAC3CC,IAASJ,EAAc,IAAIE,CAAG;CAClC,IAAI,CAACE,GAAQ;EACX,IAAI;GACF,IAAS,IAAI,KAAK,aAAaX,GAAQU,CAAO;EAChD,QAAQ;GACN,IAAS,IAAI,KAAK,aAAa,MAAMA,CAAO;EAC9C;EACA,EAAc,IAAID,GAAKE,CAAM;CAC/B;CACA,OAAOA;AACT,GAOaC,KAAgB,MAAiD;CAC5E,QAAQX,EAAWF,EAAcC,CAAM,CAAC,GAAxC;EACE,KAAK,MACH,OAAO;GACL,CAAC,cAAM,IAAI;GACX,CAAC,KAAK,GAAG;GACT,CAAC,KAAK,GAAG;EACX;EACF,KAAK,MACH,OAAO;GACL,CAAC,cAAM,GAAG;GACV,CAAC,KAAK,GAAG;GACT,CAAC,KAAK,GAAG;EACX;EACF,KAAK,MACH,OAAO;GACL,CAAC,cAAM,KAAK;GACZ,CAAC,KAAK,KAAK;GACX,CAAC,KAAK,IAAI;GACV,CAAC,KAAK,IAAI;EACZ;EACF,SACE,OAAO;GACL,CAAC,cAAM,GAAG;GACV,CAAC,KAAK,GAAG;GACT,CAAC,KAAK,GAAG;GACT,CAAC,KAAK,GAAG;EACX;CACJ;AACF,GAEMa,oBAAc,IAAI,IAAiC,GAG5CC,KACX,GACA,IAAsC,CAAC,MACf;CACxB,IAAML,IAAM,GAAGT,EAAO,GAAG,KAAK,UAAUU,CAAO,KAC3CC,IAASE,EAAY,IAAIJ,CAAG;CAChC,IAAI,CAACE,GAAQ;EACX,IAAI;GACF,IAAS,IAAI,KAAK,eAAeX,GAAQU,CAAO;EAClD,QAAQ;GACN,IAAS,IAAI,KAAK,eAAe,MAAMA,CAAO;EAChD;EACA,EAAY,IAAID,GAAKE,CAAM;CAC7B;CACA,OAAOA;AACT"}
@@ -1,2 +1,2 @@
1
- const e=require("./color.cjs"),t=require("./data.cjs"),n=require("./scale.cjs"),r=require("./spatial.cjs");var i=e=>{if(typeof e==`object`&&e&&!(`length`in e)){let t=e.x;return t&&t.length?t[0]:void 0}let t=e;for(let e=0;e<Math.min(t.length,8);e++){let n=t[e];if(Array.isArray(n))return n[0];if(n&&typeof n==`object`)return n.x}},a=e=>{for(let t of e){let e=i(t);if(e instanceof Date)return`time`;if(typeof e==`string`)return`category`}return`linear`},o=(e,t,n,r)=>({type:t,reverse:!!e?.reverse,categories:n,title:e?.title,format:e?.format,grid:e?.grid??r,visible:e?.visible??!0,tickCount:e?.tickCount}),s=e=>{let t=1/0,n=-1/0;for(let r=0;r<e.length;r++){let i=e[r];Number.isFinite(i)&&(i<t&&(t=i),i>n&&(n=i))}return[t,n]},c=e=>{let t=1/0;for(let n of e){let e=n.sorted?n.x:Float64Array.from(n.x).sort();for(let r=1;r<n.count;r++){let n=e[r]-e[r-1];n>0&&n<t&&(t=n)}}return t},l=(r,i,l,u,d=null)=>{let f=d??i.resolve??((t,n)=>e.resolveStaticColor(t,{},n)),p=r.series,m=p.map(e=>e.data),h=r.xAxis?.type??a(m),g=h===`category`?[...r.xAxis?.categories??t.collectCategories(m)]:[],_=new Map(g.map((e,t)=>[e,t])),v=t.xResolver(h,e=>_.get(e)??NaN),y=`${h}|${g.join(``)}`,b=new Set,x=p.map((n,r)=>{let a=n.id??`#${r}`;for(;b.has(a);)a+=`'`;b.add(a);let o=u.get(a);(!o||o.data!==n.data||o.resolverKey!==y)&&(o={data:n.data,resolverKey:y,cols:t.normalizeData(n.data,v)},u.set(a,o));let s=n.type??`line`,c=n.color?f(n.color,i.palette[r%i.palette.length]):i.palette[r%i.palette.length],d=o.cols,p=null;if(s===`scatter`&&d.colors){let e=new Map;p=d.colors.map(t=>{if(t===void 0)return;let n=e.get(t);return n||e.set(t,n=f(t,c)),n})}let m=n.id??String(r);return{index:r,key:a,id:m,name:n.name??`Series ${r+1}`,type:s,color:c,colorCss:e.toCss(c),lineWidth:n.lineWidth??2,pointSize:n.pointSize??8,opacity:n.opacity??(s===`area`?.28:s===`scatter`?.78:1),hidden:!!n.hidden||l.has(m),showLabels:!!n.showLabels,cols:d,barOffset:0,barHalfWidth:0,barBase:null,barTop:null,pointColors:p}}),S=x.filter(e=>!e.hidden),C=x.length>0&&x.every(e=>e.type===`scatter`),w=S.filter(e=>e.type===`bar`),T=h===`category`?1:(()=>{let e=c(w.map(e=>e.cols));return Number.isFinite(e)?e:1})();if(w.length){let e=new Map;for(let t of w){let n=p[t.index].stack??`\u0000${t.key}`;e.has(n)||e.set(n,e.size)}let t=T*(e.size>1?.78:.62),n=t/e.size,r=new Map;for(let i of w){let a=p[i.index].stack??`\u0000${i.key}`,o=e.get(a)??0;i.barOffset=-t/2+n*(o+.5),i.barHalfWidth=n/2*(e.size>1?.86:1);let s=r.get(a);s||r.set(a,s=new Map);let{x:c,y:l,count:u}=i.cols;i.barBase=new Float64Array(u),i.barTop=new Float64Array(u);for(let e=0;e<u;e++){let t=l[e];if(!Number.isFinite(t)){i.barBase[e]=NaN,i.barTop[e]=NaN;continue}let n=s.get(c[e])??[0,0],r=t>=0?n[0]:n[1];i.barBase[e]=r,i.barTop[e]=r+t,t>=0?n[0]+=t:n[1]+=t,s.set(c[e],n)}}}let E=r.xAxis,D;if(h===`category`)D=[-.5,Math.max(1,g.length)-.5];else{let e=[];for(let t of S)e.push(t.cols.xMin,t.cols.xMax),t.type===`bar`&&e.push(t.cols.xMin-T/2,t.cols.xMax+T/2);if(D=n.ensureSpan(...s(e),h===`time`?[Date.now()-864e5,Date.now()]:[0,1]),C){let e=(D[1]-D[0])*.04;D=[D[0]-e,D[1]+e]}(E?.nice??(C&&h===`linear`))&&h===`linear`&&(D=n.niceDomain(D[0],D[1],E?.tickCount??6))}E?.min!==void 0&&(D[0]=E.min),E?.max!==void 0&&(D[1]=E.max),D=n.ensureSpan(D[0],D[1]);let O=r.yAxis,k=[];for(let e of S)e.type===`bar`&&e.barBase&&e.barTop?k.push(...s(e.barBase),...s(e.barTop)):k.push(e.cols.yMin,e.cols.yMax);(w.length||O?.zero)&&k.push(0);let A=n.ensureSpan(...s(k));if(C){let e=(A[1]-A[0])*.06;A=[A[0]-e,A[1]+e]}(O?.nice??!0)&&(O?.type??`linear`)===`linear`&&(A=n.niceDomain(A[0],A[1],O?.tickCount??5)),w.length&&!O?.zero&&A[0]<0&&s(k)[0]>=0&&(A[0]=0),O?.min!==void 0&&(A[0]=O.min),O?.max!==void 0&&(A[1]=O.max),A=n.ensureSpan(A[0],A[1]);let j=r.interaction===!1?!1:r.interaction===!0||r.interaction===void 0?!0:r.interaction.zoom??!0,M=j===!1?{x:!1,y:!1}:j===!0?{x:!0,y:C}:{x:j.includes(`x`),y:j.includes(`y`)},N=typeof r.tooltip==`object`?r.tooltip:void 0;return{series:x,x:o(E,h,g,!1),y:o(O,O?.type===`time`?`time`:`linear`,[],!0),base:{x:D,y:A},allScatter:C,zoom:M,tooltipMode:N?.mode??(C?`nearest`:`axis`),baseline:Math.min(Math.max(0,A[0]),A[1]),minSpan:{x:h===`category`?1:(D[1]-D[0])*1e-7,y:(A[1]-A[0])*1e-7}}},u=new WeakMap,d=e=>{let t=u.get(e.cols);return t||(t=new r.GridIndex(e.cols.x,e.cols.y,e.cols.count),u.set(e.cols,t)),t};exports.buildModel=l,exports.detectXType=a,exports.gridOf=d;
1
+ const e=require("./color.cjs"),t=require("./data.cjs"),n=require("./locale.cjs"),r=require("./scale.cjs"),i=require("./format.cjs"),a=require("./labels.cjs"),o=require("./spatial.cjs");var s=e=>{if(typeof e==`object`&&e&&!(`length`in e)){let t=e.x;return t&&t.length?t[0]:void 0}let t=e;for(let e=0;e<Math.min(t.length,8);e++){let n=t[e];if(Array.isArray(n))return n[0];if(n&&typeof n==`object`)return n.x}},c=e=>{for(let t of e){let e=s(t);if(e instanceof Date)return`time`;if(typeof e==`string`)return`category`}return`linear`},l=(e,t,n,r,i)=>({type:t,reverse:!!e?.reverse,categories:n,title:e?.title,format:e?.format,grid:e?.grid??r,visible:e?.visible??!0,tickCount:e?.tickCount,locale:i,timeZone:e?.timeZone??`local`}),u=e=>{let t={};if(!e)return t;for(let n of Object.keys(e))e[n]!==void 0&&(t[n]=e[n]);return t},d=e=>{let t=1/0,n=-1/0;for(let r=0;r<e.length;r++){let i=e[r];Number.isFinite(i)&&(i<t&&(t=i),i>n&&(n=i))}return[t,n]},f=(e,t)=>{let n=1/0;return e.forEach((e,r)=>{let i=t[r]?e:Float64Array.from(e).sort();for(let e=1;e<i.length;e++){let t=i[e]-i[e-1];t>0&&t<n&&(n=t)}}),n},p=(e,t,n)=>{if(n)return 1;let r=f(e.map(e=>t===`x`?e.cols.x:e.cols.y),e.map(e=>t===`x`&&e.cols.sorted));return Number.isFinite(r)?r:1},m=(e,t)=>{let n=new Map;if(t)for(let{s:t,stack:r}of e){let e=n.get(r);e||n.set(r,e=new Map);let{x:i,y:a,count:o}=t.cols;for(let t=0;t<o;t++){let n=a[t];if(!Number.isFinite(n))continue;let r=e.get(i[t])??[0,0];n>=0?r[0]+=n:r[1]-=n,e.set(i[t],r)}}let r=new Map,i=new Map;for(let{stack:t}of e)i.set(t,(i.get(t)??0)+1);return e.map(({s:e,stack:a})=>{let{x:o,y:s,count:c}=e.cols;if(!t&&i.get(a)===1){let e=new Float64Array(c),t=new Float64Array(c);for(let n=0;n<c;n++){let r=s[n],i=Number.isFinite(r);e[n]=i?0:NaN,t[n]=i?r:NaN}return{base:e,top:t}}let l=r.get(a);l||r.set(a,l=new Map);let u=n.get(a),d=new Float64Array(c),f=new Float64Array(c);for(let e=0;e<c;e++){let t=s[e];if(!Number.isFinite(t)){d[e]=NaN,f[e]=NaN;continue}if(u){let n=u.get(o[e]),r=n?t>=0?n[0]:n[1]:0;t=r>0?t/r*100:0}let n=l.get(o[e])??[0,0],r=t>=0?n[0]:n[1];d[e]=r,f[e]=r+t,t>=0?n[0]+=t:n[1]+=t,l.set(o[e],n)}return{base:d,top:f}})},ee=`var(--success-color, #16a34a)`,te=`var(--danger-color, #dc2626)`,h=e=>{for(let t of e){if(typeof t!=`object`||!t||!(`length`in t))continue;let e=t;for(let t=0;t<Math.min(e.length,8);t++){let n=e[t];if(n&&typeof n==`object`&&!Array.isArray(n)){let e=n;if(e.y instanceof Date||e.y0 instanceof Date)return!0}}}return!1},g=e=>Number(e.toPrecision(12)),_=e=>{let t=10**Math.floor(Math.log10(e)+1e-9),n=e/t;return(n<1.5?2:n<3.5?5:10)*t},v=(e,t,n,i)=>{let[a,o]=n,s=r.tickStep(a,o,i),c=s>0?Math.round((o-a)/s):0;if([e,t]=r.ensureSpan(e,t),c<1||Math.abs(c*s-(o-a))>s*1e-6)return r.niceDomain(e,t,i);let l=r.tickStep(e,t,c);for(let n=0;n<40&&l>0;n++){let n=Math.floor(e/l+1e-9)*l;if(n+c*l>=t-l*1e-9)return[g(n),g(n+c*l)];l=_(l)}return r.niceDomain(e,t,i)},y=new WeakMap,ne=(e,t)=>{let n=`${t.scale},${t.offset}`,r=y.get(e);if(r&&r.key===n)return r.cols;let i=e=>e*t.scale+t.offset,a=e=>e?e.map(i):null,o=i(e.yMin),s=i(e.yMax),c={...e,y:e.y.map(i),open:a(e.open),high:a(e.high),low:a(e.low),y0:a(e.y0),q1:a(e.q1),q3:a(e.q3),outliers:e.outliers?e.outliers.map(e=>e?.map(i)):null,yMin:Math.min(o,s),yMax:Math.max(o,s)};return y.set(e,{key:n,cols:c}),c},b=(o,s,f,g,_=null)=>{let y=_??s.resolve??((t,n)=>e.resolveStaticColor(t,{},n)),b=o.series,x=n.resolveLocale(o.locale),S=typeof o.tooltip==`object`?o.tooltip:void 0,C=a.chartLabels(x,{...u(S?.labels),...u(o.labels)}),w=b.map(e=>e.data),T=o.xAxis?.type??c(w),E=T===`category`?[...o.xAxis?.categories??t.collectCategories(w)]:[],re=new Map(E.map((e,t)=>[e,t])),ie=t.xResolver(T,e=>re.get(e)??NaN),D=o.yAxis,ae=b.filter(e=>e.type===`heatmap`).map(e=>e.data),O=D?.type===`category`||!D?.type&&ae.length?[...D?.categories??t.collectYCategories(ae)]:[],k=D?.type===`category`||O.length?`category`:D?.type===`time`||!D?.type&&h(w)?`time`:`linear`,oe=new Map(O.map((e,t)=>[e,t])),se=e=>typeof e==`number`?e:typeof e==`string`?k===`category`?oe.get(e)??NaN:k===`time`?Date.parse(e):Number(e):e instanceof Date?e.getTime():NaN,A=`${T}|${E.join(``)}|${k}|${O.join(``)}`,j=o.stackMode===`percent`,M=o.orientation===`horizontal`,N=new Set,P=b.map((n,r)=>{let i=n.id??`#${r}`;for(;N.has(i);)i+=`'`;N.add(i);let a=g.get(i);(!a||a.data!==n.data||a.resolverKey!==A)&&(a={data:n.data,resolverKey:A,cols:t.normalizeData(n.data,ie,se)},g.set(i,a));let o=n.type??`line`,c=s.palette[r%s.palette.length],l=n.color?y(n.color,c):c,u=a.cols,d=null;if((o===`scatter`||o===`bar`||o===`boxplot`)&&u.colors){let e=new Map;d=u.colors.map(t=>{if(t===void 0)return;let n=e.get(t);return n||e.set(t,n=y(t,l)),n})}let p=[],m=[0,1],h=null;if(o===`heatmap`){p=n.colorScale&&n.colorScale.length?n.colorScale.map(e=>y(e,l)):[e.mix(s.background,l,.08),l],m=n.valueRange?[n.valueRange[0],n.valueRange[1]]:[u.valueMin,u.valueMax],Number.isFinite(m[0])||(m=[0,1]);let t=u.value??u.y,[r,i]=m,a=i-r||1;h=new Uint32Array(u.count);for(let n=0;n<u.count;n++){let i=t[n];Number.isFinite(i)&&Number.isFinite(u.y[n])&&(h[n]=e.packColor(e.rampColor(p,(i-r)/a)))}}let _=n.id??String(r);return{index:r,key:i,id:_,name:n.name??`${C.series} ${r+1}`,type:o,color:l,colorCss:e.toCss(l),lineWidth:n.lineWidth??(o===`candlestick`?1:o===`boxplot`?1.5:2),pointSize:n.pointSize??(o===`boxplot`?6:8),opacity:n.opacity??(o===`area`?.28:o===`scatter`?.78:o===`boxplot`?.22:1),hidden:!!n.hidden||f.has(_),showLabels:!!n.showLabels,curve:n.curve??`linear`,cols:u,raw:u,yAxis:n.yAxis===`right`&&!M?`right`:`left`,floating:o===`bar`&&!!u.y0,barOffset:0,barHalfWidth:0,barBase:null,barTop:null,stackBase:null,stackTop:null,pointColors:d,upColor:o===`candlestick`?y(n.upColor??ee,[.09,.64,.29,1]):l,downColor:o===`candlestick`?y(n.downColor??te,[.86,.15,.15,1]):l,cellColors:h,cellHalf:{x:.5,y:.5},colorScale:p,valueRange:m,radius:n.radius??(o===`heatmap`?2:o===`boxplot`?0:3),format:n.format,valueName:n.valueName}}),F=P.filter(e=>!e.hidden),I=P.length>0&&P.every(e=>e.type===`scatter`||e.type===`heatmap`),L=F.filter(e=>e.type===`bar`||e.type===`boxplot`),R=F.filter(e=>e.type===`bar`),z=p(L,`x`,T===`category`);if(L.length){let e=new Map,t=e=>b[e.index].stack??`\u0000${e.key}`;for(let n of L)e.has(t(n))||e.set(t(n),e.size);let n=0;for(let e of L){let t=b[e.index].barWidth;t!==void 0&&t>n&&(n=Math.min(1,t))}let r=z*(n||(e.size>1?.78:.62)),i=r/e.size;for(let n of L){let a=e.get(t(n))??0;n.barOffset=-r/2+i*(a+.5),n.barHalfWidth=i/2*(e.size>1?.86:1)}let a=R.filter(e=>!e.floating),o=m(a.map(e=>({s:e,stack:t(e)})),!1),s=j?m(a.filter(e=>b[e.index].stack!==void 0).map(e=>({s:e,stack:t(e)})),!0):[],c=0;a.forEach((e,t)=>{let n=j&&b[e.index].stack!==void 0?s[c++]:o[t];e.barBase=n.base,e.barTop=n.top});for(let e of R){let{y:t,y0:n,count:r}=e.cols;if(!e.floating||!n)continue;let i=new Float64Array(r),a=new Float64Array(r);for(let e=0;e<r;e++){let r=Number.isFinite(t[e]);i[e]=r?Number.isFinite(n[e])?n[e]:0:NaN,a[e]=r?t[e]:NaN}e.barBase=i,e.barTop=a}}for(let e of F)e.type===`area`&&e.cols.y0&&b[e.index].stack===void 0&&(e.stackBase=e.cols.y0);let B=F.filter(e=>(e.type===`line`||e.type===`area`)&&b[e.index].stack!==void 0);if(B.length){let e=m(B.map(e=>({s:e,stack:b[e.index].stack??``})),j);B.forEach((t,n)=>{t.stackBase=e[n].base,t.stackTop=e[n].top})}let V=F.filter(e=>e.type===`candlestick`),H=p(V,`x`,T===`category`);for(let e of V)e.barHalfWidth=H*.3;let U=F.filter(e=>e.type===`heatmap`);if(U.length){let e=p(U,`x`,T===`category`)/2,t=p(U,`y`,k===`category`)/2;for(let n of U)n.cellHalf={x:e,y:t}}let W=o.xAxis,G;if(T===`category`)G=[-.5,Math.max(1,E.length)-.5];else{let e=[];for(let t of F){e.push(t.cols.xMin,t.cols.xMax);let n=t.type===`bar`||t.type===`boxplot`?z/2:t.type===`candlestick`?H/2:t.type===`heatmap`?t.cellHalf.x:0;n&&e.push(t.cols.xMin-n,t.cols.xMax+n)}G=r.ensureSpan(...d(e),T===`time`?[Date.now()-864e5,Date.now()]:[0,1]);let t=P.every(e=>e.type===`scatter`);if(t){let e=(G[1]-G[0])*.04;G=[G[0]-e,G[1]+e]}(W?.nice??(t&&T===`linear`))&&T===`linear`&&(G=r.niceDomain(G[0],G[1],W?.tickCount??6))}W?.min!==void 0&&(G[0]=W.min),W?.max!==void 0&&(G[1]=W.max),G=r.ensureSpan(G[0],G[1]);let K=(e,t)=>{let n=[];for(let t of e)t.type===`bar`&&t.barBase&&t.barTop?n.push(...d(t.barBase),...d(t.barTop)):t.stackBase&&t.stackTop?n.push(...d(t.stackBase),...d(t.stackTop)):t.type===`heatmap`?n.push(t.cols.yMin-t.cellHalf.y,t.cols.yMax+t.cellHalf.y):n.push(t.cols.yMin,t.cols.yMax);let r=e.filter(e=>e.type===`bar`);if((r.some(e=>!e.floating)||t)&&n.push(0),r.some(e=>e.showLabels)){let[e,t]=d(n);t>0&&n.push(t+(t-Math.min(0,e))*.1),e<0&&n.push(e-(Math.max(0,t)-e)*.1)}return n},q=F.filter(e=>e.yAxis===`left`),J=q.length?q:F,Y=J.filter(e=>e.type===`bar`),X;if(k===`category`)X=[-.5,Math.max(1,O.length)-.5];else{let e=K(J,D?.zero),t=Y.length>0||J.some(e=>e.type===`area`);if(X=r.ensureSpan(...d(e)),P.every(e=>e.type===`scatter`)){let e=(X[1]-X[0])*.06;X=[X[0]-e,X[1]+e]}else if((V.length||J.some(e=>e.type===`boxplot`))&&!Y.length){let e=(X[1]-X[0])*.04;X=[X[0]-e,X[1]+e]}(D?.nice??!U.length)&&k===`linear`&&(X=r.niceDomain(X[0],X[1],D?.tickCount??5)),j&&(R.length||B.length)&&(X=[d(e)[0]<0?-100:0,100]),t&&!D?.zero&&X[0]<0&&d(e)[0]>=0&&(X[0]=0)}D?.min!==void 0&&(X[0]=D.min),D?.max!==void 0&&(X[1]=D.max),X=r.ensureSpan(X[0],X[1]);let Z=o.yAxis2,ce=null,le=null,Q=P.filter(e=>e.yAxis===`right`);if(Q.length&&k!==`category`){let e=K(Q.filter(e=>!e.hidden),Z?.zero),[t,n]=r.ensureSpan(...d(e)),i=Z?.nice===!1?[t,n]:v(t,n,X,D?.tickCount??5);Z?.min!==void 0&&(i[0]=Z.min),Z?.max!==void 0&&(i[1]=Z.max),i=r.ensureSpan(i[0],i[1]);let a=(X[1]-X[0])/(i[1]-i[0]),o={scale:a,offset:X[0]-i[0]*a};le=o;let s=e=>e*o.scale+o.offset,c=e=>e?e.map(s):null,u=s(Math.min(Math.max(0,i[0]),i[1]));for(let e of Q){let t=e.stackBase;e.cols=ne(e.raw,o),e.barBase=c(e.barBase),e.barTop=c(e.barTop),e.stackTop=c(e.stackTop),e.stackBase=t&&t===e.raw.y0?e.cols.y0:t?c(t):e.type===`area`?new Float64Array(e.cols.count).fill(u):null}ce=l(Z,`linear`,[],!1,x)}let $=o.interaction===!1?!1:o.interaction===!0||o.interaction===void 0?!0:o.interaction.zoom??!0,ue=$===!1?{x:!1,y:!1}:$===!0?{x:!0,y:I}:{x:$.includes(`x`),y:$.includes(`y`)},de=D?.format??(j&&(R.length||B.length)?e=>i.formatPercent(e,x):void 0);return{series:P,x:l(W,T,E,!1,x),y:{...l(D,k,O,k!==`category`,x),format:de},y2:ce,y2Map:le,horizontal:M,locale:x,labels:C,formatValue:i.valueFormatter(x),base:{x:G,y:X},allScatter:I,zoom:ue,tooltipMode:S?.mode??(I?`nearest`:`axis`),baseline:Math.min(Math.max(0,X[0]),X[1]),minSpan:{x:T===`category`?1:(G[1]-G[0])*1e-7,y:k===`category`?1:(X[1]-X[0])*1e-7},percent:j,stacks:b.map(e=>e.stack!==void 0&&(e.type===`bar`||e.type===`line`||e.type===`area`||!e.type)?`${e.type===`bar`?`bar`:`line`}:${e.stack}`:null)}},x=(e,t)=>e.barTop?e.barTop[t]:e.stackTop?e.stackTop[t]:e.cols.y[t],S=new WeakMap,C=e=>{let t=S.get(e.cols);return t||(t=new o.GridIndex(e.cols.x,e.cols.y,e.cols.count),S.set(e.cols,t)),t};exports.alignedDomain=v,exports.buildModel=b,exports.detectXType=c,exports.gridOf=C,exports.plottedY=x;
2
2
  //# sourceMappingURL=model.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"model.cjs","names":["resolveStaticColor","collectCategories","xResolver","normalizeData","toCss","ensureSpan","niceDomain","GridIndex","require_color","require_data","require_scale","require_spatial","firstX","data","xs","list","i","item","detectXType","datas","x","axisModel","options","gridDefault","extent","min","max","values","v","smallestStep","step","c","cols","d","buildModel","resolve","resolver","theme","value","fallback","input","s","xType","categories","categoryMap","resolveX","name","resolverKey","usedKeys","series","key","index","entry","cache","type","color","pointColors","resolved","rgba","id","hidden","visible","allScatter","bars","band","slots","stack","group","slotWidth","sums","slot","totals","count","y","t","base","xOpts","xRange","pad","yOpts","yValues","yRange","zoomOption","zoomAxes","tooltip","grids","gridOf","grid"],"sources":["../../../../../../charts/src/engine/model.ts"],"sourcesContent":["// Options -> chart model: normalized data, colors, bar layout and the full\n// ranges of the axes. Pure (colors go through the theme's resolver).\n\nimport {\n resolveStaticColor,\n toCss,\n type ColorResolver,\n type Rgba,\n} from \"./color\";\nimport {\n collectCategories,\n normalizeData,\n xResolver,\n type SeriesColumns,\n} from \"./data\";\nimport { ensureSpan, niceDomain } from \"./scale\";\nimport { GridIndex } from \"./spatial\";\nimport type { ChartTheme } from \"./theme\";\nimport type {\n ChartAxisOptions,\n ChartAxisType,\n ChartOptions,\n ChartSeriesData,\n ChartSeriesType,\n} from \"./types\";\nimport type { Range } from \"./viewport\";\n\nexport interface AxisModel {\n type: ChartAxisType;\n reverse: boolean;\n categories: string[];\n title?: string;\n format?: (value: number) => string;\n grid: boolean;\n visible: boolean;\n tickCount?: number;\n}\n\nexport interface SeriesModel {\n index: number;\n /** Key of the GPU resources and of the data cache */\n key: string;\n id: string;\n name: string;\n type: ChartSeriesType;\n color: Rgba;\n colorCss: string;\n lineWidth: number;\n pointSize: number;\n opacity: number;\n hidden: boolean;\n showLabels: boolean;\n cols: SeriesColumns;\n /** Bars: x offset of the series inside a group and half of the bar width */\n barOffset: number;\n barHalfWidth: number;\n /** Bars: bottom / top of every bar (stacks included) */\n barBase: Float64Array | null;\n barTop: Float64Array | null;\n /** Scatter: resolved per-point colors */\n pointColors: (Rgba | undefined)[] | null;\n}\n\nexport interface ChartModel {\n series: SeriesModel[];\n x: AxisModel;\n y: AxisModel;\n /** Full ranges (zoomed out) */\n base: { x: Range; y: Range };\n allScatter: boolean;\n zoom: { x: boolean; y: boolean };\n tooltipMode: \"nearest\" | \"axis\";\n /** Y value the areas are filled to */\n baseline: number;\n /** Smallest zoomed spans */\n minSpan: { x: number; y: number };\n}\n\nexport interface DataCacheEntry {\n data: ChartSeriesData;\n resolverKey: string;\n cols: SeriesColumns;\n}\n\nexport type DataCache = Map<string, DataCacheEntry>;\n\nconst firstX = (data: ChartSeriesData): unknown => {\n if (typeof data === \"object\" && data !== null && !(\"length\" in data)) {\n const xs = (data as { x?: ArrayLike<unknown> }).x;\n return xs && xs.length ? xs[0] : undefined;\n }\n const list = data as ArrayLike<unknown>;\n for (let i = 0; i < Math.min(list.length, 8); i++) {\n const item = list[i];\n if (Array.isArray(item)) return item[0];\n if (item && typeof item === \"object\") return (item as { x?: unknown }).x;\n }\n return undefined;\n};\n\n/** Axis type when not given: dates -> time, strings -> category */\nexport const detectXType = (\n datas: readonly ChartSeriesData[],\n): ChartAxisType => {\n for (const data of datas) {\n const x = firstX(data);\n if (x instanceof Date) return \"time\";\n if (typeof x === \"string\") return \"category\";\n }\n return \"linear\";\n};\n\nconst axisModel = (\n options: ChartAxisOptions | undefined,\n type: ChartAxisType,\n categories: string[],\n gridDefault: boolean,\n): AxisModel => ({\n type,\n reverse: !!options?.reverse,\n categories,\n title: options?.title,\n format: options?.format,\n grid: options?.grid ?? gridDefault,\n visible: options?.visible ?? true,\n tickCount: options?.tickCount,\n});\n\nconst extent = (values: ArrayLike<number>): Range => {\n let min = Infinity;\n let max = -Infinity;\n for (let i = 0; i < values.length; i++) {\n const v = values[i];\n if (!Number.isFinite(v)) continue;\n if (v < min) min = v;\n if (v > max) max = v;\n }\n return [min, max];\n};\n\n/** Smallest positive gap between consecutive x values (bar width on numeric axes) */\nconst smallestStep = (cols: SeriesColumns[]): number => {\n let step = Infinity;\n for (const c of cols) {\n const xs = c.sorted ? c.x : Float64Array.from(c.x).sort();\n for (let i = 1; i < c.count; i++) {\n const d = xs[i] - xs[i - 1];\n if (d > 0 && d < step) step = d;\n }\n }\n return step;\n};\n\nexport const buildModel = (\n options: ChartOptions,\n theme: ChartTheme,\n hidden: ReadonlySet<string>,\n cache: DataCache,\n resolver: ColorResolver | null = null,\n): ChartModel => {\n const resolve: ColorResolver =\n resolver ??\n theme.resolve ??\n ((value, fallback) => resolveStaticColor(value, {}, fallback));\n const input = options.series;\n const datas = input.map((s) => s.data);\n const xType = options.xAxis?.type ?? detectXType(datas);\n const categories =\n xType === \"category\"\n ? [...(options.xAxis?.categories ?? collectCategories(datas))]\n : [];\n const categoryMap = new Map(categories.map((c, i) => [c, i]));\n const resolveX = xResolver(xType, (name) => categoryMap.get(name) ?? NaN);\n const resolverKey = `${xType}|${categories.join(\"\\u0001\")}`;\n\n const usedKeys = new Set<string>();\n const series: SeriesModel[] = input.map((s, index) => {\n let key = s.id ?? `#${index}`;\n while (usedKeys.has(key)) key += \"'\";\n usedKeys.add(key);\n let entry = cache.get(key);\n if (!entry || entry.data !== s.data || entry.resolverKey !== resolverKey) {\n entry = {\n data: s.data,\n resolverKey,\n cols: normalizeData(s.data, resolveX),\n };\n cache.set(key, entry);\n }\n const type = s.type ?? \"line\";\n const color = s.color\n ? resolve(s.color, theme.palette[index % theme.palette.length])\n : theme.palette[index % theme.palette.length];\n const cols = entry.cols;\n let pointColors: (Rgba | undefined)[] | null = null;\n if (type === \"scatter\" && cols.colors) {\n const resolved = new Map<string, Rgba>();\n pointColors = cols.colors.map((c) => {\n if (c === undefined) return undefined;\n let rgba = resolved.get(c);\n if (!rgba) resolved.set(c, (rgba = resolve(c, color)));\n return rgba;\n });\n }\n const id = s.id ?? String(index);\n return {\n index,\n key,\n id,\n name: s.name ?? `Series ${index + 1}`,\n type,\n color,\n colorCss: toCss(color),\n lineWidth: s.lineWidth ?? 2,\n pointSize: s.pointSize ?? 8,\n opacity:\n s.opacity ?? (type === \"area\" ? 0.28 : type === \"scatter\" ? 0.78 : 1),\n hidden: !!s.hidden || hidden.has(id),\n showLabels: !!s.showLabels,\n cols,\n barOffset: 0,\n barHalfWidth: 0,\n barBase: null,\n barTop: null,\n pointColors,\n };\n });\n\n const visible = series.filter((s) => !s.hidden);\n const allScatter =\n series.length > 0 && series.every((s) => s.type === \"scatter\");\n\n // Bars: groups (one slot per stack) and stacking\n const bars = visible.filter((s) => s.type === \"bar\");\n const band =\n xType === \"category\"\n ? 1\n : (() => {\n const step = smallestStep(bars.map((s) => s.cols));\n return Number.isFinite(step) ? step : 1;\n })();\n if (bars.length) {\n const slots = new Map<string, number>();\n for (const s of bars) {\n const stack = input[s.index].stack ?? `\\u0000${s.key}`;\n if (!slots.has(stack)) slots.set(stack, slots.size);\n }\n const group = band * (slots.size > 1 ? 0.78 : 0.62);\n const slotWidth = group / slots.size;\n const sums = new Map<string, Map<number, [number, number]>>();\n for (const s of bars) {\n const stack = input[s.index].stack ?? `\\u0000${s.key}`;\n const slot = slots.get(stack) ?? 0;\n s.barOffset = -group / 2 + slotWidth * (slot + 0.5);\n s.barHalfWidth = (slotWidth / 2) * (slots.size > 1 ? 0.86 : 1);\n let totals = sums.get(stack);\n if (!totals) sums.set(stack, (totals = new Map()));\n const { x, y, count } = s.cols;\n s.barBase = new Float64Array(count);\n s.barTop = new Float64Array(count);\n for (let i = 0; i < count; i++) {\n const v = y[i];\n if (!Number.isFinite(v)) {\n s.barBase[i] = NaN;\n s.barTop[i] = NaN;\n continue;\n }\n const t = totals.get(x[i]) ?? [0, 0];\n const base = v >= 0 ? t[0] : t[1];\n s.barBase[i] = base;\n s.barTop[i] = base + v;\n if (v >= 0) t[0] += v;\n else t[1] += v;\n totals.set(x[i], t);\n }\n }\n }\n\n // X range\n const xOpts = options.xAxis;\n let xRange: Range;\n if (xType === \"category\") {\n xRange = [-0.5, Math.max(1, categories.length) - 0.5];\n } else {\n const values: number[] = [];\n for (const s of visible) {\n values.push(s.cols.xMin, s.cols.xMax);\n if (s.type === \"bar\") {\n values.push(s.cols.xMin - band / 2, s.cols.xMax + band / 2);\n }\n }\n xRange = ensureSpan(\n ...extent(values),\n xType === \"time\" ? [Date.now() - 86400000, Date.now()] : [0, 1],\n );\n if (allScatter) {\n const pad = (xRange[1] - xRange[0]) * 0.04;\n xRange = [xRange[0] - pad, xRange[1] + pad];\n }\n const nice = xOpts?.nice ?? (allScatter && xType === \"linear\");\n if (nice && xType === \"linear\") {\n xRange = niceDomain(xRange[0], xRange[1], xOpts?.tickCount ?? 6);\n }\n }\n if (xOpts?.min !== undefined) xRange[0] = xOpts.min;\n if (xOpts?.max !== undefined) xRange[1] = xOpts.max;\n xRange = ensureSpan(xRange[0], xRange[1]);\n\n // Y range\n const yOpts = options.yAxis;\n const yValues: number[] = [];\n for (const s of visible) {\n if (s.type === \"bar\" && s.barBase && s.barTop) {\n yValues.push(...extent(s.barBase), ...extent(s.barTop));\n } else {\n yValues.push(s.cols.yMin, s.cols.yMax);\n }\n }\n if (bars.length || yOpts?.zero) yValues.push(0);\n let yRange = ensureSpan(...extent(yValues));\n if (allScatter) {\n const pad = (yRange[1] - yRange[0]) * 0.06;\n yRange = [yRange[0] - pad, yRange[1] + pad];\n }\n if ((yOpts?.nice ?? true) && (yOpts?.type ?? \"linear\") === \"linear\") {\n yRange = niceDomain(yRange[0], yRange[1], yOpts?.tickCount ?? 5);\n }\n if (bars.length && !yOpts?.zero) {\n // bars start at zero: no padding below / above it\n if (yRange[0] < 0 && extent(yValues)[0] >= 0) yRange[0] = 0;\n }\n if (yOpts?.min !== undefined) yRange[0] = yOpts.min;\n if (yOpts?.max !== undefined) yRange[1] = yOpts.max;\n yRange = ensureSpan(yRange[0], yRange[1]);\n\n const zoomOption =\n options.interaction === false\n ? false\n : options.interaction === true || options.interaction === undefined\n ? true\n : (options.interaction.zoom ?? true);\n const zoomAxes =\n zoomOption === false\n ? { x: false, y: false }\n : zoomOption === true\n ? { x: true, y: allScatter }\n : { x: zoomOption.includes(\"x\"), y: zoomOption.includes(\"y\") };\n\n const tooltip =\n typeof options.tooltip === \"object\" ? options.tooltip : undefined;\n\n return {\n series,\n x: axisModel(xOpts, xType, categories, false),\n y: axisModel(yOpts, yOpts?.type === \"time\" ? \"time\" : \"linear\", [], true),\n base: { x: xRange, y: yRange },\n allScatter,\n zoom: zoomAxes,\n tooltipMode: tooltip?.mode ?? (allScatter ? \"nearest\" : \"axis\"),\n baseline: Math.min(Math.max(0, yRange[0]), yRange[1]),\n minSpan: {\n x: xType === \"category\" ? 1 : (xRange[1] - xRange[0]) * 1e-7,\n y: (yRange[1] - yRange[0]) * 1e-7,\n },\n };\n};\n\nconst grids = new WeakMap<SeriesColumns, GridIndex>();\n\n/** Spatial index of a scatter series, built on first use and kept with its data */\nexport const gridOf = (s: SeriesModel): GridIndex => {\n let grid = grids.get(s.cols);\n if (!grid) {\n grid = new GridIndex(s.cols.x, s.cols.y, s.cols.count);\n grids.set(s.cols, grid);\n }\n return grid;\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"model.cjs","names":["tickStep","ensureSpan","niceDomain","resolveStaticColor","resolveLocale","chartLabels","collectCategories","xResolver","collectYCategories","normalizeData","mix","packColor","rampColor","toCss","formatPercent","valueFormatter","GridIndex","require_color","require_data","require_locale","require_scale","require_format","require_labels","require_spatial","firstX","data","xs","list","i","item","detectXType","datas","x","axisModel","options","gridDefault","definedEntries","out","value","key","extent","min","max","values","v","smallestStep","step","columns","sorted","k","d","bandOf","category","axis","s","stackValues","totals","percent","byX","stack","count","y","t","running","members","base","top","valid","sums","total","b","DEFAULT_UP","DEFAULT_DOWN","hasDateY","precise","nextStep","power","f","alignedDomain","a0","a1","left","stepL","n","lo","hi","start","mapped","mapColumns","map","hit","raw","column","a","cols","buildModel","resolve","resolver","theme","fallback","input","locale","tooltipOptions","labels","xType","categories","categoryMap","c","resolveX","name","yOpts","heatmapData","yCategories","yType","yCategoryMap","resolveY","resolverKey","horizontal","usedKeys","series","index","entry","cache","type","paletteColor","color","pointColors","resolved","rgba","colorScale","valueRange","cellColors","span","id","hidden","visible","allScatter","slotted","bars","band","slots","stackId","share","w","group","slotWidth","slot","stackedBars","stacked","percentStacked","p","y0","stackedLines","candles","candleBand","heatmaps","cx","cy","xOpts","xRange","pad","pointsOnly","valuesOf","listBars","zero","leftVisible","leftSeries","leftBars","yRange","yValues","filled","y2Opts","y2","y2Map","rightSeries","domain","scale","rawBase","zoomOption","zoomAxes","yFormat","plottedY","grids","gridOf","grid"],"sources":["../../../../../../charts/src/engine/model.ts"],"sourcesContent":["// Options -> chart model: normalized data, colors, bar layout, stacks and\n// the full ranges of the axes. Pure (colors go through the theme's resolver).\n\nimport {\n mix,\n packColor,\n rampColor,\n resolveStaticColor,\n toCss,\n type ColorResolver,\n type Rgba,\n} from \"./color\";\nimport {\n collectCategories,\n collectYCategories,\n normalizeData,\n xResolver,\n type SeriesColumns,\n type YResolver,\n} from \"./data\";\nimport { formatPercent, valueFormatter } from \"./format\";\nimport { chartLabels } from \"./labels\";\nimport { resolveLocale } from \"./locale\";\nimport { ensureSpan, niceDomain, tickStep } from \"./scale\";\nimport { GridIndex } from \"./spatial\";\nimport type { ChartTheme } from \"./theme\";\nimport type {\n ChartAxisOptions,\n ChartAxisType,\n ChartCurve,\n ChartOptions,\n ChartSeries,\n ChartSeriesData,\n ChartLabels,\n ChartSeriesType,\n ChartTimeZone,\n} from \"./types\";\nimport type { Range } from \"./viewport\";\n\nexport interface AxisModel {\n type: ChartAxisType;\n reverse: boolean;\n categories: string[];\n title?: string;\n format?: (value: number) => string;\n grid: boolean;\n visible: boolean;\n tickCount?: number;\n /** Locale of the tick and tooltip labels (historical English texts when omitted) */\n locale?: string;\n /** Calendar of a time axis */\n timeZone?: ChartTimeZone;\n}\n\nexport interface SeriesModel {\n index: number;\n /** Key of the GPU resources and of the data cache */\n key: string;\n id: string;\n name: string;\n type: ChartSeriesType;\n color: Rgba;\n colorCss: string;\n lineWidth: number;\n pointSize: number;\n opacity: number;\n hidden: boolean;\n showLabels: boolean;\n curve: ChartCurve;\n /**\n * Plotted columns: the data, mapped onto the left axis for the series of\n * the right axis (`raw` keeps the values of the data)\n */\n cols: SeriesColumns;\n /** Columns of the data (shown in tooltips and labels) */\n raw: SeriesColumns;\n /** Value axis of the series */\n yAxis: \"left\" | \"right\";\n /** Bars with a start (`y0`): drawn from it, never stacked */\n floating: boolean;\n /** Bars / candlesticks: x offset of the series inside a group and half of the bar width */\n barOffset: number;\n barHalfWidth: number;\n /** Bars: bottom / top of every bar (stacks included) */\n barBase: Float64Array | null;\n barTop: Float64Array | null;\n /** Stacked lines / areas: bottom / top of every point */\n stackBase: Float64Array | null;\n stackTop: Float64Array | null;\n /** Scatter / bar: resolved per-point colors */\n pointColors: (Rgba | undefined)[] | null;\n /** Candlesticks: colors of the rising / falling candles */\n upColor: Rgba;\n downColor: Rgba;\n /** Heatmaps: packed color of every cell (0 = no cell) and half of a cell, in data units */\n cellColors: Uint32Array | null;\n cellHalf: { x: number; y: number };\n /** Heatmaps: ramp of the colors and the values at its ends */\n colorScale: Rgba[];\n valueRange: Range;\n /** Corner radius in CSS pixels (bars, heatmap cells) */\n radius: number;\n /** Tooltip format of the values */\n format?: (value: number) => string;\n /** Scatter: name of the `value` of the points */\n valueName?: string;\n}\n\n/** Linear map of the right axis onto the left one: `left = right * scale + offset` */\nexport interface AxisMap {\n scale: number;\n offset: number;\n}\n\nexport interface ChartModel {\n series: SeriesModel[];\n x: AxisModel;\n y: AxisModel;\n /** Right value axis (`yAxis2`), `null` when no series uses it */\n y2: AxisModel | null;\n /** Right axis values -> left axis values */\n y2Map: AxisMap | null;\n /** The x axis runs down the left side, the values along the bottom */\n horizontal: boolean;\n /** Resolved locale (`locale` option, else the page language) */\n locale: string;\n /** Texts of the locale with the `labels` overrides */\n labels: ChartLabels;\n /** Tooltip value of the locale (series without `format`) */\n formatValue: (value: number) => string;\n /** Full ranges (zoomed out) */\n base: { x: Range; y: Range };\n /** Every series is a scatter (or a heatmap): nearest tooltips, xy zoom */\n allScatter: boolean;\n zoom: { x: boolean; y: boolean };\n tooltipMode: \"nearest\" | \"axis\";\n /** Y value the areas are filled to */\n baseline: number;\n /** Smallest zoomed spans */\n minSpan: { x: number; y: number };\n /** Stacks are scaled to 100% */\n percent: boolean;\n /** Stack id of every series (`null` when not stacked) */\n stacks: (string | null)[];\n}\n\nexport interface DataCacheEntry {\n data: ChartSeriesData;\n resolverKey: string;\n cols: SeriesColumns;\n}\n\nexport type DataCache = Map<string, DataCacheEntry>;\n\nconst firstX = (data: ChartSeriesData): unknown => {\n if (typeof data === \"object\" && data !== null && !(\"length\" in data)) {\n const xs = (data as { x?: ArrayLike<unknown> }).x;\n return xs && xs.length ? xs[0] : undefined;\n }\n const list = data as ArrayLike<unknown>;\n for (let i = 0; i < Math.min(list.length, 8); i++) {\n const item = list[i];\n if (Array.isArray(item)) return item[0];\n if (item && typeof item === \"object\") return (item as { x?: unknown }).x;\n }\n return undefined;\n};\n\n/** Axis type when not given: dates -> time, strings -> category */\nexport const detectXType = (\n datas: readonly ChartSeriesData[],\n): ChartAxisType => {\n for (const data of datas) {\n const x = firstX(data);\n if (x instanceof Date) return \"time\";\n if (typeof x === \"string\") return \"category\";\n }\n return \"linear\";\n};\n\nconst axisModel = (\n options: ChartAxisOptions | undefined,\n type: ChartAxisType,\n categories: string[],\n gridDefault: boolean,\n locale: string,\n): AxisModel => ({\n type,\n reverse: !!options?.reverse,\n categories,\n title: options?.title,\n format: options?.format,\n grid: options?.grid ?? gridDefault,\n visible: options?.visible ?? true,\n tickCount: options?.tickCount,\n locale,\n timeZone: options?.timeZone ?? \"local\",\n});\n\n/** Defined entries only (`{ open: undefined }` keeps the built-in text) */\nconst definedEntries = <T extends object>(value: T | undefined): Partial<T> => {\n const out: Partial<T> = {};\n if (!value) return out;\n for (const key of Object.keys(value) as (keyof T)[]) {\n if (value[key] !== undefined) out[key] = value[key];\n }\n return out;\n};\n\nconst extent = (values: ArrayLike<number>): Range => {\n let min = Infinity;\n let max = -Infinity;\n for (let i = 0; i < values.length; i++) {\n const v = values[i];\n if (!Number.isFinite(v)) continue;\n if (v < min) min = v;\n if (v > max) max = v;\n }\n return [min, max];\n};\n\n/** Smallest positive gap between consecutive values (bar width on numeric axes) */\nconst smallestStep = (columns: ArrayLike<number>[], sorted: boolean[]) => {\n let step = Infinity;\n columns.forEach((values, k) => {\n const xs = sorted[k] ? values : Float64Array.from(values).sort();\n for (let i = 1; i < xs.length; i++) {\n const d = xs[i] - xs[i - 1];\n if (d > 0 && d < step) step = d;\n }\n });\n return step;\n};\n\nconst bandOf = (list: SeriesModel[], axis: \"x\" | \"y\", category: boolean) => {\n if (category) return 1;\n const step = smallestStep(\n list.map((s) => (axis === \"x\" ? s.cols.x : s.cols.y)),\n list.map((s) => axis === \"x\" && s.cols.sorted),\n );\n return Number.isFinite(step) ? step : 1;\n};\n\n/**\n * Stacks the y values of series sharing a stack id (positive and negative\n * values separately); `percent` scales every stack to 100 at each x\n */\nconst stackValues = (\n list: { s: SeriesModel; stack: string }[],\n percent: boolean,\n): { base: Float64Array; top: Float64Array }[] => {\n const totals = new Map<string, Map<number, [number, number]>>();\n if (percent) {\n for (const { s, stack } of list) {\n let byX = totals.get(stack);\n if (!byX) totals.set(stack, (byX = new Map()));\n const { x, y, count } = s.cols;\n for (let i = 0; i < count; i++) {\n const v = y[i];\n if (!Number.isFinite(v)) continue;\n const t = byX.get(x[i]) ?? [0, 0];\n if (v >= 0) t[0] += v;\n else t[1] -= v;\n byX.set(x[i], t);\n }\n }\n }\n const running = new Map<string, Map<number, [number, number]>>();\n const members = new Map<string, number>();\n for (const { stack } of list)\n members.set(stack, (members.get(stack) ?? 0) + 1);\n return list.map(({ s, stack }) => {\n const { x, y, count } = s.cols;\n if (!percent && members.get(stack) === 1) {\n // alone in its stack (e.g. grouped bars): from zero, no bookkeeping\n const base = new Float64Array(count);\n const top = new Float64Array(count);\n for (let i = 0; i < count; i++) {\n const v = y[i];\n const valid = Number.isFinite(v);\n base[i] = valid ? 0 : NaN;\n top[i] = valid ? v : NaN;\n }\n return { base, top };\n }\n let byX = running.get(stack);\n if (!byX) running.set(stack, (byX = new Map()));\n const sums = totals.get(stack);\n const base = new Float64Array(count);\n const top = new Float64Array(count);\n for (let i = 0; i < count; i++) {\n let v = y[i];\n if (!Number.isFinite(v)) {\n base[i] = NaN;\n top[i] = NaN;\n continue;\n }\n if (sums) {\n const t = sums.get(x[i]);\n const total = t ? (v >= 0 ? t[0] : t[1]) : 0;\n v = total > 0 ? (v / total) * 100 : 0;\n }\n const t = byX.get(x[i]) ?? [0, 0];\n const b = v >= 0 ? t[0] : t[1];\n base[i] = b;\n top[i] = b + v;\n if (v >= 0) t[0] += v;\n else t[1] += v;\n byX.set(x[i], t);\n }\n return { base, top };\n });\n};\n\nconst DEFAULT_UP = \"var(--success-color, #16a34a)\";\nconst DEFAULT_DOWN = \"var(--danger-color, #dc2626)\";\n\n/** Dates in the y values (or starts) of objects: a time value axis */\nconst hasDateY = (datas: readonly ChartSeriesData[]): boolean => {\n for (const data of datas) {\n if (typeof data !== \"object\" || data === null || !(\"length\" in data))\n continue;\n const list = data as ArrayLike<unknown>;\n for (let i = 0; i < Math.min(list.length, 8); i++) {\n const item = list[i];\n if (item && typeof item === \"object\" && !Array.isArray(item)) {\n const d = item as { y?: unknown; y0?: unknown };\n if (d.y instanceof Date || d.y0 instanceof Date) return true;\n }\n }\n }\n return false;\n};\n\nconst precise = (v: number) => Number(v.toPrecision(12));\n\n/** Next step of the 1, 2, 5 × 10^k sequence */\nconst nextStep = (step: number) => {\n const power = 10 ** Math.floor(Math.log10(step) + 1e-9);\n const f = step / power;\n return (f < 1.5 ? 2 : f < 3.5 ? 5 : 10) * power;\n};\n\n/**\n * Range of the right axis covering [lo, hi] with as many tick intervals as\n * the left range has (its ticks then line up with the left grid)\n */\nexport const alignedDomain = (\n lo: number,\n hi: number,\n left: Range,\n count: number,\n): Range => {\n const [a0, a1] = left;\n const stepL = tickStep(a0, a1, count);\n const n = stepL > 0 ? Math.round((a1 - a0) / stepL) : 0;\n [lo, hi] = ensureSpan(lo, hi);\n if (n < 1 || Math.abs(n * stepL - (a1 - a0)) > stepL * 1e-6) {\n return niceDomain(lo, hi, count);\n }\n let step = tickStep(lo, hi, n);\n for (let k = 0; k < 40 && step > 0; k++) {\n const start = Math.floor(lo / step + 1e-9) * step;\n if (start + n * step >= hi - step * 1e-9) {\n return [precise(start), precise(start + n * step)];\n }\n step = nextStep(step);\n }\n return niceDomain(lo, hi, count);\n};\n\nconst mapped = new WeakMap<\n SeriesColumns,\n { key: string; cols: SeriesColumns }\n>();\n\n/** Columns of a right-axis series in left axis units (cached with the data) */\nconst mapColumns = (raw: SeriesColumns, map: AxisMap): SeriesColumns => {\n const key = `${map.scale},${map.offset}`;\n const hit = mapped.get(raw);\n if (hit && hit.key === key) return hit.cols;\n const f = (v: number) => v * map.scale + map.offset;\n const column = (a: Float64Array | null) => (a ? a.map(f) : null);\n const lo = f(raw.yMin);\n const hi = f(raw.yMax);\n const cols: SeriesColumns = {\n ...raw,\n y: raw.y.map(f),\n open: column(raw.open),\n high: column(raw.high),\n low: column(raw.low),\n y0: column(raw.y0),\n q1: column(raw.q1),\n q3: column(raw.q3),\n outliers: raw.outliers ? raw.outliers.map((list) => list?.map(f)) : null,\n yMin: Math.min(lo, hi),\n yMax: Math.max(lo, hi),\n };\n mapped.set(raw, { key, cols });\n return cols;\n};\n\nexport const buildModel = (\n options: ChartOptions,\n theme: ChartTheme,\n hidden: ReadonlySet<string>,\n cache: DataCache,\n resolver: ColorResolver | null = null,\n): ChartModel => {\n const resolve: ColorResolver =\n resolver ??\n theme.resolve ??\n ((value, fallback) => resolveStaticColor(value, {}, fallback));\n const input = options.series;\n // resolved at every build: a page language switch shows on the next update\n const locale = resolveLocale(options.locale);\n const tooltipOptions =\n typeof options.tooltip === \"object\" ? options.tooltip : undefined;\n const labels = chartLabels(locale, {\n ...definedEntries(tooltipOptions?.labels),\n ...definedEntries(options.labels),\n });\n const datas = input.map((s) => s.data);\n const xType = options.xAxis?.type ?? detectXType(datas);\n const categories =\n xType === \"category\"\n ? [...(options.xAxis?.categories ?? collectCategories(datas))]\n : [];\n const categoryMap = new Map(categories.map((c, i) => [c, i]));\n const resolveX = xResolver(xType, (name) => categoryMap.get(name) ?? NaN);\n\n // category y axis (heatmap rows): explicit, or detected from string y values\n const yOpts = options.yAxis;\n const heatmapData = input\n .filter((s) => s.type === \"heatmap\")\n .map((s) => s.data);\n const yCategories =\n yOpts?.type === \"category\" || (!yOpts?.type && heatmapData.length)\n ? [...(yOpts?.categories ?? collectYCategories(heatmapData))]\n : [];\n const yType: ChartAxisType =\n yOpts?.type === \"category\" || yCategories.length\n ? \"category\"\n : yOpts?.type === \"time\" || (!yOpts?.type && hasDateY(datas))\n ? \"time\"\n : \"linear\";\n const yCategoryMap = new Map(yCategories.map((c, i) => [c, i]));\n const resolveY: YResolver = (v) =>\n typeof v === \"number\"\n ? v\n : typeof v === \"string\"\n ? yType === \"category\"\n ? (yCategoryMap.get(v) ?? NaN)\n : yType === \"time\"\n ? Date.parse(v)\n : Number(v)\n : v instanceof Date\n ? v.getTime()\n : NaN;\n const resolverKey = `${xType}|${categories.join(\"\\u0001\")}|${yType}|${yCategories.join(\"\\u0001\")}`;\n const percent = options.stackMode === \"percent\";\n const horizontal = options.orientation === \"horizontal\";\n\n const usedKeys = new Set<string>();\n const series: SeriesModel[] = input.map((s: ChartSeries, index) => {\n let key = s.id ?? `#${index}`;\n while (usedKeys.has(key)) key += \"'\";\n usedKeys.add(key);\n let entry = cache.get(key);\n if (!entry || entry.data !== s.data || entry.resolverKey !== resolverKey) {\n entry = {\n data: s.data,\n resolverKey,\n cols: normalizeData(s.data, resolveX, resolveY),\n };\n cache.set(key, entry);\n }\n const type = s.type ?? \"line\";\n const paletteColor = theme.palette[index % theme.palette.length];\n const color = s.color ? resolve(s.color, paletteColor) : paletteColor;\n const cols = entry.cols;\n let pointColors: (Rgba | undefined)[] | null = null;\n if (\n (type === \"scatter\" || type === \"bar\" || type === \"boxplot\") &&\n cols.colors\n ) {\n const resolved = new Map<string, Rgba>();\n pointColors = cols.colors.map((c) => {\n if (c === undefined) return undefined;\n let rgba = resolved.get(c);\n if (!rgba) resolved.set(c, (rgba = resolve(c, color)));\n return rgba;\n });\n }\n let colorScale: Rgba[] = [];\n let valueRange: Range = [0, 1];\n let cellColors: Uint32Array | null = null;\n if (type === \"heatmap\") {\n colorScale =\n s.colorScale && s.colorScale.length\n ? s.colorScale.map((c) => resolve(c, color))\n : [mix(theme.background, color, 0.08), color];\n valueRange = s.valueRange\n ? [s.valueRange[0], s.valueRange[1]]\n : [cols.valueMin, cols.valueMax];\n if (!Number.isFinite(valueRange[0])) valueRange = [0, 1];\n const values = cols.value ?? cols.y;\n const [lo, hi] = valueRange;\n const span = hi - lo || 1;\n cellColors = new Uint32Array(cols.count);\n for (let i = 0; i < cols.count; i++) {\n const v = values[i];\n if (!Number.isFinite(v) || !Number.isFinite(cols.y[i])) continue;\n // 0 means \"no cell\": a fully transparent color packs to 0 as well\n cellColors[i] = packColor(rampColor(colorScale, (v - lo) / span));\n }\n }\n const id = s.id ?? String(index);\n return {\n index,\n key,\n id,\n name: s.name ?? `${labels.series} ${index + 1}`,\n type,\n color,\n colorCss: toCss(color),\n lineWidth:\n s.lineWidth ??\n (type === \"candlestick\" ? 1 : type === \"boxplot\" ? 1.5 : 2),\n pointSize: s.pointSize ?? (type === \"boxplot\" ? 6 : 8),\n opacity:\n s.opacity ??\n (type === \"area\"\n ? 0.28\n : type === \"scatter\"\n ? 0.78\n : type === \"boxplot\"\n ? 0.22\n : 1),\n hidden: !!s.hidden || hidden.has(id),\n showLabels: !!s.showLabels,\n curve: s.curve ?? \"linear\",\n cols,\n raw: cols,\n yAxis: s.yAxis === \"right\" && !horizontal ? \"right\" : \"left\",\n floating: type === \"bar\" && !!cols.y0,\n barOffset: 0,\n barHalfWidth: 0,\n barBase: null,\n barTop: null,\n stackBase: null,\n stackTop: null,\n pointColors,\n upColor:\n type === \"candlestick\"\n ? resolve(s.upColor ?? DEFAULT_UP, [0.09, 0.64, 0.29, 1])\n : color,\n downColor:\n type === \"candlestick\"\n ? resolve(s.downColor ?? DEFAULT_DOWN, [0.86, 0.15, 0.15, 1])\n : color,\n cellColors,\n cellHalf: { x: 0.5, y: 0.5 },\n colorScale,\n valueRange,\n radius: s.radius ?? (type === \"heatmap\" ? 2 : type === \"boxplot\" ? 0 : 3),\n format: s.format,\n valueName: s.valueName,\n };\n });\n\n const visible = series.filter((s) => !s.hidden);\n const allScatter =\n series.length > 0 &&\n series.every((s) => s.type === \"scatter\" || s.type === \"heatmap\");\n\n // Bars and box plots: groups (one slot per stack) and stacking; floating\n // bars (with starts) are drawn from their starts\n const slotted = visible.filter(\n (s) => s.type === \"bar\" || s.type === \"boxplot\",\n );\n const bars = visible.filter((s) => s.type === \"bar\");\n const band = bandOf(slotted, \"x\", xType === \"category\");\n if (slotted.length) {\n const slots = new Map<string, number>();\n const stackId = (s: SeriesModel) =>\n input[s.index].stack ?? `\\u0000${s.key}`;\n for (const s of slotted) {\n if (!slots.has(stackId(s))) slots.set(stackId(s), slots.size);\n }\n let share = 0;\n for (const s of slotted) {\n const w = input[s.index].barWidth;\n if (w !== undefined && w > share) share = Math.min(1, w);\n }\n const group = band * (share || (slots.size > 1 ? 0.78 : 0.62));\n const slotWidth = group / slots.size;\n for (const s of slotted) {\n const slot = slots.get(stackId(s)) ?? 0;\n s.barOffset = -group / 2 + slotWidth * (slot + 0.5);\n s.barHalfWidth = (slotWidth / 2) * (slots.size > 1 ? 0.86 : 1);\n }\n const stackedBars = bars.filter((s) => !s.floating);\n const stacked = stackValues(\n stackedBars.map((s) => ({ s, stack: stackId(s) })),\n false,\n );\n const percentStacked = percent\n ? stackValues(\n stackedBars\n .filter((s) => input[s.index].stack !== undefined)\n .map((s) => ({ s, stack: stackId(s) })),\n true,\n )\n : [];\n let p = 0;\n stackedBars.forEach((s, k) => {\n const values =\n percent && input[s.index].stack !== undefined\n ? percentStacked[p++]\n : stacked[k];\n s.barBase = values.base;\n s.barTop = values.top;\n });\n for (const s of bars) {\n const { y, y0, count } = s.cols;\n if (!s.floating || !y0) continue;\n const base = new Float64Array(count);\n const top = new Float64Array(count);\n for (let i = 0; i < count; i++) {\n const valid = Number.isFinite(y[i]);\n base[i] = valid ? (Number.isFinite(y0[i]) ? y0[i] : 0) : NaN;\n top[i] = valid ? y[i] : NaN;\n }\n s.barBase = base;\n s.barTop = top;\n }\n }\n\n // Range areas: filled down to their lower edges\n for (const s of visible) {\n if (s.type === \"area\" && s.cols.y0 && input[s.index].stack === undefined)\n s.stackBase = s.cols.y0;\n }\n\n // Stacked lines / areas\n const stackedLines = visible.filter(\n (s) =>\n (s.type === \"line\" || s.type === \"area\") &&\n input[s.index].stack !== undefined,\n );\n if (stackedLines.length) {\n const values = stackValues(\n stackedLines.map((s) => ({ s, stack: input[s.index].stack ?? \"\" })),\n percent,\n );\n stackedLines.forEach((s, k) => {\n s.stackBase = values[k].base;\n s.stackTop = values[k].top;\n });\n }\n\n // Candlesticks: one band per x, bodies of 60%\n const candles = visible.filter((s) => s.type === \"candlestick\");\n const candleBand = bandOf(candles, \"x\", xType === \"category\");\n for (const s of candles) s.barHalfWidth = candleBand * 0.3;\n\n // Heatmaps: cells of the size of the smallest step\n const heatmaps = visible.filter((s) => s.type === \"heatmap\");\n if (heatmaps.length) {\n const cx = bandOf(heatmaps, \"x\", xType === \"category\") / 2;\n const cy = bandOf(heatmaps, \"y\", yType === \"category\") / 2;\n for (const s of heatmaps) s.cellHalf = { x: cx, y: cy };\n }\n\n // X range\n const xOpts = options.xAxis;\n let xRange: Range;\n if (xType === \"category\") {\n xRange = [-0.5, Math.max(1, categories.length) - 0.5];\n } else {\n const values: number[] = [];\n for (const s of visible) {\n values.push(s.cols.xMin, s.cols.xMax);\n const pad =\n s.type === \"bar\" || s.type === \"boxplot\"\n ? band / 2\n : s.type === \"candlestick\"\n ? candleBand / 2\n : s.type === \"heatmap\"\n ? s.cellHalf.x\n : 0;\n if (pad) values.push(s.cols.xMin - pad, s.cols.xMax + pad);\n }\n xRange = ensureSpan(\n ...extent(values),\n xType === \"time\" ? [Date.now() - 86400000, Date.now()] : [0, 1],\n );\n const pointsOnly = series.every((s) => s.type === \"scatter\");\n if (pointsOnly) {\n const pad = (xRange[1] - xRange[0]) * 0.04;\n xRange = [xRange[0] - pad, xRange[1] + pad];\n }\n const nice = xOpts?.nice ?? (pointsOnly && xType === \"linear\");\n if (nice && xType === \"linear\") {\n xRange = niceDomain(xRange[0], xRange[1], xOpts?.tickCount ?? 6);\n }\n }\n if (xOpts?.min !== undefined) xRange[0] = xOpts.min;\n if (xOpts?.max !== undefined) xRange[1] = xOpts.max;\n xRange = ensureSpan(xRange[0], xRange[1]);\n\n // Y range (left axis: the series of the right axis are mapped onto it)\n const valuesOf = (list: SeriesModel[], zero: boolean | undefined) => {\n const values: number[] = [];\n for (const s of list) {\n if (s.type === \"bar\" && s.barBase && s.barTop) {\n values.push(...extent(s.barBase), ...extent(s.barTop));\n } else if (s.stackBase && s.stackTop) {\n values.push(...extent(s.stackBase), ...extent(s.stackTop));\n } else if (s.type === \"heatmap\") {\n values.push(s.cols.yMin - s.cellHalf.y, s.cols.yMax + s.cellHalf.y);\n } else {\n values.push(s.cols.yMin, s.cols.yMax);\n }\n }\n const listBars = list.filter((s) => s.type === \"bar\");\n if (listBars.some((s) => !s.floating) || zero) values.push(0);\n if (listBars.some((s) => s.showLabels)) {\n // room for the value labels above the tallest bar\n const [lo, hi] = extent(values);\n if (hi > 0) values.push(hi + (hi - Math.min(0, lo)) * 0.1);\n if (lo < 0) values.push(lo - (Math.max(0, hi) - lo) * 0.1);\n }\n return values;\n };\n const leftVisible = visible.filter((s) => s.yAxis === \"left\");\n const leftSeries = leftVisible.length ? leftVisible : visible;\n const leftBars = leftSeries.filter((s) => s.type === \"bar\");\n let yRange: Range;\n if (yType === \"category\") {\n yRange = [-0.5, Math.max(1, yCategories.length) - 0.5];\n } else {\n const yValues = valuesOf(leftSeries, yOpts?.zero);\n const filled =\n leftBars.length > 0 || leftSeries.some((s) => s.type === \"area\");\n yRange = ensureSpan(...extent(yValues));\n if (series.every((s) => s.type === \"scatter\")) {\n const pad = (yRange[1] - yRange[0]) * 0.06;\n yRange = [yRange[0] - pad, yRange[1] + pad];\n } else if (\n (candles.length || leftSeries.some((s) => s.type === \"boxplot\")) &&\n !leftBars.length\n ) {\n // room above / below the wicks and the outliers\n const pad = (yRange[1] - yRange[0]) * 0.04;\n yRange = [yRange[0] - pad, yRange[1] + pad];\n }\n if ((yOpts?.nice ?? !heatmaps.length) && yType === \"linear\") {\n yRange = niceDomain(yRange[0], yRange[1], yOpts?.tickCount ?? 5);\n }\n if (percent && (bars.length || stackedLines.length)) {\n // 100% stacks: exactly 0-100 (or -100-100)\n yRange = [extent(yValues)[0] < 0 ? -100 : 0, 100];\n }\n if (filled && !yOpts?.zero) {\n // bars start at zero: no padding below / above it\n if (yRange[0] < 0 && extent(yValues)[0] >= 0) yRange[0] = 0;\n }\n }\n if (yOpts?.min !== undefined) yRange[0] = yOpts.min;\n if (yOpts?.max !== undefined) yRange[1] = yOpts.max;\n yRange = ensureSpan(yRange[0], yRange[1]);\n\n // Right axis: a range aligned on the left ticks; its series are mapped\n // onto the left axis\n const y2Opts = options.yAxis2;\n let y2: AxisModel | null = null;\n let y2Map: AxisMap | null = null;\n const rightSeries = series.filter((s) => s.yAxis === \"right\");\n if (rightSeries.length && yType !== \"category\") {\n const rightVisible = rightSeries.filter((s) => !s.hidden);\n const values = valuesOf(rightVisible, y2Opts?.zero);\n const [lo, hi] = ensureSpan(...extent(values));\n let domain: Range =\n y2Opts?.nice === false\n ? [lo, hi]\n : alignedDomain(lo, hi, yRange, yOpts?.tickCount ?? 5);\n if (y2Opts?.min !== undefined) domain[0] = y2Opts.min;\n if (y2Opts?.max !== undefined) domain[1] = y2Opts.max;\n domain = ensureSpan(domain[0], domain[1]);\n const scale = (yRange[1] - yRange[0]) / (domain[1] - domain[0]);\n const map: AxisMap = { scale, offset: yRange[0] - domain[0] * scale };\n y2Map = map;\n const f = (v: number) => v * map.scale + map.offset;\n const column = (a: Float64Array | null) => (a ? a.map(f) : null);\n const zero = f(Math.min(Math.max(0, domain[0]), domain[1]));\n for (const s of rightSeries) {\n const rawBase = s.stackBase;\n s.cols = mapColumns(s.raw, map);\n s.barBase = column(s.barBase);\n s.barTop = column(s.barTop);\n s.stackTop = column(s.stackTop);\n s.stackBase =\n rawBase && rawBase === s.raw.y0\n ? s.cols.y0\n : rawBase\n ? column(rawBase)\n : s.type === \"area\"\n ? new Float64Array(s.cols.count).fill(zero)\n : null;\n }\n y2 = axisModel(y2Opts, \"linear\", [], false, locale);\n }\n\n const zoomOption =\n options.interaction === false\n ? false\n : options.interaction === true || options.interaction === undefined\n ? true\n : (options.interaction.zoom ?? true);\n const zoomAxes =\n zoomOption === false\n ? { x: false, y: false }\n : zoomOption === true\n ? { x: true, y: allScatter }\n : { x: zoomOption.includes(\"x\"), y: zoomOption.includes(\"y\") };\n\n const yFormat =\n yOpts?.format ??\n (percent && (bars.length || stackedLines.length)\n ? (v: number) => formatPercent(v, locale)\n : undefined);\n\n return {\n series,\n x: axisModel(xOpts, xType, categories, false, locale),\n y: {\n ...axisModel(yOpts, yType, yCategories, yType !== \"category\", locale),\n format: yFormat,\n },\n y2,\n y2Map,\n horizontal,\n locale,\n labels,\n formatValue: valueFormatter(locale),\n base: { x: xRange, y: yRange },\n allScatter,\n zoom: zoomAxes,\n tooltipMode: tooltipOptions?.mode ?? (allScatter ? \"nearest\" : \"axis\"),\n baseline: Math.min(Math.max(0, yRange[0]), yRange[1]),\n minSpan: {\n x: xType === \"category\" ? 1 : (xRange[1] - xRange[0]) * 1e-7,\n y: yType === \"category\" ? 1 : (yRange[1] - yRange[0]) * 1e-7,\n },\n percent,\n stacks: input.map((s) =>\n s.stack !== undefined &&\n (s.type === \"bar\" || s.type === \"line\" || s.type === \"area\" || !s.type)\n ? `${s.type === \"bar\" ? \"bar\" : \"line\"}:${s.stack}`\n : null,\n ),\n };\n};\n\n/** Y value drawn for a point: its stacked top for stacks, the close for candles */\nexport const plottedY = (s: SeriesModel, i: number): number =>\n s.barTop ? s.barTop[i] : s.stackTop ? s.stackTop[i] : s.cols.y[i];\n\nconst grids = new WeakMap<SeriesColumns, GridIndex>();\n\n/** Spatial index of a scatter series, built on first use and kept with its data */\nexport const gridOf = (s: SeriesModel): GridIndex => {\n let grid = grids.get(s.cols);\n if (!grid) {\n grid = new GridIndex(s.cols.x, s.cols.y, s.cols.count);\n grids.set(s.cols, grid);\n }\n return grid;\n};\n"],"mappings":"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"}