minerva-design 1.3.0 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1337) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/README.md +21 -21
  3. package/custom-elements.json +18546 -7329
  4. package/dist/angular/fesm2022/minerva-angular.mjs +8303 -172
  5. package/dist/angular/fesm2022/minerva-angular.mjs.map +1 -1
  6. package/dist/angular/types/minerva-angular.d.ts +2809 -0
  7. package/dist/charts/canvas.d.cts +8 -3
  8. package/dist/charts/canvas.d.ts +8 -3
  9. package/dist/charts/core.cjs +1 -1
  10. package/dist/charts/core.d.cts +10 -5
  11. package/dist/charts/core.d.ts +10 -5
  12. package/dist/charts/core.js +27 -8
  13. package/dist/charts/engine/axis.cjs +1 -1
  14. package/dist/charts/engine/axis.cjs.map +1 -1
  15. package/dist/charts/engine/axis.js +43 -20
  16. package/dist/charts/engine/axis.js.map +1 -1
  17. package/dist/charts/engine/canvas.cjs +1 -1
  18. package/dist/charts/engine/canvas.cjs.map +1 -1
  19. package/dist/charts/engine/canvas.d.cts +11 -1
  20. package/dist/charts/engine/canvas.d.ts +11 -1
  21. package/dist/charts/engine/canvas.js +193 -116
  22. package/dist/charts/engine/canvas.js.map +1 -1
  23. package/dist/charts/engine/chart.cjs +1 -1
  24. package/dist/charts/engine/chart.cjs.map +1 -1
  25. package/dist/charts/engine/chart.d.cts +1 -1
  26. package/dist/charts/engine/chart.d.ts +1 -1
  27. package/dist/charts/engine/chart.js +486 -350
  28. package/dist/charts/engine/chart.js.map +1 -1
  29. package/dist/charts/engine/color.cjs +1 -1
  30. package/dist/charts/engine/color.cjs.map +1 -1
  31. package/dist/charts/engine/color.d.cts +18 -0
  32. package/dist/charts/engine/color.d.ts +18 -0
  33. package/dist/charts/engine/color.js +47 -1
  34. package/dist/charts/engine/color.js.map +1 -1
  35. package/dist/charts/engine/controller.cjs +2 -2
  36. package/dist/charts/engine/controller.cjs.map +1 -1
  37. package/dist/charts/engine/controller.d.cts +44 -4
  38. package/dist/charts/engine/controller.d.ts +44 -4
  39. package/dist/charts/engine/controller.js +421 -314
  40. package/dist/charts/engine/controller.js.map +1 -1
  41. package/dist/charts/engine/data.cjs +1 -1
  42. package/dist/charts/engine/data.cjs.map +1 -1
  43. package/dist/charts/engine/data.d.cts +9 -1
  44. package/dist/charts/engine/data.d.ts +9 -1
  45. package/dist/charts/engine/data.js +65 -49
  46. package/dist/charts/engine/data.js.map +1 -1
  47. package/dist/charts/engine/defaults.cjs +2 -0
  48. package/dist/charts/engine/defaults.cjs.map +1 -0
  49. package/dist/charts/engine/defaults.d.cts +20 -0
  50. package/dist/charts/engine/defaults.d.ts +20 -0
  51. package/dist/charts/engine/defaults.js +35 -0
  52. package/dist/charts/engine/defaults.js.map +1 -0
  53. package/dist/charts/engine/format.cjs +1 -1
  54. package/dist/charts/engine/format.cjs.map +1 -1
  55. package/dist/charts/engine/format.d.cts +27 -6
  56. package/dist/charts/engine/format.d.ts +27 -6
  57. package/dist/charts/engine/format.js +59 -21
  58. package/dist/charts/engine/format.js.map +1 -1
  59. package/dist/charts/engine/graph/chart.cjs +2 -0
  60. package/dist/charts/engine/graph/chart.cjs.map +1 -0
  61. package/dist/charts/engine/graph/chart.d.cts +3 -0
  62. package/dist/charts/engine/graph/chart.d.ts +3 -0
  63. package/dist/charts/engine/graph/chart.js +1565 -0
  64. package/dist/charts/engine/graph/chart.js.map +1 -0
  65. package/dist/charts/engine/graph/circular.cjs +2 -0
  66. package/dist/charts/engine/graph/circular.cjs.map +1 -0
  67. package/dist/charts/engine/graph/circular.d.cts +16 -0
  68. package/dist/charts/engine/graph/circular.d.ts +16 -0
  69. package/dist/charts/engine/graph/circular.js +62 -0
  70. package/dist/charts/engine/graph/circular.js.map +1 -0
  71. package/dist/charts/engine/graph/dag.cjs +2 -0
  72. package/dist/charts/engine/graph/dag.cjs.map +1 -0
  73. package/dist/charts/engine/graph/dag.d.cts +34 -0
  74. package/dist/charts/engine/graph/dag.d.ts +34 -0
  75. package/dist/charts/engine/graph/dag.js +314 -0
  76. package/dist/charts/engine/graph/dag.js.map +1 -0
  77. package/dist/charts/engine/graph/dom.cjs +2 -0
  78. package/dist/charts/engine/graph/dom.cjs.map +1 -0
  79. package/dist/charts/engine/graph/dom.d.cts +23 -0
  80. package/dist/charts/engine/graph/dom.d.ts +23 -0
  81. package/dist/charts/engine/graph/dom.js +158 -0
  82. package/dist/charts/engine/graph/dom.js.map +1 -0
  83. package/dist/charts/engine/graph/force.cjs +2 -0
  84. package/dist/charts/engine/graph/force.cjs.map +1 -0
  85. package/dist/charts/engine/graph/force.d.cts +67 -0
  86. package/dist/charts/engine/graph/force.d.ts +67 -0
  87. package/dist/charts/engine/graph/force.js +325 -0
  88. package/dist/charts/engine/graph/force.js.map +1 -0
  89. package/dist/charts/engine/graph/geometry.cjs +2 -0
  90. package/dist/charts/engine/graph/geometry.cjs.map +1 -0
  91. package/dist/charts/engine/graph/geometry.d.cts +37 -0
  92. package/dist/charts/engine/graph/geometry.d.ts +37 -0
  93. package/dist/charts/engine/graph/geometry.js +144 -0
  94. package/dist/charts/engine/graph/geometry.js.map +1 -0
  95. package/dist/charts/engine/graph/index.cjs +1 -0
  96. package/dist/charts/engine/graph/index.d.cts +6 -0
  97. package/dist/charts/engine/graph/index.d.ts +6 -0
  98. package/dist/charts/engine/graph/index.js +6 -0
  99. package/dist/charts/engine/graph/labels.cjs +2 -0
  100. package/dist/charts/engine/graph/labels.cjs.map +1 -0
  101. package/dist/charts/engine/graph/labels.d.cts +12 -0
  102. package/dist/charts/engine/graph/labels.d.ts +12 -0
  103. package/dist/charts/engine/graph/labels.js +128 -0
  104. package/dist/charts/engine/graph/labels.js.map +1 -0
  105. package/dist/charts/engine/graph/model.cjs +2 -0
  106. package/dist/charts/engine/graph/model.cjs.map +1 -0
  107. package/dist/charts/engine/graph/model.d.cts +43 -0
  108. package/dist/charts/engine/graph/model.d.ts +43 -0
  109. package/dist/charts/engine/graph/model.js +88 -0
  110. package/dist/charts/engine/graph/model.js.map +1 -0
  111. package/dist/charts/engine/graph/sizing.cjs +2 -0
  112. package/dist/charts/engine/graph/sizing.cjs.map +1 -0
  113. package/dist/charts/engine/graph/sizing.d.cts +33 -0
  114. package/dist/charts/engine/graph/sizing.d.ts +33 -0
  115. package/dist/charts/engine/graph/sizing.js +60 -0
  116. package/dist/charts/engine/graph/sizing.js.map +1 -0
  117. package/dist/charts/engine/graph/tree.cjs +2 -0
  118. package/dist/charts/engine/graph/tree.cjs.map +1 -0
  119. package/dist/charts/engine/graph/tree.d.cts +30 -0
  120. package/dist/charts/engine/graph/tree.d.ts +30 -0
  121. package/dist/charts/engine/graph/tree.js +218 -0
  122. package/dist/charts/engine/graph/tree.js.map +1 -0
  123. package/dist/charts/engine/graph/types.d.cts +626 -0
  124. package/dist/charts/engine/graph/types.d.ts +626 -0
  125. package/dist/charts/engine/graph/worker.cjs +46 -0
  126. package/dist/charts/engine/graph/worker.cjs.map +1 -0
  127. package/dist/charts/engine/graph/worker.d.cts +36 -0
  128. package/dist/charts/engine/graph/worker.d.ts +36 -0
  129. package/dist/charts/engine/graph/worker.js +129 -0
  130. package/dist/charts/engine/graph/worker.js.map +1 -0
  131. package/dist/charts/engine/items.cjs +1 -1
  132. package/dist/charts/engine/items.cjs.map +1 -1
  133. package/dist/charts/engine/items.d.cts +15 -2
  134. package/dist/charts/engine/items.d.ts +15 -2
  135. package/dist/charts/engine/items.js +257 -81
  136. package/dist/charts/engine/items.js.map +1 -1
  137. package/dist/charts/engine/labels.cjs +2 -0
  138. package/dist/charts/engine/labels.cjs.map +1 -0
  139. package/dist/charts/engine/labels.d.cts +13 -0
  140. package/dist/charts/engine/labels.d.ts +13 -0
  141. package/dist/charts/engine/labels.js +98 -0
  142. package/dist/charts/engine/labels.js.map +1 -0
  143. package/dist/charts/engine/layout.cjs +1 -1
  144. package/dist/charts/engine/layout.cjs.map +1 -1
  145. package/dist/charts/engine/layout.d.cts +43 -2
  146. package/dist/charts/engine/layout.d.ts +43 -2
  147. package/dist/charts/engine/layout.js +62 -12
  148. package/dist/charts/engine/layout.js.map +1 -1
  149. package/dist/charts/engine/locale.cjs +2 -0
  150. package/dist/charts/engine/locale.cjs.map +1 -0
  151. package/dist/charts/engine/locale.d.cts +33 -0
  152. package/dist/charts/engine/locale.d.ts +33 -0
  153. package/dist/charts/engine/locale.js +68 -0
  154. package/dist/charts/engine/locale.js.map +1 -0
  155. package/dist/charts/engine/model.cjs +1 -1
  156. package/dist/charts/engine/model.cjs.map +1 -1
  157. package/dist/charts/engine/model.d.cts +77 -2
  158. package/dist/charts/engine/model.d.ts +77 -2
  159. package/dist/charts/engine/model.js +304 -116
  160. package/dist/charts/engine/model.js.map +1 -1
  161. package/dist/charts/engine/orderbook/book.cjs +2 -0
  162. package/dist/charts/engine/orderbook/book.cjs.map +1 -0
  163. package/dist/charts/engine/orderbook/book.d.cts +28 -0
  164. package/dist/charts/engine/orderbook/book.d.ts +28 -0
  165. package/dist/charts/engine/orderbook/book.js +134 -0
  166. package/dist/charts/engine/orderbook/book.js.map +1 -0
  167. package/dist/charts/engine/orderbook/depth.cjs +2 -0
  168. package/dist/charts/engine/orderbook/depth.cjs.map +1 -0
  169. package/dist/charts/engine/orderbook/depth.d.cts +7 -0
  170. package/dist/charts/engine/orderbook/depth.d.ts +7 -0
  171. package/dist/charts/engine/orderbook/depth.js +413 -0
  172. package/dist/charts/engine/orderbook/depth.js.map +1 -0
  173. package/dist/charts/engine/orderbook/format.cjs +2 -0
  174. package/dist/charts/engine/orderbook/format.cjs.map +1 -0
  175. package/dist/charts/engine/orderbook/format.d.cts +49 -0
  176. package/dist/charts/engine/orderbook/format.d.ts +49 -0
  177. package/dist/charts/engine/orderbook/format.js +65 -0
  178. package/dist/charts/engine/orderbook/format.js.map +1 -0
  179. package/dist/charts/engine/orderbook/heatmap.cjs +2 -0
  180. package/dist/charts/engine/orderbook/heatmap.cjs.map +1 -0
  181. package/dist/charts/engine/orderbook/heatmap.d.cts +9 -0
  182. package/dist/charts/engine/orderbook/heatmap.d.ts +9 -0
  183. package/dist/charts/engine/orderbook/heatmap.js +822 -0
  184. package/dist/charts/engine/orderbook/heatmap.js.map +1 -0
  185. package/dist/charts/engine/orderbook/host.cjs +2 -0
  186. package/dist/charts/engine/orderbook/host.cjs.map +1 -0
  187. package/dist/charts/engine/orderbook/host.d.cts +50 -0
  188. package/dist/charts/engine/orderbook/host.d.ts +50 -0
  189. package/dist/charts/engine/orderbook/host.js +161 -0
  190. package/dist/charts/engine/orderbook/host.js.map +1 -0
  191. package/dist/charts/engine/orderbook/index.cjs +1 -0
  192. package/dist/charts/engine/orderbook/index.d.cts +6 -0
  193. package/dist/charts/engine/orderbook/index.d.ts +6 -0
  194. package/dist/charts/engine/orderbook/index.js +6 -0
  195. package/dist/charts/engine/orderbook/ladder.cjs +2 -0
  196. package/dist/charts/engine/orderbook/ladder.cjs.map +1 -0
  197. package/dist/charts/engine/orderbook/ladder.d.cts +6 -0
  198. package/dist/charts/engine/orderbook/ladder.d.ts +6 -0
  199. package/dist/charts/engine/orderbook/ladder.js +341 -0
  200. package/dist/charts/engine/orderbook/ladder.js.map +1 -0
  201. package/dist/charts/engine/orderbook/layout.cjs +2 -0
  202. package/dist/charts/engine/orderbook/layout.cjs.map +1 -0
  203. package/dist/charts/engine/orderbook/layout.d.cts +37 -0
  204. package/dist/charts/engine/orderbook/layout.d.ts +37 -0
  205. package/dist/charts/engine/orderbook/layout.js +70 -0
  206. package/dist/charts/engine/orderbook/layout.js.map +1 -0
  207. package/dist/charts/engine/orderbook/tape.cjs +2 -0
  208. package/dist/charts/engine/orderbook/tape.cjs.map +1 -0
  209. package/dist/charts/engine/orderbook/tape.d.cts +6 -0
  210. package/dist/charts/engine/orderbook/tape.d.ts +6 -0
  211. package/dist/charts/engine/orderbook/tape.js +450 -0
  212. package/dist/charts/engine/orderbook/tape.js.map +1 -0
  213. package/dist/charts/engine/orderbook/types.d.cts +751 -0
  214. package/dist/charts/engine/orderbook/types.d.ts +751 -0
  215. package/dist/charts/engine/overlay.cjs +1 -1
  216. package/dist/charts/engine/overlay.cjs.map +1 -1
  217. package/dist/charts/engine/overlay.d.cts +28 -2
  218. package/dist/charts/engine/overlay.d.ts +28 -2
  219. package/dist/charts/engine/overlay.js +138 -96
  220. package/dist/charts/engine/overlay.js.map +1 -1
  221. package/dist/charts/engine/presets.cjs +2 -2
  222. package/dist/charts/engine/presets.cjs.map +1 -1
  223. package/dist/charts/engine/presets.d.cts +273 -3
  224. package/dist/charts/engine/presets.d.ts +273 -3
  225. package/dist/charts/engine/presets.js +390 -38
  226. package/dist/charts/engine/presets.js.map +1 -1
  227. package/dist/charts/engine/renderers/detect.cjs +1 -1
  228. package/dist/charts/engine/renderers/detect.cjs.map +1 -1
  229. package/dist/charts/engine/renderers/detect.d.cts +2 -1
  230. package/dist/charts/engine/renderers/detect.d.ts +2 -1
  231. package/dist/charts/engine/renderers/detect.js +24 -19
  232. package/dist/charts/engine/renderers/detect.js.map +1 -1
  233. package/dist/charts/engine/renderers/gl.cjs +2 -0
  234. package/dist/charts/engine/renderers/gl.cjs.map +1 -0
  235. package/dist/charts/engine/renderers/gl.d.cts +21 -0
  236. package/dist/charts/engine/renderers/gl.d.ts +21 -0
  237. package/dist/charts/engine/renderers/gl.js +56 -0
  238. package/dist/charts/engine/renderers/gl.js.map +1 -0
  239. package/dist/charts/engine/renderers/shaders.cjs +143 -1
  240. package/dist/charts/engine/renderers/shaders.cjs.map +1 -1
  241. package/dist/charts/engine/renderers/shaders.d.cts +16 -0
  242. package/dist/charts/engine/renderers/shaders.d.ts +16 -0
  243. package/dist/charts/engine/renderers/shaders.js +139 -1
  244. package/dist/charts/engine/renderers/shaders.js.map +1 -1
  245. package/dist/charts/engine/renderers/webgl.cjs +2 -0
  246. package/dist/charts/engine/renderers/webgl.cjs.map +1 -0
  247. package/dist/charts/engine/renderers/webgl.d.cts +4 -0
  248. package/dist/charts/engine/renderers/webgl.d.ts +4 -0
  249. package/dist/charts/engine/renderers/webgl.js +133 -0
  250. package/dist/charts/engine/renderers/webgl.js.map +1 -0
  251. package/dist/charts/engine/renderers/webgl2.cjs +1 -1
  252. package/dist/charts/engine/renderers/webgl2.cjs.map +1 -1
  253. package/dist/charts/engine/renderers/webgl2.d.cts +0 -1
  254. package/dist/charts/engine/renderers/webgl2.d.ts +0 -1
  255. package/dist/charts/engine/renderers/webgl2.js +59 -108
  256. package/dist/charts/engine/renderers/webgl2.js.map +1 -1
  257. package/dist/charts/engine/scale.cjs +1 -1
  258. package/dist/charts/engine/scale.cjs.map +1 -1
  259. package/dist/charts/engine/scale.js +1 -1
  260. package/dist/charts/engine/scale.js.map +1 -1
  261. package/dist/charts/engine/scene.cjs +1 -1
  262. package/dist/charts/engine/scene.cjs.map +1 -1
  263. package/dist/charts/engine/scene.d.cts +71 -8
  264. package/dist/charts/engine/scene.d.ts +71 -8
  265. package/dist/charts/engine/scene.js +465 -183
  266. package/dist/charts/engine/scene.js.map +1 -1
  267. package/dist/charts/engine/shapes/bullet.cjs +2 -0
  268. package/dist/charts/engine/shapes/bullet.cjs.map +1 -0
  269. package/dist/charts/engine/shapes/bullet.d.cts +6 -0
  270. package/dist/charts/engine/shapes/bullet.d.ts +6 -0
  271. package/dist/charts/engine/shapes/bullet.js +255 -0
  272. package/dist/charts/engine/shapes/bullet.js.map +1 -0
  273. package/dist/charts/engine/shapes/calendar.cjs +2 -0
  274. package/dist/charts/engine/shapes/calendar.cjs.map +1 -0
  275. package/dist/charts/engine/shapes/calendar.d.cts +38 -0
  276. package/dist/charts/engine/shapes/calendar.d.ts +38 -0
  277. package/dist/charts/engine/shapes/calendar.js +369 -0
  278. package/dist/charts/engine/shapes/calendar.js.map +1 -0
  279. package/dist/charts/engine/shapes/canvas.cjs +1 -1
  280. package/dist/charts/engine/shapes/canvas.cjs.map +1 -1
  281. package/dist/charts/engine/shapes/canvas.d.cts +7 -0
  282. package/dist/charts/engine/shapes/canvas.d.ts +7 -0
  283. package/dist/charts/engine/shapes/canvas.js +22 -13
  284. package/dist/charts/engine/shapes/canvas.js.map +1 -1
  285. package/dist/charts/engine/shapes/chart.cjs +1 -1
  286. package/dist/charts/engine/shapes/chart.cjs.map +1 -1
  287. package/dist/charts/engine/shapes/chart.d.cts +3 -2
  288. package/dist/charts/engine/shapes/chart.d.ts +3 -2
  289. package/dist/charts/engine/shapes/chart.js +49 -27
  290. package/dist/charts/engine/shapes/chart.js.map +1 -1
  291. package/dist/charts/engine/shapes/chord.cjs +2 -0
  292. package/dist/charts/engine/shapes/chord.cjs.map +1 -0
  293. package/dist/charts/engine/shapes/chord.d.cts +18 -0
  294. package/dist/charts/engine/shapes/chord.d.ts +18 -0
  295. package/dist/charts/engine/shapes/chord.js +414 -0
  296. package/dist/charts/engine/shapes/chord.js.map +1 -0
  297. package/dist/charts/engine/shapes/draw.cjs +1 -1
  298. package/dist/charts/engine/shapes/draw.cjs.map +1 -1
  299. package/dist/charts/engine/shapes/draw.d.cts +7 -1
  300. package/dist/charts/engine/shapes/draw.d.ts +7 -1
  301. package/dist/charts/engine/shapes/draw.js +62 -19
  302. package/dist/charts/engine/shapes/draw.js.map +1 -1
  303. package/dist/charts/engine/shapes/funnel.cjs +1 -1
  304. package/dist/charts/engine/shapes/funnel.cjs.map +1 -1
  305. package/dist/charts/engine/shapes/funnel.js +3 -3
  306. package/dist/charts/engine/shapes/funnel.js.map +1 -1
  307. package/dist/charts/engine/shapes/gauge.cjs +1 -1
  308. package/dist/charts/engine/shapes/gauge.cjs.map +1 -1
  309. package/dist/charts/engine/shapes/gauge.js +132 -95
  310. package/dist/charts/engine/shapes/gauge.js.map +1 -1
  311. package/dist/charts/engine/shapes/hit.cjs +1 -1
  312. package/dist/charts/engine/shapes/hit.cjs.map +1 -1
  313. package/dist/charts/engine/shapes/hit.d.cts +5 -1
  314. package/dist/charts/engine/shapes/hit.d.ts +5 -1
  315. package/dist/charts/engine/shapes/hit.js +89 -39
  316. package/dist/charts/engine/shapes/hit.js.map +1 -1
  317. package/dist/charts/engine/shapes/index.d.cts +6 -2
  318. package/dist/charts/engine/shapes/index.d.ts +6 -2
  319. package/dist/charts/engine/shapes/labels.cjs +2 -0
  320. package/dist/charts/engine/shapes/labels.cjs.map +1 -0
  321. package/dist/charts/engine/shapes/labels.d.cts +14 -0
  322. package/dist/charts/engine/shapes/labels.d.ts +14 -0
  323. package/dist/charts/engine/shapes/labels.js +154 -0
  324. package/dist/charts/engine/shapes/labels.js.map +1 -0
  325. package/dist/charts/engine/shapes/layout.cjs +2 -2
  326. package/dist/charts/engine/shapes/layout.cjs.map +1 -1
  327. package/dist/charts/engine/shapes/layout.d.cts +10 -3
  328. package/dist/charts/engine/shapes/layout.d.ts +10 -3
  329. package/dist/charts/engine/shapes/layout.js +239 -124
  330. package/dist/charts/engine/shapes/layout.js.map +1 -1
  331. package/dist/charts/engine/shapes/pie.cjs +1 -1
  332. package/dist/charts/engine/shapes/pie.cjs.map +1 -1
  333. package/dist/charts/engine/shapes/pie.js +2 -2
  334. package/dist/charts/engine/shapes/pie.js.map +1 -1
  335. package/dist/charts/engine/shapes/radar.cjs +1 -1
  336. package/dist/charts/engine/shapes/radar.cjs.map +1 -1
  337. package/dist/charts/engine/shapes/radar.d.cts +2 -2
  338. package/dist/charts/engine/shapes/radar.d.ts +2 -2
  339. package/dist/charts/engine/shapes/radar.js +50 -49
  340. package/dist/charts/engine/shapes/radar.js.map +1 -1
  341. package/dist/charts/engine/shapes/radialBar.cjs +2 -0
  342. package/dist/charts/engine/shapes/radialBar.cjs.map +1 -0
  343. package/dist/charts/engine/shapes/radialBar.d.cts +8 -0
  344. package/dist/charts/engine/shapes/radialBar.d.ts +8 -0
  345. package/dist/charts/engine/shapes/radialBar.js +155 -0
  346. package/dist/charts/engine/shapes/radialBar.js.map +1 -0
  347. package/dist/charts/engine/shapes/runtime.cjs +1 -1
  348. package/dist/charts/engine/shapes/runtime.cjs.map +1 -1
  349. package/dist/charts/engine/shapes/runtime.d.cts +9 -2
  350. package/dist/charts/engine/shapes/runtime.d.ts +9 -2
  351. package/dist/charts/engine/shapes/runtime.js +61 -51
  352. package/dist/charts/engine/shapes/runtime.js.map +1 -1
  353. package/dist/charts/engine/shapes/sankey.cjs +2 -0
  354. package/dist/charts/engine/shapes/sankey.cjs.map +1 -0
  355. package/dist/charts/engine/shapes/sankey.d.cts +29 -0
  356. package/dist/charts/engine/shapes/sankey.d.ts +29 -0
  357. package/dist/charts/engine/shapes/sankey.js +372 -0
  358. package/dist/charts/engine/shapes/sankey.js.map +1 -0
  359. package/dist/charts/engine/shapes/scene.cjs +1 -1
  360. package/dist/charts/engine/shapes/scene.cjs.map +1 -1
  361. package/dist/charts/engine/shapes/scene.d.cts +92 -8
  362. package/dist/charts/engine/shapes/scene.d.ts +92 -8
  363. package/dist/charts/engine/shapes/scene.js +76 -31
  364. package/dist/charts/engine/shapes/scene.js.map +1 -1
  365. package/dist/charts/engine/shapes/sunburst.cjs +2 -0
  366. package/dist/charts/engine/shapes/sunburst.cjs.map +1 -0
  367. package/dist/charts/engine/shapes/sunburst.d.cts +6 -0
  368. package/dist/charts/engine/shapes/sunburst.d.ts +6 -0
  369. package/dist/charts/engine/shapes/sunburst.js +261 -0
  370. package/dist/charts/engine/shapes/sunburst.js.map +1 -0
  371. package/dist/charts/engine/shapes/treemap.cjs +1 -1
  372. package/dist/charts/engine/shapes/treemap.cjs.map +1 -1
  373. package/dist/charts/engine/shapes/treemap.js +2 -2
  374. package/dist/charts/engine/shapes/treemap.js.map +1 -1
  375. package/dist/charts/engine/shapes/types.d.cts +550 -12
  376. package/dist/charts/engine/shapes/types.d.ts +550 -12
  377. package/dist/charts/engine/signature.cjs +1 -1
  378. package/dist/charts/engine/signature.cjs.map +1 -1
  379. package/dist/charts/engine/signature.js +1 -1
  380. package/dist/charts/engine/signature.js.map +1 -1
  381. package/dist/charts/engine/three-d/canvas2d.cjs +2 -0
  382. package/dist/charts/engine/three-d/canvas2d.cjs.map +1 -0
  383. package/dist/charts/engine/three-d/canvas2d.d.cts +7 -0
  384. package/dist/charts/engine/three-d/canvas2d.d.ts +7 -0
  385. package/dist/charts/engine/three-d/canvas2d.js +128 -0
  386. package/dist/charts/engine/three-d/canvas2d.js.map +1 -0
  387. package/dist/charts/engine/three-d/chart.cjs +2 -0
  388. package/dist/charts/engine/three-d/chart.cjs.map +1 -0
  389. package/dist/charts/engine/three-d/chart.d.cts +15 -0
  390. package/dist/charts/engine/three-d/chart.d.ts +15 -0
  391. package/dist/charts/engine/three-d/chart.js +621 -0
  392. package/dist/charts/engine/three-d/chart.js.map +1 -0
  393. package/dist/charts/engine/three-d/colormap.cjs +2 -0
  394. package/dist/charts/engine/three-d/colormap.cjs.map +1 -0
  395. package/dist/charts/engine/three-d/colormap.d.cts +16 -0
  396. package/dist/charts/engine/three-d/colormap.d.ts +16 -0
  397. package/dist/charts/engine/three-d/colormap.js +166 -0
  398. package/dist/charts/engine/three-d/colormap.js.map +1 -0
  399. package/dist/charts/engine/three-d/contours.cjs +2 -0
  400. package/dist/charts/engine/three-d/contours.cjs.map +1 -0
  401. package/dist/charts/engine/three-d/contours.d.cts +7 -0
  402. package/dist/charts/engine/three-d/contours.d.ts +7 -0
  403. package/dist/charts/engine/three-d/contours.js +47 -0
  404. package/dist/charts/engine/three-d/contours.js.map +1 -0
  405. package/dist/charts/engine/three-d/detect.cjs +2 -0
  406. package/dist/charts/engine/three-d/detect.cjs.map +1 -0
  407. package/dist/charts/engine/three-d/detect.d.cts +12 -0
  408. package/dist/charts/engine/three-d/detect.d.ts +12 -0
  409. package/dist/charts/engine/three-d/detect.js +37 -0
  410. package/dist/charts/engine/three-d/detect.js.map +1 -0
  411. package/dist/charts/engine/three-d/dom.cjs +2 -0
  412. package/dist/charts/engine/three-d/dom.cjs.map +1 -0
  413. package/dist/charts/engine/three-d/dom.d.cts +21 -0
  414. package/dist/charts/engine/three-d/dom.d.ts +21 -0
  415. package/dist/charts/engine/three-d/dom.js +98 -0
  416. package/dist/charts/engine/three-d/dom.js.map +1 -0
  417. package/dist/charts/engine/three-d/geometry.cjs +2 -0
  418. package/dist/charts/engine/three-d/geometry.cjs.map +1 -0
  419. package/dist/charts/engine/three-d/geometry.d.cts +82 -0
  420. package/dist/charts/engine/three-d/geometry.d.ts +82 -0
  421. package/dist/charts/engine/three-d/geometry.js +545 -0
  422. package/dist/charts/engine/three-d/geometry.js.map +1 -0
  423. package/dist/charts/engine/three-d/hover.cjs +2 -0
  424. package/dist/charts/engine/three-d/hover.cjs.map +1 -0
  425. package/dist/charts/engine/three-d/hover.d.cts +25 -0
  426. package/dist/charts/engine/three-d/hover.d.ts +25 -0
  427. package/dist/charts/engine/three-d/hover.js +131 -0
  428. package/dist/charts/engine/three-d/hover.js.map +1 -0
  429. package/dist/charts/engine/three-d/index.cjs +1 -0
  430. package/dist/charts/engine/three-d/index.d.cts +2 -0
  431. package/dist/charts/engine/three-d/index.d.ts +2 -0
  432. package/dist/charts/engine/three-d/index.js +2 -0
  433. package/dist/charts/engine/three-d/labels.cjs +2 -0
  434. package/dist/charts/engine/three-d/labels.cjs.map +1 -0
  435. package/dist/charts/engine/three-d/labels.d.cts +23 -0
  436. package/dist/charts/engine/three-d/labels.d.ts +23 -0
  437. package/dist/charts/engine/three-d/labels.js +136 -0
  438. package/dist/charts/engine/three-d/labels.js.map +1 -0
  439. package/dist/charts/engine/three-d/math.cjs +2 -0
  440. package/dist/charts/engine/three-d/math.cjs.map +1 -0
  441. package/dist/charts/engine/three-d/math.d.cts +84 -0
  442. package/dist/charts/engine/three-d/math.d.ts +84 -0
  443. package/dist/charts/engine/three-d/math.js +150 -0
  444. package/dist/charts/engine/three-d/math.js.map +1 -0
  445. package/dist/charts/engine/three-d/model.cjs +2 -0
  446. package/dist/charts/engine/three-d/model.cjs.map +1 -0
  447. package/dist/charts/engine/three-d/model.d.cts +132 -0
  448. package/dist/charts/engine/three-d/model.d.ts +132 -0
  449. package/dist/charts/engine/three-d/model.js +279 -0
  450. package/dist/charts/engine/three-d/model.js.map +1 -0
  451. package/dist/charts/engine/three-d/overlay.cjs +2 -0
  452. package/dist/charts/engine/three-d/overlay.cjs.map +1 -0
  453. package/dist/charts/engine/three-d/overlay.d.cts +72 -0
  454. package/dist/charts/engine/three-d/overlay.d.ts +72 -0
  455. package/dist/charts/engine/three-d/overlay.js +204 -0
  456. package/dist/charts/engine/three-d/overlay.js.map +1 -0
  457. package/dist/charts/engine/three-d/pick.cjs +2 -0
  458. package/dist/charts/engine/three-d/pick.cjs.map +1 -0
  459. package/dist/charts/engine/three-d/pick.d.cts +52 -0
  460. package/dist/charts/engine/three-d/pick.d.ts +52 -0
  461. package/dist/charts/engine/three-d/pick.js +220 -0
  462. package/dist/charts/engine/three-d/pick.js.map +1 -0
  463. package/dist/charts/engine/three-d/render-types.cjs +2 -0
  464. package/dist/charts/engine/three-d/render-types.cjs.map +1 -0
  465. package/dist/charts/engine/three-d/render-types.d.cts +103 -0
  466. package/dist/charts/engine/three-d/render-types.d.ts +103 -0
  467. package/dist/charts/engine/three-d/render-types.js +12 -0
  468. package/dist/charts/engine/three-d/render-types.js.map +1 -0
  469. package/dist/charts/engine/three-d/shaders.cjs +311 -0
  470. package/dist/charts/engine/three-d/shaders.cjs.map +1 -0
  471. package/dist/charts/engine/three-d/shaders.d.cts +25 -0
  472. package/dist/charts/engine/three-d/shaders.d.ts +25 -0
  473. package/dist/charts/engine/three-d/shaders.js +210 -0
  474. package/dist/charts/engine/three-d/shaders.js.map +1 -0
  475. package/dist/charts/engine/three-d/sort.cjs +2 -0
  476. package/dist/charts/engine/three-d/sort.cjs.map +1 -0
  477. package/dist/charts/engine/three-d/sort.d.cts +29 -0
  478. package/dist/charts/engine/three-d/sort.d.ts +29 -0
  479. package/dist/charts/engine/three-d/sort.js +145 -0
  480. package/dist/charts/engine/three-d/sort.js.map +1 -0
  481. package/dist/charts/engine/three-d/types.d.cts +615 -0
  482. package/dist/charts/engine/three-d/types.d.ts +615 -0
  483. package/dist/charts/engine/three-d/webgl.cjs +2 -0
  484. package/dist/charts/engine/three-d/webgl.cjs.map +1 -0
  485. package/dist/charts/engine/three-d/webgl.d.cts +10 -0
  486. package/dist/charts/engine/three-d/webgl.d.ts +10 -0
  487. package/dist/charts/engine/three-d/webgl.js +132 -0
  488. package/dist/charts/engine/three-d/webgl.js.map +1 -0
  489. package/dist/charts/engine/three-d/webgpu.cjs +2 -0
  490. package/dist/charts/engine/three-d/webgpu.cjs.map +1 -0
  491. package/dist/charts/engine/three-d/webgpu.d.cts +5 -0
  492. package/dist/charts/engine/three-d/webgpu.d.ts +5 -0
  493. package/dist/charts/engine/three-d/webgpu.js +260 -0
  494. package/dist/charts/engine/three-d/webgpu.js.map +1 -0
  495. package/dist/charts/engine/time.cjs +1 -1
  496. package/dist/charts/engine/time.cjs.map +1 -1
  497. package/dist/charts/engine/time.d.cts +13 -4
  498. package/dist/charts/engine/time.d.ts +13 -4
  499. package/dist/charts/engine/time.js +156 -91
  500. package/dist/charts/engine/time.js.map +1 -1
  501. package/dist/charts/engine/trading/chart.cjs +2 -0
  502. package/dist/charts/engine/trading/chart.cjs.map +1 -0
  503. package/dist/charts/engine/trading/chart.d.cts +13 -0
  504. package/dist/charts/engine/trading/chart.d.ts +13 -0
  505. package/dist/charts/engine/trading/chart.js +2206 -0
  506. package/dist/charts/engine/trading/chart.js.map +1 -0
  507. package/dist/charts/engine/trading/drawings.cjs +3 -0
  508. package/dist/charts/engine/trading/drawings.cjs.map +1 -0
  509. package/dist/charts/engine/trading/drawings.d.cts +95 -0
  510. package/dist/charts/engine/trading/drawings.d.ts +95 -0
  511. package/dist/charts/engine/trading/drawings.js +423 -0
  512. package/dist/charts/engine/trading/drawings.js.map +1 -0
  513. package/dist/charts/engine/trading/format.cjs +2 -0
  514. package/dist/charts/engine/trading/format.cjs.map +1 -0
  515. package/dist/charts/engine/trading/format.d.cts +73 -0
  516. package/dist/charts/engine/trading/format.d.ts +73 -0
  517. package/dist/charts/engine/trading/format.js +163 -0
  518. package/dist/charts/engine/trading/format.js.map +1 -0
  519. package/dist/charts/engine/trading/geometry.cjs +2 -0
  520. package/dist/charts/engine/trading/geometry.cjs.map +1 -0
  521. package/dist/charts/engine/trading/geometry.d.cts +55 -0
  522. package/dist/charts/engine/trading/geometry.d.ts +55 -0
  523. package/dist/charts/engine/trading/geometry.js +131 -0
  524. package/dist/charts/engine/trading/geometry.js.map +1 -0
  525. package/dist/charts/engine/trading/index.cjs +1 -0
  526. package/dist/charts/engine/trading/index.d.cts +4 -0
  527. package/dist/charts/engine/trading/index.d.ts +4 -0
  528. package/dist/charts/engine/trading/index.js +4 -0
  529. package/dist/charts/engine/trading/indicators.cjs +2 -0
  530. package/dist/charts/engine/trading/indicators.cjs.map +1 -0
  531. package/dist/charts/engine/trading/indicators.d.cts +275 -0
  532. package/dist/charts/engine/trading/indicators.d.ts +275 -0
  533. package/dist/charts/engine/trading/indicators.js +544 -0
  534. package/dist/charts/engine/trading/indicators.js.map +1 -0
  535. package/dist/charts/engine/trading/labels.cjs +2 -0
  536. package/dist/charts/engine/trading/labels.cjs.map +1 -0
  537. package/dist/charts/engine/trading/labels.d.cts +7 -0
  538. package/dist/charts/engine/trading/labels.d.ts +7 -0
  539. package/dist/charts/engine/trading/labels.js +171 -0
  540. package/dist/charts/engine/trading/labels.js.map +1 -0
  541. package/dist/charts/engine/trading/scale.cjs +2 -0
  542. package/dist/charts/engine/trading/scale.cjs.map +1 -0
  543. package/dist/charts/engine/trading/scale.d.cts +46 -0
  544. package/dist/charts/engine/trading/scale.d.ts +46 -0
  545. package/dist/charts/engine/trading/scale.js +100 -0
  546. package/dist/charts/engine/trading/scale.js.map +1 -0
  547. package/dist/charts/engine/trading/store.cjs +2 -0
  548. package/dist/charts/engine/trading/store.cjs.map +1 -0
  549. package/dist/charts/engine/trading/store.d.cts +83 -0
  550. package/dist/charts/engine/trading/store.d.ts +83 -0
  551. package/dist/charts/engine/trading/store.js +150 -0
  552. package/dist/charts/engine/trading/store.js.map +1 -0
  553. package/dist/charts/engine/trading/studies.cjs +2 -0
  554. package/dist/charts/engine/trading/studies.cjs.map +1 -0
  555. package/dist/charts/engine/trading/studies.d.cts +85 -0
  556. package/dist/charts/engine/trading/studies.d.ts +85 -0
  557. package/dist/charts/engine/trading/studies.js +510 -0
  558. package/dist/charts/engine/trading/studies.js.map +1 -0
  559. package/dist/charts/engine/trading/sync.cjs +2 -0
  560. package/dist/charts/engine/trading/sync.cjs.map +1 -0
  561. package/dist/charts/engine/trading/sync.d.cts +8 -0
  562. package/dist/charts/engine/trading/sync.d.ts +8 -0
  563. package/dist/charts/engine/trading/sync.js +25 -0
  564. package/dist/charts/engine/trading/sync.js.map +1 -0
  565. package/dist/charts/engine/trading/types.d.cts +1131 -0
  566. package/dist/charts/engine/trading/types.d.ts +1131 -0
  567. package/dist/charts/engine/types.d.cts +247 -22
  568. package/dist/charts/engine/types.d.ts +247 -22
  569. package/dist/charts/index.cjs +1 -1
  570. package/dist/charts/index.d.cts +8 -4
  571. package/dist/charts/index.d.ts +8 -4
  572. package/dist/charts/index.js +30 -11
  573. package/dist/charts/react/Chart.cjs +1 -1
  574. package/dist/charts/react/Chart.cjs.map +1 -1
  575. package/dist/charts/react/Chart.d.cts +4 -4
  576. package/dist/charts/react/Chart.d.ts +4 -4
  577. package/dist/charts/react/Chart.js +5 -1
  578. package/dist/charts/react/Chart.js.map +1 -1
  579. package/dist/charts/react/charts.cjs +1 -1
  580. package/dist/charts/react/charts.cjs.map +1 -1
  581. package/dist/charts/react/charts.d.cts +39 -1
  582. package/dist/charts/react/charts.d.ts +39 -1
  583. package/dist/charts/react/charts.js +312 -128
  584. package/dist/charts/react/charts.js.map +1 -1
  585. package/dist/charts/react/graph.cjs +2 -0
  586. package/dist/charts/react/graph.cjs.map +1 -0
  587. package/dist/charts/react/graph.d.cts +213 -0
  588. package/dist/charts/react/graph.d.ts +213 -0
  589. package/dist/charts/react/graph.js +159 -0
  590. package/dist/charts/react/graph.js.map +1 -0
  591. package/dist/charts/react/orderbook.cjs +2 -0
  592. package/dist/charts/react/orderbook.cjs.map +1 -0
  593. package/dist/charts/react/orderbook.d.cts +142 -0
  594. package/dist/charts/react/orderbook.d.ts +142 -0
  595. package/dist/charts/react/orderbook.js +182 -0
  596. package/dist/charts/react/orderbook.js.map +1 -0
  597. package/dist/charts/react/shapes.cjs +1 -1
  598. package/dist/charts/react/shapes.cjs.map +1 -1
  599. package/dist/charts/react/shapes.d.cts +374 -9
  600. package/dist/charts/react/shapes.d.ts +374 -9
  601. package/dist/charts/react/shapes.js +323 -93
  602. package/dist/charts/react/shapes.js.map +1 -1
  603. package/dist/charts/react/three-d.cjs +2 -0
  604. package/dist/charts/react/three-d.cjs.map +1 -0
  605. package/dist/charts/react/three-d.d.cts +151 -0
  606. package/dist/charts/react/three-d.d.ts +151 -0
  607. package/dist/charts/react/three-d.js +154 -0
  608. package/dist/charts/react/three-d.js.map +1 -0
  609. package/dist/charts/react/trading.cjs +2 -0
  610. package/dist/charts/react/trading.cjs.map +1 -0
  611. package/dist/charts/react/trading.d.cts +145 -0
  612. package/dist/charts/react/trading.d.ts +145 -0
  613. package/dist/charts/react/trading.js +126 -0
  614. package/dist/charts/react/trading.js.map +1 -0
  615. package/dist/charts/react/types.d.cts +143 -8
  616. package/dist/charts/react/types.d.ts +143 -8
  617. package/dist/core/contracts.cjs +1 -1
  618. package/dist/core/contracts.cjs.map +1 -1
  619. package/dist/core/contracts.js +1 -1
  620. package/dist/core/contracts.js.map +1 -1
  621. package/dist/native/charts/src/canvas.cjs +1 -1
  622. package/dist/native/charts/src/canvas.js +9 -3
  623. package/dist/native/charts/src/engine/axis.cjs +1 -1
  624. package/dist/native/charts/src/engine/axis.cjs.map +1 -1
  625. package/dist/native/charts/src/engine/axis.js +43 -20
  626. package/dist/native/charts/src/engine/axis.js.map +1 -1
  627. package/dist/native/charts/src/engine/color.cjs +1 -1
  628. package/dist/native/charts/src/engine/color.cjs.map +1 -1
  629. package/dist/native/charts/src/engine/color.js +47 -5
  630. package/dist/native/charts/src/engine/color.js.map +1 -1
  631. package/dist/native/charts/src/engine/controller.cjs +2 -2
  632. package/dist/native/charts/src/engine/controller.cjs.map +1 -1
  633. package/dist/native/charts/src/engine/controller.js +415 -308
  634. package/dist/native/charts/src/engine/controller.js.map +1 -1
  635. package/dist/native/charts/src/engine/data.cjs +1 -1
  636. package/dist/native/charts/src/engine/data.cjs.map +1 -1
  637. package/dist/native/charts/src/engine/data.js +65 -49
  638. package/dist/native/charts/src/engine/data.js.map +1 -1
  639. package/dist/native/charts/src/engine/format.cjs +1 -1
  640. package/dist/native/charts/src/engine/format.cjs.map +1 -1
  641. package/dist/native/charts/src/engine/format.js +59 -21
  642. package/dist/native/charts/src/engine/format.js.map +1 -1
  643. package/dist/native/charts/src/engine/labels.cjs +2 -0
  644. package/dist/native/charts/src/engine/labels.cjs.map +1 -0
  645. package/dist/native/charts/src/engine/labels.js +98 -0
  646. package/dist/native/charts/src/engine/labels.js.map +1 -0
  647. package/dist/native/charts/src/engine/layout.cjs +1 -1
  648. package/dist/native/charts/src/engine/layout.cjs.map +1 -1
  649. package/dist/native/charts/src/engine/layout.js +62 -12
  650. package/dist/native/charts/src/engine/layout.js.map +1 -1
  651. package/dist/native/charts/src/engine/locale.cjs +2 -0
  652. package/dist/native/charts/src/engine/locale.cjs.map +1 -0
  653. package/dist/native/charts/src/engine/locale.js +60 -0
  654. package/dist/native/charts/src/engine/locale.js.map +1 -0
  655. package/dist/native/charts/src/engine/model.cjs +1 -1
  656. package/dist/native/charts/src/engine/model.cjs.map +1 -1
  657. package/dist/native/charts/src/engine/model.js +307 -119
  658. package/dist/native/charts/src/engine/model.js.map +1 -1
  659. package/dist/native/charts/src/engine/overlay.cjs +1 -1
  660. package/dist/native/charts/src/engine/overlay.cjs.map +1 -1
  661. package/dist/native/charts/src/engine/overlay.js +46 -23
  662. package/dist/native/charts/src/engine/overlay.js.map +1 -1
  663. package/dist/native/charts/src/engine/presets.cjs +2 -2
  664. package/dist/native/charts/src/engine/presets.cjs.map +1 -1
  665. package/dist/native/charts/src/engine/presets.js +470 -41
  666. package/dist/native/charts/src/engine/presets.js.map +1 -1
  667. package/dist/native/charts/src/engine/scale.cjs +1 -1
  668. package/dist/native/charts/src/engine/scale.cjs.map +1 -1
  669. package/dist/native/charts/src/engine/scale.js +1 -1
  670. package/dist/native/charts/src/engine/scale.js.map +1 -1
  671. package/dist/native/charts/src/engine/scene.cjs +1 -1
  672. package/dist/native/charts/src/engine/scene.cjs.map +1 -1
  673. package/dist/native/charts/src/engine/scene.js +489 -207
  674. package/dist/native/charts/src/engine/scene.js.map +1 -1
  675. package/dist/native/charts/src/engine/shapes/bullet.cjs +2 -0
  676. package/dist/native/charts/src/engine/shapes/bullet.cjs.map +1 -0
  677. package/dist/native/charts/src/engine/shapes/bullet.js +255 -0
  678. package/dist/native/charts/src/engine/shapes/bullet.js.map +1 -0
  679. package/dist/native/charts/src/engine/shapes/calendar.cjs +2 -0
  680. package/dist/native/charts/src/engine/shapes/calendar.cjs.map +1 -0
  681. package/dist/native/charts/src/engine/shapes/calendar.js +369 -0
  682. package/dist/native/charts/src/engine/shapes/calendar.js.map +1 -0
  683. package/dist/native/charts/src/engine/shapes/canvas.cjs +2 -0
  684. package/dist/native/charts/src/engine/shapes/canvas.cjs.map +1 -0
  685. package/dist/native/charts/src/engine/shapes/canvas.js +168 -0
  686. package/dist/native/charts/src/engine/shapes/canvas.js.map +1 -0
  687. package/dist/native/charts/src/engine/shapes/chord.cjs +2 -0
  688. package/dist/native/charts/src/engine/shapes/chord.cjs.map +1 -0
  689. package/dist/native/charts/src/engine/shapes/chord.js +414 -0
  690. package/dist/native/charts/src/engine/shapes/chord.js.map +1 -0
  691. package/dist/native/charts/src/engine/shapes/draw.cjs +2 -0
  692. package/dist/native/charts/src/engine/shapes/draw.cjs.map +1 -0
  693. package/dist/native/charts/src/engine/shapes/draw.js +195 -0
  694. package/dist/native/charts/src/engine/shapes/draw.js.map +1 -0
  695. package/dist/native/charts/src/engine/shapes/funnel.cjs +2 -0
  696. package/dist/native/charts/src/engine/shapes/funnel.cjs.map +1 -0
  697. package/dist/native/charts/src/engine/shapes/funnel.js +149 -0
  698. package/dist/native/charts/src/engine/shapes/funnel.js.map +1 -0
  699. package/dist/native/charts/src/engine/shapes/gauge.cjs +2 -0
  700. package/dist/native/charts/src/engine/shapes/gauge.cjs.map +1 -0
  701. package/dist/native/charts/src/engine/shapes/gauge.js +210 -0
  702. package/dist/native/charts/src/engine/shapes/gauge.js.map +1 -0
  703. package/dist/native/charts/src/engine/shapes/hit.cjs +2 -0
  704. package/dist/native/charts/src/engine/shapes/hit.cjs.map +1 -0
  705. package/dist/native/charts/src/engine/shapes/hit.js +135 -0
  706. package/dist/native/charts/src/engine/shapes/hit.js.map +1 -0
  707. package/dist/native/charts/src/engine/shapes/labels.cjs +2 -0
  708. package/dist/native/charts/src/engine/shapes/labels.cjs.map +1 -0
  709. package/dist/native/charts/src/engine/shapes/labels.js +154 -0
  710. package/dist/native/charts/src/engine/shapes/labels.js.map +1 -0
  711. package/dist/native/charts/src/engine/shapes/layout.cjs +3 -0
  712. package/dist/native/charts/src/engine/shapes/layout.cjs.map +1 -0
  713. package/dist/native/charts/src/engine/shapes/layout.js +358 -0
  714. package/dist/native/charts/src/engine/shapes/layout.js.map +1 -0
  715. package/dist/native/charts/src/engine/shapes/pie.cjs +2 -0
  716. package/dist/native/charts/src/engine/shapes/pie.cjs.map +1 -0
  717. package/dist/native/charts/src/engine/shapes/pie.js +302 -0
  718. package/dist/native/charts/src/engine/shapes/pie.js.map +1 -0
  719. package/dist/native/charts/src/engine/shapes/radar.cjs +2 -0
  720. package/dist/native/charts/src/engine/shapes/radar.cjs.map +1 -0
  721. package/dist/native/charts/src/engine/shapes/radar.js +198 -0
  722. package/dist/native/charts/src/engine/shapes/radar.js.map +1 -0
  723. package/dist/native/charts/src/engine/shapes/radialBar.cjs +2 -0
  724. package/dist/native/charts/src/engine/shapes/radialBar.cjs.map +1 -0
  725. package/dist/native/charts/src/engine/shapes/radialBar.js +155 -0
  726. package/dist/native/charts/src/engine/shapes/radialBar.js.map +1 -0
  727. package/dist/native/charts/src/engine/shapes/runtime.cjs +2 -0
  728. package/dist/native/charts/src/engine/shapes/runtime.cjs.map +1 -0
  729. package/dist/native/charts/src/engine/shapes/runtime.js +107 -0
  730. package/dist/native/charts/src/engine/shapes/runtime.js.map +1 -0
  731. package/dist/native/charts/src/engine/shapes/sankey.cjs +2 -0
  732. package/dist/native/charts/src/engine/shapes/sankey.cjs.map +1 -0
  733. package/dist/native/charts/src/engine/shapes/sankey.js +372 -0
  734. package/dist/native/charts/src/engine/shapes/sankey.js.map +1 -0
  735. package/dist/native/charts/src/engine/shapes/scene.cjs +2 -0
  736. package/dist/native/charts/src/engine/shapes/scene.cjs.map +1 -0
  737. package/dist/native/charts/src/engine/shapes/scene.js +168 -0
  738. package/dist/native/charts/src/engine/shapes/scene.js.map +1 -0
  739. package/dist/native/charts/src/engine/shapes/sunburst.cjs +2 -0
  740. package/dist/native/charts/src/engine/shapes/sunburst.cjs.map +1 -0
  741. package/dist/native/charts/src/engine/shapes/sunburst.js +261 -0
  742. package/dist/native/charts/src/engine/shapes/sunburst.js.map +1 -0
  743. package/dist/native/charts/src/engine/shapes/treemap.cjs +2 -0
  744. package/dist/native/charts/src/engine/shapes/treemap.cjs.map +1 -0
  745. package/dist/native/charts/src/engine/shapes/treemap.js +213 -0
  746. package/dist/native/charts/src/engine/shapes/treemap.js.map +1 -0
  747. package/dist/native/charts/src/engine/time.cjs +1 -1
  748. package/dist/native/charts/src/engine/time.cjs.map +1 -1
  749. package/dist/native/charts/src/engine/time.js +156 -91
  750. package/dist/native/charts/src/engine/time.js.map +1 -1
  751. package/dist/native/components/Chart/ChartBase.cjs +1 -1
  752. package/dist/native/components/Chart/ChartBase.cjs.map +1 -1
  753. package/dist/native/components/Chart/ChartBase.d.cts +1 -1
  754. package/dist/native/components/Chart/ChartBase.d.ts +1 -1
  755. package/dist/native/components/Chart/ChartBase.js +110 -107
  756. package/dist/native/components/Chart/ChartBase.js.map +1 -1
  757. package/dist/native/components/Chart/charts.cjs +1 -1
  758. package/dist/native/components/Chart/charts.cjs.map +1 -1
  759. package/dist/native/components/Chart/charts.d.cts +6 -1
  760. package/dist/native/components/Chart/charts.d.ts +6 -1
  761. package/dist/native/components/Chart/charts.js +53 -29
  762. package/dist/native/components/Chart/charts.js.map +1 -1
  763. package/dist/native/components/Chart/index.cjs +1 -1
  764. package/dist/native/components/Chart/index.d.cts +1 -1
  765. package/dist/native/components/Chart/index.d.ts +1 -1
  766. package/dist/native/components/Chart/index.js +2 -2
  767. package/dist/native/components/Chart/scene.cjs +1 -1
  768. package/dist/native/components/Chart/scene.cjs.map +1 -1
  769. package/dist/native/components/Chart/scene.js +315 -229
  770. package/dist/native/components/Chart/scene.js.map +1 -1
  771. package/dist/native/components/Chart/types.d.cts +26 -3
  772. package/dist/native/components/Chart/types.d.ts +26 -3
  773. package/dist/native/components/Charts/charts.cjs +2 -0
  774. package/dist/native/components/Charts/charts.cjs.map +1 -0
  775. package/dist/native/components/Charts/charts.d.cts +41 -0
  776. package/dist/native/components/Charts/charts.d.ts +41 -0
  777. package/dist/native/components/Charts/charts.js +350 -0
  778. package/dist/native/components/Charts/charts.js.map +1 -0
  779. package/dist/native/components/Charts/index.cjs +1 -0
  780. package/dist/native/components/Charts/index.d.cts +2 -0
  781. package/dist/native/components/Charts/index.d.ts +2 -0
  782. package/dist/native/components/Charts/index.js +2 -0
  783. package/dist/native/components/Charts/types.d.cts +155 -0
  784. package/dist/native/components/Charts/types.d.ts +155 -0
  785. package/dist/native/components/ShapeChart/ShapeChartBase.cjs +2 -0
  786. package/dist/native/components/ShapeChart/ShapeChartBase.cjs.map +1 -0
  787. package/dist/native/components/ShapeChart/ShapeChartBase.d.cts +24 -0
  788. package/dist/native/components/ShapeChart/ShapeChartBase.d.ts +24 -0
  789. package/dist/native/components/ShapeChart/ShapeChartBase.js +272 -0
  790. package/dist/native/components/ShapeChart/ShapeChartBase.js.map +1 -0
  791. package/dist/native/components/ShapeChart/charts.cjs +2 -0
  792. package/dist/native/components/ShapeChart/charts.cjs.map +1 -0
  793. package/dist/native/components/ShapeChart/charts.d.cts +43 -0
  794. package/dist/native/components/ShapeChart/charts.d.ts +43 -0
  795. package/dist/native/components/ShapeChart/charts.js +429 -0
  796. package/dist/native/components/ShapeChart/charts.js.map +1 -0
  797. package/dist/native/components/ShapeChart/draw.cjs +2 -0
  798. package/dist/native/components/ShapeChart/draw.cjs.map +1 -0
  799. package/dist/native/components/ShapeChart/draw.d.cts +4 -0
  800. package/dist/native/components/ShapeChart/draw.d.ts +4 -0
  801. package/dist/native/components/ShapeChart/draw.js +113 -0
  802. package/dist/native/components/ShapeChart/draw.js.map +1 -0
  803. package/dist/native/components/ShapeChart/geometry.cjs +2 -0
  804. package/dist/native/components/ShapeChart/geometry.cjs.map +1 -0
  805. package/dist/native/components/ShapeChart/geometry.d.cts +71 -0
  806. package/dist/native/components/ShapeChart/geometry.d.ts +71 -0
  807. package/dist/native/components/ShapeChart/geometry.js +681 -0
  808. package/dist/native/components/ShapeChart/geometry.js.map +1 -0
  809. package/dist/native/components/ShapeChart/index.cjs +1 -0
  810. package/dist/native/components/ShapeChart/index.d.cts +2 -0
  811. package/dist/native/components/ShapeChart/index.d.ts +2 -0
  812. package/dist/native/components/ShapeChart/index.js +2 -0
  813. package/dist/native/components/ShapeChart/recorder.cjs +2 -0
  814. package/dist/native/components/ShapeChart/recorder.cjs.map +1 -0
  815. package/dist/native/components/ShapeChart/recorder.d.cts +115 -0
  816. package/dist/native/components/ShapeChart/recorder.d.ts +115 -0
  817. package/dist/native/components/ShapeChart/recorder.js +583 -0
  818. package/dist/native/components/ShapeChart/recorder.js.map +1 -0
  819. package/dist/native/components/ShapeChart/types.d.cts +594 -0
  820. package/dist/native/components/ShapeChart/types.d.ts +594 -0
  821. package/dist/native/index.cjs +1 -1
  822. package/dist/native/index.d.cts +2 -0
  823. package/dist/native/index.d.ts +2 -0
  824. package/dist/native/index.js +14 -10
  825. package/dist/native/manifest.d.cts +6 -4
  826. package/dist/native/manifest.d.ts +6 -4
  827. package/dist/native/source/components/Chart/ChartBase.tsx +8 -1
  828. package/dist/native/source/components/Chart/charts.tsx +42 -6
  829. package/dist/native/source/components/Chart/index.ts +1 -0
  830. package/dist/native/source/components/Chart/scene.tsx +312 -98
  831. package/dist/native/source/components/Chart/types.ts +31 -1
  832. package/dist/native/source/components/Charts/charts.tsx +521 -0
  833. package/dist/native/source/components/Charts/index.ts +14 -0
  834. package/dist/native/source/components/Charts/types.ts +218 -0
  835. package/dist/native/source/components/ShapeChart/ShapeChartBase.tsx +486 -0
  836. package/dist/native/source/components/ShapeChart/charts.tsx +661 -0
  837. package/dist/native/source/components/ShapeChart/draw.tsx +201 -0
  838. package/dist/native/source/components/ShapeChart/geometry.ts +1366 -0
  839. package/dist/native/source/components/ShapeChart/index.ts +16 -0
  840. package/dist/native/source/components/ShapeChart/recorder.ts +845 -0
  841. package/dist/native/source/components/ShapeChart/types.ts +655 -0
  842. package/dist/native/source/index.ts +2 -0
  843. package/dist/native/source/manifest.ts +31 -4
  844. package/dist/taro/charts.d.ts +229 -4
  845. package/dist/taro/index.d.ts +1 -0
  846. package/dist/taro/index.js +8818 -2093
  847. package/dist/taro/manifest.d.ts +1 -0
  848. package/dist/taro/shape-charts.d.ts +629 -0
  849. package/dist/uni/AreaChart.vue +68 -0
  850. package/dist/uni/AreaChart.vue.d.ts +124 -0
  851. package/dist/uni/Badge.vue.d.ts +1 -1
  852. package/dist/uni/BarChart.vue.d.ts +5 -1
  853. package/dist/uni/BoxPlotChart.vue +66 -0
  854. package/dist/uni/BoxPlotChart.vue.d.ts +110 -0
  855. package/dist/uni/BubbleChart.vue +68 -0
  856. package/dist/uni/BubbleChart.vue.d.ts +110 -0
  857. package/dist/uni/BulletChart.vue +86 -0
  858. package/dist/uni/BulletChart.vue.d.ts +114 -0
  859. package/dist/uni/CalendarHeatmap.vue +92 -0
  860. package/dist/uni/CalendarHeatmap.vue.d.ts +131 -0
  861. package/dist/uni/CandlestickChart.vue +66 -0
  862. package/dist/uni/CandlestickChart.vue.d.ts +104 -0
  863. package/dist/uni/Chart.vue.d.ts +4 -0
  864. package/dist/uni/ChordChart.vue +93 -0
  865. package/dist/uni/ChordChart.vue.d.ts +136 -0
  866. package/dist/uni/DonutChart.vue +72 -0
  867. package/dist/uni/DonutChart.vue.d.ts +118 -0
  868. package/dist/uni/FunnelChart.vue +67 -0
  869. package/dist/uni/FunnelChart.vue.d.ts +108 -0
  870. package/dist/uni/GanttChart.vue +67 -0
  871. package/dist/uni/GanttChart.vue.d.ts +127 -0
  872. package/dist/uni/GaugeChart.vue +77 -0
  873. package/dist/uni/GaugeChart.vue.d.ts +127 -0
  874. package/dist/uni/HeatmapChart.vue +66 -0
  875. package/dist/uni/HeatmapChart.vue.d.ts +120 -0
  876. package/dist/uni/HistogramChart.vue +66 -0
  877. package/dist/uni/HistogramChart.vue.d.ts +125 -0
  878. package/dist/uni/HorizontalBarChart.vue +68 -0
  879. package/dist/uni/HorizontalBarChart.vue.d.ts +129 -0
  880. package/dist/uni/Input.vue.d.ts +1 -1
  881. package/dist/uni/LineChart.vue.d.ts +4 -0
  882. package/dist/uni/MixedChart.vue +68 -0
  883. package/dist/uni/MixedChart.vue.d.ts +110 -0
  884. package/dist/uni/NumberInput.vue.d.ts +1 -1
  885. package/dist/uni/PieChart.vue +72 -0
  886. package/dist/uni/PieChart.vue.d.ts +118 -0
  887. package/dist/uni/QuadrantChart.vue.d.ts +4 -0
  888. package/dist/uni/RadarChart.vue +67 -0
  889. package/dist/uni/RadarChart.vue.d.ts +114 -0
  890. package/dist/uni/RadialBarChart.vue +90 -0
  891. package/dist/uni/RadialBarChart.vue.d.ts +136 -0
  892. package/dist/uni/RangeAreaChart.vue +68 -0
  893. package/dist/uni/RangeAreaChart.vue.d.ts +106 -0
  894. package/dist/uni/ResponsiveGrid.vue.d.ts +1 -1
  895. package/dist/uni/SankeyChart.vue +88 -0
  896. package/dist/uni/SankeyChart.vue.d.ts +125 -0
  897. package/dist/uni/ScatterChart.vue.d.ts +4 -0
  898. package/dist/uni/ShapeChart.vue +73 -0
  899. package/dist/uni/ShapeChart.vue.d.ts +54 -0
  900. package/dist/uni/Sparkline.vue +58 -0
  901. package/dist/uni/Sparkline.vue.d.ts +81 -0
  902. package/dist/uni/SunburstChart.vue +90 -0
  903. package/dist/uni/SunburstChart.vue.d.ts +118 -0
  904. package/dist/uni/Textarea.vue.d.ts +1 -1
  905. package/dist/uni/TimePicker.vue.d.ts +1 -1
  906. package/dist/uni/ToastProvider.vue.d.ts +1 -1
  907. package/dist/uni/TreemapChart.vue +65 -0
  908. package/dist/uni/TreemapChart.vue.d.ts +104 -0
  909. package/dist/uni/WaterfallChart.vue +66 -0
  910. package/dist/uni/WaterfallChart.vue.d.ts +134 -0
  911. package/dist/uni/chart-canvas.d.ts +3 -0
  912. package/dist/uni/chart-canvas.js +4 -0
  913. package/dist/uni/chart-types.d.ts +240 -2
  914. package/dist/uni/chart-types.js +198 -0
  915. package/dist/uni/charts-canvas.js +8 -3
  916. package/dist/uni/index.d.ts +27 -1
  917. package/dist/uni/index.js +27 -1
  918. package/dist/uni/manifest.d.ts +279 -0
  919. package/dist/uni/manifest.js +397 -0
  920. package/dist/uni/named-chart-options.d.ts +95 -0
  921. package/dist/uni/named-chart-options.js +173 -0
  922. package/dist/uni/shape-chart-canvas.d.ts +53 -0
  923. package/dist/uni/shape-chart-canvas.js +333 -0
  924. package/dist/uni/shape-chart-types.d.ts +431 -0
  925. package/dist/uni/shape-chart-types.js +305 -0
  926. package/dist/vue/charts-global.d.ts +48 -0
  927. package/dist/vue/charts.d.ts +18 -0
  928. package/dist/vue/charts.js +56 -0
  929. package/dist/vue/charts.js.map +1 -0
  930. package/dist/vue/components/Chart/AreaChart.vue.d.ts +124 -0
  931. package/dist/vue/components/Chart/AreaChart.vue.js +7 -0
  932. package/dist/vue/components/Chart/AreaChart.vue.js.map +1 -0
  933. package/dist/vue/components/Chart/AreaChart.vue_vue_type_script_setup_true_lang.js +49 -0
  934. package/dist/vue/components/Chart/AreaChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  935. package/dist/vue/components/Chart/Bar3DChart.vue.d.ts +132 -0
  936. package/dist/vue/components/Chart/Bar3DChart.vue.js +7 -0
  937. package/dist/vue/components/Chart/Bar3DChart.vue.js.map +1 -0
  938. package/dist/vue/components/Chart/Bar3DChart.vue_vue_type_script_setup_true_lang.js +55 -0
  939. package/dist/vue/components/Chart/Bar3DChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  940. package/dist/vue/components/Chart/BarChart.vue.d.ts +123 -0
  941. package/dist/vue/components/Chart/BarChart.vue.js +7 -0
  942. package/dist/vue/components/Chart/BarChart.vue.js.map +1 -0
  943. package/dist/vue/components/Chart/BarChart.vue_vue_type_script_setup_true_lang.js +53 -0
  944. package/dist/vue/components/Chart/BarChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  945. package/dist/vue/components/Chart/BoxPlotChart.vue.d.ts +120 -0
  946. package/dist/vue/components/Chart/BoxPlotChart.vue.js +7 -0
  947. package/dist/vue/components/Chart/BoxPlotChart.vue.js.map +1 -0
  948. package/dist/vue/components/Chart/BoxPlotChart.vue_vue_type_script_setup_true_lang.js +63 -0
  949. package/dist/vue/components/Chart/BoxPlotChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  950. package/dist/vue/components/Chart/BubbleChart.vue.d.ts +106 -0
  951. package/dist/vue/components/Chart/BubbleChart.vue.js +7 -0
  952. package/dist/vue/components/Chart/BubbleChart.vue.js.map +1 -0
  953. package/dist/vue/components/Chart/BubbleChart.vue_vue_type_script_setup_true_lang.js +52 -0
  954. package/dist/vue/components/Chart/BubbleChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  955. package/dist/vue/components/Chart/BulletChart.vue.d.ts +117 -0
  956. package/dist/vue/components/Chart/BulletChart.vue.js +7 -0
  957. package/dist/vue/components/Chart/BulletChart.vue.js.map +1 -0
  958. package/dist/vue/components/Chart/BulletChart.vue_vue_type_script_setup_true_lang.js +64 -0
  959. package/dist/vue/components/Chart/BulletChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  960. package/dist/vue/components/Chart/CalendarHeatmap.vue.d.ts +144 -0
  961. package/dist/vue/components/Chart/CalendarHeatmap.vue.js +7 -0
  962. package/dist/vue/components/Chart/CalendarHeatmap.vue.js.map +1 -0
  963. package/dist/vue/components/Chart/CalendarHeatmap.vue_vue_type_script_setup_true_lang.js +77 -0
  964. package/dist/vue/components/Chart/CalendarHeatmap.vue_vue_type_script_setup_true_lang.js.map +1 -0
  965. package/dist/vue/components/Chart/CandlestickChart.vue.d.ts +94 -0
  966. package/dist/vue/components/Chart/CandlestickChart.vue.js +7 -0
  967. package/dist/vue/components/Chart/CandlestickChart.vue.js.map +1 -0
  968. package/dist/vue/components/Chart/CandlestickChart.vue_vue_type_script_setup_true_lang.js +44 -0
  969. package/dist/vue/components/Chart/CandlestickChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  970. package/dist/vue/components/Chart/Chart.vue.d.ts +103 -0
  971. package/dist/vue/components/Chart/Chart.vue.js +7 -0
  972. package/dist/vue/components/Chart/Chart.vue.js.map +1 -0
  973. package/dist/vue/components/Chart/Chart.vue_vue_type_script_setup_true_lang.js +47 -0
  974. package/dist/vue/components/Chart/Chart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  975. package/dist/vue/components/Chart/ChordChart.vue.d.ts +153 -0
  976. package/dist/vue/components/Chart/ChordChart.vue.js +7 -0
  977. package/dist/vue/components/Chart/ChordChart.vue.js.map +1 -0
  978. package/dist/vue/components/Chart/ChordChart.vue_vue_type_script_setup_true_lang.js +81 -0
  979. package/dist/vue/components/Chart/ChordChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  980. package/dist/vue/components/Chart/DependencyGraph.vue.d.ts +179 -0
  981. package/dist/vue/components/Chart/DependencyGraph.vue.js +7 -0
  982. package/dist/vue/components/Chart/DependencyGraph.vue.js.map +1 -0
  983. package/dist/vue/components/Chart/DependencyGraph.vue_vue_type_script_setup_true_lang.js +65 -0
  984. package/dist/vue/components/Chart/DependencyGraph.vue_vue_type_script_setup_true_lang.js.map +1 -0
  985. package/dist/vue/components/Chart/DepthChart.vue.d.ts +139 -0
  986. package/dist/vue/components/Chart/DepthChart.vue.js +7 -0
  987. package/dist/vue/components/Chart/DepthChart.vue.js.map +1 -0
  988. package/dist/vue/components/Chart/DepthChart.vue_vue_type_script_setup_true_lang.js +42 -0
  989. package/dist/vue/components/Chart/DepthChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  990. package/dist/vue/components/Chart/DonutChart.vue.d.ts +104 -0
  991. package/dist/vue/components/Chart/DonutChart.vue.js +7 -0
  992. package/dist/vue/components/Chart/DonutChart.vue.js.map +1 -0
  993. package/dist/vue/components/Chart/DonutChart.vue_vue_type_script_setup_true_lang.js +53 -0
  994. package/dist/vue/components/Chart/DonutChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  995. package/dist/vue/components/Chart/FunnelChart.vue.d.ts +105 -0
  996. package/dist/vue/components/Chart/FunnelChart.vue.js +7 -0
  997. package/dist/vue/components/Chart/FunnelChart.vue.js.map +1 -0
  998. package/dist/vue/components/Chart/FunnelChart.vue_vue_type_script_setup_true_lang.js +58 -0
  999. package/dist/vue/components/Chart/FunnelChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1000. package/dist/vue/components/Chart/GanttChart.vue.d.ts +136 -0
  1001. package/dist/vue/components/Chart/GanttChart.vue.js +7 -0
  1002. package/dist/vue/components/Chart/GanttChart.vue.js.map +1 -0
  1003. package/dist/vue/components/Chart/GanttChart.vue_vue_type_script_setup_true_lang.js +101 -0
  1004. package/dist/vue/components/Chart/GanttChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1005. package/dist/vue/components/Chart/GaugeChart.vue.d.ts +132 -0
  1006. package/dist/vue/components/Chart/GaugeChart.vue.js +7 -0
  1007. package/dist/vue/components/Chart/GaugeChart.vue.js.map +1 -0
  1008. package/dist/vue/components/Chart/GaugeChart.vue_vue_type_script_setup_true_lang.js +71 -0
  1009. package/dist/vue/components/Chart/GaugeChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1010. package/dist/vue/components/Chart/GraphChart.vue.d.ts +184 -0
  1011. package/dist/vue/components/Chart/GraphChart.vue.js +7 -0
  1012. package/dist/vue/components/Chart/GraphChart.vue.js.map +1 -0
  1013. package/dist/vue/components/Chart/GraphChart.vue_vue_type_script_setup_true_lang.js +62 -0
  1014. package/dist/vue/components/Chart/GraphChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1015. package/dist/vue/components/Chart/HeatmapChart.vue.d.ts +129 -0
  1016. package/dist/vue/components/Chart/HeatmapChart.vue.js +7 -0
  1017. package/dist/vue/components/Chart/HeatmapChart.vue.js.map +1 -0
  1018. package/dist/vue/components/Chart/HeatmapChart.vue_vue_type_script_setup_true_lang.js +67 -0
  1019. package/dist/vue/components/Chart/HeatmapChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1020. package/dist/vue/components/Chart/HistogramChart.vue.d.ts +132 -0
  1021. package/dist/vue/components/Chart/HistogramChart.vue.js +7 -0
  1022. package/dist/vue/components/Chart/HistogramChart.vue.js.map +1 -0
  1023. package/dist/vue/components/Chart/HistogramChart.vue_vue_type_script_setup_true_lang.js +66 -0
  1024. package/dist/vue/components/Chart/HistogramChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1025. package/dist/vue/components/Chart/HorizontalBarChart.vue.d.ts +121 -0
  1026. package/dist/vue/components/Chart/HorizontalBarChart.vue.js +7 -0
  1027. package/dist/vue/components/Chart/HorizontalBarChart.vue.js.map +1 -0
  1028. package/dist/vue/components/Chart/HorizontalBarChart.vue_vue_type_script_setup_true_lang.js +55 -0
  1029. package/dist/vue/components/Chart/HorizontalBarChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1030. package/dist/vue/components/Chart/Line3DChart.vue.d.ts +121 -0
  1031. package/dist/vue/components/Chart/Line3DChart.vue.js +7 -0
  1032. package/dist/vue/components/Chart/Line3DChart.vue.js.map +1 -0
  1033. package/dist/vue/components/Chart/Line3DChart.vue_vue_type_script_setup_true_lang.js +47 -0
  1034. package/dist/vue/components/Chart/Line3DChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1035. package/dist/vue/components/Chart/LineChart.vue.d.ts +125 -0
  1036. package/dist/vue/components/Chart/LineChart.vue.js +7 -0
  1037. package/dist/vue/components/Chart/LineChart.vue.js.map +1 -0
  1038. package/dist/vue/components/Chart/LineChart.vue_vue_type_script_setup_true_lang.js +50 -0
  1039. package/dist/vue/components/Chart/LineChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1040. package/dist/vue/components/Chart/MixedChart.vue.d.ts +103 -0
  1041. package/dist/vue/components/Chart/MixedChart.vue.js +7 -0
  1042. package/dist/vue/components/Chart/MixedChart.vue.js.map +1 -0
  1043. package/dist/vue/components/Chart/MixedChart.vue_vue_type_script_setup_true_lang.js +47 -0
  1044. package/dist/vue/components/Chart/MixedChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1045. package/dist/vue/components/Chart/OrderBook.vue.d.ts +125 -0
  1046. package/dist/vue/components/Chart/OrderBook.vue.js +7 -0
  1047. package/dist/vue/components/Chart/OrderBook.vue.js.map +1 -0
  1048. package/dist/vue/components/Chart/OrderBook.vue_vue_type_script_setup_true_lang.js +38 -0
  1049. package/dist/vue/components/Chart/OrderBook.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1050. package/dist/vue/components/Chart/OrderBookHeatmap.vue.d.ts +130 -0
  1051. package/dist/vue/components/Chart/OrderBookHeatmap.vue.js +7 -0
  1052. package/dist/vue/components/Chart/OrderBookHeatmap.vue.js.map +1 -0
  1053. package/dist/vue/components/Chart/OrderBookHeatmap.vue_vue_type_script_setup_true_lang.js +46 -0
  1054. package/dist/vue/components/Chart/OrderBookHeatmap.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1055. package/dist/vue/components/Chart/PieChart.vue.d.ts +104 -0
  1056. package/dist/vue/components/Chart/PieChart.vue.js +7 -0
  1057. package/dist/vue/components/Chart/PieChart.vue.js.map +1 -0
  1058. package/dist/vue/components/Chart/PieChart.vue_vue_type_script_setup_true_lang.js +53 -0
  1059. package/dist/vue/components/Chart/PieChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1060. package/dist/vue/components/Chart/QuadrantChart.vue.d.ts +186 -0
  1061. package/dist/vue/components/Chart/QuadrantChart.vue.js +7 -0
  1062. package/dist/vue/components/Chart/QuadrantChart.vue.js.map +1 -0
  1063. package/dist/vue/components/Chart/QuadrantChart.vue_vue_type_script_setup_true_lang.js +107 -0
  1064. package/dist/vue/components/Chart/QuadrantChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1065. package/dist/vue/components/Chart/RadarChart.vue.d.ts +111 -0
  1066. package/dist/vue/components/Chart/RadarChart.vue.js +7 -0
  1067. package/dist/vue/components/Chart/RadarChart.vue.js.map +1 -0
  1068. package/dist/vue/components/Chart/RadarChart.vue_vue_type_script_setup_true_lang.js +61 -0
  1069. package/dist/vue/components/Chart/RadarChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1070. package/dist/vue/components/Chart/RadialBarChart.vue.d.ts +147 -0
  1071. package/dist/vue/components/Chart/RadialBarChart.vue.js +7 -0
  1072. package/dist/vue/components/Chart/RadialBarChart.vue.js.map +1 -0
  1073. package/dist/vue/components/Chart/RadialBarChart.vue_vue_type_script_setup_true_lang.js +78 -0
  1074. package/dist/vue/components/Chart/RadialBarChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1075. package/dist/vue/components/Chart/RangeAreaChart.vue.d.ts +106 -0
  1076. package/dist/vue/components/Chart/RangeAreaChart.vue.js +7 -0
  1077. package/dist/vue/components/Chart/RangeAreaChart.vue.js.map +1 -0
  1078. package/dist/vue/components/Chart/RangeAreaChart.vue_vue_type_script_setup_true_lang.js +51 -0
  1079. package/dist/vue/components/Chart/RangeAreaChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1080. package/dist/vue/components/Chart/SankeyChart.vue.d.ts +132 -0
  1081. package/dist/vue/components/Chart/SankeyChart.vue.js +7 -0
  1082. package/dist/vue/components/Chart/SankeyChart.vue.js.map +1 -0
  1083. package/dist/vue/components/Chart/SankeyChart.vue_vue_type_script_setup_true_lang.js +71 -0
  1084. package/dist/vue/components/Chart/SankeyChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1085. package/dist/vue/components/Chart/Scatter3DChart.vue.d.ts +121 -0
  1086. package/dist/vue/components/Chart/Scatter3DChart.vue.js +7 -0
  1087. package/dist/vue/components/Chart/Scatter3DChart.vue.js.map +1 -0
  1088. package/dist/vue/components/Chart/Scatter3DChart.vue_vue_type_script_setup_true_lang.js +47 -0
  1089. package/dist/vue/components/Chart/Scatter3DChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1090. package/dist/vue/components/Chart/ScatterChart.vue.d.ts +94 -0
  1091. package/dist/vue/components/Chart/ScatterChart.vue.js +7 -0
  1092. package/dist/vue/components/Chart/ScatterChart.vue.js.map +1 -0
  1093. package/dist/vue/components/Chart/ScatterChart.vue_vue_type_script_setup_true_lang.js +44 -0
  1094. package/dist/vue/components/Chart/ScatterChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1095. package/dist/vue/components/Chart/ShapeChart.vue.d.ts +39 -0
  1096. package/dist/vue/components/Chart/ShapeChart.vue.js +7 -0
  1097. package/dist/vue/components/Chart/ShapeChart.vue.js.map +1 -0
  1098. package/dist/vue/components/Chart/ShapeChart.vue_vue_type_script_setup_true_lang.js +43 -0
  1099. package/dist/vue/components/Chart/ShapeChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1100. package/dist/vue/components/Chart/Sparkline.vue.d.ts +90 -0
  1101. package/dist/vue/components/Chart/Sparkline.vue.js +7 -0
  1102. package/dist/vue/components/Chart/Sparkline.vue.js.map +1 -0
  1103. package/dist/vue/components/Chart/Sparkline.vue_vue_type_script_setup_true_lang.js +66 -0
  1104. package/dist/vue/components/Chart/Sparkline.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1105. package/dist/vue/components/Chart/SunburstChart.vue.d.ts +123 -0
  1106. package/dist/vue/components/Chart/SunburstChart.vue.js +7 -0
  1107. package/dist/vue/components/Chart/SunburstChart.vue.js.map +1 -0
  1108. package/dist/vue/components/Chart/SunburstChart.vue_vue_type_script_setup_true_lang.js +68 -0
  1109. package/dist/vue/components/Chart/SunburstChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1110. package/dist/vue/components/Chart/Surface3DChart.vue.d.ts +143 -0
  1111. package/dist/vue/components/Chart/Surface3DChart.vue.js +7 -0
  1112. package/dist/vue/components/Chart/Surface3DChart.vue.js.map +1 -0
  1113. package/dist/vue/components/Chart/Surface3DChart.vue_vue_type_script_setup_true_lang.js +60 -0
  1114. package/dist/vue/components/Chart/Surface3DChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1115. package/dist/vue/components/Chart/TimeAndSales.vue.d.ts +116 -0
  1116. package/dist/vue/components/Chart/TimeAndSales.vue.js +7 -0
  1117. package/dist/vue/components/Chart/TimeAndSales.vue.js.map +1 -0
  1118. package/dist/vue/components/Chart/TimeAndSales.vue_vue_type_script_setup_true_lang.js +46 -0
  1119. package/dist/vue/components/Chart/TimeAndSales.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1120. package/dist/vue/components/Chart/TradingChart.vue.d.ts +208 -0
  1121. package/dist/vue/components/Chart/TradingChart.vue.js +7 -0
  1122. package/dist/vue/components/Chart/TradingChart.vue.js.map +1 -0
  1123. package/dist/vue/components/Chart/TradingChart.vue_vue_type_script_setup_true_lang.js +101 -0
  1124. package/dist/vue/components/Chart/TradingChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1125. package/dist/vue/components/Chart/TreeChart.vue.d.ts +172 -0
  1126. package/dist/vue/components/Chart/TreeChart.vue.js +7 -0
  1127. package/dist/vue/components/Chart/TreeChart.vue.js.map +1 -0
  1128. package/dist/vue/components/Chart/TreeChart.vue_vue_type_script_setup_true_lang.js +56 -0
  1129. package/dist/vue/components/Chart/TreeChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1130. package/dist/vue/components/Chart/TreemapChart.vue.d.ts +97 -0
  1131. package/dist/vue/components/Chart/TreemapChart.vue.js +7 -0
  1132. package/dist/vue/components/Chart/TreemapChart.vue.js.map +1 -0
  1133. package/dist/vue/components/Chart/TreemapChart.vue_vue_type_script_setup_true_lang.js +54 -0
  1134. package/dist/vue/components/Chart/TreemapChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1135. package/dist/vue/components/Chart/WaterfallChart.vue.d.ts +143 -0
  1136. package/dist/vue/components/Chart/WaterfallChart.vue.js +7 -0
  1137. package/dist/vue/components/Chart/WaterfallChart.vue.js.map +1 -0
  1138. package/dist/vue/components/Chart/WaterfallChart.vue_vue_type_script_setup_true_lang.js +74 -0
  1139. package/dist/vue/components/Chart/WaterfallChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  1140. package/dist/vue/components/Chart/cartesian.d.ts +47 -0
  1141. package/dist/vue/components/Chart/cartesian.js +56 -0
  1142. package/dist/vue/components/Chart/cartesian.js.map +1 -0
  1143. package/dist/vue/components/Chart/engine.d.ts +35 -0
  1144. package/dist/vue/components/Chart/engine.js +35 -0
  1145. package/dist/vue/components/Chart/engine.js.map +1 -0
  1146. package/dist/vue/components/Chart/graph.d.ts +153 -0
  1147. package/dist/vue/components/Chart/graph.js +135 -0
  1148. package/dist/vue/components/Chart/graph.js.map +1 -0
  1149. package/dist/vue/components/Chart/index.d.ts +45 -0
  1150. package/dist/vue/components/Chart/index.js +44 -0
  1151. package/dist/vue/components/Chart/orderbook.d.ts +363 -0
  1152. package/dist/vue/components/Chart/orderbook.js +128 -0
  1153. package/dist/vue/components/Chart/orderbook.js.map +1 -0
  1154. package/dist/vue/components/Chart/props.d.ts +188 -0
  1155. package/dist/vue/components/Chart/props.js +92 -0
  1156. package/dist/vue/components/Chart/props.js.map +1 -0
  1157. package/dist/vue/components/Chart/shape.d.ts +41 -0
  1158. package/dist/vue/components/Chart/shape.js +42 -0
  1159. package/dist/vue/components/Chart/shape.js.map +1 -0
  1160. package/dist/vue/components/Chart/three-d.d.ts +106 -0
  1161. package/dist/vue/components/Chart/three-d.js +88 -0
  1162. package/dist/vue/components/Chart/three-d.js.map +1 -0
  1163. package/dist/vue/components/Chart/trading.d.ts +127 -0
  1164. package/dist/vue/components/Chart/trading.js +63 -0
  1165. package/dist/vue/components/Chart/trading.js.map +1 -0
  1166. package/dist/vue/components/Chart/types.d.ts +209 -0
  1167. package/dist/vue/global.d.ts +2 -0
  1168. package/dist/vue/groups/charts.d.ts +1 -0
  1169. package/dist/vue/groups/charts.js +95 -0
  1170. package/dist/vue/groups/charts.js.map +1 -0
  1171. package/dist/vue/index.d.ts +1 -0
  1172. package/dist/vue/index.js +67 -23
  1173. package/dist/vue/internal/register.d.ts +7 -0
  1174. package/dist/vue/internal/register.js +14 -0
  1175. package/dist/vue/internal/register.js.map +1 -0
  1176. package/dist/vue/plugin.d.ts +9 -4
  1177. package/dist/vue/plugin.js +7 -10
  1178. package/dist/vue/plugin.js.map +1 -1
  1179. package/dist/weapp/area-chart/index.js +1 -0
  1180. package/dist/weapp/area-chart/index.json +1 -0
  1181. package/dist/weapp/area-chart/index.wxml +1 -0
  1182. package/dist/weapp/area-chart/index.wxss +1 -0
  1183. package/dist/weapp/box-plot-chart/index.js +1 -0
  1184. package/dist/weapp/box-plot-chart/index.json +1 -0
  1185. package/dist/weapp/box-plot-chart/index.wxml +1 -0
  1186. package/dist/weapp/box-plot-chart/index.wxss +1 -0
  1187. package/dist/weapp/bubble-chart/index.js +1 -0
  1188. package/dist/weapp/bubble-chart/index.json +1 -0
  1189. package/dist/weapp/bubble-chart/index.wxml +1 -0
  1190. package/dist/weapp/bubble-chart/index.wxss +1 -0
  1191. package/dist/weapp/bullet-chart/index.js +1 -0
  1192. package/dist/weapp/bullet-chart/index.json +1 -0
  1193. package/dist/weapp/bullet-chart/index.wxml +1 -0
  1194. package/dist/weapp/bullet-chart/index.wxss +1 -0
  1195. package/dist/weapp/calendar-heatmap/index.js +1 -0
  1196. package/dist/weapp/calendar-heatmap/index.json +1 -0
  1197. package/dist/weapp/calendar-heatmap/index.wxml +1 -0
  1198. package/dist/weapp/calendar-heatmap/index.wxss +1 -0
  1199. package/dist/weapp/candlestick-chart/index.js +1 -0
  1200. package/dist/weapp/candlestick-chart/index.json +1 -0
  1201. package/dist/weapp/candlestick-chart/index.wxml +1 -0
  1202. package/dist/weapp/candlestick-chart/index.wxss +1 -0
  1203. package/dist/weapp/charts/canvas.js +12976 -0
  1204. package/dist/weapp/charts/core.d.ts +2 -0
  1205. package/dist/weapp/charts/core.js +42 -0
  1206. package/dist/weapp/chord-chart/index.js +1 -0
  1207. package/dist/weapp/chord-chart/index.json +1 -0
  1208. package/dist/weapp/chord-chart/index.wxml +1 -0
  1209. package/dist/weapp/chord-chart/index.wxss +1 -0
  1210. package/dist/weapp/controls.js +1495 -4480
  1211. package/dist/weapp/donut-chart/index.js +1 -0
  1212. package/dist/weapp/donut-chart/index.json +1 -0
  1213. package/dist/weapp/donut-chart/index.wxml +1 -0
  1214. package/dist/weapp/donut-chart/index.wxss +1 -0
  1215. package/dist/weapp/funnel-chart/index.js +1 -0
  1216. package/dist/weapp/funnel-chart/index.json +1 -0
  1217. package/dist/weapp/funnel-chart/index.wxml +1 -0
  1218. package/dist/weapp/funnel-chart/index.wxss +1 -0
  1219. package/dist/weapp/gantt-chart/index.js +1 -0
  1220. package/dist/weapp/gantt-chart/index.json +1 -0
  1221. package/dist/weapp/gantt-chart/index.wxml +1 -0
  1222. package/dist/weapp/gantt-chart/index.wxss +1 -0
  1223. package/dist/weapp/gauge-chart/index.js +1 -0
  1224. package/dist/weapp/gauge-chart/index.json +1 -0
  1225. package/dist/weapp/gauge-chart/index.wxml +1 -0
  1226. package/dist/weapp/gauge-chart/index.wxss +1 -0
  1227. package/dist/weapp/heatmap-chart/index.js +1 -0
  1228. package/dist/weapp/heatmap-chart/index.json +1 -0
  1229. package/dist/weapp/heatmap-chart/index.wxml +1 -0
  1230. package/dist/weapp/heatmap-chart/index.wxss +1 -0
  1231. package/dist/weapp/histogram-chart/index.js +1 -0
  1232. package/dist/weapp/histogram-chart/index.json +1 -0
  1233. package/dist/weapp/histogram-chart/index.wxml +1 -0
  1234. package/dist/weapp/histogram-chart/index.wxss +1 -0
  1235. package/dist/weapp/horizontal-bar-chart/index.js +1 -0
  1236. package/dist/weapp/horizontal-bar-chart/index.json +1 -0
  1237. package/dist/weapp/horizontal-bar-chart/index.wxml +1 -0
  1238. package/dist/weapp/horizontal-bar-chart/index.wxss +1 -0
  1239. package/dist/weapp/mixed-chart/index.js +1 -0
  1240. package/dist/weapp/mixed-chart/index.json +1 -0
  1241. package/dist/weapp/mixed-chart/index.wxml +1 -0
  1242. package/dist/weapp/mixed-chart/index.wxss +1 -0
  1243. package/dist/weapp/pie-chart/index.js +1 -0
  1244. package/dist/weapp/pie-chart/index.json +1 -0
  1245. package/dist/weapp/pie-chart/index.wxml +1 -0
  1246. package/dist/weapp/pie-chart/index.wxss +1 -0
  1247. package/dist/weapp/radar-chart/index.js +1 -0
  1248. package/dist/weapp/radar-chart/index.json +1 -0
  1249. package/dist/weapp/radar-chart/index.wxml +1 -0
  1250. package/dist/weapp/radar-chart/index.wxss +1 -0
  1251. package/dist/weapp/radial-bar-chart/index.js +1 -0
  1252. package/dist/weapp/radial-bar-chart/index.json +1 -0
  1253. package/dist/weapp/radial-bar-chart/index.wxml +1 -0
  1254. package/dist/weapp/radial-bar-chart/index.wxss +1 -0
  1255. package/dist/weapp/range-area-chart/index.js +1 -0
  1256. package/dist/weapp/range-area-chart/index.json +1 -0
  1257. package/dist/weapp/range-area-chart/index.wxml +1 -0
  1258. package/dist/weapp/range-area-chart/index.wxss +1 -0
  1259. package/dist/weapp/sankey-chart/index.js +1 -0
  1260. package/dist/weapp/sankey-chart/index.json +1 -0
  1261. package/dist/weapp/sankey-chart/index.wxml +1 -0
  1262. package/dist/weapp/sankey-chart/index.wxss +1 -0
  1263. package/dist/weapp/shape-chart/index.js +1 -0
  1264. package/dist/weapp/shape-chart/index.json +1 -0
  1265. package/dist/weapp/shape-chart/index.wxml +1 -0
  1266. package/dist/weapp/shape-chart/index.wxss +1 -0
  1267. package/dist/weapp/sparkline/index.js +1 -0
  1268. package/dist/weapp/sparkline/index.json +1 -0
  1269. package/dist/weapp/sparkline/index.wxml +1 -0
  1270. package/dist/weapp/sparkline/index.wxss +1 -0
  1271. package/dist/weapp/sunburst-chart/index.js +1 -0
  1272. package/dist/weapp/sunburst-chart/index.json +1 -0
  1273. package/dist/weapp/sunburst-chart/index.wxml +1 -0
  1274. package/dist/weapp/sunburst-chart/index.wxss +1 -0
  1275. package/dist/weapp/treemap-chart/index.js +1 -0
  1276. package/dist/weapp/treemap-chart/index.json +1 -0
  1277. package/dist/weapp/treemap-chart/index.wxml +1 -0
  1278. package/dist/weapp/treemap-chart/index.wxss +1 -0
  1279. package/dist/weapp/types.d.ts +549 -0
  1280. package/dist/weapp/waterfall-chart/index.js +1 -0
  1281. package/dist/weapp/waterfall-chart/index.json +1 -0
  1282. package/dist/weapp/waterfall-chart/index.wxml +1 -0
  1283. package/dist/weapp/waterfall-chart/index.wxss +1 -0
  1284. package/dist/web-components/components/chart/chart.d.ts +58 -0
  1285. package/dist/web-components/components/chart/chart.js +55 -0
  1286. package/dist/web-components/components/chart/chart.js.map +1 -0
  1287. package/dist/web-components/components/chart/charts.d.ts +254 -0
  1288. package/dist/web-components/components/chart/charts.js +208 -0
  1289. package/dist/web-components/components/chart/charts.js.map +1 -0
  1290. package/dist/web-components/components/chart/engine-element.d.ts +53 -0
  1291. package/dist/web-components/components/chart/engine-element.js +77 -0
  1292. package/dist/web-components/components/chart/engine-element.js.map +1 -0
  1293. package/dist/web-components/components/chart/extended.d.ts +234 -0
  1294. package/dist/web-components/components/chart/extended.js +197 -0
  1295. package/dist/web-components/components/chart/extended.js.map +1 -0
  1296. package/dist/web-components/components/chart/series.d.ts +7 -0
  1297. package/dist/web-components/components/chart/series.js +14 -0
  1298. package/dist/web-components/components/chart/series.js.map +1 -0
  1299. package/dist/web-components/components/chart/shape-chart.d.ts +199 -0
  1300. package/dist/web-components/components/chart/shape-chart.js +161 -0
  1301. package/dist/web-components/components/chart/shape-chart.js.map +1 -0
  1302. package/dist/web-components/components/chart/shapes-extended.d.ts +198 -0
  1303. package/dist/web-components/components/chart/shapes-extended.js +182 -0
  1304. package/dist/web-components/components/chart/shapes-extended.js.map +1 -0
  1305. package/dist/web-components/components/chart-3d/chart-3d.d.ts +111 -0
  1306. package/dist/web-components/components/chart-3d/chart-3d.js +97 -0
  1307. package/dist/web-components/components/chart-3d/chart-3d.js.map +1 -0
  1308. package/dist/web-components/components/graph/graph.d.ts +154 -0
  1309. package/dist/web-components/components/graph/graph.js +149 -0
  1310. package/dist/web-components/components/graph/graph.js.map +1 -0
  1311. package/dist/web-components/components/order-book/order-book.d.ts +165 -0
  1312. package/dist/web-components/components/order-book/order-book.js +174 -0
  1313. package/dist/web-components/components/order-book/order-book.js.map +1 -0
  1314. package/dist/web-components/components/trading-chart/trading-chart.d.ts +143 -0
  1315. package/dist/web-components/components/trading-chart/trading-chart.js +158 -0
  1316. package/dist/web-components/components/trading-chart/trading-chart.js.map +1 -0
  1317. package/dist/web-components/elements/chart-3d.d.ts +2 -0
  1318. package/dist/web-components/elements/chart-3d.js +13 -0
  1319. package/dist/web-components/elements/chart-3d.js.map +1 -0
  1320. package/dist/web-components/elements/chart.d.ts +7 -0
  1321. package/dist/web-components/elements/chart.js +44 -0
  1322. package/dist/web-components/elements/chart.js.map +1 -0
  1323. package/dist/web-components/elements/graph.d.ts +2 -0
  1324. package/dist/web-components/elements/graph.js +12 -0
  1325. package/dist/web-components/elements/graph.js.map +1 -0
  1326. package/dist/web-components/elements/order-book.d.ts +2 -0
  1327. package/dist/web-components/elements/order-book.js +13 -0
  1328. package/dist/web-components/elements/order-book.js.map +1 -0
  1329. package/dist/web-components/elements/trading-chart.d.ts +2 -0
  1330. package/dist/web-components/elements/trading-chart.js +8 -0
  1331. package/dist/web-components/elements/trading-chart.js.map +1 -0
  1332. package/dist/web-components/html-custom-data.json +1470 -38
  1333. package/dist/web-components/types/react.d.ts +494 -0
  1334. package/dist/web-components/types/solid.d.ts +368 -0
  1335. package/dist/web-components/types/svelte.d.ts +368 -0
  1336. package/dist/web-components/types/vue.d.ts +410 -0
  1337. package/package.json +128 -1
