minerva-design 1.4.0 → 1.6.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 (824) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/README.md +21 -21
  3. package/custom-elements.json +3072 -611
  4. package/dist/angular/fesm2022/minerva-angular.mjs +1491 -5
  5. package/dist/angular/fesm2022/minerva-angular.mjs.map +1 -1
  6. package/dist/angular/types/minerva-angular.d.ts +595 -5
  7. package/dist/charts/canvas.d.cts +4 -3
  8. package/dist/charts/canvas.d.ts +4 -3
  9. package/dist/charts/core.cjs +1 -1
  10. package/dist/charts/core.d.cts +6 -4
  11. package/dist/charts/core.d.ts +6 -4
  12. package/dist/charts/core.js +24 -16
  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 +42 -19
  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.js +155 -127
  20. package/dist/charts/engine/canvas.js.map +1 -1
  21. package/dist/charts/engine/chart.cjs +1 -1
  22. package/dist/charts/engine/chart.cjs.map +1 -1
  23. package/dist/charts/engine/chart.js +370 -255
  24. package/dist/charts/engine/chart.js.map +1 -1
  25. package/dist/charts/engine/color.cjs +1 -1
  26. package/dist/charts/engine/color.cjs.map +1 -1
  27. package/dist/charts/engine/color.d.cts +18 -0
  28. package/dist/charts/engine/color.d.ts +18 -0
  29. package/dist/charts/engine/color.js +48 -2
  30. package/dist/charts/engine/color.js.map +1 -1
  31. package/dist/charts/engine/controller.cjs +2 -2
  32. package/dist/charts/engine/controller.cjs.map +1 -1
  33. package/dist/charts/engine/controller.d.cts +34 -1
  34. package/dist/charts/engine/controller.d.ts +34 -1
  35. package/dist/charts/engine/controller.js +318 -273
  36. package/dist/charts/engine/controller.js.map +1 -1
  37. package/dist/charts/engine/data.cjs +1 -1
  38. package/dist/charts/engine/data.cjs.map +1 -1
  39. package/dist/charts/engine/data.d.cts +3 -1
  40. package/dist/charts/engine/data.d.ts +3 -1
  41. package/dist/charts/engine/data.js +6 -4
  42. package/dist/charts/engine/data.js.map +1 -1
  43. package/dist/charts/engine/defaults.cjs +2 -0
  44. package/dist/charts/engine/defaults.cjs.map +1 -0
  45. package/dist/charts/engine/defaults.d.cts +20 -0
  46. package/dist/charts/engine/defaults.d.ts +20 -0
  47. package/dist/charts/engine/defaults.js +35 -0
  48. package/dist/charts/engine/defaults.js.map +1 -0
  49. package/dist/charts/engine/format.cjs +1 -1
  50. package/dist/charts/engine/format.cjs.map +1 -1
  51. package/dist/charts/engine/format.d.cts +6 -0
  52. package/dist/charts/engine/format.d.ts +6 -0
  53. package/dist/charts/engine/format.js +15 -2
  54. package/dist/charts/engine/format.js.map +1 -1
  55. package/dist/charts/engine/graph/chart.cjs +2 -0
  56. package/dist/charts/engine/graph/chart.cjs.map +1 -0
  57. package/dist/charts/engine/graph/chart.d.cts +3 -0
  58. package/dist/charts/engine/graph/chart.d.ts +3 -0
  59. package/dist/charts/engine/graph/chart.js +1708 -0
  60. package/dist/charts/engine/graph/chart.js.map +1 -0
  61. package/dist/charts/engine/graph/circular.cjs +2 -0
  62. package/dist/charts/engine/graph/circular.cjs.map +1 -0
  63. package/dist/charts/engine/graph/circular.d.cts +16 -0
  64. package/dist/charts/engine/graph/circular.d.ts +16 -0
  65. package/dist/charts/engine/graph/circular.js +62 -0
  66. package/dist/charts/engine/graph/circular.js.map +1 -0
  67. package/dist/charts/engine/graph/dag.cjs +2 -0
  68. package/dist/charts/engine/graph/dag.cjs.map +1 -0
  69. package/dist/charts/engine/graph/dag.d.cts +34 -0
  70. package/dist/charts/engine/graph/dag.d.ts +34 -0
  71. package/dist/charts/engine/graph/dag.js +339 -0
  72. package/dist/charts/engine/graph/dag.js.map +1 -0
  73. package/dist/charts/engine/graph/dom.cjs +2 -0
  74. package/dist/charts/engine/graph/dom.cjs.map +1 -0
  75. package/dist/charts/engine/graph/dom.d.cts +23 -0
  76. package/dist/charts/engine/graph/dom.d.ts +23 -0
  77. package/dist/charts/engine/graph/dom.js +158 -0
  78. package/dist/charts/engine/graph/dom.js.map +1 -0
  79. package/dist/charts/engine/graph/force.cjs +2 -0
  80. package/dist/charts/engine/graph/force.cjs.map +1 -0
  81. package/dist/charts/engine/graph/force.d.cts +76 -0
  82. package/dist/charts/engine/graph/force.d.ts +76 -0
  83. package/dist/charts/engine/graph/force.js +423 -0
  84. package/dist/charts/engine/graph/force.js.map +1 -0
  85. package/dist/charts/engine/graph/geometry.cjs +2 -0
  86. package/dist/charts/engine/graph/geometry.cjs.map +1 -0
  87. package/dist/charts/engine/graph/geometry.d.cts +50 -0
  88. package/dist/charts/engine/graph/geometry.d.ts +50 -0
  89. package/dist/charts/engine/graph/geometry.js +197 -0
  90. package/dist/charts/engine/graph/geometry.js.map +1 -0
  91. package/dist/charts/engine/graph/index.cjs +1 -0
  92. package/dist/charts/engine/graph/index.d.cts +6 -0
  93. package/dist/charts/engine/graph/index.d.ts +6 -0
  94. package/dist/charts/engine/graph/index.js +6 -0
  95. package/dist/charts/engine/graph/labels.cjs +2 -0
  96. package/dist/charts/engine/graph/labels.cjs.map +1 -0
  97. package/dist/charts/engine/graph/labels.d.cts +12 -0
  98. package/dist/charts/engine/graph/labels.d.ts +12 -0
  99. package/dist/charts/engine/graph/labels.js +128 -0
  100. package/dist/charts/engine/graph/labels.js.map +1 -0
  101. package/dist/charts/engine/graph/model.cjs +2 -0
  102. package/dist/charts/engine/graph/model.cjs.map +1 -0
  103. package/dist/charts/engine/graph/model.d.cts +52 -0
  104. package/dist/charts/engine/graph/model.d.ts +52 -0
  105. package/dist/charts/engine/graph/model.js +108 -0
  106. package/dist/charts/engine/graph/model.js.map +1 -0
  107. package/dist/charts/engine/graph/sizing.cjs +2 -0
  108. package/dist/charts/engine/graph/sizing.cjs.map +1 -0
  109. package/dist/charts/engine/graph/sizing.d.cts +33 -0
  110. package/dist/charts/engine/graph/sizing.d.ts +33 -0
  111. package/dist/charts/engine/graph/sizing.js +60 -0
  112. package/dist/charts/engine/graph/sizing.js.map +1 -0
  113. package/dist/charts/engine/graph/tree.cjs +2 -0
  114. package/dist/charts/engine/graph/tree.cjs.map +1 -0
  115. package/dist/charts/engine/graph/tree.d.cts +30 -0
  116. package/dist/charts/engine/graph/tree.d.ts +30 -0
  117. package/dist/charts/engine/graph/tree.js +218 -0
  118. package/dist/charts/engine/graph/tree.js.map +1 -0
  119. package/dist/charts/engine/graph/types.d.cts +640 -0
  120. package/dist/charts/engine/graph/types.d.ts +640 -0
  121. package/dist/charts/engine/graph/worker.cjs +52 -0
  122. package/dist/charts/engine/graph/worker.cjs.map +1 -0
  123. package/dist/charts/engine/graph/worker.d.cts +36 -0
  124. package/dist/charts/engine/graph/worker.d.ts +36 -0
  125. package/dist/charts/engine/graph/worker.js +135 -0
  126. package/dist/charts/engine/graph/worker.js.map +1 -0
  127. package/dist/charts/engine/items.cjs +1 -1
  128. package/dist/charts/engine/items.cjs.map +1 -1
  129. package/dist/charts/engine/items.d.cts +15 -2
  130. package/dist/charts/engine/items.d.ts +15 -2
  131. package/dist/charts/engine/items.js +131 -112
  132. package/dist/charts/engine/items.js.map +1 -1
  133. package/dist/charts/engine/labels.cjs +1 -1
  134. package/dist/charts/engine/labels.cjs.map +1 -1
  135. package/dist/charts/engine/labels.d.cts +17 -0
  136. package/dist/charts/engine/labels.d.ts +17 -0
  137. package/dist/charts/engine/labels.js +28 -4
  138. package/dist/charts/engine/labels.js.map +1 -1
  139. package/dist/charts/engine/layout.cjs +1 -1
  140. package/dist/charts/engine/layout.cjs.map +1 -1
  141. package/dist/charts/engine/layout.d.cts +9 -0
  142. package/dist/charts/engine/layout.d.ts +9 -0
  143. package/dist/charts/engine/layout.js +11 -2
  144. package/dist/charts/engine/layout.js.map +1 -1
  145. package/dist/charts/engine/model.cjs +1 -1
  146. package/dist/charts/engine/model.cjs.map +1 -1
  147. package/dist/charts/engine/model.d.cts +73 -3
  148. package/dist/charts/engine/model.d.ts +73 -3
  149. package/dist/charts/engine/model.js +258 -154
  150. package/dist/charts/engine/model.js.map +1 -1
  151. package/dist/charts/engine/orderbook/field.cjs +37 -0
  152. package/dist/charts/engine/orderbook/field.cjs.map +1 -0
  153. package/dist/charts/engine/orderbook/field.d.cts +92 -0
  154. package/dist/charts/engine/orderbook/field.d.ts +92 -0
  155. package/dist/charts/engine/orderbook/field.js +297 -0
  156. package/dist/charts/engine/orderbook/field.js.map +1 -0
  157. package/dist/charts/engine/orderbook/format.cjs +1 -1
  158. package/dist/charts/engine/orderbook/format.cjs.map +1 -1
  159. package/dist/charts/engine/orderbook/format.d.cts +3 -2
  160. package/dist/charts/engine/orderbook/format.d.ts +3 -2
  161. package/dist/charts/engine/orderbook/format.js +5 -5
  162. package/dist/charts/engine/orderbook/format.js.map +1 -1
  163. package/dist/charts/engine/orderbook/heatmap.cjs +1 -1
  164. package/dist/charts/engine/orderbook/heatmap.cjs.map +1 -1
  165. package/dist/charts/engine/orderbook/heatmap.js +566 -475
  166. package/dist/charts/engine/orderbook/heatmap.js.map +1 -1
  167. package/dist/charts/engine/orderbook/host.cjs +1 -1
  168. package/dist/charts/engine/orderbook/host.cjs.map +1 -1
  169. package/dist/charts/engine/orderbook/host.d.cts +8 -1
  170. package/dist/charts/engine/orderbook/host.d.ts +8 -1
  171. package/dist/charts/engine/orderbook/host.js +27 -5
  172. package/dist/charts/engine/orderbook/host.js.map +1 -1
  173. package/dist/charts/engine/orderbook/ladder.cjs +1 -1
  174. package/dist/charts/engine/orderbook/ladder.cjs.map +1 -1
  175. package/dist/charts/engine/orderbook/ladder.js +1 -1
  176. package/dist/charts/engine/orderbook/ladder.js.map +1 -1
  177. package/dist/charts/engine/orderbook/layout.cjs +2 -0
  178. package/dist/charts/engine/orderbook/layout.cjs.map +1 -0
  179. package/dist/charts/engine/orderbook/layout.d.cts +42 -0
  180. package/dist/charts/engine/orderbook/layout.d.ts +42 -0
  181. package/dist/charts/engine/orderbook/layout.js +76 -0
  182. package/dist/charts/engine/orderbook/layout.js.map +1 -0
  183. package/dist/charts/engine/orderbook/tape.cjs +1 -1
  184. package/dist/charts/engine/orderbook/tape.cjs.map +1 -1
  185. package/dist/charts/engine/orderbook/tape.js +4 -4
  186. package/dist/charts/engine/orderbook/tape.js.map +1 -1
  187. package/dist/charts/engine/orderbook/types.d.cts +27 -3
  188. package/dist/charts/engine/orderbook/types.d.ts +27 -3
  189. package/dist/charts/engine/overlay.cjs +1 -1
  190. package/dist/charts/engine/overlay.cjs.map +1 -1
  191. package/dist/charts/engine/overlay.d.cts +27 -0
  192. package/dist/charts/engine/overlay.d.ts +27 -0
  193. package/dist/charts/engine/overlay.js +34 -12
  194. package/dist/charts/engine/overlay.js.map +1 -1
  195. package/dist/charts/engine/presets.cjs +2 -2
  196. package/dist/charts/engine/presets.cjs.map +1 -1
  197. package/dist/charts/engine/presets.d.cts +35 -3
  198. package/dist/charts/engine/presets.d.ts +35 -3
  199. package/dist/charts/engine/presets.js +121 -101
  200. package/dist/charts/engine/presets.js.map +1 -1
  201. package/dist/charts/engine/renderers/canvas2d.cjs +1 -1
  202. package/dist/charts/engine/renderers/canvas2d.cjs.map +1 -1
  203. package/dist/charts/engine/renderers/canvas2d.js +13 -9
  204. package/dist/charts/engine/renderers/canvas2d.js.map +1 -1
  205. package/dist/charts/engine/renderers/detect.cjs +1 -1
  206. package/dist/charts/engine/renderers/detect.cjs.map +1 -1
  207. package/dist/charts/engine/renderers/detect.d.cts +2 -1
  208. package/dist/charts/engine/renderers/detect.d.ts +2 -1
  209. package/dist/charts/engine/renderers/detect.js +23 -21
  210. package/dist/charts/engine/renderers/detect.js.map +1 -1
  211. package/dist/charts/engine/renderers/follow.cjs +2 -0
  212. package/dist/charts/engine/renderers/follow.cjs.map +1 -0
  213. package/dist/charts/engine/renderers/follow.d.cts +8 -0
  214. package/dist/charts/engine/renderers/follow.d.ts +8 -0
  215. package/dist/charts/engine/renderers/follow.js +10 -0
  216. package/dist/charts/engine/renderers/follow.js.map +1 -0
  217. package/dist/charts/engine/renderers/gl-budget.cjs +2 -0
  218. package/dist/charts/engine/renderers/gl-budget.cjs.map +1 -0
  219. package/dist/charts/engine/renderers/gl-budget.d.cts +32 -0
  220. package/dist/charts/engine/renderers/gl-budget.d.ts +32 -0
  221. package/dist/charts/engine/renderers/gl-budget.js +95 -0
  222. package/dist/charts/engine/renderers/gl-budget.js.map +1 -0
  223. package/dist/charts/engine/renderers/gl.cjs +1 -1
  224. package/dist/charts/engine/renderers/gl.cjs.map +1 -1
  225. package/dist/charts/engine/renderers/gl.js +1 -1
  226. package/dist/charts/engine/renderers/gl.js.map +1 -1
  227. package/dist/charts/engine/renderers/shaders.cjs +9 -6
  228. package/dist/charts/engine/renderers/shaders.cjs.map +1 -1
  229. package/dist/charts/engine/renderers/shaders.d.cts +1 -1
  230. package/dist/charts/engine/renderers/shaders.d.ts +1 -1
  231. package/dist/charts/engine/renderers/shaders.js +9 -6
  232. package/dist/charts/engine/renderers/shaders.js.map +1 -1
  233. package/dist/charts/engine/renderers/types.cjs.map +1 -1
  234. package/dist/charts/engine/renderers/types.d.cts +2 -0
  235. package/dist/charts/engine/renderers/types.d.ts +2 -0
  236. package/dist/charts/engine/renderers/types.js.map +1 -1
  237. package/dist/charts/engine/renderers/webgl.cjs +1 -1
  238. package/dist/charts/engine/renderers/webgl.cjs.map +1 -1
  239. package/dist/charts/engine/renderers/webgl.js +85 -64
  240. package/dist/charts/engine/renderers/webgl.js.map +1 -1
  241. package/dist/charts/engine/renderers/webgl2.cjs +1 -1
  242. package/dist/charts/engine/renderers/webgl2.cjs.map +1 -1
  243. package/dist/charts/engine/renderers/webgl2.js +72 -58
  244. package/dist/charts/engine/renderers/webgl2.js.map +1 -1
  245. package/dist/charts/engine/renderers/webgpu.cjs +1 -1
  246. package/dist/charts/engine/renderers/webgpu.cjs.map +1 -1
  247. package/dist/charts/engine/renderers/webgpu.js +1 -1
  248. package/dist/charts/engine/renderers/webgpu.js.map +1 -1
  249. package/dist/charts/engine/scene.cjs +1 -1
  250. package/dist/charts/engine/scene.cjs.map +1 -1
  251. package/dist/charts/engine/scene.d.cts +104 -4
  252. package/dist/charts/engine/scene.d.ts +104 -4
  253. package/dist/charts/engine/scene.js +412 -193
  254. package/dist/charts/engine/scene.js.map +1 -1
  255. package/dist/charts/engine/shapes/bullet.cjs +1 -1
  256. package/dist/charts/engine/shapes/bullet.cjs.map +1 -1
  257. package/dist/charts/engine/shapes/bullet.js +110 -110
  258. package/dist/charts/engine/shapes/bullet.js.map +1 -1
  259. package/dist/charts/engine/shapes/chart.cjs +1 -1
  260. package/dist/charts/engine/shapes/chart.cjs.map +1 -1
  261. package/dist/charts/engine/shapes/chart.js +4 -1
  262. package/dist/charts/engine/shapes/chart.js.map +1 -1
  263. package/dist/charts/engine/shapes/chord.cjs +2 -0
  264. package/dist/charts/engine/shapes/chord.cjs.map +1 -0
  265. package/dist/charts/engine/shapes/chord.d.cts +18 -0
  266. package/dist/charts/engine/shapes/chord.d.ts +18 -0
  267. package/dist/charts/engine/shapes/chord.js +419 -0
  268. package/dist/charts/engine/shapes/chord.js.map +1 -0
  269. package/dist/charts/engine/shapes/draw.cjs +1 -1
  270. package/dist/charts/engine/shapes/draw.cjs.map +1 -1
  271. package/dist/charts/engine/shapes/draw.d.cts +5 -1
  272. package/dist/charts/engine/shapes/draw.d.ts +5 -1
  273. package/dist/charts/engine/shapes/draw.js +47 -17
  274. package/dist/charts/engine/shapes/draw.js.map +1 -1
  275. package/dist/charts/engine/shapes/hit.cjs +1 -1
  276. package/dist/charts/engine/shapes/hit.cjs.map +1 -1
  277. package/dist/charts/engine/shapes/hit.d.cts +3 -1
  278. package/dist/charts/engine/shapes/hit.d.ts +3 -1
  279. package/dist/charts/engine/shapes/hit.js +75 -46
  280. package/dist/charts/engine/shapes/hit.js.map +1 -1
  281. package/dist/charts/engine/shapes/index.d.cts +3 -2
  282. package/dist/charts/engine/shapes/index.d.ts +3 -2
  283. package/dist/charts/engine/shapes/labels.cjs +1 -1
  284. package/dist/charts/engine/shapes/labels.cjs.map +1 -1
  285. package/dist/charts/engine/shapes/labels.js +12 -4
  286. package/dist/charts/engine/shapes/labels.js.map +1 -1
  287. package/dist/charts/engine/shapes/layout.cjs +2 -2
  288. package/dist/charts/engine/shapes/layout.cjs.map +1 -1
  289. package/dist/charts/engine/shapes/layout.d.cts +3 -1
  290. package/dist/charts/engine/shapes/layout.d.ts +3 -1
  291. package/dist/charts/engine/shapes/layout.js +106 -78
  292. package/dist/charts/engine/shapes/layout.js.map +1 -1
  293. package/dist/charts/engine/shapes/scene.cjs +1 -1
  294. package/dist/charts/engine/shapes/scene.cjs.map +1 -1
  295. package/dist/charts/engine/shapes/scene.d.cts +33 -3
  296. package/dist/charts/engine/shapes/scene.d.ts +33 -3
  297. package/dist/charts/engine/shapes/scene.js +62 -19
  298. package/dist/charts/engine/shapes/scene.js.map +1 -1
  299. package/dist/charts/engine/shapes/types.d.cts +121 -8
  300. package/dist/charts/engine/shapes/types.d.ts +121 -8
  301. package/dist/charts/engine/signature.cjs +1 -1
  302. package/dist/charts/engine/signature.cjs.map +1 -1
  303. package/dist/charts/engine/signature.js +1 -1
  304. package/dist/charts/engine/signature.js.map +1 -1
  305. package/dist/charts/engine/three-d/canvas2d.cjs +1 -1
  306. package/dist/charts/engine/three-d/canvas2d.cjs.map +1 -1
  307. package/dist/charts/engine/three-d/canvas2d.d.cts +41 -3
  308. package/dist/charts/engine/three-d/canvas2d.d.ts +41 -3
  309. package/dist/charts/engine/three-d/canvas2d.js +166 -67
  310. package/dist/charts/engine/three-d/canvas2d.js.map +1 -1
  311. package/dist/charts/engine/three-d/chart.cjs +1 -1
  312. package/dist/charts/engine/three-d/chart.cjs.map +1 -1
  313. package/dist/charts/engine/three-d/chart.js +219 -215
  314. package/dist/charts/engine/three-d/chart.js.map +1 -1
  315. package/dist/charts/engine/three-d/detect.cjs +1 -1
  316. package/dist/charts/engine/three-d/detect.cjs.map +1 -1
  317. package/dist/charts/engine/three-d/detect.d.cts +3 -2
  318. package/dist/charts/engine/three-d/detect.d.ts +3 -2
  319. package/dist/charts/engine/three-d/detect.js +22 -20
  320. package/dist/charts/engine/three-d/detect.js.map +1 -1
  321. package/dist/charts/engine/three-d/geometry.cjs +1 -1
  322. package/dist/charts/engine/three-d/geometry.cjs.map +1 -1
  323. package/dist/charts/engine/three-d/geometry.d.cts +6 -0
  324. package/dist/charts/engine/three-d/geometry.d.ts +6 -0
  325. package/dist/charts/engine/three-d/geometry.js +106 -90
  326. package/dist/charts/engine/three-d/geometry.js.map +1 -1
  327. package/dist/charts/engine/three-d/model.cjs +1 -1
  328. package/dist/charts/engine/three-d/model.cjs.map +1 -1
  329. package/dist/charts/engine/three-d/model.d.cts +2 -0
  330. package/dist/charts/engine/three-d/model.d.ts +2 -0
  331. package/dist/charts/engine/three-d/model.js +2 -0
  332. package/dist/charts/engine/three-d/model.js.map +1 -1
  333. package/dist/charts/engine/three-d/oit.cjs +109 -0
  334. package/dist/charts/engine/three-d/oit.cjs.map +1 -0
  335. package/dist/charts/engine/three-d/oit.d.cts +34 -0
  336. package/dist/charts/engine/three-d/oit.d.ts +34 -0
  337. package/dist/charts/engine/three-d/oit.js +111 -0
  338. package/dist/charts/engine/three-d/oit.js.map +1 -0
  339. package/dist/charts/engine/three-d/overlay.cjs +1 -1
  340. package/dist/charts/engine/three-d/overlay.cjs.map +1 -1
  341. package/dist/charts/engine/three-d/overlay.js +43 -36
  342. package/dist/charts/engine/three-d/overlay.js.map +1 -1
  343. package/dist/charts/engine/three-d/render-types.cjs +1 -1
  344. package/dist/charts/engine/three-d/render-types.cjs.map +1 -1
  345. package/dist/charts/engine/three-d/render-types.d.cts +37 -3
  346. package/dist/charts/engine/three-d/render-types.d.ts +37 -3
  347. package/dist/charts/engine/three-d/render-types.js +6 -10
  348. package/dist/charts/engine/three-d/render-types.js.map +1 -1
  349. package/dist/charts/engine/three-d/shaders.cjs +109 -48
  350. package/dist/charts/engine/three-d/shaders.cjs.map +1 -1
  351. package/dist/charts/engine/three-d/shaders.d.cts +12 -5
  352. package/dist/charts/engine/three-d/shaders.d.ts +12 -5
  353. package/dist/charts/engine/three-d/shaders.js +118 -55
  354. package/dist/charts/engine/three-d/shaders.js.map +1 -1
  355. package/dist/charts/engine/three-d/sort.cjs +1 -1
  356. package/dist/charts/engine/three-d/sort.cjs.map +1 -1
  357. package/dist/charts/engine/three-d/sort.d.cts +18 -5
  358. package/dist/charts/engine/three-d/sort.d.ts +18 -5
  359. package/dist/charts/engine/three-d/sort.js +129 -43
  360. package/dist/charts/engine/three-d/sort.js.map +1 -1
  361. package/dist/charts/engine/three-d/types.d.cts +36 -0
  362. package/dist/charts/engine/three-d/types.d.ts +36 -0
  363. package/dist/charts/engine/three-d/webgl.cjs +1 -1
  364. package/dist/charts/engine/three-d/webgl.cjs.map +1 -1
  365. package/dist/charts/engine/three-d/webgl.d.cts +9 -0
  366. package/dist/charts/engine/three-d/webgl.d.ts +9 -0
  367. package/dist/charts/engine/three-d/webgl.js +199 -74
  368. package/dist/charts/engine/three-d/webgl.js.map +1 -1
  369. package/dist/charts/engine/three-d/webgpu.cjs +1 -1
  370. package/dist/charts/engine/three-d/webgpu.cjs.map +1 -1
  371. package/dist/charts/engine/three-d/webgpu.js +231 -94
  372. package/dist/charts/engine/three-d/webgpu.js.map +1 -1
  373. package/dist/charts/engine/trading/chart.cjs +1 -1
  374. package/dist/charts/engine/trading/chart.cjs.map +1 -1
  375. package/dist/charts/engine/trading/chart.d.cts +10 -1
  376. package/dist/charts/engine/trading/chart.d.ts +10 -1
  377. package/dist/charts/engine/trading/chart.js +1677 -813
  378. package/dist/charts/engine/trading/chart.js.map +1 -1
  379. package/dist/charts/engine/trading/drawings.cjs +2 -1
  380. package/dist/charts/engine/trading/drawings.cjs.map +1 -1
  381. package/dist/charts/engine/trading/drawings.d.cts +53 -9
  382. package/dist/charts/engine/trading/drawings.d.ts +53 -9
  383. package/dist/charts/engine/trading/drawings.js +346 -71
  384. package/dist/charts/engine/trading/drawings.js.map +1 -1
  385. package/dist/charts/engine/trading/format.cjs +1 -1
  386. package/dist/charts/engine/trading/format.cjs.map +1 -1
  387. package/dist/charts/engine/trading/format.d.cts +19 -0
  388. package/dist/charts/engine/trading/format.d.ts +19 -0
  389. package/dist/charts/engine/trading/format.js +65 -21
  390. package/dist/charts/engine/trading/format.js.map +1 -1
  391. package/dist/charts/engine/trading/geometry.cjs +1 -1
  392. package/dist/charts/engine/trading/geometry.cjs.map +1 -1
  393. package/dist/charts/engine/trading/geometry.d.cts +16 -0
  394. package/dist/charts/engine/trading/geometry.d.ts +16 -0
  395. package/dist/charts/engine/trading/geometry.js +19 -4
  396. package/dist/charts/engine/trading/geometry.js.map +1 -1
  397. package/dist/charts/engine/trading/index.cjs +1 -1
  398. package/dist/charts/engine/trading/index.d.cts +2 -1
  399. package/dist/charts/engine/trading/index.d.ts +2 -1
  400. package/dist/charts/engine/trading/index.js +4 -3
  401. package/dist/charts/engine/trading/indicators.cjs +1 -1
  402. package/dist/charts/engine/trading/indicators.cjs.map +1 -1
  403. package/dist/charts/engine/trading/indicators.d.cts +180 -10
  404. package/dist/charts/engine/trading/indicators.d.ts +180 -10
  405. package/dist/charts/engine/trading/indicators.js +449 -173
  406. package/dist/charts/engine/trading/indicators.js.map +1 -1
  407. package/dist/charts/engine/trading/labels.cjs +1 -1
  408. package/dist/charts/engine/trading/labels.cjs.map +1 -1
  409. package/dist/charts/engine/trading/labels.js +104 -4
  410. package/dist/charts/engine/trading/labels.js.map +1 -1
  411. package/dist/charts/engine/trading/store.cjs +1 -1
  412. package/dist/charts/engine/trading/store.cjs.map +1 -1
  413. package/dist/charts/engine/trading/store.d.cts +21 -0
  414. package/dist/charts/engine/trading/store.d.ts +21 -0
  415. package/dist/charts/engine/trading/store.js +22 -1
  416. package/dist/charts/engine/trading/store.js.map +1 -1
  417. package/dist/charts/engine/trading/studies.cjs +1 -1
  418. package/dist/charts/engine/trading/studies.cjs.map +1 -1
  419. package/dist/charts/engine/trading/studies.d.cts +49 -8
  420. package/dist/charts/engine/trading/studies.d.ts +49 -8
  421. package/dist/charts/engine/trading/studies.js +352 -93
  422. package/dist/charts/engine/trading/studies.js.map +1 -1
  423. package/dist/charts/engine/trading/sync.cjs +2 -0
  424. package/dist/charts/engine/trading/sync.cjs.map +1 -0
  425. package/dist/charts/engine/trading/sync.d.cts +8 -0
  426. package/dist/charts/engine/trading/sync.d.ts +8 -0
  427. package/dist/charts/engine/trading/sync.js +25 -0
  428. package/dist/charts/engine/trading/sync.js.map +1 -0
  429. package/dist/charts/engine/trading/types.d.cts +514 -16
  430. package/dist/charts/engine/trading/types.d.ts +514 -16
  431. package/dist/charts/engine/types.d.cts +106 -11
  432. package/dist/charts/engine/types.d.ts +106 -11
  433. package/dist/charts/index.cjs +1 -1
  434. package/dist/charts/index.d.cts +3 -2
  435. package/dist/charts/index.d.ts +3 -2
  436. package/dist/charts/index.js +30 -22
  437. package/dist/charts/react/charts.cjs +1 -1
  438. package/dist/charts/react/charts.cjs.map +1 -1
  439. package/dist/charts/react/charts.js +51 -34
  440. package/dist/charts/react/charts.js.map +1 -1
  441. package/dist/charts/react/graph.cjs +2 -0
  442. package/dist/charts/react/graph.cjs.map +1 -0
  443. package/dist/charts/react/graph.d.cts +219 -0
  444. package/dist/charts/react/graph.d.ts +219 -0
  445. package/dist/charts/react/graph.js +160 -0
  446. package/dist/charts/react/graph.js.map +1 -0
  447. package/dist/charts/react/orderbook.cjs +1 -1
  448. package/dist/charts/react/orderbook.cjs.map +1 -1
  449. package/dist/charts/react/orderbook.d.cts +3 -1
  450. package/dist/charts/react/orderbook.d.ts +3 -1
  451. package/dist/charts/react/orderbook.js +1 -0
  452. package/dist/charts/react/orderbook.js.map +1 -1
  453. package/dist/charts/react/shapes.cjs +1 -1
  454. package/dist/charts/react/shapes.cjs.map +1 -1
  455. package/dist/charts/react/shapes.d.cts +88 -4
  456. package/dist/charts/react/shapes.d.ts +88 -4
  457. package/dist/charts/react/shapes.js +55 -12
  458. package/dist/charts/react/shapes.js.map +1 -1
  459. package/dist/charts/react/three-d.cjs +1 -1
  460. package/dist/charts/react/three-d.cjs.map +1 -1
  461. package/dist/charts/react/three-d.d.cts +7 -0
  462. package/dist/charts/react/three-d.d.ts +7 -0
  463. package/dist/charts/react/three-d.js +14 -13
  464. package/dist/charts/react/three-d.js.map +1 -1
  465. package/dist/charts/react/trading.cjs +1 -1
  466. package/dist/charts/react/trading.cjs.map +1 -1
  467. package/dist/charts/react/trading.d.cts +54 -2
  468. package/dist/charts/react/trading.d.ts +54 -2
  469. package/dist/charts/react/trading.js +68 -37
  470. package/dist/charts/react/trading.js.map +1 -1
  471. package/dist/charts/react/types.d.cts +11 -0
  472. package/dist/charts/react/types.d.ts +11 -0
  473. package/dist/core/contracts.cjs +1 -1
  474. package/dist/core/contracts.cjs.map +1 -1
  475. package/dist/core/contracts.js +1 -1
  476. package/dist/core/contracts.js.map +1 -1
  477. package/dist/native/charts/src/canvas.cjs +1 -1
  478. package/dist/native/charts/src/canvas.js +5 -4
  479. package/dist/native/charts/src/engine/axis.cjs +1 -1
  480. package/dist/native/charts/src/engine/axis.cjs.map +1 -1
  481. package/dist/native/charts/src/engine/axis.js +42 -19
  482. package/dist/native/charts/src/engine/axis.js.map +1 -1
  483. package/dist/native/charts/src/engine/color.cjs +1 -1
  484. package/dist/native/charts/src/engine/color.cjs.map +1 -1
  485. package/dist/native/charts/src/engine/color.js +47 -5
  486. package/dist/native/charts/src/engine/color.js.map +1 -1
  487. package/dist/native/charts/src/engine/controller.cjs +2 -2
  488. package/dist/native/charts/src/engine/controller.cjs.map +1 -1
  489. package/dist/native/charts/src/engine/controller.js +296 -251
  490. package/dist/native/charts/src/engine/controller.js.map +1 -1
  491. package/dist/native/charts/src/engine/data.cjs +1 -1
  492. package/dist/native/charts/src/engine/data.cjs.map +1 -1
  493. package/dist/native/charts/src/engine/data.js +6 -4
  494. package/dist/native/charts/src/engine/data.js.map +1 -1
  495. package/dist/native/charts/src/engine/format.cjs +1 -1
  496. package/dist/native/charts/src/engine/format.cjs.map +1 -1
  497. package/dist/native/charts/src/engine/format.js +15 -2
  498. package/dist/native/charts/src/engine/format.js.map +1 -1
  499. package/dist/native/charts/src/engine/labels.cjs +1 -1
  500. package/dist/native/charts/src/engine/labels.cjs.map +1 -1
  501. package/dist/native/charts/src/engine/labels.js +42 -5
  502. package/dist/native/charts/src/engine/labels.js.map +1 -1
  503. package/dist/native/charts/src/engine/layout.cjs +1 -1
  504. package/dist/native/charts/src/engine/layout.cjs.map +1 -1
  505. package/dist/native/charts/src/engine/layout.js +11 -2
  506. package/dist/native/charts/src/engine/layout.js.map +1 -1
  507. package/dist/native/charts/src/engine/model.cjs +1 -1
  508. package/dist/native/charts/src/engine/model.cjs.map +1 -1
  509. package/dist/native/charts/src/engine/model.js +278 -174
  510. package/dist/native/charts/src/engine/model.js.map +1 -1
  511. package/dist/native/charts/src/engine/overlay.cjs.map +1 -1
  512. package/dist/native/charts/src/engine/overlay.js.map +1 -1
  513. package/dist/native/charts/src/engine/presets.cjs +2 -2
  514. package/dist/native/charts/src/engine/presets.cjs.map +1 -1
  515. package/dist/native/charts/src/engine/presets.js +110 -90
  516. package/dist/native/charts/src/engine/presets.js.map +1 -1
  517. package/dist/native/charts/src/engine/scene.cjs +1 -1
  518. package/dist/native/charts/src/engine/scene.cjs.map +1 -1
  519. package/dist/native/charts/src/engine/scene.js +421 -202
  520. package/dist/native/charts/src/engine/scene.js.map +1 -1
  521. package/dist/native/charts/src/engine/shapes/bullet.cjs +1 -1
  522. package/dist/native/charts/src/engine/shapes/bullet.cjs.map +1 -1
  523. package/dist/native/charts/src/engine/shapes/bullet.js +110 -110
  524. package/dist/native/charts/src/engine/shapes/bullet.js.map +1 -1
  525. package/dist/native/charts/src/engine/shapes/calendar.cjs +1 -1
  526. package/dist/native/charts/src/engine/shapes/calendar.cjs.map +1 -1
  527. package/dist/native/charts/src/engine/shapes/calendar.js +21 -16
  528. package/dist/native/charts/src/engine/shapes/calendar.js.map +1 -1
  529. package/dist/native/charts/src/engine/shapes/chord.cjs +2 -0
  530. package/dist/native/charts/src/engine/shapes/chord.cjs.map +1 -0
  531. package/dist/native/charts/src/engine/shapes/chord.js +419 -0
  532. package/dist/native/charts/src/engine/shapes/chord.js.map +1 -0
  533. package/dist/native/charts/src/engine/shapes/draw.cjs +1 -1
  534. package/dist/native/charts/src/engine/shapes/draw.cjs.map +1 -1
  535. package/dist/native/charts/src/engine/shapes/draw.js +47 -17
  536. package/dist/native/charts/src/engine/shapes/draw.js.map +1 -1
  537. package/dist/native/charts/src/engine/shapes/hit.cjs +1 -1
  538. package/dist/native/charts/src/engine/shapes/hit.cjs.map +1 -1
  539. package/dist/native/charts/src/engine/shapes/hit.js +73 -44
  540. package/dist/native/charts/src/engine/shapes/hit.js.map +1 -1
  541. package/dist/native/charts/src/engine/shapes/labels.cjs +1 -1
  542. package/dist/native/charts/src/engine/shapes/labels.cjs.map +1 -1
  543. package/dist/native/charts/src/engine/shapes/labels.js +12 -4
  544. package/dist/native/charts/src/engine/shapes/labels.js.map +1 -1
  545. package/dist/native/charts/src/engine/shapes/layout.cjs +2 -2
  546. package/dist/native/charts/src/engine/shapes/layout.cjs.map +1 -1
  547. package/dist/native/charts/src/engine/shapes/layout.js +136 -94
  548. package/dist/native/charts/src/engine/shapes/layout.js.map +1 -1
  549. package/dist/native/charts/src/engine/shapes/scene.cjs +1 -1
  550. package/dist/native/charts/src/engine/shapes/scene.cjs.map +1 -1
  551. package/dist/native/charts/src/engine/shapes/scene.js +62 -19
  552. package/dist/native/charts/src/engine/shapes/scene.js.map +1 -1
  553. package/dist/native/components/Chart/ChartBase.cjs +1 -1
  554. package/dist/native/components/Chart/ChartBase.cjs.map +1 -1
  555. package/dist/native/components/Chart/ChartBase.js +127 -115
  556. package/dist/native/components/Chart/ChartBase.js.map +1 -1
  557. package/dist/native/components/Chart/charts.cjs +1 -1
  558. package/dist/native/components/Chart/charts.cjs.map +1 -1
  559. package/dist/native/components/Chart/charts.js +8 -5
  560. package/dist/native/components/Chart/charts.js.map +1 -1
  561. package/dist/native/components/Chart/scene.cjs +1 -1
  562. package/dist/native/components/Chart/scene.cjs.map +1 -1
  563. package/dist/native/components/Chart/scene.d.cts +6 -1
  564. package/dist/native/components/Chart/scene.d.ts +6 -1
  565. package/dist/native/components/Chart/scene.js +226 -108
  566. package/dist/native/components/Chart/scene.js.map +1 -1
  567. package/dist/native/components/Chart/types.d.cts +7 -1
  568. package/dist/native/components/Chart/types.d.ts +7 -1
  569. package/dist/native/components/Charts/charts.cjs +1 -1
  570. package/dist/native/components/Charts/charts.cjs.map +1 -1
  571. package/dist/native/components/Charts/charts.js +60 -43
  572. package/dist/native/components/Charts/charts.js.map +1 -1
  573. package/dist/native/components/Charts/types.d.cts +11 -0
  574. package/dist/native/components/Charts/types.d.ts +11 -0
  575. package/dist/native/components/ShapeChart/ShapeChartBase.cjs +1 -1
  576. package/dist/native/components/ShapeChart/ShapeChartBase.cjs.map +1 -1
  577. package/dist/native/components/ShapeChart/ShapeChartBase.d.cts +1 -1
  578. package/dist/native/components/ShapeChart/ShapeChartBase.d.ts +1 -1
  579. package/dist/native/components/ShapeChart/ShapeChartBase.js +97 -106
  580. package/dist/native/components/ShapeChart/ShapeChartBase.js.map +1 -1
  581. package/dist/native/components/ShapeChart/charts.cjs +1 -1
  582. package/dist/native/components/ShapeChart/charts.cjs.map +1 -1
  583. package/dist/native/components/ShapeChart/charts.d.cts +6 -1
  584. package/dist/native/components/ShapeChart/charts.d.ts +6 -1
  585. package/dist/native/components/ShapeChart/charts.js +138 -96
  586. package/dist/native/components/ShapeChart/charts.js.map +1 -1
  587. package/dist/native/components/ShapeChart/draw.cjs +1 -1
  588. package/dist/native/components/ShapeChart/draw.cjs.map +1 -1
  589. package/dist/native/components/ShapeChart/draw.d.cts +1 -1
  590. package/dist/native/components/ShapeChart/draw.d.ts +1 -1
  591. package/dist/native/components/ShapeChart/draw.js +26 -17
  592. package/dist/native/components/ShapeChart/draw.js.map +1 -1
  593. package/dist/native/components/ShapeChart/geometry.cjs +1 -1
  594. package/dist/native/components/ShapeChart/geometry.cjs.map +1 -1
  595. package/dist/native/components/ShapeChart/geometry.js +233 -70
  596. package/dist/native/components/ShapeChart/geometry.js.map +1 -1
  597. package/dist/native/components/ShapeChart/index.cjs +1 -1
  598. package/dist/native/components/ShapeChart/index.d.cts +1 -1
  599. package/dist/native/components/ShapeChart/index.d.ts +1 -1
  600. package/dist/native/components/ShapeChart/index.js +2 -2
  601. package/dist/native/components/ShapeChart/recorder.cjs +1 -1
  602. package/dist/native/components/ShapeChart/recorder.cjs.map +1 -1
  603. package/dist/native/components/ShapeChart/recorder.d.cts +10 -1
  604. package/dist/native/components/ShapeChart/recorder.d.ts +10 -1
  605. package/dist/native/components/ShapeChart/recorder.js +19 -10
  606. package/dist/native/components/ShapeChart/recorder.js.map +1 -1
  607. package/dist/native/components/ShapeChart/types.d.cts +95 -8
  608. package/dist/native/components/ShapeChart/types.d.ts +95 -8
  609. package/dist/native/index.cjs +1 -1
  610. package/dist/native/index.js +2 -2
  611. package/dist/native/source/components/Chart/ChartBase.tsx +19 -6
  612. package/dist/native/source/components/Chart/charts.tsx +10 -3
  613. package/dist/native/source/components/Chart/scene.tsx +243 -14
  614. package/dist/native/source/components/Chart/types.ts +7 -0
  615. package/dist/native/source/components/Charts/charts.tsx +37 -2
  616. package/dist/native/source/components/Charts/types.ts +11 -0
  617. package/dist/native/source/components/ShapeChart/ShapeChartBase.tsx +10 -34
  618. package/dist/native/source/components/ShapeChart/charts.tsx +91 -35
  619. package/dist/native/source/components/ShapeChart/draw.tsx +39 -8
  620. package/dist/native/source/components/ShapeChart/geometry.ts +376 -25
  621. package/dist/native/source/components/ShapeChart/index.ts +1 -0
  622. package/dist/native/source/components/ShapeChart/recorder.ts +20 -5
  623. package/dist/native/source/components/ShapeChart/types.ts +99 -6
  624. package/dist/native/source/manifest.ts +1 -0
  625. package/dist/taro/chart-a11y.d.ts +7 -0
  626. package/dist/taro/charts.d.ts +29 -6
  627. package/dist/taro/index.js +3129 -1902
  628. package/dist/taro/shape-charts.d.ts +99 -5
  629. package/dist/uni/AreaChart.vue +2 -1
  630. package/dist/uni/AreaChart.vue.d.ts +5 -1
  631. package/dist/uni/Badge.vue.d.ts +1 -1
  632. package/dist/uni/BarChart.vue +2 -1
  633. package/dist/uni/BarChart.vue.d.ts +5 -1
  634. package/dist/uni/BoxPlotChart.vue +2 -1
  635. package/dist/uni/BoxPlotChart.vue.d.ts +8 -0
  636. package/dist/uni/BubbleChart.vue +2 -1
  637. package/dist/uni/BubbleChart.vue.d.ts +4 -0
  638. package/dist/uni/BulletChart.vue.d.ts +4 -0
  639. package/dist/uni/CalendarHeatmap.vue.d.ts +2 -0
  640. package/dist/uni/CandlestickChart.vue +2 -1
  641. package/dist/uni/CandlestickChart.vue.d.ts +4 -0
  642. package/dist/uni/Chart.vue +2 -1
  643. package/dist/uni/Chart.vue.d.ts +4 -0
  644. package/dist/uni/ChordChart.vue +93 -0
  645. package/dist/uni/ChordChart.vue.d.ts +136 -0
  646. package/dist/uni/Divider.vue.d.ts +1 -1
  647. package/dist/uni/DonutChart.vue.d.ts +5 -1
  648. package/dist/uni/FunnelChart.vue.d.ts +4 -0
  649. package/dist/uni/GanttChart.vue +2 -1
  650. package/dist/uni/GanttChart.vue.d.ts +15 -0
  651. package/dist/uni/GaugeChart.vue.d.ts +5 -1
  652. package/dist/uni/HeatmapChart.vue +2 -1
  653. package/dist/uni/HeatmapChart.vue.d.ts +8 -2
  654. package/dist/uni/HistogramChart.vue +2 -1
  655. package/dist/uni/HistogramChart.vue.d.ts +4 -0
  656. package/dist/uni/HorizontalBarChart.vue +2 -1
  657. package/dist/uni/HorizontalBarChart.vue.d.ts +3 -1
  658. package/dist/uni/LineChart.vue +2 -1
  659. package/dist/uni/LineChart.vue.d.ts +4 -0
  660. package/dist/uni/MixedChart.vue +2 -1
  661. package/dist/uni/MixedChart.vue.d.ts +4 -0
  662. package/dist/uni/PieChart.vue.d.ts +5 -1
  663. package/dist/uni/QuadrantChart.vue +2 -1
  664. package/dist/uni/QuadrantChart.vue.d.ts +4 -0
  665. package/dist/uni/RadarChart.vue.d.ts +4 -0
  666. package/dist/uni/RadialBarChart.vue.d.ts +4 -0
  667. package/dist/uni/RangeAreaChart.vue +2 -1
  668. package/dist/uni/RangeAreaChart.vue.d.ts +4 -0
  669. package/dist/uni/SankeyChart.vue.d.ts +4 -0
  670. package/dist/uni/ScatterChart.vue +2 -1
  671. package/dist/uni/ScatterChart.vue.d.ts +4 -0
  672. package/dist/uni/Sparkline.vue +2 -1
  673. package/dist/uni/Sparkline.vue.d.ts +4 -0
  674. package/dist/uni/SunburstChart.vue.d.ts +4 -0
  675. package/dist/uni/ToastProvider.vue.d.ts +1 -1
  676. package/dist/uni/TreemapChart.vue.d.ts +4 -0
  677. package/dist/uni/WaterfallChart.vue +2 -1
  678. package/dist/uni/WaterfallChart.vue.d.ts +9 -0
  679. package/dist/uni/chart-a11y.d.ts +7 -0
  680. package/dist/uni/chart-a11y.js +29 -0
  681. package/dist/uni/chart-canvas.d.ts +12 -0
  682. package/dist/uni/chart-canvas.js +15 -1
  683. package/dist/uni/chart-types.d.ts +36 -5
  684. package/dist/uni/chart-types.js +31 -3
  685. package/dist/uni/charts-canvas.js +3 -2
  686. package/dist/uni/index.d.ts +2 -1
  687. package/dist/uni/index.js +1 -0
  688. package/dist/uni/manifest.d.ts +7 -0
  689. package/dist/uni/manifest.js +10 -0
  690. package/dist/uni/named-chart-options.d.ts +11 -2
  691. package/dist/uni/named-chart-options.js +21 -1
  692. package/dist/uni/shape-chart-canvas.d.ts +3 -3
  693. package/dist/uni/shape-chart-canvas.js +17 -58
  694. package/dist/uni/shape-chart-types.d.ts +53 -3
  695. package/dist/uni/shape-chart-types.js +45 -1
  696. package/dist/vue/charts-global.d.ts +48 -0
  697. package/dist/vue/charts.d.ts +18 -0
  698. package/dist/vue/charts.js +56 -0
  699. package/dist/vue/charts.js.map +1 -0
  700. package/dist/vue/components/Chart/Bar3DChart.vue.d.ts +2 -0
  701. package/dist/vue/components/Chart/BoxPlotChart.vue.d.ts +8 -0
  702. package/dist/vue/components/Chart/BoxPlotChart.vue.js.map +1 -1
  703. package/dist/vue/components/Chart/BoxPlotChart.vue_vue_type_script_setup_true_lang.js +8 -2
  704. package/dist/vue/components/Chart/BoxPlotChart.vue_vue_type_script_setup_true_lang.js.map +1 -1
  705. package/dist/vue/components/Chart/ChordChart.vue.d.ts +153 -0
  706. package/dist/vue/components/Chart/ChordChart.vue.js +7 -0
  707. package/dist/vue/components/Chart/ChordChart.vue.js.map +1 -0
  708. package/dist/vue/components/Chart/ChordChart.vue_vue_type_script_setup_true_lang.js +81 -0
  709. package/dist/vue/components/Chart/ChordChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  710. package/dist/vue/components/Chart/DependencyGraph.vue.d.ts +181 -0
  711. package/dist/vue/components/Chart/DependencyGraph.vue.js +7 -0
  712. package/dist/vue/components/Chart/DependencyGraph.vue.js.map +1 -0
  713. package/dist/vue/components/Chart/DependencyGraph.vue_vue_type_script_setup_true_lang.js +65 -0
  714. package/dist/vue/components/Chart/DependencyGraph.vue_vue_type_script_setup_true_lang.js.map +1 -0
  715. package/dist/vue/components/Chart/GanttChart.vue.d.ts +19 -0
  716. package/dist/vue/components/Chart/GanttChart.vue.js.map +1 -1
  717. package/dist/vue/components/Chart/GanttChart.vue_vue_type_script_setup_true_lang.js +12 -1
  718. package/dist/vue/components/Chart/GanttChart.vue_vue_type_script_setup_true_lang.js.map +1 -1
  719. package/dist/vue/components/Chart/GraphChart.vue.d.ts +186 -0
  720. package/dist/vue/components/Chart/GraphChart.vue.js +7 -0
  721. package/dist/vue/components/Chart/GraphChart.vue.js.map +1 -0
  722. package/dist/vue/components/Chart/GraphChart.vue_vue_type_script_setup_true_lang.js +62 -0
  723. package/dist/vue/components/Chart/GraphChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  724. package/dist/vue/components/Chart/HeatmapChart.vue.d.ts +9 -5
  725. package/dist/vue/components/Chart/HeatmapChart.vue.js.map +1 -1
  726. package/dist/vue/components/Chart/HeatmapChart.vue_vue_type_script_setup_true_lang.js +3 -1
  727. package/dist/vue/components/Chart/HeatmapChart.vue_vue_type_script_setup_true_lang.js.map +1 -1
  728. package/dist/vue/components/Chart/Line3DChart.vue.d.ts +2 -0
  729. package/dist/vue/components/Chart/OrderBookHeatmap.vue.d.ts +2 -0
  730. package/dist/vue/components/Chart/Scatter3DChart.vue.d.ts +2 -0
  731. package/dist/vue/components/Chart/Surface3DChart.vue.d.ts +2 -0
  732. package/dist/vue/components/Chart/TimeAndSales.vue.d.ts +2 -0
  733. package/dist/vue/components/Chart/TradingChart.vue.d.ts +58 -1
  734. package/dist/vue/components/Chart/TradingChart.vue.js.map +1 -1
  735. package/dist/vue/components/Chart/TradingChart.vue_vue_type_script_setup_true_lang.js +31 -0
  736. package/dist/vue/components/Chart/TradingChart.vue_vue_type_script_setup_true_lang.js.map +1 -1
  737. package/dist/vue/components/Chart/TreeChart.vue.d.ts +174 -0
  738. package/dist/vue/components/Chart/TreeChart.vue.js +7 -0
  739. package/dist/vue/components/Chart/TreeChart.vue.js.map +1 -0
  740. package/dist/vue/components/Chart/TreeChart.vue_vue_type_script_setup_true_lang.js +56 -0
  741. package/dist/vue/components/Chart/TreeChart.vue_vue_type_script_setup_true_lang.js.map +1 -0
  742. package/dist/vue/components/Chart/WaterfallChart.vue.d.ts +12 -1
  743. package/dist/vue/components/Chart/WaterfallChart.vue.js.map +1 -1
  744. package/dist/vue/components/Chart/WaterfallChart.vue_vue_type_script_setup_true_lang.js +8 -2
  745. package/dist/vue/components/Chart/WaterfallChart.vue_vue_type_script_setup_true_lang.js.map +1 -1
  746. package/dist/vue/components/Chart/graph.d.ts +156 -0
  747. package/dist/vue/components/Chart/graph.js +137 -0
  748. package/dist/vue/components/Chart/graph.js.map +1 -0
  749. package/dist/vue/components/Chart/index.d.ts +5 -1
  750. package/dist/vue/components/Chart/index.js +5 -1
  751. package/dist/vue/components/Chart/orderbook.d.ts +5 -1
  752. package/dist/vue/components/Chart/orderbook.js +2 -0
  753. package/dist/vue/components/Chart/orderbook.js.map +1 -1
  754. package/dist/vue/components/Chart/three-d.d.ts +3 -0
  755. package/dist/vue/components/Chart/three-d.js +2 -0
  756. package/dist/vue/components/Chart/three-d.js.map +1 -1
  757. package/dist/vue/components/Chart/trading.d.ts +30 -3
  758. package/dist/vue/components/Chart/trading.js +9 -0
  759. package/dist/vue/components/Chart/trading.js.map +1 -1
  760. package/dist/vue/components/Chart/types.d.ts +74 -2
  761. package/dist/vue/global.d.ts +2 -38
  762. package/dist/vue/groups/charts.js +10 -2
  763. package/dist/vue/groups/charts.js.map +1 -1
  764. package/dist/vue/index.js +6 -2
  765. package/dist/vue/internal/register.d.ts +7 -0
  766. package/dist/vue/internal/register.js +14 -0
  767. package/dist/vue/internal/register.js.map +1 -0
  768. package/dist/vue/plugin.d.ts +9 -4
  769. package/dist/vue/plugin.js +6 -11
  770. package/dist/vue/plugin.js.map +1 -1
  771. package/dist/weapp/area-chart/index.wxml +1 -1
  772. package/dist/weapp/bar-chart/index.wxml +1 -1
  773. package/dist/weapp/box-plot-chart/index.wxml +1 -1
  774. package/dist/weapp/bubble-chart/index.wxml +1 -1
  775. package/dist/weapp/candlestick-chart/index.wxml +1 -1
  776. package/dist/weapp/chart/index.wxml +1 -1
  777. package/dist/weapp/charts/canvas.js +1987 -175
  778. package/dist/weapp/charts/core.js +3 -0
  779. package/dist/weapp/chord-chart/index.js +1 -0
  780. package/dist/weapp/chord-chart/index.json +1 -0
  781. package/dist/weapp/chord-chart/index.wxml +1 -0
  782. package/dist/weapp/chord-chart/index.wxss +1 -0
  783. package/dist/weapp/controls.js +148 -57
  784. package/dist/weapp/gantt-chart/index.wxml +1 -1
  785. package/dist/weapp/heatmap-chart/index.wxml +1 -1
  786. package/dist/weapp/histogram-chart/index.wxml +1 -1
  787. package/dist/weapp/horizontal-bar-chart/index.wxml +1 -1
  788. package/dist/weapp/line-chart/index.wxml +1 -1
  789. package/dist/weapp/mixed-chart/index.wxml +1 -1
  790. package/dist/weapp/quadrant-chart/index.wxml +1 -1
  791. package/dist/weapp/range-area-chart/index.wxml +1 -1
  792. package/dist/weapp/scatter-chart/index.wxml +1 -1
  793. package/dist/weapp/sparkline/index.wxml +1 -1
  794. package/dist/weapp/types.d.ts +96 -4
  795. package/dist/weapp/waterfall-chart/index.wxml +1 -1
  796. package/dist/web-components/components/chart/charts.d.ts +4 -2
  797. package/dist/web-components/components/chart/charts.js +8 -1
  798. package/dist/web-components/components/chart/charts.js.map +1 -1
  799. package/dist/web-components/components/chart/extended.d.ts +21 -7
  800. package/dist/web-components/components/chart/extended.js +29 -9
  801. package/dist/web-components/components/chart/extended.js.map +1 -1
  802. package/dist/web-components/components/chart/shapes-extended.d.ts +37 -1
  803. package/dist/web-components/components/chart/shapes-extended.js +27 -1
  804. package/dist/web-components/components/chart/shapes-extended.js.map +1 -1
  805. package/dist/web-components/components/chart-3d/chart-3d.d.ts +1 -1
  806. package/dist/web-components/components/chart-3d/chart-3d.js.map +1 -1
  807. package/dist/web-components/components/graph/graph.d.ts +156 -0
  808. package/dist/web-components/components/graph/graph.js +150 -0
  809. package/dist/web-components/components/graph/graph.js.map +1 -0
  810. package/dist/web-components/components/trading-chart/trading-chart.d.ts +49 -2
  811. package/dist/web-components/components/trading-chart/trading-chart.js +62 -0
  812. package/dist/web-components/components/trading-chart/trading-chart.js.map +1 -1
  813. package/dist/web-components/elements/chart.d.ts +1 -1
  814. package/dist/web-components/elements/chart.js +6 -5
  815. package/dist/web-components/elements/chart.js.map +1 -1
  816. package/dist/web-components/elements/graph.d.ts +2 -0
  817. package/dist/web-components/elements/graph.js +12 -0
  818. package/dist/web-components/elements/graph.js.map +1 -0
  819. package/dist/web-components/html-custom-data.json +318 -4
  820. package/dist/web-components/types/react.d.ts +63 -4
  821. package/dist/web-components/types/solid.d.ts +55 -8
  822. package/dist/web-components/types/svelte.d.ts +55 -8
  823. package/dist/web-components/types/vue.d.ts +55 -4
  824. package/package.json +16 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker.cjs","names":["forceKernel","require_force","WORKER_THRESHOLD","forceWorkerSource","canUseWorkers","createForceRunner","x","init","y","hot","destroyed","worker","url","sim","lastAlpha","revoke","startLocal","fallback","options","m","event","post","message","start","warm","budgetMs","index","px","py","keep","alpha"],"sources":["../../../../../charts/src/engine/graph/worker.ts"],"sourcesContent":["// Runs a force simulation on the main thread (time-sliced: a few ms per\n// animation frame) or in a Web Worker created from a Blob URL. Without\n// worker support (CSP, old browsers, mini-programs) the worker version\n// falls back to the main thread.\n\nimport { forceKernel, type ForceKernelInit } from \"./force\";\n\n/** `worker: \"auto\"` uses a worker from this number of nodes */\nexport const WORKER_THRESHOLD = 2000;\n\n/** Script of the simulation worker (the kernel is serialized into it) */\nexport const forceWorkerSource = (): string => `\"use strict\";\nconst createSim = (${forceKernel.toString()})();\nlet sim = null;\nlet pending = false;\nlet stream = true;\n// yields between slices with a message: nested timeouts are clamped to 4 ms\nconst channel = typeof MessageChannel === \"function\" ? new MessageChannel() : null;\nconst schedule = () => {\n pending = true;\n if (channel) channel.port2.postMessage(0);\n else setTimeout(loop, 0);\n};\nconst send = (type) => {\n const x = new Float64Array(sim.x);\n const y = new Float64Array(sim.y);\n self.postMessage({ type, x, y, alpha: sim.alpha() }, [x.buffer, y.buffer]);\n};\nconst loop = () => {\n pending = false;\n if (!sim) return;\n const start = performance.now();\n let hot = true;\n while (hot && performance.now() - start < 16) hot = sim.tick(1);\n if (hot) {\n if (stream) send(\"tick\");\n schedule();\n } else {\n sim.settle();\n send(\"end\");\n }\n};\nif (channel) channel.port1.onmessage = loop;\nconst run = () => {\n if (!pending) schedule();\n};\nself.onmessage = (event) => {\n const m = event.data;\n if (m.type === \"init\") {\n sim = createSim(m.init);\n stream = m.stream !== false;\n run();\n } else if (m.type === \"stop\") {\n sim = null;\n } else if (sim) {\n if (m.type === \"drag\") sim.drag(m.index, m.x, m.y);\n else if (m.type === \"release\") sim.release(m.index, m.keep);\n else if (m.type === \"reheat\") sim.reheat(m.alpha);\n run();\n }\n};\n`;\n\n/** A simulation running somewhere; positions are read from `x` / `y` */\nexport interface ForceRunner {\n readonly x: Float64Array;\n readonly y: Float64Array;\n /** Whether the simulation runs in a worker */\n threaded(): boolean;\n /** Main thread: ticks for about `budgetMs` (no-op in a worker) */\n step(budgetMs: number): void;\n /** Whether the simulation is still hot */\n running(): boolean;\n drag(index: number, x: number, y: number): void;\n release(index: number, keep: boolean): void;\n reheat(alpha: number): void;\n destroy(): void;\n}\n\nexport interface ForceRunnerOptions {\n /** Tries a worker first */\n worker: boolean;\n /** Reports intermediate positions (else only the final ones) */\n stream: boolean;\n /** New positions are available */\n onTick: () => void;\n /** The simulation cooled down */\n onEnd: () => void;\n now: () => number;\n}\n\nconst canUseWorkers = () =>\n typeof Worker === \"function\" &&\n typeof Blob === \"function\" &&\n typeof URL !== \"undefined\" &&\n typeof URL.createObjectURL === \"function\";\n\n/**\n * Starts a simulation. Its positions are written into `init.x` / `init.y`\n * (the same arrays as the runner's `x` / `y`).\n */\nexport const createForceRunner = (\n init: ForceKernelInit,\n options: ForceRunnerOptions,\n): ForceRunner => {\n const x = init.x;\n const y = init.y;\n let hot = true;\n let destroyed = false;\n let worker: Worker | null = null;\n let url = \"\";\n let sim: ReturnType<ReturnType<typeof forceKernel>> | null = null;\n let lastAlpha = init.alpha > 0 ? init.alpha : 1;\n\n const revoke = () => {\n if (url) URL.revokeObjectURL(url);\n url = \"\";\n };\n\n const startLocal = () => {\n sim = forceKernel()({ ...init, x, y, alpha: lastAlpha });\n };\n\n const fallback = () => {\n revoke();\n worker?.terminate();\n worker = null;\n if (destroyed || !hot) return;\n startLocal();\n options.onTick();\n };\n\n if (options.worker && canUseWorkers()) {\n try {\n url = URL.createObjectURL(\n new Blob([forceWorkerSource()], { type: \"text/javascript\" }),\n );\n worker = new Worker(url);\n worker.onmessage = (event: MessageEvent) => {\n revoke();\n const m = event.data as {\n type: \"tick\" | \"end\";\n x: Float64Array;\n y: Float64Array;\n alpha: number;\n };\n if (destroyed || !hot) return;\n if (m.x.length === x.length) {\n x.set(m.x);\n y.set(m.y);\n }\n lastAlpha = m.alpha;\n if (m.type === \"end\") {\n hot = false;\n options.onTick();\n options.onEnd();\n } else {\n options.onTick();\n }\n };\n worker.onerror = (event) => {\n event.preventDefault?.();\n fallback();\n };\n worker.postMessage({ type: \"init\", init, stream: options.stream });\n } catch {\n worker = null;\n revoke();\n }\n }\n if (!worker) startLocal();\n\n const post = (message: object) => {\n try {\n worker?.postMessage(message);\n } catch {\n fallback();\n }\n };\n\n return {\n x,\n y,\n threaded: () => !!worker,\n step(budgetMs) {\n if (!sim || !hot || destroyed) return;\n const start = options.now();\n let warm = sim.tick(1);\n while (warm && options.now() - start < budgetMs) warm = sim.tick(1);\n lastAlpha = sim.alpha();\n if (!warm) {\n hot = false;\n sim.settle();\n options.onEnd();\n }\n },\n running: () => hot && !destroyed,\n drag(index, px, py) {\n x[index] = px;\n y[index] = py;\n hot = true;\n if (worker) post({ type: \"drag\", index, x: px, y: py });\n else sim?.drag(index, px, py);\n },\n release(index, keep) {\n if (worker) post({ type: \"release\", index, keep });\n else sim?.release(index, keep);\n },\n reheat(alpha) {\n hot = true;\n if (worker) post({ type: \"reheat\", alpha });\n else sim?.reheat(alpha);\n },\n destroy() {\n destroyed = true;\n if (worker) {\n try {\n worker.postMessage({ type: \"stop\" });\n } catch {\n // already gone\n }\n worker.terminate();\n }\n worker = null;\n revoke();\n sim = null;\n },\n };\n};\n"],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import { ForceKernelInit } from './force.cjs';
2
+ /** `worker: "auto"` uses a worker from this number of nodes */
3
+ export declare const WORKER_THRESHOLD = 2000;
4
+ /** Script of the simulation worker (the kernel is serialized into it) */
5
+ export declare const forceWorkerSource: () => string;
6
+ /** A simulation running somewhere; positions are read from `x` / `y` */
7
+ export interface ForceRunner {
8
+ readonly x: Float64Array;
9
+ readonly y: Float64Array;
10
+ /** Whether the simulation runs in a worker */
11
+ threaded(): boolean;
12
+ /** Main thread: ticks for about `budgetMs` (no-op in a worker) */
13
+ step(budgetMs: number): void;
14
+ /** Whether the simulation is still hot */
15
+ running(): boolean;
16
+ drag(index: number, x: number, y: number): void;
17
+ release(index: number, keep: boolean): void;
18
+ reheat(alpha: number): void;
19
+ destroy(): void;
20
+ }
21
+ export interface ForceRunnerOptions {
22
+ /** Tries a worker first */
23
+ worker: boolean;
24
+ /** Reports intermediate positions (else only the final ones) */
25
+ stream: boolean;
26
+ /** New positions are available */
27
+ onTick: () => void;
28
+ /** The simulation cooled down */
29
+ onEnd: () => void;
30
+ now: () => number;
31
+ }
32
+ /**
33
+ * Starts a simulation. Its positions are written into `init.x` / `init.y`
34
+ * (the same arrays as the runner's `x` / `y`).
35
+ */
36
+ export declare const createForceRunner: (init: ForceKernelInit, options: ForceRunnerOptions) => ForceRunner;
@@ -0,0 +1,36 @@
1
+ import { ForceKernelInit } from './force.js';
2
+ /** `worker: "auto"` uses a worker from this number of nodes */
3
+ export declare const WORKER_THRESHOLD = 2000;
4
+ /** Script of the simulation worker (the kernel is serialized into it) */
5
+ export declare const forceWorkerSource: () => string;
6
+ /** A simulation running somewhere; positions are read from `x` / `y` */
7
+ export interface ForceRunner {
8
+ readonly x: Float64Array;
9
+ readonly y: Float64Array;
10
+ /** Whether the simulation runs in a worker */
11
+ threaded(): boolean;
12
+ /** Main thread: ticks for about `budgetMs` (no-op in a worker) */
13
+ step(budgetMs: number): void;
14
+ /** Whether the simulation is still hot */
15
+ running(): boolean;
16
+ drag(index: number, x: number, y: number): void;
17
+ release(index: number, keep: boolean): void;
18
+ reheat(alpha: number): void;
19
+ destroy(): void;
20
+ }
21
+ export interface ForceRunnerOptions {
22
+ /** Tries a worker first */
23
+ worker: boolean;
24
+ /** Reports intermediate positions (else only the final ones) */
25
+ stream: boolean;
26
+ /** New positions are available */
27
+ onTick: () => void;
28
+ /** The simulation cooled down */
29
+ onEnd: () => void;
30
+ now: () => number;
31
+ }
32
+ /**
33
+ * Starts a simulation. Its positions are written into `init.x` / `init.y`
34
+ * (the same arrays as the runner's `x` / `y`).
35
+ */
36
+ export declare const createForceRunner: (init: ForceKernelInit, options: ForceRunnerOptions) => ForceRunner;
@@ -0,0 +1,135 @@
1
+ import { forceKernel as e } from "./force.js";
2
+ //#region src/engine/graph/worker.ts
3
+ var t = 2e3, n = () => `"use strict";
4
+ const createSim = (${e.toString()})();
5
+ let sim = null;
6
+ let pending = false;
7
+ let stream = true;
8
+ // yields between slices with a message: nested timeouts are clamped to 4 ms
9
+ const channel = typeof MessageChannel === "function" ? new MessageChannel() : null;
10
+ const schedule = () => {
11
+ pending = true;
12
+ if (channel) channel.port2.postMessage(0);
13
+ else setTimeout(loop, 0);
14
+ };
15
+ const send = (type) => {
16
+ const x = new Float64Array(sim.x);
17
+ const y = new Float64Array(sim.y);
18
+ self.postMessage({ type, x, y, alpha: sim.alpha() }, [x.buffer, y.buffer]);
19
+ };
20
+ const loop = () => {
21
+ pending = false;
22
+ if (!sim) return;
23
+ const start = performance.now();
24
+ let hot = true;
25
+ while (hot && performance.now() - start < 16) hot = sim.tick(1);
26
+ if (hot) {
27
+ if (stream) send("tick");
28
+ schedule();
29
+ } else {
30
+ sim.settle();
31
+ send("end");
32
+ }
33
+ };
34
+ if (channel) channel.port1.onmessage = loop;
35
+ const run = () => {
36
+ if (!pending) schedule();
37
+ };
38
+ self.onmessage = (event) => {
39
+ const m = event.data;
40
+ if (m.type === "init") {
41
+ sim = createSim(m.init);
42
+ stream = m.stream !== false;
43
+ run();
44
+ } else if (m.type === "stop") {
45
+ sim = null;
46
+ } else if (sim) {
47
+ if (m.type === "drag") sim.drag(m.index, m.x, m.y);
48
+ else if (m.type === "release") sim.release(m.index, m.keep);
49
+ else if (m.type === "reheat") sim.reheat(m.alpha);
50
+ run();
51
+ }
52
+ };
53
+ `, r = () => typeof Worker == "function" && typeof Blob == "function" && typeof URL < "u" && typeof URL.createObjectURL == "function", i = (t, i) => {
54
+ let a = t.x, o = t.y, s = !0, c = !1, l = null, u = "", d = null, f = t.alpha > 0 ? t.alpha : 1, p = () => {
55
+ u && URL.revokeObjectURL(u), u = "";
56
+ }, m = () => {
57
+ d = e()({
58
+ ...t,
59
+ x: a,
60
+ y: o,
61
+ alpha: f
62
+ });
63
+ }, h = () => {
64
+ p(), l?.terminate(), l = null, !c && s && (m(), i.onTick());
65
+ };
66
+ if (i.worker && r()) try {
67
+ u = URL.createObjectURL(new Blob([n()], { type: "text/javascript" })), l = new Worker(u), l.onmessage = (e) => {
68
+ p();
69
+ let t = e.data;
70
+ !c && s && (t.x.length === a.length && (a.set(t.x), o.set(t.y)), f = t.alpha, t.type === "end" ? (s = !1, i.onTick(), i.onEnd()) : i.onTick());
71
+ }, l.onerror = (e) => {
72
+ e.preventDefault?.(), h();
73
+ }, l.postMessage({
74
+ type: "init",
75
+ init: t,
76
+ stream: i.stream
77
+ });
78
+ } catch {
79
+ l = null, p();
80
+ }
81
+ l || m();
82
+ let g = (e) => {
83
+ try {
84
+ l?.postMessage(e);
85
+ } catch {
86
+ h();
87
+ }
88
+ };
89
+ return {
90
+ x: a,
91
+ y: o,
92
+ threaded: () => !!l,
93
+ step(e) {
94
+ if (!d || !s || c) return;
95
+ let t = i.now(), n = d.tick(1);
96
+ for (; n && i.now() - t < e;) n = d.tick(1);
97
+ f = d.alpha(), n || (s = !1, d.settle(), i.onEnd());
98
+ },
99
+ running: () => s && !c,
100
+ drag(e, t, n) {
101
+ a[e] = t, o[e] = n, s = !0, l ? g({
102
+ type: "drag",
103
+ index: e,
104
+ x: t,
105
+ y: n
106
+ }) : d?.drag(e, t, n);
107
+ },
108
+ release(e, t) {
109
+ l ? g({
110
+ type: "release",
111
+ index: e,
112
+ keep: t
113
+ }) : d?.release(e, t);
114
+ },
115
+ reheat(e) {
116
+ s = !0, l ? g({
117
+ type: "reheat",
118
+ alpha: e
119
+ }) : d?.reheat(e);
120
+ },
121
+ destroy() {
122
+ if (c = !0, l) {
123
+ try {
124
+ l.postMessage({ type: "stop" });
125
+ } catch {}
126
+ l.terminate();
127
+ }
128
+ l = null, p(), d = null;
129
+ }
130
+ };
131
+ };
132
+ //#endregion
133
+ export { t as WORKER_THRESHOLD, i as createForceRunner, n as forceWorkerSource };
134
+
135
+ //# sourceMappingURL=worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker.js","names":["WORKER_THRESHOLD","forceWorkerSource","forceKernel","canUseWorkers","createForceRunner","x","init","y","hot","destroyed","worker","url","sim","lastAlpha","revoke","startLocal","fallback","options","m","event","post","message","start","warm","budgetMs","index","px","py","keep","alpha"],"sources":["../../../../../charts/src/engine/graph/worker.ts"],"sourcesContent":["// Runs a force simulation on the main thread (time-sliced: a few ms per\n// animation frame) or in a Web Worker created from a Blob URL. Without\n// worker support (CSP, old browsers, mini-programs) the worker version\n// falls back to the main thread.\n\nimport { forceKernel, type ForceKernelInit } from \"./force\";\n\n/** `worker: \"auto\"` uses a worker from this number of nodes */\nexport const WORKER_THRESHOLD = 2000;\n\n/** Script of the simulation worker (the kernel is serialized into it) */\nexport const forceWorkerSource = (): string => `\"use strict\";\nconst createSim = (${forceKernel.toString()})();\nlet sim = null;\nlet pending = false;\nlet stream = true;\n// yields between slices with a message: nested timeouts are clamped to 4 ms\nconst channel = typeof MessageChannel === \"function\" ? new MessageChannel() : null;\nconst schedule = () => {\n pending = true;\n if (channel) channel.port2.postMessage(0);\n else setTimeout(loop, 0);\n};\nconst send = (type) => {\n const x = new Float64Array(sim.x);\n const y = new Float64Array(sim.y);\n self.postMessage({ type, x, y, alpha: sim.alpha() }, [x.buffer, y.buffer]);\n};\nconst loop = () => {\n pending = false;\n if (!sim) return;\n const start = performance.now();\n let hot = true;\n while (hot && performance.now() - start < 16) hot = sim.tick(1);\n if (hot) {\n if (stream) send(\"tick\");\n schedule();\n } else {\n sim.settle();\n send(\"end\");\n }\n};\nif (channel) channel.port1.onmessage = loop;\nconst run = () => {\n if (!pending) schedule();\n};\nself.onmessage = (event) => {\n const m = event.data;\n if (m.type === \"init\") {\n sim = createSim(m.init);\n stream = m.stream !== false;\n run();\n } else if (m.type === \"stop\") {\n sim = null;\n } else if (sim) {\n if (m.type === \"drag\") sim.drag(m.index, m.x, m.y);\n else if (m.type === \"release\") sim.release(m.index, m.keep);\n else if (m.type === \"reheat\") sim.reheat(m.alpha);\n run();\n }\n};\n`;\n\n/** A simulation running somewhere; positions are read from `x` / `y` */\nexport interface ForceRunner {\n readonly x: Float64Array;\n readonly y: Float64Array;\n /** Whether the simulation runs in a worker */\n threaded(): boolean;\n /** Main thread: ticks for about `budgetMs` (no-op in a worker) */\n step(budgetMs: number): void;\n /** Whether the simulation is still hot */\n running(): boolean;\n drag(index: number, x: number, y: number): void;\n release(index: number, keep: boolean): void;\n reheat(alpha: number): void;\n destroy(): void;\n}\n\nexport interface ForceRunnerOptions {\n /** Tries a worker first */\n worker: boolean;\n /** Reports intermediate positions (else only the final ones) */\n stream: boolean;\n /** New positions are available */\n onTick: () => void;\n /** The simulation cooled down */\n onEnd: () => void;\n now: () => number;\n}\n\nconst canUseWorkers = () =>\n typeof Worker === \"function\" &&\n typeof Blob === \"function\" &&\n typeof URL !== \"undefined\" &&\n typeof URL.createObjectURL === \"function\";\n\n/**\n * Starts a simulation. Its positions are written into `init.x` / `init.y`\n * (the same arrays as the runner's `x` / `y`).\n */\nexport const createForceRunner = (\n init: ForceKernelInit,\n options: ForceRunnerOptions,\n): ForceRunner => {\n const x = init.x;\n const y = init.y;\n let hot = true;\n let destroyed = false;\n let worker: Worker | null = null;\n let url = \"\";\n let sim: ReturnType<ReturnType<typeof forceKernel>> | null = null;\n let lastAlpha = init.alpha > 0 ? init.alpha : 1;\n\n const revoke = () => {\n if (url) URL.revokeObjectURL(url);\n url = \"\";\n };\n\n const startLocal = () => {\n sim = forceKernel()({ ...init, x, y, alpha: lastAlpha });\n };\n\n const fallback = () => {\n revoke();\n worker?.terminate();\n worker = null;\n if (destroyed || !hot) return;\n startLocal();\n options.onTick();\n };\n\n if (options.worker && canUseWorkers()) {\n try {\n url = URL.createObjectURL(\n new Blob([forceWorkerSource()], { type: \"text/javascript\" }),\n );\n worker = new Worker(url);\n worker.onmessage = (event: MessageEvent) => {\n revoke();\n const m = event.data as {\n type: \"tick\" | \"end\";\n x: Float64Array;\n y: Float64Array;\n alpha: number;\n };\n if (destroyed || !hot) return;\n if (m.x.length === x.length) {\n x.set(m.x);\n y.set(m.y);\n }\n lastAlpha = m.alpha;\n if (m.type === \"end\") {\n hot = false;\n options.onTick();\n options.onEnd();\n } else {\n options.onTick();\n }\n };\n worker.onerror = (event) => {\n event.preventDefault?.();\n fallback();\n };\n worker.postMessage({ type: \"init\", init, stream: options.stream });\n } catch {\n worker = null;\n revoke();\n }\n }\n if (!worker) startLocal();\n\n const post = (message: object) => {\n try {\n worker?.postMessage(message);\n } catch {\n fallback();\n }\n };\n\n return {\n x,\n y,\n threaded: () => !!worker,\n step(budgetMs) {\n if (!sim || !hot || destroyed) return;\n const start = options.now();\n let warm = sim.tick(1);\n while (warm && options.now() - start < budgetMs) warm = sim.tick(1);\n lastAlpha = sim.alpha();\n if (!warm) {\n hot = false;\n sim.settle();\n options.onEnd();\n }\n },\n running: () => hot && !destroyed,\n drag(index, px, py) {\n x[index] = px;\n y[index] = py;\n hot = true;\n if (worker) post({ type: \"drag\", index, x: px, y: py });\n else sim?.drag(index, px, py);\n },\n release(index, keep) {\n if (worker) post({ type: \"release\", index, keep });\n else sim?.release(index, keep);\n },\n reheat(alpha) {\n hot = true;\n if (worker) post({ type: \"reheat\", alpha });\n else sim?.reheat(alpha);\n },\n destroy() {\n destroyed = true;\n if (worker) {\n try {\n worker.postMessage({ type: \"stop\" });\n } catch {\n // already gone\n }\n worker.terminate();\n }\n worker = null;\n revoke();\n sim = null;\n },\n };\n};\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- const e=require("./color.cjs"),t=require("./curve.cjs"),n=require("./renderers/types.cjs");var r=(e,t)=>Number.isFinite(e)?e-t:n.GAP,i={heatmap:0,area:1,bar:2,boxplot:2,candlestick:3,line:4,scatter:5},a=e=>{let{x:n,count:r}=e.cols,i=e.stackTop??e.cols.y,a=e.stackBase;if(e.curve===`linear`)return{n:r,xAt:e=>n[e],yAt:e=>i[e],baseAt:a?e=>a[e]:null};let o=t.curvePoints(n,i,0,r,e.curve),s=a?t.curvePoints(n,a,0,r,e.curve).points:null,c=o.points;return{n:o.length,xAt:e=>c[e*2],yAt:e=>c[e*2+1],baseAt:s?e=>s[e*2+1]:null}},o=(e,t,n,r,i,a)=>{let o=new ArrayBuffer(r*16),s=new Float32Array(o),c=new Uint32Array(o);for(let e=0;e<r;e++)i(e,s,c);return{kind:`bar`,key:e,version:t,color:n.color,instances:o,count:r,...a}},s=(t,s,u)=>{let d=[],f=[],p=t.series.filter(e=>!e.hidden).sort((e,t)=>i[e.type]-i[t.type]||e.index-t.index);for(let i of p){let{x:p,y:m,count:h,sorted:g}=i.cols;switch((i.type===`line`||i.type===`scatter`)&&f.length&&d.push(...f.splice(0)),i.type){case`line`:case`area`:{let{n:e,xAt:o,yAt:c,baseAt:l}=a(i),h=new Float32Array(e*2);if(i.curve===`linear`){let t=i.stackTop??m,r=s.x,a=s.y;for(let i=0;i<e;i++){let e=p[i],o=t[i];h[i*2]=Number.isFinite(e)?e-r:n.GAP,h[i*2+1]=Number.isFinite(o)?o-a:n.GAP}}else for(let t=0;t<e;t++)h[t*2]=r(o(t),s.x),h[t*2+1]=r(c(t),s.y);if(i.type===`area`){let n=new Float32Array(e*3),a=t.baseline-s.y;for(let t=0;t<e;t++)n[t*3]=h[t*2],n[t*3+1]=h[t*2+1],n[t*3+2]=l?r(l(t),s.y):a;d.push({kind:`area`,key:`${i.key}:area`,version:u,color:i.color,points:n,count:e,opacity:i.opacity,sorted:g})}if(i.lineWidth<=0)break;if((i.type===`area`?f:d).push({kind:`line`,key:`${i.key}:line`,version:u,color:i.color,points:h,count:e,width:i.lineWidth,sorted:g}),i.type===`area`&&i.cols.y0&&l){let t=new Float32Array(e*2);for(let n=0;n<e;n++)t[n*2]=h[n*2],t[n*2+1]=r(l(n),s.y);f.push({kind:`line`,key:`${i.key}:lower`,version:u,color:i.color,points:t,count:e,width:i.lineWidth,sorted:g})}break}case`bar`:{let a=i.barBase??new Float64Array(h),l=i.barTop??m,f=e=>i.opacity<1?[e[0],e[1],e[2],e[3]*i.opacity]:e,_=e.packColor(f(i.color)),v=!i.floating&&t.series.some(e=>e!==i&&!e.hidden&&e.type===`bar`&&!e.floating&&e.barOffset===i.barOffset),y=i.barHalfWidth>0&&c(t,i);d.push(o(`${i.key}:bar`,u,i,h,(t,o,c)=>{let u=Number.isFinite(l[t])&&Number.isFinite(a[t]);o[t*4]=r(p[t]+i.barOffset,s.x),o[t*4+1]=u?a[t]-s.y:n.GAP,o[t*4+2]=u?l[t]-s.y:n.GAP;let d=i.pointColors?.[t];c[t*4+3]=d?e.packColor(f(d)):_},{halfWidth:i.barHalfWidth,radius:v?0:i.radius,inset:y?.5:0,minHalf:0,sorted:g}));break}case`candlestick`:{let{open:t,high:a,low:c}=i.cols,l=e.packColor(i.upColor),f=e.packColor(i.downColor),_=e=>t&&Number.isFinite(t[e])&&m[e]<t[e]?f:l;d.push(o(`${i.key}:wick`,u,i,h,(e,t,i)=>{let o=a?a[e]:m[e],l=c?c[e]:m[e],u=Number.isFinite(o)&&Number.isFinite(l)&&Number.isFinite(m[e]);t[e*4]=r(p[e],s.x),t[e*4+1]=u?l-s.y:n.GAP,t[e*4+2]=u?o-s.y:n.GAP,i[e*4+3]=_(e)},{halfWidth:0,radius:0,inset:0,minHalf:i.lineWidth/2,sorted:g}),o(`${i.key}:body`,u,i,h,(e,i,a)=>{let o=t?t[e]:m[e],c=Number.isFinite(o)&&Number.isFinite(m[e]);i[e*4]=r(p[e],s.x),i[e*4+1]=c?o-s.y:n.GAP,i[e*4+2]=c?m[e]-s.y:n.GAP,a[e*4+3]=_(e)},{halfWidth:i.barHalfWidth,radius:Math.min(i.radius,1.5),inset:0,minHalf:.5,sorted:g}));break}case`boxplot`:d.push(...l(i,s,u));break;case`heatmap`:{let e=i.cellColors,t=i.cellHalf.y;d.push(o(`${i.key}:cells`,u,i,h,(i,a,o)=>{let c=e?e[i]:0,l=c!==0&&Number.isFinite(p[i]);a[i*4]=r(p[i],s.x),a[i*4+1]=l?m[i]-t-s.y:n.GAP,a[i*4+2]=l?m[i]+t-s.y:n.GAP,o[i*4+3]=c},{halfWidth:i.cellHalf.x,radius:i.radius,inset:1,minHalf:0,sorted:g}));break}default:{let t=new ArrayBuffer(h*16),r=new Float32Array(t),a=new Uint32Array(t),o=e.packColor(i.color),c=i.cols.size;for(let t=0;t<h;t++){let l=Number.isFinite(m[t])&&Number.isFinite(p[t]);r[t*4]=l?p[t]-s.x:n.GAP,r[t*4+1]=l?m[t]-s.y:n.GAP;let u=c?c[t]:NaN;r[t*4+2]=Number.isFinite(u)&&u>0?u:i.pointSize;let d=i.pointColors?.[t];a[t*4+3]=d?e.packColor(d):o}d.push({kind:`scatter`,key:`${i.key}:scatter`,version:u,color:i.color,instances:t,count:h,opacity:i.opacity,stroke:h<=5e3?1.25:0});break}}}return d.push(...f),d},c=(e,t)=>{let n=1;if(e.x.type!==`category`){let{x:e,count:r}=t.cols;n=1/0;for(let t=1;t<Math.min(r,64);t++){let r=Math.abs(e[t]-e[t-1]);r>0&&r<n&&(n=r)}if(!Number.isFinite(n))return!1}return t.barHalfWidth*2>=n*.98},l=(t,i,a)=>{let{x:s,y:c,count:l,high:u,low:d,q1:f,q3:p,outliers:m}=t.cols,h=e.packColor(t.color),g=e.packColor([t.color[0],t.color[1],t.color[2],t.color[3]*t.opacity]),_=(n,r=!1)=>{let i=t.pointColors?.[n];return i?e.packColor(r?[i[0],i[1],i[2],i[3]*t.opacity]:i):r?g:h},v=t.barHalfWidth,y=Math.max(1,t.lineWidth),b=(e,t)=>e&&Number.isFinite(e[t])?e[t]:c[t],x=(e,n=0)=>r(s[e]+t.barOffset+n,i.x),S=e=>e-i.y,C=(e,r,i,o)=>{let u=new ArrayBuffer(l*r*16),d=new Float32Array(u),f=new Uint32Array(u);for(let e=0;e<l;e++){let t=Number.isFinite(c[e])&&Number.isFinite(s[e]);for(let a=0;a<r;a++){let o=(e*r+a)*4,[s,c,l]=t?i(e,a):[0,NaN,NaN];d[o]=t?x(e,s):n.GAP,d[o+1]=t?S(c):n.GAP,d[o+2]=t?S(l):n.GAP,f[o+3]=_(e)}}return{kind:`bar`,key:`${t.key}:${e}`,version:a,color:t.color,instances:u,count:l*r,radius:0,inset:0,sorted:!1,...o}},w=[o(`${t.key}:box`,a,t,l,(e,t,r)=>{let i=Number.isFinite(c[e])&&Number.isFinite(s[e]);t[e*4]=i?x(e):n.GAP,t[e*4+1]=i?S(b(f,e)):n.GAP,t[e*4+2]=i?S(b(p,e)):n.GAP,r[e*4+3]=_(e,!0)},{halfWidth:v,radius:0,inset:0,minHalf:0,sorted:!1}),C(`stems`,4,(e,t)=>t===0?[0,b(d,e),b(f,e)]:t===1?[0,b(p,e),b(u,e)]:[t===2?-v:v,b(f,e),b(p,e)],{halfWidth:0,minHalf:y/2}),C(`caps`,2,(e,t)=>{let n=b(t===0?d:u,e);return[0,n,n]},{halfWidth:v/2,minHalf:y/2}),C(`edges`,2,(e,t)=>{let n=b(t===0?f:p,e);return[0,n,n]},{halfWidth:v,minHalf:y/2}),C(`median`,1,e=>[0,c[e],c[e]],{halfWidth:v,minHalf:Math.max(1,y*.8)})];if(m){let e=0;for(let t=0;t<l;t++)e+=m[t]?.length??0;if(e){let r=new ArrayBuffer(e*16),i=new Float32Array(r),o=new Uint32Array(r),c=0;for(let e=0;e<l;e++){let r=m[e];if(r)for(let a of r){let r=Number.isFinite(a)&&Number.isFinite(s[e]);i[c*4]=r?x(e):n.GAP,i[c*4+1]=r?S(a):n.GAP,i[c*4+2]=t.pointSize,o[c*4+3]=_(e),c++}}w.push({kind:`scatter`,key:`${t.key}:outliers`,version:a,color:t.color,instances:r,count:e,opacity:.85,stroke:e<=5e3?1.25:0})}}return w};exports.buildItems=s;
1
+ const e=require("./color.cjs"),t=require("./curve.cjs"),n=require("./layout.cjs"),r=require("./renderers/types.cjs");var i=(e,t)=>Number.isFinite(e)?e-t:r.GAP,a={heatmap:0,area:1,bar:2,boxplot:2,candlestick:3,line:4,scatter:5},o=e=>{let{x:n,count:r}=e.cols,i=e.stackTop??e.cols.y,a=e.stackBase;if(e.curve===`linear`)return{n:r,xAt:e=>n[e],yAt:e=>i[e],baseAt:a?e=>a[e]:null};let o=t.curvePoints(n,i,0,r,e.curve),s=a?t.curvePoints(n,a,0,r,e.curve).points:null,c=o.points;return{n:o.length,xAt:e=>c[e*2],yAt:e=>c[e*2+1],baseAt:s?e=>s[e*2+1]:null}},s=(e,t,n,r,i,a)=>{let o=new ArrayBuffer(r*16),s=new Float32Array(o),c=new Uint32Array(o);for(let e=0;e<r;e++)i(e,s,c);return{kind:`bar`,key:e,version:t,color:n.color,instances:o,count:r,...a}},c=(e,t)=>{if(!t)return{inset:.5,radius:Math.min(e.radius,2)};let r=n.heatCellStyle(e.cellHalf.x*2*t.x,e.cellHalf.y*2*t.y,e.radius);return{inset:Math.max(.5,r.inset),radius:r.radius}},l=(e,t)=>{let n=``;for(let r of e.series){if(r.type!==`heatmap`||r.hidden)continue;let e=c(r,t);n+=`${e.inset}/${e.radius};`}return n},u=(t,n,l,u)=>{let p=[],m=[],h=t.series.filter(e=>!e.hidden).sort((e,t)=>a[e.type]-a[t.type]||e.index-t.index);for(let a of h){let{x:h,y:g,count:_,sorted:v}=a.cols;switch((a.type===`line`||a.type===`scatter`)&&m.length&&p.push(...m.splice(0)),a.type){case`line`:case`area`:{let{n:e,xAt:s,yAt:c,baseAt:u}=o(a),d=new Float32Array(e*2);if(a.curve===`linear`){let t=a.stackTop??g,i=n.x,o=n.y;for(let n=0;n<e;n++){let e=h[n],a=t[n];d[n*2]=Number.isFinite(e)?e-i:r.GAP,d[n*2+1]=Number.isFinite(a)?a-o:r.GAP}}else for(let t=0;t<e;t++)d[t*2]=i(s(t),n.x),d[t*2+1]=i(c(t),n.y);if(a.type===`area`){let r=new Float32Array(e*3),o=t.baseline-n.y;for(let t=0;t<e;t++)r[t*3]=d[t*2],r[t*3+1]=d[t*2+1],r[t*3+2]=u?i(u(t),n.y):o;p.push({kind:`area`,key:`${a.key}:area`,version:l,color:a.color,points:r,count:e,opacity:a.opacity,sorted:v})}if(a.lineWidth<=0)break;if((a.type===`area`?m:p).push({kind:`line`,key:`${a.key}:line`,version:l,color:a.color,points:d,count:e,width:a.lineWidth,sorted:v}),a.type===`area`&&a.cols.y0&&u){let t=new Float32Array(e*2);for(let r=0;r<e;r++)t[r*2]=d[r*2],t[r*2+1]=i(u(r),n.y);m.push({kind:`line`,key:`${a.key}:lower`,version:l,color:a.color,points:t,count:e,width:a.lineWidth,sorted:v})}break}case`bar`:{let o=a.barBase??new Float64Array(_),c=a.barTop??g,u=e=>a.opacity<1?[e[0],e[1],e[2],e[3]*a.opacity]:e,f=e.packColor(u(a.color)),m=!a.floating&&t.series.some(e=>e!==a&&!e.hidden&&e.type===`bar`&&!e.floating&&e.barOffset===a.barOffset),y=a.barHalfWidth>0&&d(t,a);p.push(s(`${a.key}:bar`,l,a,_,(t,s,l)=>{let d=Number.isFinite(c[t])&&Number.isFinite(o[t]);s[t*4]=i(h[t]+a.barOffset,n.x),s[t*4+1]=d?o[t]-n.y:r.GAP,s[t*4+2]=d?c[t]-n.y:r.GAP;let p=a.pointColors?.[t];l[t*4+3]=p?e.packColor(u(p)):f},{halfWidth:a.barHalfWidth,radius:m?0:a.radius,inset:y?.5:0,minHalf:0,sorted:v}));break}case`candlestick`:{let{open:t,high:o,low:c}=a.cols,u=e.packColor(a.upColor),d=e.packColor(a.downColor),f=e=>t&&Number.isFinite(t[e])&&g[e]<t[e]?d:u;p.push(s(`${a.key}:wick`,l,a,_,(e,t,a)=>{let s=o?o[e]:g[e],l=c?c[e]:g[e],u=Number.isFinite(s)&&Number.isFinite(l)&&Number.isFinite(g[e]);t[e*4]=i(h[e],n.x),t[e*4+1]=u?l-n.y:r.GAP,t[e*4+2]=u?s-n.y:r.GAP,a[e*4+3]=f(e)},{halfWidth:0,radius:0,inset:0,minHalf:a.lineWidth/2,sorted:v}),s(`${a.key}:body`,l,a,_,(e,a,o)=>{let s=t?t[e]:g[e],c=Number.isFinite(s)&&Number.isFinite(g[e]);a[e*4]=i(h[e],n.x),a[e*4+1]=c?s-n.y:r.GAP,a[e*4+2]=c?g[e]-n.y:r.GAP,o[e*4+3]=f(e)},{halfWidth:a.barHalfWidth,radius:Math.min(a.radius,1.5),inset:0,minHalf:.5,sorted:v}));break}case`boxplot`:p.push(...f(a,n,l));break;case`heatmap`:{let e=a.cellColors,t=a.cellHalf.y,o=c(a,u);p.push(s(`${a.key}:cells`,l,a,_,(a,o,s)=>{let c=e?e[a]:0,l=c!==0&&Number.isFinite(h[a]);o[a*4]=i(h[a],n.x),o[a*4+1]=l?g[a]-t-n.y:r.GAP,o[a*4+2]=l?g[a]+t-n.y:r.GAP,s[a*4+3]=c},{halfWidth:a.cellHalf.x,radius:o.radius,inset:o.inset,minHalf:0,sorted:v}));break}default:{let t=new ArrayBuffer(_*16),i=new Float32Array(t),o=new Uint32Array(t),s=e.packColor(a.color),c=a.cols.size;for(let t=0;t<_;t++){let l=Number.isFinite(g[t])&&Number.isFinite(h[t]);i[t*4]=l?h[t]-n.x:r.GAP,i[t*4+1]=l?g[t]-n.y:r.GAP;let u=c?c[t]:NaN;i[t*4+2]=Number.isFinite(u)&&u>0?u:a.pointSize;let d=a.pointColors?.[t];o[t*4+3]=d?e.packColor(d):s}p.push({kind:`scatter`,key:`${a.key}:scatter`,version:l,color:a.color,instances:t,count:_,opacity:a.opacity,stroke:_<=5e3?1.25:0});break}}}return p.push(...m),p},d=(e,t)=>{let n=1;if(e.x.type!==`category`){let{x:e,count:r}=t.cols;n=1/0;for(let t=1;t<Math.min(r,64);t++){let r=Math.abs(e[t]-e[t-1]);r>0&&r<n&&(n=r)}if(!Number.isFinite(n))return!1}return t.barHalfWidth*2>=n*.98},f=(t,n,a)=>{let{x:o,y:c,count:l,high:u,low:d,q1:f,q3:p,outliers:m}=t.cols,h=e.packColor(t.color),g=e.packColor([t.color[0],t.color[1],t.color[2],t.color[3]*t.opacity]),_=(n,r=!1)=>{let i=t.pointColors?.[n];return i?e.packColor(r?[i[0],i[1],i[2],i[3]*t.opacity]:i):r?g:h},v=t.barHalfWidth,y=Math.max(1,t.lineWidth),b=(e,t)=>e&&Number.isFinite(e[t])?e[t]:c[t],x=(e,r=0)=>i(o[e]+t.barOffset+r,n.x),S=e=>e-n.y,C=(e,n,i,s)=>{let u=new ArrayBuffer(l*n*16),d=new Float32Array(u),f=new Uint32Array(u);for(let e=0;e<l;e++){let t=Number.isFinite(c[e])&&Number.isFinite(o[e]);for(let a=0;a<n;a++){let o=(e*n+a)*4,[s,c,l]=t?i(e,a):[0,NaN,NaN];d[o]=t?x(e,s):r.GAP,d[o+1]=t?S(c):r.GAP,d[o+2]=t?S(l):r.GAP,f[o+3]=_(e)}}return{kind:`bar`,key:`${t.key}:${e}`,version:a,color:t.color,instances:u,count:l*n,radius:0,inset:0,sorted:!1,...s}},w=[s(`${t.key}:box`,a,t,l,(e,t,n)=>{let i=Number.isFinite(c[e])&&Number.isFinite(o[e]);t[e*4]=i?x(e):r.GAP,t[e*4+1]=i?S(b(f,e)):r.GAP,t[e*4+2]=i?S(b(p,e)):r.GAP,n[e*4+3]=_(e,!0)},{halfWidth:v,radius:0,inset:0,minHalf:0,sorted:!1}),C(`stems`,4,(e,t)=>t===0?[0,b(d,e),b(f,e)]:t===1?[0,b(p,e),b(u,e)]:[t===2?-v:v,b(f,e),b(p,e)],{halfWidth:0,minHalf:y/2}),C(`caps`,2,(e,t)=>{let n=b(t===0?d:u,e);return[0,n,n]},{halfWidth:v/2,minHalf:y/2}),C(`edges`,2,(e,t)=>{let n=b(t===0?f:p,e);return[0,n,n]},{halfWidth:v,minHalf:y/2}),C(`median`,1,e=>[0,c[e],c[e]],{halfWidth:v,minHalf:Math.max(1,y*.8)})];if(m){let e=0;for(let t=0;t<l;t++)e+=m[t]?.length??0;if(e){let n=new ArrayBuffer(e*16),i=new Float32Array(n),s=new Uint32Array(n),c=0;for(let e=0;e<l;e++){let n=m[e];if(n)for(let a of n){let n=Number.isFinite(a)&&Number.isFinite(o[e]);i[c*4]=n?x(e):r.GAP,i[c*4+1]=n?S(a):r.GAP,i[c*4+2]=t.outlierSize,s[c*4+3]=_(e),c++}}w.push({kind:`scatter`,key:`${t.key}:outliers`,version:a,color:t.color,instances:n,count:e,opacity:t.outlierShape===`hollow`?0:.85,stroke:t.outlierShape===`hollow`||e<=5e3?1.25:0})}}return w};exports.buildItems=u,exports.cellStyleKey=l;
2
2
  //# sourceMappingURL=items.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"items.cjs","names":["GAP","curvePoints","packColor","require_color","require_curve","require_types","rel","value","origin","DRAW_ORDER","linePoints","s","top","stackBase","count","x","i","curved","base","points","barItem","instances","f","u","write","extra","buildItems","items","outlines","ordered","model","a","b","pts","n","y","ox","oy","xv","yv","xAt","yAt","area","baseline","baseAt","lower","fade","c","seriesColor","shared","o","touching","isTouching","version","valid","pc","up","down","colorAt","open","hi","high","lo","low","boxItems","colors","hy","buffer","sizes","size","band","d","color","fill","alpha","half","lw","at","column","dx","v","multi","parts","k","j","key","q1","q3","outliers","list"],"sources":["../../../../charts/src/engine/items.ts"],"sourcesContent":["// Chart model -> GPU-ready buffers (positions relative to an origin).\n\nimport { packColor, type Rgba } from \"./color\";\nimport { curvePoints } from \"./curve\";\nimport type { ChartModel, SeriesModel } from \"./model\";\nimport {\n AREA_STRIDE,\n BAR_STRIDE,\n GAP,\n SCATTER_STRIDE,\n type BarItem,\n type RenderItem,\n} from \"./renderers/types\";\n\nexport interface Origin {\n x: number;\n y: number;\n}\n\nconst rel = (value: number, origin: number) =>\n Number.isFinite(value) ? value - origin : GAP;\n\nconst DRAW_ORDER = {\n heatmap: 0,\n area: 1,\n bar: 2,\n boxplot: 2,\n candlestick: 3,\n line: 4,\n scatter: 5,\n} as const;\n\n/** Line (and area) points of a series: stacked, curved; interleaved x, y */\nconst linePoints = (s: SeriesModel) => {\n const { x, count } = s.cols;\n const top = s.stackTop ?? s.cols.y;\n const stackBase = s.stackBase;\n if (s.curve === \"linear\") {\n // no copy: the hot path of large series\n return {\n n: count,\n xAt: (i: number) => x[i],\n yAt: (i: number) => top[i],\n baseAt: stackBase ? (i: number) => stackBase[i] : null,\n };\n }\n const curved = curvePoints(x, top, 0, count, s.curve);\n const base = stackBase\n ? curvePoints(x, stackBase, 0, count, s.curve).points\n : null;\n const points = curved.points;\n return {\n // the buffers are allocated for the worst case: only `length` are written\n n: curved.length,\n xAt: (i: number) => points[i * 2],\n yAt: (i: number) => points[i * 2 + 1],\n baseAt: base ? (i: number) => base[i * 2 + 1] : null,\n };\n};\n\nconst barItem = (\n key: string,\n version: number,\n s: SeriesModel,\n count: number,\n write: (i: number, f: Float32Array, u: Uint32Array) => void,\n extra: Pick<BarItem, \"halfWidth\" | \"radius\" | \"inset\" | \"minHalf\" | \"sorted\">,\n): BarItem => {\n const instances = new ArrayBuffer(count * BAR_STRIDE);\n const f = new Float32Array(instances);\n const u = new Uint32Array(instances);\n for (let i = 0; i < count; i++) write(i, f, u);\n return {\n kind: \"bar\",\n key,\n version,\n color: s.color,\n instances,\n count,\n ...extra,\n };\n};\n\n/** Render items of the visible series, back to front */\nexport const buildItems = (\n model: ChartModel,\n origin: Origin,\n version: number,\n): RenderItem[] => {\n const items: RenderItem[] = [];\n /** Outlines of the areas are drawn with the lines, above the bars */\n const outlines: RenderItem[] = [];\n const ordered = model.series\n .filter((s) => !s.hidden)\n .sort(\n (a, b) => DRAW_ORDER[a.type] - DRAW_ORDER[b.type] || a.index - b.index,\n );\n for (const s of ordered) {\n const { x, y, count, sorted } = s.cols;\n if ((s.type === \"line\" || s.type === \"scatter\") && outlines.length) {\n items.push(...outlines.splice(0));\n }\n switch (s.type) {\n case \"line\":\n case \"area\": {\n const { n, xAt, yAt, baseAt } = linePoints(s);\n const pts = new Float32Array(n * 2);\n if (s.curve === \"linear\") {\n // direct loop: the hot path of very large series\n const top = s.stackTop ?? y;\n const ox = origin.x;\n const oy = origin.y;\n for (let i = 0; i < n; i++) {\n const xv = x[i];\n const yv = top[i];\n pts[i * 2] = Number.isFinite(xv) ? xv - ox : GAP;\n pts[i * 2 + 1] = Number.isFinite(yv) ? yv - oy : GAP;\n }\n } else {\n for (let i = 0; i < n; i++) {\n // x stays real at gaps so sorted data can be binary searched\n pts[i * 2] = rel(xAt(i), origin.x);\n pts[i * 2 + 1] = rel(yAt(i), origin.y);\n }\n }\n if (s.type === \"area\") {\n const area = new Float32Array(n * AREA_STRIDE);\n const baseline = model.baseline - origin.y;\n for (let i = 0; i < n; i++) {\n area[i * 3] = pts[i * 2];\n area[i * 3 + 1] = pts[i * 2 + 1];\n area[i * 3 + 2] = baseAt ? rel(baseAt(i), origin.y) : baseline;\n }\n items.push({\n kind: \"area\",\n key: `${s.key}:area`,\n version,\n color: s.color,\n points: area,\n count: n,\n opacity: s.opacity,\n sorted,\n });\n }\n if (s.lineWidth <= 0) break;\n (s.type === \"area\" ? outlines : items).push({\n kind: \"line\",\n key: `${s.key}:line`,\n version,\n color: s.color,\n points: pts,\n count: n,\n width: s.lineWidth,\n sorted,\n });\n if (s.type === \"area\" && s.cols.y0 && baseAt) {\n // range areas: the lower edge is drawn too\n const lower = new Float32Array(n * 2);\n for (let i = 0; i < n; i++) {\n lower[i * 2] = pts[i * 2];\n lower[i * 2 + 1] = rel(baseAt(i), origin.y);\n }\n outlines.push({\n kind: \"line\",\n key: `${s.key}:lower`,\n version,\n color: s.color,\n points: lower,\n count: n,\n width: s.lineWidth,\n sorted,\n });\n }\n break;\n }\n case \"bar\": {\n const base = s.barBase ?? new Float64Array(count);\n const top = s.barTop ?? y;\n const fade = (c: Rgba): Rgba =>\n s.opacity < 1 ? [c[0], c[1], c[2], c[3] * s.opacity] : c;\n const seriesColor = packColor(fade(s.color));\n // floating bars (ranges, Gantt progress) keep their corners\n const shared =\n !s.floating &&\n model.series.some(\n (o) =>\n o !== s &&\n !o.hidden &&\n o.type === \"bar\" &&\n !o.floating &&\n o.barOffset === s.barOffset,\n );\n const touching = s.barHalfWidth > 0 && isTouching(model, s);\n items.push(\n barItem(\n `${s.key}:bar`,\n version,\n s,\n count,\n (i, f, u) => {\n const valid = Number.isFinite(top[i]) && Number.isFinite(base[i]);\n f[i * 4] = rel(x[i] + s.barOffset, origin.x);\n f[i * 4 + 1] = valid ? base[i] - origin.y : GAP;\n f[i * 4 + 2] = valid ? top[i] - origin.y : GAP;\n const pc = s.pointColors?.[i];\n u[i * 4 + 3] = pc ? packColor(fade(pc)) : seriesColor;\n },\n {\n halfWidth: s.barHalfWidth,\n // stacked segments stay square so the stack reads as one bar\n radius: shared ? 0 : s.radius,\n // bars filling their category (histograms): a hairline apart\n inset: touching ? 0.5 : 0,\n minHalf: 0,\n sorted,\n },\n ),\n );\n break;\n }\n case \"candlestick\": {\n const { open, high, low } = s.cols;\n const up = packColor(s.upColor);\n const down = packColor(s.downColor);\n const colorAt = (i: number) =>\n open && Number.isFinite(open[i]) && y[i] < open[i] ? down : up;\n // wicks first, the bodies cover them\n items.push(\n barItem(\n `${s.key}:wick`,\n version,\n s,\n count,\n (i, f, u) => {\n const hi = high ? high[i] : y[i];\n const lo = low ? low[i] : y[i];\n const valid =\n Number.isFinite(hi) &&\n Number.isFinite(lo) &&\n Number.isFinite(y[i]);\n f[i * 4] = rel(x[i], origin.x);\n f[i * 4 + 1] = valid ? lo - origin.y : GAP;\n f[i * 4 + 2] = valid ? hi - origin.y : GAP;\n u[i * 4 + 3] = colorAt(i);\n },\n {\n halfWidth: 0,\n radius: 0,\n inset: 0,\n minHalf: s.lineWidth / 2,\n sorted,\n },\n ),\n barItem(\n `${s.key}:body`,\n version,\n s,\n count,\n (i, f, u) => {\n const o = open ? open[i] : y[i];\n const valid = Number.isFinite(o) && Number.isFinite(y[i]);\n f[i * 4] = rel(x[i], origin.x);\n f[i * 4 + 1] = valid ? o - origin.y : GAP;\n f[i * 4 + 2] = valid ? y[i] - origin.y : GAP;\n u[i * 4 + 3] = colorAt(i);\n },\n {\n halfWidth: s.barHalfWidth,\n radius: Math.min(s.radius, 1.5),\n inset: 0,\n minHalf: 0.5,\n sorted,\n },\n ),\n );\n break;\n }\n case \"boxplot\":\n items.push(...boxItems(s, origin, version));\n break;\n case \"heatmap\": {\n const colors = s.cellColors;\n const hy = s.cellHalf.y;\n items.push(\n barItem(\n `${s.key}:cells`,\n version,\n s,\n count,\n (i, f, u) => {\n const c = colors ? colors[i] : 0;\n const valid = c !== 0 && Number.isFinite(x[i]);\n f[i * 4] = rel(x[i], origin.x);\n f[i * 4 + 1] = valid ? y[i] - hy - origin.y : GAP;\n f[i * 4 + 2] = valid ? y[i] + hy - origin.y : GAP;\n u[i * 4 + 3] = c;\n },\n {\n halfWidth: s.cellHalf.x,\n radius: s.radius,\n inset: 1,\n minHalf: 0,\n sorted,\n },\n ),\n );\n break;\n }\n default: {\n const buffer = new ArrayBuffer(count * SCATTER_STRIDE);\n const f = new Float32Array(buffer);\n const u = new Uint32Array(buffer);\n const seriesColor = packColor(s.color);\n const sizes = s.cols.size;\n for (let i = 0; i < count; i++) {\n const valid = Number.isFinite(y[i]) && Number.isFinite(x[i]);\n f[i * 4] = valid ? x[i] - origin.x : GAP;\n f[i * 4 + 1] = valid ? y[i] - origin.y : GAP;\n const size = sizes ? sizes[i] : NaN;\n f[i * 4 + 2] = Number.isFinite(size) && size > 0 ? size : s.pointSize;\n const pc = s.pointColors?.[i];\n u[i * 4 + 3] = pc ? packColor(pc) : seriesColor;\n }\n items.push({\n kind: \"scatter\",\n key: `${s.key}:scatter`,\n version,\n color: s.color,\n instances: buffer,\n count,\n opacity: s.opacity,\n stroke: count <= 5000 ? 1.25 : 0,\n });\n break;\n }\n }\n }\n items.push(...outlines);\n return items;\n};\n\n/** Bars of a series fill their whole category (`barWidth: 1`, histograms) */\nconst isTouching = (model: ChartModel, s: SeriesModel) => {\n let band = 1;\n if (model.x.type !== \"category\") {\n const { x, count } = s.cols;\n band = Infinity;\n for (let i = 1; i < Math.min(count, 64); i++) {\n const d = Math.abs(x[i] - x[i - 1]);\n if (d > 0 && d < band) band = d;\n }\n if (!Number.isFinite(band)) return false;\n }\n return s.barHalfWidth * 2 >= band * 0.98;\n};\n\n/**\n * Box plot: a translucent box, whiskers and box sides (zero-width bars of\n * the line width), caps, box edges and the median (zero-height bars), and\n * the outliers as dots\n */\nconst boxItems = (\n s: SeriesModel,\n origin: Origin,\n version: number,\n): RenderItem[] => {\n const { x, y, count, high, low, q1, q3, outliers } = s.cols;\n const color = packColor(s.color);\n const fill = packColor([\n s.color[0],\n s.color[1],\n s.color[2],\n s.color[3] * s.opacity,\n ]);\n const colorAt = (i: number, alpha = false) => {\n const pc = s.pointColors?.[i];\n if (!pc) return alpha ? fill : color;\n return packColor(alpha ? [pc[0], pc[1], pc[2], pc[3] * s.opacity] : pc);\n };\n const half = s.barHalfWidth;\n const lw = Math.max(1, s.lineWidth);\n const at = (column: Float64Array | null, i: number) =>\n column && Number.isFinite(column[i]) ? column[i] : y[i];\n const ox = (i: number, dx = 0) => rel(x[i] + s.barOffset + dx, origin.x);\n const oy = (v: number) => v - origin.y;\n /** Several bars per point: `parts` gives their (x shift, from, to) */\n const multi = (\n key: string,\n parts: number,\n write: (i: number, k: number) => [number, number, number],\n extra: Pick<BarItem, \"halfWidth\" | \"minHalf\">,\n ): BarItem => {\n const buffer = new ArrayBuffer(count * parts * BAR_STRIDE);\n const f = new Float32Array(buffer);\n const u = new Uint32Array(buffer);\n for (let i = 0; i < count; i++) {\n const valid = Number.isFinite(y[i]) && Number.isFinite(x[i]);\n for (let k = 0; k < parts; k++) {\n const j = (i * parts + k) * 4;\n const [dx, a, b] = valid ? write(i, k) : [0, NaN, NaN];\n f[j] = valid ? ox(i, dx) : GAP;\n f[j + 1] = valid ? oy(a) : GAP;\n f[j + 2] = valid ? oy(b) : GAP;\n u[j + 3] = colorAt(i);\n }\n }\n return {\n kind: \"bar\",\n key: `${s.key}:${key}`,\n version,\n color: s.color,\n instances: buffer,\n count: count * parts,\n radius: 0,\n inset: 0,\n sorted: false,\n ...extra,\n };\n };\n const box = barItem(\n `${s.key}:box`,\n version,\n s,\n count,\n (i, f, u) => {\n const valid = Number.isFinite(y[i]) && Number.isFinite(x[i]);\n f[i * 4] = valid ? ox(i) : GAP;\n f[i * 4 + 1] = valid ? oy(at(q1, i)) : GAP;\n f[i * 4 + 2] = valid ? oy(at(q3, i)) : GAP;\n u[i * 4 + 3] = colorAt(i, true);\n },\n { halfWidth: half, radius: 0, inset: 0, minHalf: 0, sorted: false },\n );\n // whiskers and sides of the box\n const stems = multi(\n \"stems\",\n 4,\n (i, k) =>\n k === 0\n ? [0, at(low, i), at(q1, i)]\n : k === 1\n ? [0, at(q3, i), at(high, i)]\n : [k === 2 ? -half : half, at(q1, i), at(q3, i)],\n { halfWidth: 0, minHalf: lw / 2 },\n );\n const caps = multi(\n \"caps\",\n 2,\n (i, k) => {\n const v = at(k === 0 ? low : high, i);\n return [0, v, v];\n },\n { halfWidth: half / 2, minHalf: lw / 2 },\n );\n const edges = multi(\n \"edges\",\n 2,\n (i, k) => {\n const v = at(k === 0 ? q1 : q3, i);\n return [0, v, v];\n },\n { halfWidth: half, minHalf: lw / 2 },\n );\n const median = multi(\"median\", 1, (i) => [0, y[i], y[i]], {\n halfWidth: half,\n minHalf: Math.max(1, lw * 0.8),\n });\n const items: RenderItem[] = [box, stems, caps, edges, median];\n if (outliers) {\n let n = 0;\n for (let i = 0; i < count; i++) n += outliers[i]?.length ?? 0;\n if (n) {\n const buffer = new ArrayBuffer(n * SCATTER_STRIDE);\n const f = new Float32Array(buffer);\n const u = new Uint32Array(buffer);\n let j = 0;\n for (let i = 0; i < count; i++) {\n const list = outliers[i];\n if (!list) continue;\n for (const v of list) {\n const valid = Number.isFinite(v) && Number.isFinite(x[i]);\n f[j * 4] = valid ? ox(i) : GAP;\n f[j * 4 + 1] = valid ? oy(v) : GAP;\n f[j * 4 + 2] = s.pointSize;\n u[j * 4 + 3] = colorAt(i);\n j++;\n }\n }\n items.push({\n kind: \"scatter\",\n key: `${s.key}:outliers`,\n version,\n color: s.color,\n instances: buffer,\n count: n,\n opacity: 0.85,\n stroke: n <= 5000 ? 1.25 : 0,\n });\n }\n }\n return items;\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"items.cjs","names":["GAP","curvePoints","heatCellStyle","packColor","require_color","require_curve","require_layout","require_types","rel","value","origin","DRAW_ORDER","linePoints","s","top","stackBase","count","x","i","curved","base","points","barItem","instances","f","u","write","extra","cellStyleOf","density","style","cellStyleKey","key","model","buildItems","items","outlines","ordered","a","b","pts","n","y","ox","oy","xv","yv","xAt","yAt","area","baseline","baseAt","lower","fade","c","seriesColor","shared","o","touching","isTouching","version","valid","pc","up","down","colorAt","open","hi","high","lo","low","boxItems","colors","hy","buffer","sizes","size","band","d","color","fill","alpha","half","lw","at","column","dx","v","multi","parts","k","j","q1","q3","outliers","list"],"sources":["../../../../charts/src/engine/items.ts"],"sourcesContent":["// Chart model -> GPU-ready buffers (positions relative to an origin).\n\nimport { packColor, type Rgba } from \"./color\";\nimport { curvePoints } from \"./curve\";\nimport { heatCellStyle } from \"./layout\";\nimport type { ChartModel, SeriesModel } from \"./model\";\nimport {\n AREA_STRIDE,\n BAR_STRIDE,\n GAP,\n SCATTER_STRIDE,\n type BarItem,\n type RenderItem,\n} from \"./renderers/types\";\n\nexport interface Origin {\n x: number;\n y: number;\n}\n\nconst rel = (value: number, origin: number) =>\n Number.isFinite(value) ? value - origin : GAP;\n\nconst DRAW_ORDER = {\n heatmap: 0,\n area: 1,\n bar: 2,\n boxplot: 2,\n candlestick: 3,\n line: 4,\n scatter: 5,\n} as const;\n\n/** Line (and area) points of a series: stacked, curved; interleaved x, y */\nconst linePoints = (s: SeriesModel) => {\n const { x, count } = s.cols;\n const top = s.stackTop ?? s.cols.y;\n const stackBase = s.stackBase;\n if (s.curve === \"linear\") {\n // no copy: the hot path of large series\n return {\n n: count,\n xAt: (i: number) => x[i],\n yAt: (i: number) => top[i],\n baseAt: stackBase ? (i: number) => stackBase[i] : null,\n };\n }\n const curved = curvePoints(x, top, 0, count, s.curve);\n const base = stackBase\n ? curvePoints(x, stackBase, 0, count, s.curve).points\n : null;\n const points = curved.points;\n return {\n // the buffers are allocated for the worst case: only `length` are written\n n: curved.length,\n xAt: (i: number) => points[i * 2],\n yAt: (i: number) => points[i * 2 + 1],\n baseAt: base ? (i: number) => base[i * 2 + 1] : null,\n };\n};\n\nconst barItem = (\n key: string,\n version: number,\n s: SeriesModel,\n count: number,\n write: (i: number, f: Float32Array, u: Uint32Array) => void,\n extra: Pick<BarItem, \"halfWidth\" | \"radius\" | \"inset\" | \"minHalf\" | \"sorted\">,\n): BarItem => {\n const instances = new ArrayBuffer(count * BAR_STRIDE);\n const f = new Float32Array(instances);\n const u = new Uint32Array(instances);\n for (let i = 0; i < count; i++) write(i, f, u);\n return {\n kind: \"bar\",\n key,\n version,\n color: s.color,\n instances,\n count,\n ...extra,\n };\n};\n\n/** CSS pixels per data unit along each axis (sizes the heatmap cells) */\nexport interface PixelDensity {\n x: number;\n y: number;\n}\n\n/**\n * Inset and radius of the cells of a heatmap at a pixel density; the\n * renderers fade small insets out and overlap tiny cells (no seams)\n */\nconst cellStyleOf = (s: SeriesModel, density?: PixelDensity) => {\n if (!density) return { inset: 0.5, radius: Math.min(s.radius, 2) };\n const style = heatCellStyle(\n s.cellHalf.x * 2 * density.x,\n s.cellHalf.y * 2 * density.y,\n s.radius,\n );\n return { inset: Math.max(0.5, style.inset), radius: style.radius };\n};\n\n/**\n * What the heatmap items depend on besides the model: their cell style at\n * the current pixel density (`\"\"` without heatmaps)\n */\nexport const cellStyleKey = (\n model: ChartModel,\n density?: PixelDensity,\n): string => {\n let key = \"\";\n for (const s of model.series) {\n if (s.type !== \"heatmap\" || s.hidden) continue;\n const style = cellStyleOf(s, density);\n key += `${style.inset}/${style.radius};`;\n }\n return key;\n};\n\n/**\n * Render items of the visible series, back to front; `density` sizes the\n * gaps and corners of heatmap cells\n */\nexport const buildItems = (\n model: ChartModel,\n origin: Origin,\n version: number,\n density?: PixelDensity,\n): RenderItem[] => {\n const items: RenderItem[] = [];\n /** Outlines of the areas are drawn with the lines, above the bars */\n const outlines: RenderItem[] = [];\n const ordered = model.series\n .filter((s) => !s.hidden)\n .sort(\n (a, b) => DRAW_ORDER[a.type] - DRAW_ORDER[b.type] || a.index - b.index,\n );\n for (const s of ordered) {\n const { x, y, count, sorted } = s.cols;\n if ((s.type === \"line\" || s.type === \"scatter\") && outlines.length) {\n items.push(...outlines.splice(0));\n }\n switch (s.type) {\n case \"line\":\n case \"area\": {\n const { n, xAt, yAt, baseAt } = linePoints(s);\n const pts = new Float32Array(n * 2);\n if (s.curve === \"linear\") {\n // direct loop: the hot path of very large series\n const top = s.stackTop ?? y;\n const ox = origin.x;\n const oy = origin.y;\n for (let i = 0; i < n; i++) {\n const xv = x[i];\n const yv = top[i];\n pts[i * 2] = Number.isFinite(xv) ? xv - ox : GAP;\n pts[i * 2 + 1] = Number.isFinite(yv) ? yv - oy : GAP;\n }\n } else {\n for (let i = 0; i < n; i++) {\n // x stays real at gaps so sorted data can be binary searched\n pts[i * 2] = rel(xAt(i), origin.x);\n pts[i * 2 + 1] = rel(yAt(i), origin.y);\n }\n }\n if (s.type === \"area\") {\n const area = new Float32Array(n * AREA_STRIDE);\n const baseline = model.baseline - origin.y;\n for (let i = 0; i < n; i++) {\n area[i * 3] = pts[i * 2];\n area[i * 3 + 1] = pts[i * 2 + 1];\n area[i * 3 + 2] = baseAt ? rel(baseAt(i), origin.y) : baseline;\n }\n items.push({\n kind: \"area\",\n key: `${s.key}:area`,\n version,\n color: s.color,\n points: area,\n count: n,\n opacity: s.opacity,\n sorted,\n });\n }\n if (s.lineWidth <= 0) break;\n (s.type === \"area\" ? outlines : items).push({\n kind: \"line\",\n key: `${s.key}:line`,\n version,\n color: s.color,\n points: pts,\n count: n,\n width: s.lineWidth,\n sorted,\n });\n if (s.type === \"area\" && s.cols.y0 && baseAt) {\n // range areas: the lower edge is drawn too\n const lower = new Float32Array(n * 2);\n for (let i = 0; i < n; i++) {\n lower[i * 2] = pts[i * 2];\n lower[i * 2 + 1] = rel(baseAt(i), origin.y);\n }\n outlines.push({\n kind: \"line\",\n key: `${s.key}:lower`,\n version,\n color: s.color,\n points: lower,\n count: n,\n width: s.lineWidth,\n sorted,\n });\n }\n break;\n }\n case \"bar\": {\n const base = s.barBase ?? new Float64Array(count);\n const top = s.barTop ?? y;\n const fade = (c: Rgba): Rgba =>\n s.opacity < 1 ? [c[0], c[1], c[2], c[3] * s.opacity] : c;\n const seriesColor = packColor(fade(s.color));\n // floating bars (ranges, Gantt progress) keep their corners\n const shared =\n !s.floating &&\n model.series.some(\n (o) =>\n o !== s &&\n !o.hidden &&\n o.type === \"bar\" &&\n !o.floating &&\n o.barOffset === s.barOffset,\n );\n const touching = s.barHalfWidth > 0 && isTouching(model, s);\n items.push(\n barItem(\n `${s.key}:bar`,\n version,\n s,\n count,\n (i, f, u) => {\n const valid = Number.isFinite(top[i]) && Number.isFinite(base[i]);\n f[i * 4] = rel(x[i] + s.barOffset, origin.x);\n f[i * 4 + 1] = valid ? base[i] - origin.y : GAP;\n f[i * 4 + 2] = valid ? top[i] - origin.y : GAP;\n const pc = s.pointColors?.[i];\n u[i * 4 + 3] = pc ? packColor(fade(pc)) : seriesColor;\n },\n {\n halfWidth: s.barHalfWidth,\n // stacked segments stay square so the stack reads as one bar\n radius: shared ? 0 : s.radius,\n // bars filling their category (histograms): a hairline apart\n inset: touching ? 0.5 : 0,\n minHalf: 0,\n sorted,\n },\n ),\n );\n break;\n }\n case \"candlestick\": {\n const { open, high, low } = s.cols;\n const up = packColor(s.upColor);\n const down = packColor(s.downColor);\n const colorAt = (i: number) =>\n open && Number.isFinite(open[i]) && y[i] < open[i] ? down : up;\n // wicks first, the bodies cover them\n items.push(\n barItem(\n `${s.key}:wick`,\n version,\n s,\n count,\n (i, f, u) => {\n const hi = high ? high[i] : y[i];\n const lo = low ? low[i] : y[i];\n const valid =\n Number.isFinite(hi) &&\n Number.isFinite(lo) &&\n Number.isFinite(y[i]);\n f[i * 4] = rel(x[i], origin.x);\n f[i * 4 + 1] = valid ? lo - origin.y : GAP;\n f[i * 4 + 2] = valid ? hi - origin.y : GAP;\n u[i * 4 + 3] = colorAt(i);\n },\n {\n halfWidth: 0,\n radius: 0,\n inset: 0,\n minHalf: s.lineWidth / 2,\n sorted,\n },\n ),\n barItem(\n `${s.key}:body`,\n version,\n s,\n count,\n (i, f, u) => {\n const o = open ? open[i] : y[i];\n const valid = Number.isFinite(o) && Number.isFinite(y[i]);\n f[i * 4] = rel(x[i], origin.x);\n f[i * 4 + 1] = valid ? o - origin.y : GAP;\n f[i * 4 + 2] = valid ? y[i] - origin.y : GAP;\n u[i * 4 + 3] = colorAt(i);\n },\n {\n halfWidth: s.barHalfWidth,\n radius: Math.min(s.radius, 1.5),\n inset: 0,\n minHalf: 0.5,\n sorted,\n },\n ),\n );\n break;\n }\n case \"boxplot\":\n items.push(...boxItems(s, origin, version));\n break;\n case \"heatmap\": {\n const colors = s.cellColors;\n const hy = s.cellHalf.y;\n const style = cellStyleOf(s, density);\n items.push(\n barItem(\n `${s.key}:cells`,\n version,\n s,\n count,\n (i, f, u) => {\n const c = colors ? colors[i] : 0;\n const valid = c !== 0 && Number.isFinite(x[i]);\n f[i * 4] = rel(x[i], origin.x);\n f[i * 4 + 1] = valid ? y[i] - hy - origin.y : GAP;\n f[i * 4 + 2] = valid ? y[i] + hy - origin.y : GAP;\n u[i * 4 + 3] = c;\n },\n {\n halfWidth: s.cellHalf.x,\n radius: style.radius,\n inset: style.inset,\n minHalf: 0,\n sorted,\n },\n ),\n );\n break;\n }\n default: {\n const buffer = new ArrayBuffer(count * SCATTER_STRIDE);\n const f = new Float32Array(buffer);\n const u = new Uint32Array(buffer);\n const seriesColor = packColor(s.color);\n const sizes = s.cols.size;\n for (let i = 0; i < count; i++) {\n const valid = Number.isFinite(y[i]) && Number.isFinite(x[i]);\n f[i * 4] = valid ? x[i] - origin.x : GAP;\n f[i * 4 + 1] = valid ? y[i] - origin.y : GAP;\n const size = sizes ? sizes[i] : NaN;\n f[i * 4 + 2] = Number.isFinite(size) && size > 0 ? size : s.pointSize;\n const pc = s.pointColors?.[i];\n u[i * 4 + 3] = pc ? packColor(pc) : seriesColor;\n }\n items.push({\n kind: \"scatter\",\n key: `${s.key}:scatter`,\n version,\n color: s.color,\n instances: buffer,\n count,\n opacity: s.opacity,\n stroke: count <= 5000 ? 1.25 : 0,\n });\n break;\n }\n }\n }\n items.push(...outlines);\n return items;\n};\n\n/** Bars of a series fill their whole category (`barWidth: 1`, histograms) */\nconst isTouching = (model: ChartModel, s: SeriesModel) => {\n let band = 1;\n if (model.x.type !== \"category\") {\n const { x, count } = s.cols;\n band = Infinity;\n for (let i = 1; i < Math.min(count, 64); i++) {\n const d = Math.abs(x[i] - x[i - 1]);\n if (d > 0 && d < band) band = d;\n }\n if (!Number.isFinite(band)) return false;\n }\n return s.barHalfWidth * 2 >= band * 0.98;\n};\n\n/**\n * Box plot: a translucent box, whiskers and box sides (zero-width bars of\n * the line width), caps, box edges and the median (zero-height bars), and\n * the outliers as dots\n */\nconst boxItems = (\n s: SeriesModel,\n origin: Origin,\n version: number,\n): RenderItem[] => {\n const { x, y, count, high, low, q1, q3, outliers } = s.cols;\n const color = packColor(s.color);\n const fill = packColor([\n s.color[0],\n s.color[1],\n s.color[2],\n s.color[3] * s.opacity,\n ]);\n const colorAt = (i: number, alpha = false) => {\n const pc = s.pointColors?.[i];\n if (!pc) return alpha ? fill : color;\n return packColor(alpha ? [pc[0], pc[1], pc[2], pc[3] * s.opacity] : pc);\n };\n const half = s.barHalfWidth;\n const lw = Math.max(1, s.lineWidth);\n const at = (column: Float64Array | null, i: number) =>\n column && Number.isFinite(column[i]) ? column[i] : y[i];\n const ox = (i: number, dx = 0) => rel(x[i] + s.barOffset + dx, origin.x);\n const oy = (v: number) => v - origin.y;\n /** Several bars per point: `parts` gives their (x shift, from, to) */\n const multi = (\n key: string,\n parts: number,\n write: (i: number, k: number) => [number, number, number],\n extra: Pick<BarItem, \"halfWidth\" | \"minHalf\">,\n ): BarItem => {\n const buffer = new ArrayBuffer(count * parts * BAR_STRIDE);\n const f = new Float32Array(buffer);\n const u = new Uint32Array(buffer);\n for (let i = 0; i < count; i++) {\n const valid = Number.isFinite(y[i]) && Number.isFinite(x[i]);\n for (let k = 0; k < parts; k++) {\n const j = (i * parts + k) * 4;\n const [dx, a, b] = valid ? write(i, k) : [0, NaN, NaN];\n f[j] = valid ? ox(i, dx) : GAP;\n f[j + 1] = valid ? oy(a) : GAP;\n f[j + 2] = valid ? oy(b) : GAP;\n u[j + 3] = colorAt(i);\n }\n }\n return {\n kind: \"bar\",\n key: `${s.key}:${key}`,\n version,\n color: s.color,\n instances: buffer,\n count: count * parts,\n radius: 0,\n inset: 0,\n sorted: false,\n ...extra,\n };\n };\n const box = barItem(\n `${s.key}:box`,\n version,\n s,\n count,\n (i, f, u) => {\n const valid = Number.isFinite(y[i]) && Number.isFinite(x[i]);\n f[i * 4] = valid ? ox(i) : GAP;\n f[i * 4 + 1] = valid ? oy(at(q1, i)) : GAP;\n f[i * 4 + 2] = valid ? oy(at(q3, i)) : GAP;\n u[i * 4 + 3] = colorAt(i, true);\n },\n { halfWidth: half, radius: 0, inset: 0, minHalf: 0, sorted: false },\n );\n // whiskers and sides of the box\n const stems = multi(\n \"stems\",\n 4,\n (i, k) =>\n k === 0\n ? [0, at(low, i), at(q1, i)]\n : k === 1\n ? [0, at(q3, i), at(high, i)]\n : [k === 2 ? -half : half, at(q1, i), at(q3, i)],\n { halfWidth: 0, minHalf: lw / 2 },\n );\n const caps = multi(\n \"caps\",\n 2,\n (i, k) => {\n const v = at(k === 0 ? low : high, i);\n return [0, v, v];\n },\n { halfWidth: half / 2, minHalf: lw / 2 },\n );\n const edges = multi(\n \"edges\",\n 2,\n (i, k) => {\n const v = at(k === 0 ? q1 : q3, i);\n return [0, v, v];\n },\n { halfWidth: half, minHalf: lw / 2 },\n );\n const median = multi(\"median\", 1, (i) => [0, y[i], y[i]], {\n halfWidth: half,\n minHalf: Math.max(1, lw * 0.8),\n });\n const items: RenderItem[] = [box, stems, caps, edges, median];\n if (outliers) {\n let n = 0;\n for (let i = 0; i < count; i++) n += outliers[i]?.length ?? 0;\n if (n) {\n const buffer = new ArrayBuffer(n * SCATTER_STRIDE);\n const f = new Float32Array(buffer);\n const u = new Uint32Array(buffer);\n let j = 0;\n for (let i = 0; i < count; i++) {\n const list = outliers[i];\n if (!list) continue;\n for (const v of list) {\n const valid = Number.isFinite(v) && Number.isFinite(x[i]);\n f[j * 4] = valid ? ox(i) : GAP;\n f[j * 4 + 1] = valid ? oy(v) : GAP;\n f[j * 4 + 2] = s.outlierSize;\n u[j * 4 + 3] = colorAt(i);\n j++;\n }\n }\n items.push({\n kind: \"scatter\",\n key: `${s.key}:outliers`,\n version,\n color: s.color,\n instances: buffer,\n count: n,\n // rings of the series color (the box shows through), or dots\n opacity: s.outlierShape === \"hollow\" ? 0 : 0.85,\n stroke: s.outlierShape === \"hollow\" || n <= 5000 ? 1.25 : 0,\n });\n }\n }\n return items;\n};\n"],"mappings":"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"}