@@ -1,2 +1,2 @@
1
- var e=(e,t,n,r)=>{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;return{plot:e,view:t,xToPx:n?e=>d-(e-i)*c:e=>u+(e-i)*c,yToPx:r?e=>f+(e-o)*l:e=>p-(e-o)*l,pxToX:n?e=>i+(d-e)/c:e=>i+(e-u)/c,pxToY:r?e=>o+(e-f)/l:e=>o+(p-e)/l,xPerPx:1/c,yPerPx:1/l}},t=e=>{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;return{x:Math.round(o),y:Math.round(c),width:Math.max(10,Math.round(t-o-l)),height:Math.max(10,Math.round(n-c-s))}};exports.computePlot=t,exports.createScales=e;
1
+ var e=(e,t,n,r,i=!1)=>{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;if(i){let p=e.height/(o-a||1),m=e.width/(c-s||1);return{plot:e,view:t,horizontal:i,xToPx:n?e=>f-(e-a)*p:e=>d+(e-a)*p,yToPx:r?e=>u-(e-s)*m:e=>l+(e-s)*m,pxToX:n?e=>a+(f-e)/p:e=>a+(e-d)/p,pxToY:r?e=>s+(u-e)/m:e=>s+(e-l)/m,xPerPx:1/p,yPerPx:1/m}}let p=e.width/(o-a||1),m=e.height/(c-s||1);return{plot:e,view:t,horizontal:i,xToPx:n?e=>u-(e-a)*p:e=>l+(e-a)*p,yToPx:r?e=>d+(e-s)*m:e=>f-(e-s)*m,pxToX:n?e=>a+(u-e)/p:e=>a+(e-l)/p,pxToY:r?e=>s+(e-d)/m:e=>s+(f-e)/m,xPerPx:1/p,yPerPx:1/m}},t=(e,t,n)=>e.horizontal?{x:e.yToPx(n),y:e.xToPx(t)}:{x:e.xToPx(t),y:e.yToPx(n)},n=(e,t,n)=>e.horizontal?{x:e.pxToX(n),y:e.pxToY(t)}:{x:e.pxToX(t),y:e.pxToY(n)},r=(e,t,n)=>e.horizontal?n:t,i=(e,t,n)=>e.horizontal?t:n,a=(e,t,n,r,i)=>{let a=Math.min(t,n),o=Math.max(t,n),s=Math.min(r,i),c=Math.max(r,i);return e.horizontal?{x:s,y:a,width:c-s,height:o-a}:{x:a,y:s,width:o-a,height:c-s}},o=(e,t,n)=>{let r=Math.min(Math.abs(e),Math.abs(t));return r>=4?{inset:Math.round(Math.min(1,.5+r/96)*4)/4,radius:Math.round(Math.max(0,Math.min(n,r*.2))*4)/4}:{inset:0,radius:0}},s=e=>{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;return{x:Math.round(o),y:Math.round(c),width:Math.max(10,Math.round(t-o-u)),height:Math.max(10,Math.round(n-c-s))}};exports.alongX=r,exports.alongY=i,exports.computePlot=s,exports.createScales=e,exports.heatCellStyle=o,exports.screenRect=a,exports.toData=n,exports.toScreen=t;
2
2
  //# sourceMappingURL=layout.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"layout.cjs","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,GACX,EACA,EACA,EACA,IACW,CACX,GAAM,CAACC,EAAIC,GAAMC,EAAK,EAChB,CAACC,EAAIC,GAAMF,EAAK,EAChBG,EAAKC,EAAK,OAASL,EAAKD,GAAM,GAC9BO,EAAKD,EAAK,QAAUF,EAAKD,GAAM,GAC/BK,EAAOF,EAAK,EACZG,EAAQH,EAAK,EAAIA,EAAK,MACtBI,EAAMJ,EAAK,EACXK,EAASL,EAAK,EAAIA,EAAK,OAC7B,MAAO,CACL,OACA,OACA,MAAOM,EACF,GAAMH,GAASI,EAAIb,GAAMK,EACzB,GAAMG,GAAQK,EAAIb,GAAMK,EAC7B,MAAOS,EACF,GAAMJ,GAAOG,EAAIV,GAAMI,EACvB,GAAMI,GAAUE,EAAIV,GAAMI,EAC/B,MAAOK,EACF,GAAMZ,GAAMS,EAAQM,GAAKV,EACzB,GAAML,GAAMe,EAAIP,GAAQH,EAC7B,MAAOS,EACF,GAAMX,GAAMY,EAAIL,GAAOH,EACvB,GAAMJ,GAAMQ,EAASI,GAAKR,EAC/B,OAAQ,EAAIF,EACZ,OAAQ,EAAIE,CACd,CACF,EAeaS,EAAe,GAA6B,CACvD,GAAM,CAAE,QAAO,SAAQ,UAAS,YAAaC,EACvCC,EAAO,KAAK,KAAKC,EAAW,GAAG,EAC/BX,EACJY,EAAQ,MACPH,EAAM,YAAc,EAAIA,EAAM,YAAc,EAAI,IAChDA,EAAM,OAASC,EAAO,EAAI,GACvBP,EACJS,EAAQ,QACPH,EAAM,aAAeC,EAAO,EAAI,IAChCD,EAAM,OAASC,EAAO,EAAI,GACvBR,EAAMU,EAAQ,IACdX,EAAQW,EAAQ,MACtB,MAAO,CACL,EAAG,KAAK,MAAMZ,CAAI,EAClB,EAAG,KAAK,MAAME,CAAG,EACjB,MAAO,KAAK,IAAI,GAAI,KAAK,MAAMW,EAAQb,EAAOC,CAAK,CAAC,EACpD,OAAQ,KAAK,IAAI,GAAI,KAAK,MAAMa,EAASZ,EAAMC,CAAM,CAAC,CACxD,CACF"}
1
+ {"version":3,"file":"layout.cjs","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","heatCellStyle","size","width","height","radius","computePlot","input","line","fontSize","padding","y2Width"],"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\n/**\n * Inset (per side) and corner radius of heatmap cells of `width` ×\n * `height` CSS pixels: a hairline apart (1px, 2px on large cells), corners\n * of `radius` at most 20% of the cell; tiny cells touch\n */\nexport const heatCellStyle = (\n width: number,\n height: number,\n radius: number,\n): { inset: number; radius: number } => {\n const size = Math.min(Math.abs(width), Math.abs(height));\n if (!(size >= 4)) return { inset: 0, radius: 0 };\n return {\n inset: Math.round(Math.min(1, 0.5 + size / 96) * 4) / 4,\n radius: Math.round(Math.max(0, Math.min(radius, size * 0.2)) * 4) / 4,\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 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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"}
@@ -1,26 +1,76 @@
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, t, n) => {
56
+ let r = Math.min(Math.abs(e), Math.abs(t));
57
+ return r >= 4 ? {
58
+ inset: Math.round(Math.min(1, .5 + r / 96) * 4) / 4,
59
+ radius: Math.round(Math.max(0, Math.min(n, r * .2)) * 4) / 4
60
+ } : {
61
+ inset: 0,
62
+ radius: 0
63
+ };
64
+ }, s = (e) => {
65
+ 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
66
  return {
17
67
  x: Math.round(o),
18
68
  y: Math.round(c),
19
- width: Math.max(10, Math.round(t - o - l)),
69
+ width: Math.max(10, Math.round(t - o - u)),
20
70
  height: Math.max(10, Math.round(n - c - s))
21
71
  };
22
72
  };