@@ -4,5 +4,18 @@ export interface Origin {
4
4
  x: number;
5
5
  y: number;
6
6
  }
7
- /** Render items of the visible series, back to front */
8
- export declare const buildItems: (model: ChartModel, origin: Origin, version: number) => RenderItem[];
7
+ /** CSS pixels per data unit along each axis (sizes the heatmap cells) */
8
+ export interface PixelDensity {
9
+ x: number;
10
+ y: number;
11
+ }
12
+ /**
13
+ * What the heatmap items depend on besides the model: their cell style at
14
+ * the current pixel density (`""` without heatmaps)
15
+ */
16
+ export declare const cellStyleKey: (model: ChartModel, density?: PixelDensity) => string;
17
+ /**
18
+ * Render items of the visible series, back to front; `density` sizes the
19
+ * gaps and corners of heatmap cells
20
+ */
21
+ export declare const buildItems: (model: ChartModel, origin: Origin, version: number, density?: PixelDensity) => RenderItem[];
@@ -4,5 +4,18 @@ export interface Origin {
4
4
  x: number;
5
5
  y: number;
6
6
  }
7
- /** Render items of the visible series, back to front */
8
- export declare const buildItems: (model: ChartModel, origin: Origin, version: number) => RenderItem[];
7
+ /** CSS pixels per data unit along each axis (sizes the heatmap cells) */
8
+ export interface PixelDensity {
9
+ x: number;
10
+ y: number;
11
+ }
12
+ /**
13
+ * What the heatmap items depend on besides the model: their cell style at
14
+ * the current pixel density (`""` without heatmaps)
15
+ */
16
+ export declare const cellStyleKey: (model: ChartModel, density?: PixelDensity) => string;
17
+ /**
18
+ * Render items of the visible series, back to front; `density` sizes the
19
+ * gaps and corners of heatmap cells
20
+ */
21
+ export declare const buildItems: (model: ChartModel, origin: Origin, version: number, density?: PixelDensity) => RenderItem[];