23
73
  //#endregion
24
- export { t as computePlot, e as createScales };
74
+ export { r as alongX, i as alongY, s as computePlot, e as createScales, o as heatCellStyle, a as screenRect, n as toData, t as toScreen };
25
75
 
26
76
  //# 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","heatCellStyle","size","width","height","radius","computePlot","input","line","fontSize","padding","y2Width"],"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\n/**\n * Inset (per side) and corner radius of heatmap cells of `width` ×\n * `height` CSS pixels: a hairline apart (1px, 2px on large cells), corners\n * of `radius` at most 20% of the cell; tiny cells touch\n */\nexport const heatCellStyle = (\n width: number,\n height: number,\n radius: number,\n): { inset: number; radius: number } => {\n const size = Math.min(Math.abs(width), Math.abs(height));\n if (!(size >= 4)) return { inset: 0, radius: 0 };\n return {\n inset: Math.round(Math.min(1, 0.5 + size / 96) * 4) / 4,\n radius: Math.round(Math.max(0, Math.min(radius, size * 0.2)) * 4) / 4,\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 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,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},l=(e,t,n)=>{if(n)return 1;let r=c(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},u=(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}})},d=`var(--success-color, #16a34a)`,f=`var(--danger-color, #dc2626)`,p=(r,i,c,p,m=null)=>{let h=m??i.resolve??((t,n)=>e.resolveStaticColor(t,{},n)),g=r.series,_=g.map(e=>e.data),v=r.xAxis?.type??a(_),y=v===`category`?[...r.xAxis?.categories??t.collectCategories(_)]:[],b=new Map(y.map((e,t)=>[e,t])),x=t.xResolver(v,e=>b.get(e)??NaN),S=r.yAxis,C=g.filter(e=>e.type===`heatmap`).map(e=>e.data),w=S?.type===`category`||!S?.type&&C.length?[...S?.categories??t.collectYCategories(C)]:[],T=S?.type===`category`||w.length?`category`:S?.type===`time`?`time`:`linear`,E=new Map(w.map((e,t)=>[e,t])),D=e=>typeof e==`number`?e:typeof e==`string`?T===`category`?E.get(e)??NaN:Number(e):NaN,O=`${v}|${y.join(``)}|${T}|${w.join(``)}`,k=r.stackMode===`percent`,A=new Set,j=g.map((n,r)=>{let a=n.id??`#${r}`;for(;A.has(a);)a+=`'`;A.add(a);let o=p.get(a);(!o||o.data!==n.data||o.resolverKey!==O)&&(o={data:n.data,resolverKey:O,cols:t.normalizeData(n.data,x,D)},p.set(a,o));let s=n.type??`line`,l=i.palette[r%i.palette.length],u=n.color?h(n.color,l):l,m=o.cols,g=null;if((s===`scatter`||s===`bar`)&&m.colors){let e=new Map;g=m.colors.map(t=>{if(t===void 0)return;let n=e.get(t);return n||e.set(t,n=h(t,u)),n})}let _=[],v=[0,1],y=null;if(s===`heatmap`){_=n.colorScale&&n.colorScale.length?n.colorScale.map(e=>h(e,u)):[e.mix(i.background,u,.08),u],v=n.valueRange?[n.valueRange[0],n.valueRange[1]]:[m.valueMin,m.valueMax],Number.isFinite(v[0])||(v=[0,1]);let t=m.value??m.y,[r,a]=v,o=a-r||1;y=new Uint32Array(m.count);for(let n=0;n<m.count;n++){let i=t[n];Number.isFinite(i)&&Number.isFinite(m.y[n])&&(y[n]=e.packColor(e.rampColor(_,(i-r)/o)))}}let b=n.id??String(r);return{index:r,key:a,id:b,name:n.name??`Series ${r+1}`,type:s,color:u,colorCss:e.toCss(u),lineWidth:n.lineWidth??(s===`candlestick`?1:2),pointSize:n.pointSize??8,opacity:n.opacity??(s===`area`?.28:s===`scatter`?.78:1),hidden:!!n.hidden||c.has(b),showLabels:!!n.showLabels,curve:n.curve??`linear`,cols:m,barOffset:0,barHalfWidth:0,barBase:null,barTop:null,stackBase:null,stackTop:null,pointColors:g,upColor:s===`candlestick`?h(n.upColor??d,[.09,.64,.29,1]):u,downColor:s===`candlestick`?h(n.downColor??f,[.86,.15,.15,1]):u,cellColors:y,cellHalf:{x:.5,y:.5},colorScale:_,valueRange:v,radius:n.radius??(s===`heatmap`?2:3),format:n.format}}),M=j.filter(e=>!e.hidden),N=j.length>0&&j.every(e=>e.type===`scatter`||e.type===`heatmap`),P=M.filter(e=>e.type===`bar`),F=l(P,`x`,v===`category`);if(P.length){let e=new Map,t=e=>g[e.index].stack??`\u0000${e.key}`;for(let n of P)e.has(t(n))||e.set(t(n),e.size);let n=F*(e.size>1?.78:.62),r=n/e.size,i=u(P.map(e=>({s:e,stack:t(e)})),!1),a=k?u(P.filter(e=>g[e.index].stack!==void 0).map(e=>({s:e,stack:t(e)})),!0):[],o=0;P.forEach((s,c)=>{let l=e.get(t(s))??0;s.barOffset=-n/2+r*(l+.5),s.barHalfWidth=r/2*(e.size>1?.86:1);let u=k&&g[s.index].stack!==void 0?a[o++]:i[c];s.barBase=u.base,s.barTop=u.top})}let I=M.filter(e=>(e.type===`line`||e.type===`area`)&&g[e.index].stack!==void 0);if(I.length){let e=u(I.map(e=>({s:e,stack:g[e.index].stack??``})),k);I.forEach((t,n)=>{t.stackBase=e[n].base,t.stackTop=e[n].top})}let L=M.filter(e=>e.type===`candlestick`),R=l(L,`x`,v===`category`);for(let e of L)e.barHalfWidth=R*.3;let z=M.filter(e=>e.type===`heatmap`);if(z.length){let e=l(z,`x`,v===`category`)/2,t=l(z,`y`,T===`category`)/2;for(let n of z)n.cellHalf={x:e,y:t}}let B=r.xAxis,V;if(v===`category`)V=[-.5,Math.max(1,y.length)-.5];else{let e=[];for(let t of M){e.push(t.cols.xMin,t.cols.xMax);let n=t.type===`bar`?F/2:t.type===`candlestick`?R/2:t.type===`heatmap`?t.cellHalf.x:0;n&&e.push(t.cols.xMin-n,t.cols.xMax+n)}V=n.ensureSpan(...s(e),v===`time`?[Date.now()-864e5,Date.now()]:[0,1]);let t=j.every(e=>e.type===`scatter`);if(t){let e=(V[1]-V[0])*.04;V=[V[0]-e,V[1]+e]}(B?.nice??(t&&v===`linear`))&&v===`linear`&&(V=n.niceDomain(V[0],V[1],B?.tickCount??6))}B?.min!==void 0&&(V[0]=B.min),B?.max!==void 0&&(V[1]=B.max),V=n.ensureSpan(V[0],V[1]);let H;if(T===`category`)H=[-.5,Math.max(1,w.length)-.5];else{let e=[];for(let t of M)t.type===`bar`&&t.barBase&&t.barTop?e.push(...s(t.barBase),...s(t.barTop)):t.stackBase&&t.stackTop?e.push(...s(t.stackBase),...s(t.stackTop)):t.type===`heatmap`?e.push(t.cols.yMin-t.cellHalf.y,t.cols.yMax+t.cellHalf.y):e.push(t.cols.yMin,t.cols.yMax);let t=P.length>0||M.some(e=>e.type===`area`);if((P.length||S?.zero)&&e.push(0),P.some(e=>e.showLabels)){let[t,n]=s(e);n>0&&e.push(n+(n-Math.min(0,t))*.1),t<0&&e.push(t-(Math.max(0,n)-t)*.1)}if(H=n.ensureSpan(...s(e)),j.every(e=>e.type===`scatter`)){let e=(H[1]-H[0])*.06;H=[H[0]-e,H[1]+e]}else if(L.length&&!P.length){let e=(H[1]-H[0])*.04;H=[H[0]-e,H[1]+e]}(S?.nice??!z.length)&&T===`linear`&&(H=n.niceDomain(H[0],H[1],S?.tickCount??5)),k&&(P.length||I.length)&&(H=[s(e)[0]<0?-100:0,100]),t&&!S?.zero&&H[0]<0&&s(e)[0]>=0&&(H[0]=0)}S?.min!==void 0&&(H[0]=S.min),S?.max!==void 0&&(H[1]=S.max),H=n.ensureSpan(H[0],H[1]);let U=r.interaction===!1?!1:r.interaction===!0||r.interaction===void 0?!0:r.interaction.zoom??!0,W=U===!1?{x:!1,y:!1}:U===!0?{x:!0,y:N}:{x:U.includes(`x`),y:U.includes(`y`)},G=typeof r.tooltip==`object`?r.tooltip:void 0,K=S?.format??(k&&(P.length||I.length)?e=>`${+e.toFixed(1)}%`:void 0);return{series:j,x:o(B,v,y,!1),y:{...o(S,T,w,T!==`category`),format:K},base:{x:V,y:H},allScatter:N,zoom:W,tooltipMode:G?.mode??(N?`nearest`:`axis`),baseline:Math.min(Math.max(0,H[0]),H[1]),minSpan:{x:v===`category`?1:(V[1]-V[0])*1e-7,y:T===`category`?1:(H[1]-H[0])*1e-7},percent:k,stacks:g.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)}},m=(e,t)=>e.barTop?e.barTop[t]:e.stackTop?e.stackTop[t]:e.cols.y[t],h=new WeakMap,g=e=>{let t=h.get(e.cols);return t||(t=new r.GridIndex(e.cols.x,e.cols.y,e.cols.count),h.set(e.cols,t)),t};exports.buildModel=p,exports.detectXType=a,exports.gridOf=g,exports.plottedY=m;
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={scale:1,offset:0,log:!0},c=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}},l=e=>{for(let t of e){let e=c(t);if(e instanceof Date)return`time`;if(typeof e==`string`)return`category`}return`linear`},u=(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`}),d=e=>{let t={};if(!e)return t;for(let n of Object.keys(e))e[n]!==void 0&&(t[n]=e[n]);return t},f=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]},p=(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},m=(e,t,n)=>{if(n)return 1;let r=p(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},h=(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)`,g=`var(--danger-color, #dc2626)`,_=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},v=e=>Number(e.toPrecision(12)),y=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},b=(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[v(n),v(n+c*l)];l=y(l)}return r.niceDomain(e,t,i)},x=new WeakMap,S=(e,t)=>{let n=`${t.scale},${t.offset},${!!t.log}`,r=x.get(e);if(r&&r.key===n)return r.cols;let i=C(t),a=e=>e?e.map(i):null,o={...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};if(t.log){let e=[1/0,-1/0],t=t=>{if(t)for(let n=0;n<t.length;n++){let r=t[n];Number.isFinite(r)&&(r<e[0]&&(e[0]=r),r>e[1]&&(e[1]=r))}};for(let e of[o.y,o.y0,o.high,o.low,o.q1,o.q3])t(e);o.outliers?.forEach(e=>t(e)),o.yMin=e[0]<=e[1]?e[0]:NaN,o.yMax=e[0]<=e[1]?e[1]:NaN}else{let t=i(e.yMin),n=i(e.yMax);o.yMin=Math.min(t,n),o.yMax=Math.max(t,n)}return x.set(e,{key:n,cols:o}),o},te=e=>{let t=Math.floor(e[0]+1e-9),n=Math.ceil(e[1]-1e-9);return[t,n>t?n:t+1]},ne=(e,t,n=-1/0)=>{let r=C(t),i=e=>e?e.map(r):null,a=e.stackBase;e.cols=S(e.raw,t),e.barBase=e.barBase&&!e.floating?e.barBase.map(e=>e===0?t.log?-1/0:r(0):r(e)):i(e.barBase),e.barTop=i(e.barTop),e.stackTop=i(e.stackTop),e.stackBase=a&&a===e.raw.y0?e.cols.y0:a?i(a):e.type===`area`?new Float64Array(e.cols.count).fill(n):null},C=e=>t=>(e.log?Math.log10(t):t)*e.scale+e.offset,w=(e,t)=>e.y.type===`log`?Math.log10(t):t,T=(e,t)=>e.y.type===`log`?10**t:t,re=(e,t)=>{for(let n of[e.barBase,e.stackBase])if(n)for(let e=0;e<n.length;e++)n[e]===-1/0&&(n[e]=t)},ie=(e,t)=>{let[n,r]=e.valueRange,i=e.colorMidpoint,a;return a=i!==null&&i>n&&i<r?t<i?(t-n)/(i-n)*.5:.5+(t-i)/(r-i)*.5:(t-n)/(r-n||1),a<0?0:a>1?1:a},ae=(t,n,r,i)=>{let a=e.luminance(r.background)<.4;if(t===`diverging`){let t=e.mixOklab(r.surface,r.textMuted,a?.12:.08),o=t=>a?e.withLightness(t,.7,1.25):e.withLightness(t,.5,1.05),s=n=>e.mixOklab(t,o(n),.5);return[o(i),s(i),t,s(n),o(n)]}return a?[e.mixOklab(r.surface,n,.14),e.withLightness(n,.46,.95),e.withLightness(n,.64,1.2),e.withLightness(n,.8,1.15)]:[e.mixOklab(r.surface,n,.06),e.withLightness(n,.8,.6),e.withLightness(n,.58,1),e.withLightness(n,.36,.9)]},E=(o,c,p,v,y=null)=>{let x=y??c.resolve??((t,n)=>e.resolveStaticColor(t,{},n)),w=o.series,T=n.resolveLocale(o.locale),E=typeof o.tooltip==`object`?o.tooltip:void 0,D=a.chartLabels(T,{...d(E?.labels),...d(o.labels)}),O=w.map(e=>e.data),k=o.xAxis?.type??l(O),A=k===`category`?[...o.xAxis?.categories??t.collectCategories(O)]:[],oe=new Map(A.map((e,t)=>[e,t])),se=t.xResolver(k,e=>oe.get(e)??NaN),j=o.yAxis,ce=w.filter(e=>e.type===`heatmap`).map(e=>e.data),M=j?.type===`category`||!j?.type&&ce.length?[...j?.categories??t.collectYCategories(ce)]:[],N=j?.type===`category`||M.length?`category`:j?.type===`time`||!j?.type&&_(O)?`time`:j?.type===`log`?`log`:`linear`,P=N===`log`,le=new Map(M.map((e,t)=>[e,t])),ue=e=>typeof e==`number`?e:typeof e==`string`?N===`category`?le.get(e)??NaN:N===`time`?Date.parse(e):Number(e):e instanceof Date?e.getTime():NaN,F=`${k}|${A.join(``)}|${N}|${M.join(``)}`,I=o.stackMode===`percent`,L=o.orientation===`horizontal`,R=new Set,z=w.map((n,r)=>{let i=n.id??`#${r}`;for(;R.has(i);)i+=`'`;R.add(i);let a=v.get(i);(!a||a.data!==n.data||a.resolverKey!==F)&&(a={data:n.data,resolverKey:F,cols:t.normalizeData(n.data,se,ue)},v.set(i,a));let o=n.type??`line`,s=c.palette[r%c.palette.length],l=n.color?x(n.color,s):s,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=x(t,l)),n})}let f=[],m=[0,1],h=null,_=null,y=null;if(o===`heatmap`){let t=n.colorScale,r=t===`diverging`?`diverging`:`sequential`;f=typeof t==`object`&&t.length?t.map(e=>x(e,l)):ae(r,l,c,x(g,[.86,.15,.15,1])),m=n.valueRange?[n.valueRange[0],n.valueRange[1]]:[u.valueMin,u.valueMax],Number.isFinite(m[0])||(m=[0,1]);let[i,a]=m;_=n.colorMidpoint??(r===`diverging`&&typeof t!=`object`?i<0&&a>0?0:(i+a)/2:null);let o=e.oklabRamp(f);y=o;let s=u.value??u.y,d={valueRange:m,colorMidpoint:_};h=new Uint32Array(u.count);for(let e=0;e<u.count;e++){let t=s[e];Number.isFinite(t)&&Number.isFinite(u.y[e])&&(h[e]=o[Math.round(ie(d,t)*255)])}}let b=n.connector?typeof n.connector==`object`?n.connector:{}:null,S=n.id??String(r);return{index:r,key:i,id:S,name:n.name??`${D.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||p.has(S),showLabels:!!n.showLabels,curve:n.curve??`linear`,cols:u,raw:u,yAxis:n.yAxis===`right`&&!L?`right`:`left`,floating:o===`bar`&&!!u.y0,barOffset:0,barHalfWidth:0,barBase:null,barTop:null,stackBase:null,stackTop:null,pointColors:d,upColor:o===`candlestick`?x(n.upColor??ee,[.09,.64,.29,1]):l,downColor:o===`candlestick`?x(n.downColor??g,[.86,.15,.15,1]):l,cellColors:h,cellHalf:{x:.5,y:.5},colorScale:f,valueRange:m,colorMidpoint:_,colorLut:y,tooltip:n.tooltip!==!1,outlierShape:n.outlierShape??`hollow`,outlierSize:n.outlierSize??n.pointSize??7,connector:b&&o===`bar`?{color:b.color?x(b.color,c.textMuted):c.textMuted,dash:[...b.dash??[3,3]],width:b.width??1}:null,radius:n.radius??(o===`heatmap`?2:o===`boxplot`?0:3),format:n.format,valueName:n.valueName}}),B=z.filter(e=>!e.hidden),V=z.length>0&&z.every(e=>e.type===`scatter`||e.type===`heatmap`),H=B.filter(e=>e.type===`bar`||e.type===`boxplot`),U=B.filter(e=>e.type===`bar`),de=m(H,`x`,k===`category`);if(H.length){let e=new Map,t=e=>w[e.index].stack??`\u0000${e.key}`;for(let n of H)e.has(t(n))||e.set(t(n),e.size);let n=0;for(let e of H){let t=w[e.index].barWidth;t!==void 0&&t>n&&(n=Math.min(1,t))}let r=de*(n||(e.size>1?.78:.62)),i=r/e.size;for(let n of H){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=U.filter(e=>!e.floating),o=h(a.map(e=>({s:e,stack:t(e)})),!1),s=I?h(a.filter(e=>w[e.index].stack!==void 0).map(e=>({s:e,stack:t(e)})),!0):[],c=0;a.forEach((e,t)=>{let n=I&&w[e.index].stack!==void 0?s[c++]:o[t];e.barBase=n.base,e.barTop=n.top});for(let e of U){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 B)e.type===`area`&&e.cols.y0&&w[e.index].stack===void 0&&(e.stackBase=e.cols.y0);let W=B.filter(e=>(e.type===`line`||e.type===`area`)&&w[e.index].stack!==void 0);if(W.length){let e=h(W.map(e=>({s:e,stack:w[e.index].stack??``})),I);W.forEach((t,n)=>{t.stackBase=e[n].base,t.stackTop=e[n].top})}let G=B.filter(e=>e.type===`candlestick`),fe=m(G,`x`,k===`category`);for(let e of G)e.barHalfWidth=fe*.3;let K=B.filter(e=>e.type===`heatmap`);if(K.length){let e=m(K,`x`,k===`category`)/2,t=m(K,`y`,N===`category`)/2;for(let n of K)n.cellHalf={x:e,y:t}}let q=o.xAxis,J;if(k===`category`)J=[-.5,Math.max(1,A.length)-.5];else{let e=[];for(let t of B){e.push(t.cols.xMin,t.cols.xMax);let n=t.type===`bar`||t.type===`boxplot`?de/2:t.type===`candlestick`?fe/2:t.type===`heatmap`?t.cellHalf.x:0;n&&e.push(t.cols.xMin-n,t.cols.xMax+n)}J=r.ensureSpan(...f(e),k===`time`?[Date.now()-864e5,Date.now()]:[0,1]);let t=z.every(e=>e.type===`scatter`);if(t){let e=(J[1]-J[0])*.04;J=[J[0]-e,J[1]+e]}(q?.nice??(t&&k===`linear`))&&k===`linear`&&(J=r.niceDomain(J[0],J[1],q?.tickCount??6))}if(q?.min!==void 0&&(J[0]=q.min),q?.max!==void 0&&(J[1]=q.max),J=r.ensureSpan(J[0],J[1]),P)for(let e of z)e.yAxis!==`right`&&e.type!==`heatmap`&&ne(e,s);let pe=(e,t,n=!1)=>{let r=[];for(let t of e)t.type===`bar`&&t.barBase&&t.barTop?r.push(...f(t.barBase),...f(t.barTop)):t.stackBase&&t.stackTop?r.push(...f(t.stackBase),...f(t.stackTop)):t.type===`heatmap`?r.push(t.cols.yMin-t.cellHalf.y,t.cols.yMax+t.cellHalf.y):r.push(t.cols.yMin,t.cols.yMax);let i=e.filter(e=>e.type===`bar`);if(!n&&(i.some(e=>!e.floating)||t)&&r.push(0),i.some(e=>e.showLabels)){let[e,t]=f(r);t>0&&r.push(t+(t-Math.min(0,e))*.1),e<0&&r.push(e-(Math.max(0,t)-e)*.1)}return r},me=B.filter(e=>e.yAxis===`left`),Y=me.length?me:B,he=Y.filter(e=>e.type===`bar`),X;if(N===`category`)X=[-.5,Math.max(1,M.length)-.5];else{let e=pe(Y,j?.zero,P),t=he.length>0||Y.some(e=>e.type===`area`);if(X=r.ensureSpan(...f(e)),z.every(e=>e.type===`scatter`)){let e=(X[1]-X[0])*.06;X=[X[0]-e,X[1]+e]}else if((G.length||Y.some(e=>e.type===`boxplot`))&&!he.length){let e=(X[1]-X[0])*.04;X=[X[0]-e,X[1]+e]}(j?.nice??!K.length)&&N===`linear`&&(X=r.niceDomain(X[0],X[1],j?.tickCount??5)),P&&j?.nice!==!1&&(X=te(X)),I&&(U.length||W.length)&&(X=[f(e)[0]<0?-100:0,100]),t&&!j?.zero&&!P&&X[0]<0&&f(e)[0]>=0&&(X[0]=0)}let ge=e=>P?Math.log10(e):e;if(j?.min!==void 0&&(X[0]=ge(j.min)),j?.max!==void 0&&(X[1]=ge(j.max)),X=r.ensureSpan(X[0],X[1]),P)for(let e of z)e.yAxis===`left`&&re(e,X[0]);let Z=o.yAxis2,_e=null,ve=null,Q=z.filter(e=>e.yAxis===`right`);if(Q.length&&N!==`category`){let e=Z?.type===`log`,t=Q.filter(e=>!e.hidden),n=e?t.flatMap(e=>{let t=S(e.raw,s);return[t.yMin,t.yMax]}):pe(t,Z?.zero),[i,a]=r.ensureSpan(...f(n)),o=Z?.nice===!1?[i,a]:e?te([i,a]):b(i,a,X,j?.tickCount??5),c=t=>e?Math.log10(t):t;Z?.min!==void 0&&(o[0]=c(Z.min)),Z?.max!==void 0&&(o[1]=c(Z.max)),o=r.ensureSpan(o[0],o[1]);let l=(X[1]-X[0])/(o[1]-o[0]),d={scale:l,offset:X[0]-o[0]*l,log:e};ve=d;let p=e?X[0]:C(d)(Math.min(Math.max(0,o[0]),o[1]));for(let e of Q)ne(e,d,p),re(e,X[0]);_e=u(Z,e?`log`:`linear`,[],!1,T)}let ye=N===`time`&&z.some(e=>e.type===`bar`)&&z.every(e=>e.type===`bar`?e.floating:e.type===`scatter`),$=o.interaction===!1?!1:o.interaction===!0||o.interaction===void 0?!0:o.interaction.zoom??!0,be=$===!1?{x:!1,y:!1}:$===!0?{x:!0,y:V}:{x:$.includes(`x`),y:$.includes(`y`)},xe=j?.format??(I&&(U.length||W.length)?e=>i.formatPercent(e,T):void 0);return{series:z,x:u(q,k,A,!1,T),y:{...u(j,N,M,N!==`category`,T),format:xe},y2:_e,y2Map:ve,horizontal:L,locale:T,labels:D,formatValue:i.valueFormatter(T),base:{x:J,y:X},allScatter:V,zoom:be,tooltipMode:E?.mode??(V?`nearest`:ye?`item`:`axis`),baseline:P?X[0]:Math.min(Math.max(0,X[0]),X[1]),minSpan:{x:k===`category`?1:(J[1]-J[0])*1e-7,y:N===`category`?1:(X[1]-X[0])*1e-7},percent:I,stacks:w.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)}},D=(e,t)=>e.barTop?e.barTop[t]:e.stackTop?e.stackTop[t]:e.cols.y[t],O=new WeakMap,k=e=>{let t=O.get(e.cols);return t||(t=new o.GridIndex(e.cols.x,e.cols.y,e.cols.count),O.set(e.cols,t)),t};exports.alignedDomain=b,exports.buildModel=E,exports.detectXType=l,exports.fromPlotY=T,exports.gridOf=k,exports.heatPosition=ie,exports.heatmapStops=ae,exports.plottedY=D,exports.toPlotY=w;
2
2
  //# sourceMappingURL=model.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"model.cjs","names":["resolveStaticColor","collectCategories","xResolver","collectYCategories","normalizeData","mix","packColor","rampColor","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","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","buildModel","resolve","resolver","theme","value","fallback","input","xType","categories","categoryMap","c","resolveX","name","yOpts","heatmapData","yCategories","yType","yCategoryMap","resolveY","resolverKey","usedKeys","series","key","index","entry","cache","type","paletteColor","color","cols","pointColors","resolved","rgba","colorScale","valueRange","cellColors","lo","hi","span","id","hidden","visible","allScatter","bars","band","slots","stackId","group","slotWidth","stacked","percentStacked","p","slot","stackedLines","candles","candleBand","heatmaps","cx","cy","xOpts","xRange","pad","pointsOnly","yRange","yValues","filled","zoomOption","zoomAxes","tooltip","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 { ensureSpan, niceDomain } 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 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 curve: ChartCurve;\n cols: SeriesColumns;\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}\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 /** 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): 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 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\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\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\"\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 : Number(v)\n : NaN;\n const resolverKey = `${xType}|${categories.join(\"\\u0001\")}|${yType}|${yCategories.join(\"\\u0001\")}`;\n const percent = options.stackMode === \"percent\";\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 ((type === \"scatter\" || type === \"bar\") && 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 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 ?? `Series ${index + 1}`,\n type,\n color,\n colorCss: toCss(color),\n lineWidth: s.lineWidth ?? (type === \"candlestick\" ? 1 : 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 curve: s.curve ?? \"linear\",\n cols,\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 : 3),\n format: s.format,\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: groups (one slot per stack) and stacking\n const bars = visible.filter((s) => s.type === \"bar\");\n const band = bandOf(bars, \"x\", xType === \"category\");\n if (bars.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 bars) {\n if (!slots.has(stackId(s))) slots.set(stackId(s), slots.size);\n }\n const group = band * (slots.size > 1 ? 0.78 : 0.62);\n const slotWidth = group / slots.size;\n const stacked = stackValues(\n bars.map((s) => ({ s, stack: stackId(s) })),\n false,\n );\n const percentStacked = percent\n ? stackValues(\n bars\n .filter((s) => input[s.index].stack !== undefined)\n .map((s) => ({ s, stack: stackId(s) })),\n true,\n )\n : [];\n let p = 0;\n bars.forEach((s, k) => {\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 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 }\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\"\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\n let yRange: Range;\n if (yType === \"category\") {\n yRange = [-0.5, Math.max(1, yCategories.length) - 0.5];\n } else {\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 if (s.stackBase && s.stackTop) {\n yValues.push(...extent(s.stackBase), ...extent(s.stackTop));\n } else if (s.type === \"heatmap\") {\n yValues.push(s.cols.yMin - s.cellHalf.y, s.cols.yMax + s.cellHalf.y);\n } else {\n yValues.push(s.cols.yMin, s.cols.yMax);\n }\n }\n const filled = bars.length > 0 || visible.some((s) => s.type === \"area\");\n if (bars.length || yOpts?.zero) yValues.push(0);\n if (bars.some((s) => s.showLabels)) {\n // room for the value labels above the tallest bar\n const [lo, hi] = extent(yValues);\n if (hi > 0) yValues.push(hi + (hi - Math.min(0, lo)) * 0.1);\n if (lo < 0) yValues.push(lo - (Math.max(0, hi) - lo) * 0.1);\n }\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 (candles.length && !bars.length) {\n // room above / below the wicks\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 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 const yFormat =\n yOpts?.format ??\n (percent && (bars.length || stackedLines.length)\n ? (v: number) => `${+v.toFixed(1)}%`\n : undefined);\n\n return {\n series,\n x: axisModel(xOpts, xType, categories, false),\n y: {\n ...axisModel(yOpts, yType, yCategories, yType !== \"category\"),\n format: yFormat,\n },\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: 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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"}
1
+ {"version":3,"file":"model.cjs","names":["tickStep","ensureSpan","niceDomain","luminance","mixOklab","withLightness","resolveStaticColor","resolveLocale","chartLabels","collectCategories","xResolver","collectYCategories","normalizeData","oklabRamp","toCss","formatPercent","valueFormatter","GridIndex","require_color","require_data","require_locale","require_scale","require_format","require_labels","require_spatial","LOG_MAP","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","mapper","column","a","cols","range","add","c","decades","logColumns","rawBase","zero","toPlotY","model","fromPlotY","floorBases","floor","heatPosition","mid","heatmapStops","dark","theme","scheme","neutral","end","side","negative","color","buildModel","resolve","resolver","fallback","input","locale","tooltipOptions","labels","xType","categories","categoryMap","resolveX","name","yOpts","heatmapData","yCategories","yType","yLog","yCategoryMap","resolveY","resolverKey","horizontal","usedKeys","series","index","entry","cache","type","paletteColor","pointColors","resolved","rgba","colorScale","valueRange","cellColors","colorMidpoint","colorLut","scale","lut","ramp","connector","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","log","leftVisible","leftSeries","leftBars","yRange","yValues","filled","yBound","y2Opts","y2","y2Map","rightSeries","y2Log","rightVisible","domain","y2Bound","timeline","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 luminance,\n mixOklab,\n oklabRamp,\n resolveStaticColor,\n toCss,\n withLightness,\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 ChartColorScheme,\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 /** Heatmaps: value at the middle of the ramp (`null`: linear over the range) */\n colorMidpoint: number | null;\n /** Heatmaps: 256 packed colors along the ramp (OKLab) */\n colorLut: Uint32Array | null;\n /** Hit tests and tooltips include the series */\n tooltip: boolean;\n /** Box plots: outlier rings or dots, and their diameter */\n outlierShape: \"hollow\" | \"filled\";\n outlierSize: number;\n /** Bars: lines from the end of every bar to the next one */\n connector: { color: Rgba; dash: number[]; width: number } | null;\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/**\n * Map of the values of a series onto the plotted (left axis) units:\n * `left = (log ? log10(value) : value) * scale + offset`\n */\nexport interface AxisMap {\n scale: number;\n offset: number;\n /** Logarithmic axis: the values are plotted as their base-10 logarithm */\n log?: boolean;\n}\n\n/** Plotted units of a log axis: the base-10 logarithm of the values */\nconst LOG_MAP: AxisMap = { scale: 1, offset: 0, log: true };\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\" | \"item\";\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},${!!map.log}`;\n const hit = mapped.get(raw);\n if (hit && hit.key === key) return hit.cols;\n const f = mapper(map);\n const column = (a: Float64Array | null) => (a ? a.map(f) : null);\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 };\n if (map.log) {\n // zeros and negatives have no logarithm: the extent of the others\n const range: Range = [Infinity, -Infinity];\n const add = (a: ArrayLike<number> | null | undefined) => {\n if (!a) return;\n for (let i = 0; i < a.length; i++) {\n const v = a[i];\n if (!Number.isFinite(v)) continue;\n if (v < range[0]) range[0] = v;\n if (v > range[1]) range[1] = v;\n }\n };\n for (const c of [cols.y, cols.y0, cols.high, cols.low, cols.q1, cols.q3])\n add(c);\n cols.outliers?.forEach((list) => add(list));\n cols.yMin = range[0] <= range[1] ? range[0] : NaN;\n cols.yMax = range[0] <= range[1] ? range[1] : NaN;\n } else {\n const lo = f(raw.yMin);\n const hi = f(raw.yMax);\n cols.yMin = Math.min(lo, hi);\n cols.yMax = Math.max(lo, hi);\n }\n mapped.set(raw, { key, cols });\n return cols;\n};\n\n/** A log range widened to whole decades (`[0.3, 2.4]` -> `[0, 3]`) */\nconst decades = (range: Range): Range => {\n const lo = Math.floor(range[0] + 1e-9);\n const hi = Math.ceil(range[1] - 1e-9);\n return [lo, hi > lo ? hi : lo + 1];\n};\n\n/**\n * Plots a series through a map: its columns, bars, stacks and lower\n * edges (bars / areas of the right axis start at `zero`)\n */\nconst logColumns = (s: SeriesModel, map: AxisMap, zero = -Infinity) => {\n const f = mapper(map);\n const column = (a: Float64Array | null) => (a ? a.map(f) : null);\n const rawBase = s.stackBase;\n s.cols = mapColumns(s.raw, map);\n s.barBase =\n s.barBase && !s.floating\n ? s.barBase.map((v) => (v === 0 ? (map.log ? -Infinity : f(0)) : f(v)))\n : 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\n/** Value -> plotted units of a map (`-Infinity` for 0 on log axes) */\nconst mapper =\n (map: AxisMap) =>\n (v: number): number =>\n (map.log ? Math.log10(v) : v) * map.scale + map.offset;\n\n/** Value of the y axis -> plotted y (the logarithm on log axes) */\nexport const toPlotY = (model: { y: AxisModel }, value: number): number =>\n model.y.type === \"log\" ? Math.log10(value) : value;\n\n/** Plotted y -> value of the y axis */\nexport const fromPlotY = (model: { y: AxisModel }, value: number): number =>\n model.y.type === \"log\" ? 10 ** value : value;\n\n/** Replaces the bases of bars / areas on log axes (`-Infinity`) by the bottom of the axis */\nconst floorBases = (s: SeriesModel, floor: number) => {\n for (const a of [s.barBase, s.stackBase]) {\n if (!a) continue;\n for (let i = 0; i < a.length; i++) if (a[i] === -Infinity) a[i] = floor;\n }\n};\n\n/** Position (0-1) of a heatmap value on its color ramp */\nexport const heatPosition = (\n s: Pick<SeriesModel, \"valueRange\" | \"colorMidpoint\">,\n v: number,\n): number => {\n const [lo, hi] = s.valueRange;\n const mid = s.colorMidpoint;\n let t: number;\n if (mid !== null && mid > lo && mid < hi) {\n t =\n v < mid\n ? ((v - lo) / (mid - lo)) * 0.5\n : 0.5 + ((v - mid) / (hi - mid)) * 0.5;\n } else {\n t = (v - lo) / (hi - lo || 1);\n }\n return t < 0 ? 0 : t > 1 ? 1 : t;\n};\n\n/**\n * Built-in ramps of heatmaps, perceptual (OKLab) and theme-aware: light\n * themes go from a near-white tint to a deep hue, dark themes from a dark\n * tint of the surface to a bright saturated hue; diverging ramps meet in a\n * neutral middle\n */\nexport const heatmapStops = (\n scheme: ChartColorScheme,\n color: Rgba,\n theme: ChartTheme,\n negative: Rgba,\n): Rgba[] => {\n const dark = luminance(theme.background) < 0.4;\n if (scheme === \"diverging\") {\n const neutral = mixOklab(\n theme.surface,\n theme.textMuted,\n dark ? 0.12 : 0.08,\n );\n const end = (c: Rgba) =>\n dark ? withLightness(c, 0.7, 1.25) : withLightness(c, 0.5, 1.05);\n const side = (c: Rgba) => mixOklab(neutral, end(c), 0.5);\n return [end(negative), side(negative), neutral, side(color), end(color)];\n }\n return dark\n ? [\n mixOklab(theme.surface, color, 0.14),\n withLightness(color, 0.46, 0.95),\n withLightness(color, 0.64, 1.2),\n withLightness(color, 0.8, 1.15),\n ]\n : [\n mixOklab(theme.surface, color, 0.06),\n withLightness(color, 0.8, 0.6),\n withLightness(color, 0.58, 1),\n withLightness(color, 0.36, 0.9),\n ];\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 : yOpts?.type === \"log\"\n ? \"log\"\n : \"linear\";\n const yLog = yType === \"log\";\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 let colorMidpoint: number | null = null;\n let colorLut: Uint32Array | null = null;\n if (type === \"heatmap\") {\n const scale = s.colorScale;\n const scheme: ChartColorScheme =\n scale === \"diverging\" ? \"diverging\" : \"sequential\";\n colorScale =\n typeof scale === \"object\" && scale.length\n ? scale.map((c) => resolve(c, color))\n : heatmapStops(\n scheme,\n color,\n theme,\n resolve(DEFAULT_DOWN, [0.86, 0.15, 0.15, 1]),\n );\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 [lo, hi] = valueRange;\n colorMidpoint =\n s.colorMidpoint ??\n (scheme === \"diverging\" && typeof scale !== \"object\"\n ? lo < 0 && hi > 0\n ? 0\n : (lo + hi) / 2\n : null);\n const lut = oklabRamp(colorScale);\n colorLut = lut;\n const values = cols.value ?? cols.y;\n const ramp = { valueRange, colorMidpoint };\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\": the ramp never packs to 0\n cellColors[i] = lut[Math.round(heatPosition(ramp, v) * 255)];\n }\n }\n const connector = s.connector\n ? typeof s.connector === \"object\"\n ? s.connector\n : {}\n : null;\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 colorMidpoint,\n colorLut,\n tooltip: s.tooltip !== false,\n outlierShape: s.outlierShape ?? \"hollow\",\n outlierSize: s.outlierSize ?? s.pointSize ?? 7,\n connector:\n connector && type === \"bar\"\n ? {\n color: connector.color\n ? resolve(connector.color, theme.textMuted)\n : theme.textMuted,\n dash: [...(connector.dash ?? [3, 3])],\n width: connector.width ?? 1,\n }\n : null,\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 // Log axis: the left series are plotted as logarithms (stacks are summed\n // first); bars and areas from zero start at the bottom of the axis\n if (yLog) {\n for (const s of series) {\n if (s.yAxis === \"right\" || s.type === \"heatmap\") continue;\n logColumns(s, LOG_MAP);\n }\n }\n\n // Y range (left axis: the series of the right axis are mapped onto it)\n const valuesOf = (\n list: SeriesModel[],\n zero: boolean | undefined,\n log = false,\n ) => {\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 (!log && (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, yLog);\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 (yLog && yOpts?.nice !== false) yRange = decades(yRange);\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 && !yLog) {\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 const yBound = (v: number) => (yLog ? Math.log10(v) : v);\n if (yOpts?.min !== undefined) yRange[0] = yBound(yOpts.min);\n if (yOpts?.max !== undefined) yRange[1] = yBound(yOpts.max);\n yRange = ensureSpan(yRange[0], yRange[1]);\n if (yLog) {\n for (const s of series) if (s.yAxis === \"left\") floorBases(s, yRange[0]);\n }\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 y2Log = y2Opts?.type === \"log\";\n const rightVisible = rightSeries.filter((s) => !s.hidden);\n // log: the extent of the logarithms\n const values = y2Log\n ? rightVisible.flatMap((s) => {\n const c = mapColumns(s.raw, LOG_MAP);\n return [c.yMin, c.yMax];\n })\n : valuesOf(rightVisible, y2Opts?.zero);\n const [lo, hi] = ensureSpan(...extent(values));\n let domain: Range =\n y2Opts?.nice === false\n ? [lo, hi]\n : y2Log\n ? decades([lo, hi])\n : alignedDomain(lo, hi, yRange, yOpts?.tickCount ?? 5);\n const y2Bound = (v: number) => (y2Log ? Math.log10(v) : v);\n if (y2Opts?.min !== undefined) domain[0] = y2Bound(y2Opts.min);\n if (y2Opts?.max !== undefined) domain[1] = y2Bound(y2Opts.max);\n domain = ensureSpan(domain[0], domain[1]);\n const scale = (yRange[1] - yRange[0]) / (domain[1] - domain[0]);\n const map: AxisMap = {\n scale,\n offset: yRange[0] - domain[0] * scale,\n log: y2Log,\n };\n y2Map = map;\n const zero = y2Log\n ? yRange[0]\n : mapper(map)(Math.min(Math.max(0, domain[0]), domain[1]));\n for (const s of rightSeries) {\n logColumns(s, map, zero);\n floorBases(s, yRange[0]);\n }\n y2 = axisModel(y2Opts, y2Log ? \"log\" : \"linear\", [], false, locale);\n }\n\n // range bars on a time axis (Gantt charts): rows are unrelated, the\n // tooltip shows the task under the pointer\n const timeline =\n yType === \"time\" &&\n series.some((s) => s.type === \"bar\") &&\n series.every((s) => (s.type === \"bar\" ? s.floating : s.type === \"scatter\"));\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:\n tooltipOptions?.mode ??\n (allScatter ? \"nearest\" : timeline ? \"item\" : \"axis\"),\n baseline: yLog ? yRange[0] : 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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"}